Skip to content
Snippets Groups Projects
Commit a31b0f3e authored by Kurund Jalmi's avatar Kurund Jalmi
Browse files

Merge pull request #112 from pradpnayak/CRM-11983

Crm 11983
parents e6e5e9fb 521d8ef0
Branches
Tags
No related merge requests found
......@@ -148,20 +148,22 @@ class CRM_Contribute_PseudoConstant extends CRM_Core_PseudoConstant {
* @return array - array reference of all financial accounts if any
* @static
*/
public static function &financialAccount($id = NULL, $financialAccountTypeId = NULL) {
public static function &financialAccount($id = NULL, $financialAccountTypeId = NULL, $retrieveColumn = 'name', $key = 'id') {
$condition = NUll;
if ($financialAccountTypeId) {
$condition = " financial_account_type_id = ". $financialAccountTypeId;
}
$cacheKey = "{$id}_{$financialAccountTypeId}";
$cacheKey = "{$id}_{$financialAccountTypeId}_{$retrieveColumn}_{$key}";
if (!isset(self::$financialAccount[$cacheKey])) {
CRM_Core_PseudoConstant::populate(
self::$financialAccount[$cacheKey],
'CRM_Financial_DAO_FinancialAccount',
TRUE,
'name',
$retrieveColumn,
'is_active',
$condition
$condition,
NULL,
$key
);
}
......
......@@ -87,6 +87,78 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
),
),
),
'civicrm_financial_account' => array(
'dao' => 'CRM_Financial_DAO_FinancialAccount',
'fields' => array(
'debit_accounting_code' => array(
'title' => ts('Financial Account Code - Debit'),
'name' => 'accounting_code',
'alias' => 'financial_account_civireport_debit',
'default' => TRUE,
'required' => TRUE,
),
'credit_accounting_code' => array(
'title' => ts('Financial Account Code - Credit'),
'name' => 'accounting_code',
'alias' => 'financial_account_civireport_credit',
'default' => TRUE,
'required' => TRUE,
),
'debit_name' => array(
'title' => ts('Financial Account Name - Debit'),
'name' => 'name',
'alias' => 'financial_account_civireport_debit',
'default' => TRUE,
),
'credit_name' => array(
'title' => ts('Financial Account Name - Credit'),
'name' => 'name',
'alias' => 'financial_account_civireport_credit',
'default' => TRUE,
),
),
'filters' => array(
'debit_accounting_code' => array(
'title' => ts('Financial Account Code - Debit'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialAccount(NULL, NULL, 'accounting_code', 'accounting_code'),
'name' => 'accounting_code',
'alias' => 'financial_account_civireport_debit',
),
'credit_accounting_code' => array(
'title' => ts('Financial Account Code - Credit'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialAccount(NULL, NULL, 'accounting_code', 'accounting_code'),
),
'debit_name' => array(
'title' => ts('Financial Account Name - Debit'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialAccount(),
'name' => 'id',
'alias' => 'financial_account_civireport_debit',
),
'credit_name' => array(
'title' => ts('Financial Account Name - Credit'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialAccount(),
),
),
),
'civicrm_line_item' => array(
'dao' => 'CRM_Price_DAO_LineItem',
'fields' => array(
'financial_type_id' => array('title' => ts('Financial Type'),
'default' => TRUE,
),
),
'filters' => array(
'financial_type_id' => array(
'title' => ts('Financial Type'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialType(),
),
),
),
'civicrm_contribution' =>
array(
'dao' => 'CRM_Contribute_DAO_Contribution',
......@@ -118,22 +190,7 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
),
),
'grouping' => 'contri-fields',
),
'civicrm_line_item' => array(
'dao' => 'CRM_Price_DAO_LineItem',
'fields' => array(
'financial_type_id' => array('title' => ts('Financial Type'),
'default' => TRUE,
),
),
'filters' => array(
'financial_type_id' => array(
'title' => ts('Financial Type'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'options' => CRM_Contribute_PseudoConstant::financialType(),
),
),
),
),
'civicrm_financial_trxn' => array(
'dao' => 'CRM_Financial_DAO_FinancialTrxn',
'fields' => array(
......@@ -146,7 +203,8 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
),
'trxn_date' => array(
'title' => ts('Transaction Date'),
'default' => TRUE
'default' => TRUE,
'type' => CRM_Utils_Type::T_DATE,
),
'trxn_id' => array(
'title' => ts('Trans #'),
......@@ -180,23 +238,6 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
'amount' =>
array('title' => ts('Amount')),
),
),
'civicrm_financial_account' => array(
'dao' => 'CRM_Financial_DAO_FinancialAccount',
'fields' => array(
'debit_accounting_code' => array(
'title' => ts('Financial Account Code - Debit'),
'name' => 'accounting_code',
'alias' => 'financial_account_civireport_debit',
'default' => TRUE,
),
'credit_accounting_code' => array(
'title' => ts('Financial Account Code - Credit'),
'name' => 'accounting_code',
'alias' => 'financial_account_civireport_credit',
'default' => TRUE,
),
)
),
);
parent::__construct();
......@@ -216,8 +257,31 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
if (CRM_Utils_Array::value('required', $field) ||
CRM_Utils_Array::value($fieldName, $this->_params['fields'])
) {
if ($fieldName != 'credit_accounting_code' && $fieldName != 'amount') {
switch ($fieldName) {
case 'credit_accounting_code' :
$select[] = " CASE
WHEN {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NOT NULL
THEN {$this->_aliases['civicrm_financial_account']}_credit_1.accounting_code
ELSE {$this->_aliases['civicrm_financial_account']}_credit_2.accounting_code
END AS civicrm_financial_account_credit_accounting_code ";
break;
case 'amount' :
$select[] = " CASE
WHEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.entity_id IS NOT NULL
THEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.amount
ELSE {$this->_aliases['civicrm_entity_financial_trxn']}.amount
END AS civicrm_entity_financial_trxn_amount ";
break;
case 'credit_name' :
$select[] = " CASE
WHEN {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NOT NULL
THEN {$this->_aliases['civicrm_financial_account']}_credit_1.name
ELSE {$this->_aliases['civicrm_financial_account']}_credit_2.name
END AS civicrm_financial_account_credit_name ";
break;
default :
$select[] = "{$field['dbAlias']} as {$tableName}_{$fieldName}";
break;
}
$this->_columnHeaders["{$tableName}_{$fieldName}"]['title'] = $field['title'];
$this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = CRM_Utils_Array::value('type', $field);
......@@ -227,15 +291,6 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
}
$this->_select = "SELECT " . implode(', ', $select) . " ";
$this->_select .= ", CASE
WHEN {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NOT NULL
THEN {$this->_aliases['civicrm_financial_account']}_credit_1.accounting_code
ELSE {$this->_aliases['civicrm_financial_account']}_credit_2.accounting_code
END AS civicrm_financial_account_credit_accounting_code, CASE
WHEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.entity_id IS NOT NULL
THEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.amount
ELSE {$this->_aliases['civicrm_entity_financial_trxn']}.amount
END AS civicrm_entity_financial_trxn_amount ";
}
function from() {
......@@ -243,10 +298,10 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
$this->_from = "FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom}
INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']}
ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND
ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND
{$this->_aliases['civicrm_contribution']}.is_test = 0
LEFT JOIN civicrm_membership_payment payment
ON ( {$this->_aliases['civicrm_contribution']}.id = payment.contribution_id )
ON ( {$this->_aliases['civicrm_contribution']}.id = payment.contribution_id )
LEFT JOIN civicrm_membership {$this->_aliases['civicrm_membership']}
ON payment.membership_id = {$this->_aliases['civicrm_membership']}.id
LEFT JOIN civicrm_entity_financial_trxn {$this->_aliases['civicrm_entity_financial_trxn']}
......@@ -273,6 +328,57 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
$this->_orderBy = " ORDER BY {$this->_aliases['civicrm_contact']}.sort_name, {$this->_aliases['civicrm_contribution']}.id, {$this->_aliases['civicrm_entity_financial_trxn']}.id ";
}
function where() {
foreach ($this->_columns as $tableName => $table) {
if (array_key_exists('filters', $table)) {
foreach ($table['filters'] as $fieldName => $field) {
$clause = NULL;
if ($fieldName == 'credit_accounting_code') {
$field['dbAlias'] = "CASE
WHEN financial_trxn_civireport.from_financial_account_id IS NOT NULL
THEN financial_account_civireport_credit_1.accounting_code
ELSE financial_account_civireport_credit_2.accounting_code
END";
}
else if ($fieldName == 'credit_name') {
$field['dbAlias'] = "CASE
WHEN financial_trxn_civireport.from_financial_account_id IS NOT NULL
THEN financial_account_civireport_credit_1.id
ELSE financial_account_civireport_credit_2.id
END";
}
if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) {
$relative = CRM_Utils_Array::value("{$fieldName}_relative", $this->_params);
$from = CRM_Utils_Array::value("{$fieldName}_from", $this->_params);
$to = CRM_Utils_Array::value("{$fieldName}_to", $this->_params);
$clause = $this->dateClause($field['name'], $relative, $from, $to, $field['type']);
}
else {
$op = CRM_Utils_Array::value("{$fieldName}_op", $this->_params);
if ($op) {
$clause = $this->whereClause($field,
$op,
CRM_Utils_Array::value("{$fieldName}_value", $this->_params),
CRM_Utils_Array::value("{$fieldName}_min", $this->_params),
CRM_Utils_Array::value("{$fieldName}_max", $this->_params)
);
}
}
if (!empty($clause)) {
$clauses[] = $clause;
}
}
}
}
if (empty($clauses)) {
$this->_where = "WHERE ( 1 )";
}
else {
$this->_where = "WHERE " . implode(' AND ', $clauses);
}
}
function postProcess() {
// get the acl clauses built before we assemble the query
$this->buildACLClause($this->_aliases['civicrm_contact']);
......@@ -291,8 +397,8 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
$sql = "{$select} {$this->_from} {$this->_where}";
$dao = CRM_Core_DAO::executeQuery($sql);
if ($dao->fetch()) {
$dao->fetch();
if ($dao->count) {
$statistics['counts']['amount'] = array(
'value' => $dao->amount,
'title' => 'Total Amount',
......
This diff is collapsed.
......@@ -736,7 +736,7 @@ VALUES
INSERT INTO `civicrm_report_instance`
( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
VALUES
( @domainID, 'Bookkeeping Transactions', 'contribute/bookkeeping', 'Provides transaction details for all contributions and payments, including Transaction #, Invoice ID, Payment Instrument and Check #.', 'access CiviContribute', '{literal}a:32:{s:6:"fields";a:12:{s:9:"sort_name";s:1:"1";s:12:"receive_date";s:1:"1";s:22:"contribution_status_id";s:1:"1";s:2:"id";s:1:"1";s:17:"financial_type_id";s:1:"1";s:12:"check_number";s:1:"1";s:21:"payment_instrument_id";s:1:"1";s:9:"trxn_date";s:1:"1";s:7:"trxn_id";s:1:"1";s:6:"amount";s:1:"1";s:21:"debit_accounting_code";s:1:"1";s:22:"credit_accounting_code";s:1:"1";}s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:6:"id_min";s:0:"";s:6:"id_max";s:0:"";s:5:"id_op";s:3:"lte";s:8:"id_value";s:0:"";s:21:"receive_date_relative";s:1:"0";s:17:"receive_date_from";s:0:"";s:15:"receive_date_to";s:0:"";s:25:"contribution_status_id_op";s:2:"in";s:28:"contribution_status_id_value";a:1:{i:0;s:1:"1";}s:20:"financial_type_id_op";s:2:"in";s:23:"financial_type_id_value";a:0:{}s:24:"payment_instrument_id_op";s:2:"in";s:27:"payment_instrument_id_value";a:0:{}s:18:"trxn_date_relative";s:1:"0";s:14:"trxn_date_from";s:0:"";s:12:"trxn_date_to";s:0:"";s:10:"amount_min";s:0:"";s:10:"amount_max";s:0:"";s:9:"amount_op";s:3:"lte";s:12:"amount_value";s:0:"";s:11:"description";s:133:"Provides transaction details for all contributions and payments, including Transaction #, Invoice ID, Payment Instrument and Check #.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:21:"access CiviContribute";s:9:"parent_id";s:0:"";s:6:"groups";s:0:"";s:9:"domain_id";i:1;s:11:"is_reserved";b:0;}{/literal}');
( @domainID, 'Bookkeeping Transactions', 'contribute/bookkeeping', 'Provides transaction details for all contributions and payments, including Transaction #, Invoice ID, Payment Instrument and Check #.', 'access CiviContribute', '{literal}a:40:{s:6:"fields";a:12:{s:9:"sort_name";s:1:"1";s:21:"debit_accounting_code";s:1:"1";s:22:"credit_accounting_code";s:1:"1";s:17:"financial_type_id";s:1:"1";s:12:"receive_date";s:1:"1";s:22:"contribution_status_id";s:1:"1";s:2:"id";s:1:"1";s:12:"check_number";s:1:"1";s:21:"payment_instrument_id";s:1:"1";s:9:"trxn_date";s:1:"1";s:7:"trxn_id";s:1:"1";s:6:"amount";s:1:"1";}s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:6:"id_min";s:0:"";s:6:"id_max";s:0:"";s:5:"id_op";s:3:"lte";s:8:"id_value";s:0:"";s:24:"debit_accounting_code_op";s:2:"in";s:27:"debit_accounting_code_value";a:0:{}s:25:"credit_accounting_code_op";s:2:"in";s:28:"credit_accounting_code_value";a:0:{}s:13:"debit_name_op";s:2:"in";s:16:"debit_name_value";a:0:{}s:14:"credit_name_op";s:2:"in";s:17:"credit_name_value";a:0:{}s:20:"financial_type_id_op";s:2:"in";s:23:"financial_type_id_value";a:0:{}s:21:"receive_date_relative";s:1:"0";s:17:"receive_date_from";s:0:"";s:15:"receive_date_to";s:0:"";s:25:"contribution_status_id_op";s:2:"in";s:28:"contribution_status_id_value";a:1:{i:0;s:1:"1";}s:24:"payment_instrument_id_op";s:2:"in";s:27:"payment_instrument_id_value";a:0:{}s:18:"trxn_date_relative";s:1:"0";s:14:"trxn_date_from";s:0:"";s:12:"trxn_date_to";s:0:"";s:10:"amount_min";s:0:"";s:10:"amount_max";s:0:"";s:9:"amount_op";s:3:"lte";s:12:"amount_value";s:0:"";s:11:"description";s:133:"Provides transaction details for all contributions and payments, including Transaction #, Invoice ID, Payment Instrument and Check #.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:21:"access CiviContribute";s:9:"parent_id";s:0:"";s:6:"groups";s:0:"";s:9:"domain_id";i:1;s:11:"is_reserved";b:0;}{/literal}');
-- Membership reports
INSERT INTO `civicrm_report_instance`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment