Skip to content
Snippets Groups Projects
Commit 4f63bbc5 authored by jaapjansma's avatar jaapjansma
Browse files

update added financial type

parent 0b0ed1a5
Branches
Tags
No related merge requests found
......@@ -134,11 +134,10 @@ class CRM_Civirules_Form_RuleCondition extends CRM_Core_Form {
$event->find(true);
$eventEntities = array('contact');
$eventEntities[] = $event->object_name;
$eventEntities[] = strtolower($event->object_name);
if (CRM_Civirules_Event_EditEntity::convertObjectNameToEntity($event->object_name) != $event->object_name) {
$eventEntities[] = strtolower(CRM_Civirules_Event_EditEntity::convertObjectNameToEntity($event->object_name));
}
foreach($requiredEntities as $entity) {
if (!in_array(strtolower($entity), $eventEntities)) {
$errors['rule_condition_select'] = ts('This condition is not available with event %1', array(1 => $event->label));
......
......@@ -24,6 +24,8 @@ class CRM_Civirules_Upgrader extends CRM_Civirules_Upgrader_Base {
$this->addCondition('CRM_CivirulesConditions_AgeComparison', 'age_comparison', ts('Age comparison'));
$this->addCondition('CRM_CivirulesConditions_BirthdayChanged', 'birthday_changed', ts('Birthday changed'));
$this->addCondition('CRM_CivirulesConditions_FirstContribution', 'first_contribution_of_contact', ts('First Contribution of a Contact'));
$this->addCondition('CRM_CivirulesConditions_ContributionStatus', 'contribution_status', ts('Contribution status'));
$this->addCondition('CRM_CivirulesConditions_ContributionFinancialType', 'contribution_financial_type', ts('Contribution financial type'));
$this->addAction('CRM_CivirulesActions_GroupContact', 'GroupContact', 'Add contact to group', 'GroupContact', 'create');
}
......
<?php
class CRM_CivirulesConditions_ContributionFinancialType extends CRM_Civirules_Condition {
private $conditionParams = array();
/**
* Method to set the Rule Condition data
*
* @param array $ruleCondition
* @access public
*/
public function setRuleConditionData($ruleCondition) {
parent::setRuleConditionData($ruleCondition);
$this->conditionParams = array();
if (!empty($this->ruleCondition['condition_params'])) {
$this->conditionParams = unserialize($this->ruleCondition['condition_params']);
}
}
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
$contribution = $eventData->getEntityData('Contribution');
if ($contribution['financial_type_id'] == $this->conditionParams['financial_type_id']) {
return true;
}
return false;
}
/**
* Returns a redirect url to extra data input from the user after adding a condition
*
* Return false if you do not need extra data input
*
* @param int $ruleConditionId
* @return bool|string
* @access public
* @abstract
*/
public function getExtraDataInputUrl($ruleConditionId) {
return CRM_Utils_System::url('civicrm/civirule/form/condition/contribution_financialtype/', 'rule_condition_id='.$ruleConditionId);
}
/**
* Returns a user friendly text explaining the condition params
* e.g. 'Older than 65'
*
* @return string
* @access public
*/
public function userFriendlyConditionParams() {
$financialType = new CRM_Financial_BAO_FinancialType();
$financialType->id = $this->conditionParams['financial_type_id'];
if ($financialType->find(true)) {
return 'Financial type is '.$financialType->name;
}
return '';
}
/**
* Returns an array with required entity names
*
* @return array
* @access public
*/
public function requiredEntities() {
return array('Contribution');
}
}
\ No newline at end of file
<?php
class CRM_CivirulesConditions_ContributionStatus extends CRM_Civirules_Condition {
private $conditionParams = array();
/**
* Method to set the Rule Condition data
*
* @param array $ruleCondition
* @access public
*/
public function setRuleConditionData($ruleCondition) {
parent::setRuleConditionData($ruleCondition);
$this->conditionParams = array();
if (!empty($this->ruleCondition['condition_params'])) {
$this->conditionParams = unserialize($this->ruleCondition['condition_params']);
}
}
public function isConditionValid(CRM_Civirules_EventData_EventData $eventData) {
$contribution = $eventData->getEntityData('Contribution');
if ($contribution['contribution_status_id'] == $this->conditionParams['contribution_status_id']) {
return true;
}
return false;
}
/**
* Returns a redirect url to extra data input from the user after adding a condition
*
* Return false if you do not need extra data input
*
* @param int $ruleConditionId
* @return bool|string
* @access public
* @abstract
*/
public function getExtraDataInputUrl($ruleConditionId) {
return CRM_Utils_System::url('civicrm/civirule/form/condition/contributionstatus/', 'rule_condition_id='.$ruleConditionId);
}
/**
* Returns a user friendly text explaining the condition params
* e.g. 'Older than 65'
*
* @return string
* @access public
*/
public function userFriendlyConditionParams() {
return 'Contribution status is '.CRM_Core_OptionGroup::getLabel('contribution_status', $this->conditionParams['contribution_status_id']);
}
/**
* Returns an array with required entity names
*
* @return array
* @access public
*/
public function requiredEntities() {
return array('Contribution');
}
}
\ No newline at end of file
<?php
/**
* Class for CiviRules ValueComparison Form
*
* @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org>
* @license AGPL-3.0
*/
class CRM_CivirulesConditions_Form_ContributionFinancialType extends CRM_Core_Form {
protected $ruleConditionId = false;
/**
* Overridden parent method to perform processing before form is build
*
* @access public
*/
public function preProcess() {
$this->ruleConditionId = CRM_Utils_Request::retrieve('rule_condition_id', 'Integer');
parent::preProcess();
}
protected function getFinancialTypes() {
$return = array('' => ts('-- please select --'));
$dao = CRM_Core_DAO::executeQuery("SELECT * FROM `civicrm_financial_type` where `is_active` = 1");
while($dao->fetch()) {
$return[$dao->id] = $dao->name;
}
return $return;
}
/**
* Overridden parent method to build form
*
* @access public
*/
public function buildQuickForm() {
$this->setFormTitle();
$this->add('hidden', 'rule_condition_id');
$this->add('select', 'financial_type_id', ts('Financial type'), $this->getFinancialTypes(), true);
$this->addButtons(array(
array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,),
array('type' => 'cancel', 'name' => ts('Cancel'))));
}
/**
* Overridden parent method to set default values
*
* @return array $defaultValues
* @access public
*/
public function setDefaultValues() {
$data = array();
$defaultValues = array();
$defaultValues['rule_condition_id'] = $this->ruleConditionId;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$data = unserialize($ruleCondition->condition_params);
}
if (!empty($data['financial_type_id'])) {
$defaultValues['financial_type_id'] = $data['financial_type_id'];
}
return $defaultValues;
}
/**
* Overridden parent method to process form data after submission
*
* @throws Exception when rule condition not found
* @access public
*/
public function postProcess() {
$ruleId = 0;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
$condition_label = '';
if ($ruleCondition->find(true)) {
$ruleId = $ruleCondition->rule_id;
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$condition_label = $condition->label;
}
} else {
throw new Exception('Could not find rule condition');
}
$data['financial_type_id'] = $this->_submitValues['financial_type_id'];
$ruleCondition->condition_params = serialize($data);
$ruleCondition->save();
$session = CRM_Core_Session::singleton();
$session->setStatus('Condition '.$condition_label.' parameters updated to CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleId),
'Condition parameters updated', 'success');
$redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$ruleId, TRUE);
CRM_Utils_System::redirect($redirectUrl); }
/**
* Method to set the form title
*
* @access protected
*/
protected function setFormTitle() {
$conditionLabel = '';
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$conditionLabel = $condition->label;
}
}
$title = 'CiviRules Edit Condition parameters';
$this->assign('ruleConditionHeader', 'Edit Condition '.$conditionLabel.' of CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleCondition->rule_id));
CRM_Utils_System::setTitle($title);
}
}
\ No newline at end of file
<?php
/**
* Class for CiviRules ValueComparison Form
*
* @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org>
* @license AGPL-3.0
*/
class CRM_CivirulesConditions_Form_ContributionStatus extends CRM_Core_Form {
protected $ruleConditionId = false;
/**
* Overridden parent method to perform processing before form is build
*
* @access public
*/
public function preProcess() {
$this->ruleConditionId = CRM_Utils_Request::retrieve('rule_condition_id', 'Integer');
parent::preProcess();
}
protected function getContributionStatus() {
return array('' => ts('-- please select --')) + CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('contribution_status');
}
/**
* Overridden parent method to build form
*
* @access public
*/
public function buildQuickForm() {
$this->setFormTitle();
$this->add('hidden', 'rule_condition_id');
$this->add('select', 'contribution_status_id', ts('Status'), $this->getContributionStatus(), true);
$this->addButtons(array(
array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,),
array('type' => 'cancel', 'name' => ts('Cancel'))));
}
/**
* Overridden parent method to set default values
*
* @return array $defaultValues
* @access public
*/
public function setDefaultValues() {
$data = array();
$defaultValues = array();
$defaultValues['rule_condition_id'] = $this->ruleConditionId;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$data = unserialize($ruleCondition->condition_params);
}
if (!empty($data['contribution_status_id'])) {
$defaultValues['contribution_status_id'] = $data['contribution_status_id'];
}
return $defaultValues;
}
/**
* Overridden parent method to process form data after submission
*
* @throws Exception when rule condition not found
* @access public
*/
public function postProcess() {
$ruleId = 0;
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
$condition_label = '';
if ($ruleCondition->find(true)) {
$ruleId = $ruleCondition->rule_id;
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$condition_label = $condition->label;
}
} else {
throw new Exception('Could not find rule condition');
}
$data['contribution_status_id'] = $this->_submitValues['contribution_status_id'];
$ruleCondition->condition_params = serialize($data);
$ruleCondition->save();
$session = CRM_Core_Session::singleton();
$session->setStatus('Condition '.$condition_label.' parameters updated to CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleId),
'Condition parameters updated', 'success');
$redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$ruleId, TRUE);
CRM_Utils_System::redirect($redirectUrl); }
/**
* Method to set the form title
*
* @access protected
*/
protected function setFormTitle() {
$conditionLabel = '';
$ruleCondition = new CRM_Civirules_BAO_RuleCondition();
$ruleCondition->id = $this->ruleConditionId;
if ($ruleCondition->find(true)) {
$condition = new CRM_Civirules_BAO_Condition();
$condition->id = $ruleCondition->condition_id;
if ($condition->find(true)) {
$conditionLabel = $condition->label;
}
}
$title = 'CiviRules Edit Condition parameters';
$this->assign('ruleConditionHeader', 'Edit Condition '.$conditionLabel.' of CiviRule '
.CRM_Civirules_BAO_Rule::getRuleLabelWithId($ruleCondition->rule_id));
CRM_Utils_System::setTitle($title);
}
}
\ No newline at end of file
......@@ -42,6 +42,7 @@ class CRM_CivirulesCronEvent_Birthday extends CRM_Civirules_Event_Cron {
WHERE `c`.`birth_date` IS NOT NULL
AND DAY(`c`.`birth_date`) = DAY(NOW())
AND MONTH(`c`.`birth_date`) = MONTH(NOW())
AND c.is_deceased = 0 and c.is_deleted = 0
AND `c`.`id` NOT IN (
SELECT `rule_log`.`contact_id`
FROM `civirule_rule_log` `rule_log`
......
<h3>{$ruleConditionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-contribution_status">
<div class="crm-section">
<div class="label">{$form.financial_type_id.label}</div>
<div class="content">{$form.financial_type_id.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-submit-buttons">
{include file="CRM/common/formButtons.tpl" location="bottom"}
</div>
\ No newline at end of file
<h3>{$ruleConditionHeader}</h3>
<div class="crm-block crm-form-block crm-civirule-rule_condition-block-contribution_status">
<div class="crm-section">
<div class="label">{$form.contribution_status_id.label}</div>
<div class="content">{$form.contribution_status_id.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-submit-buttons">
{include file="CRM/common/formButtons.tpl" location="bottom"}
</div>
\ No newline at end of file
......@@ -30,10 +30,22 @@
<title>Value comparison</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/action/groupcontact</path>
<page_callback>CRM_CivirulesActions_Form_GroupContact</page_callback>
<title>Group contact</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/contributionstatus</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionStatus</page_callback>
<title>contribution status</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/condition/contribution_financialtype</path>
<page_callback>CRM_CivirulesConditions_Form_ContributionFinancialType</page_callback>
<title>financial type</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
<item>
<path>civicrm/civirule/form/action/groupcontact</path>
<page_callback>CRM_CivirulesActions_Form_GroupContact</page_callback>
<title>Group contact</title>
<access_arguments>access CiviCRM</access_arguments>
</item>
</menu>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment