From 1d6c7436d442b072b03a553ffd148b38ce6a986f Mon Sep 17 00:00:00 2001 From: abijah Date: Tue, 28 Jul 2009 16:08:15 +0000 Subject: [PATCH] Got the collected reports working again. NSF hasn't been tested yet, because NSF entry is not yet working. git-svn-id: file:///svn-source/pmgr/branches/yafr_20090716/site@402 97e9348a-65ac-dc4b-aefc-98561f571b83 --- app_controller.php | 20 +++++- controllers/statement_entries_controller.php | 73 ++++++++++---------- views/accounts/collected.ctp | 23 +++--- views/elements/statement_entries.ctp | 19 ++--- 4 files changed, 73 insertions(+), 62 deletions(-) diff --git a/app_controller.php b/app_controller.php index 84d1b7f..2b16f7a 100644 --- a/app_controller.php +++ b/app_controller.php @@ -183,11 +183,21 @@ class AppController extends Controller { 'rows' => 20), $params); - // Unserialize our complex structure of fields + // Unserialize our complex structure of post data. // This SHOULD always be set, except when debugging if (isset($params['post'])) $params['post'] = unserialize($params['post']); + // Unserialize our complex structure of dynamic post data + if (isset($params['dynamic_post'])) + $params['dynamic_post'] = unserialize($params['dynamic_post']); + + // Merge the static and dynamic post data + if (empty($params['post']) && !empty($params['dynamic_post'])) + $params['post'] = $params['dynamic_post']; + elseif (!empty($params['post']) && !empty($params['dynamic_post'])) + //$params['post'] = array_merge($params['post'], $params['dynamic_post']); + $params['post'] = array_merge_recursive($params['post'], $params['dynamic_post']); // This SHOULD always be set, except when debugging if (!isset($params['post']['fields'])) @@ -321,11 +331,11 @@ class AppController extends Controller { // If the table is already part of the query, append to it if ($table == $model->alias) { $query[$link] = - array_merge_recursive($query[$link], $config); + array_merge_recursive($config, $query[$link]); } elseif (isset($query[$link][$table])) { $query[$link][$table] = - array_merge_recursive($query[$link][$table], $config); + array_merge_recursive($config, $query[$link][$table]); } elseif (in_array($table, $query[$link])) { // REVISIT : 20090727 @@ -357,6 +367,10 @@ class AppController extends Controller { } function gridDataFilterTablesTable(&$params, &$model, $table) { + // By default, don't add anything if the filter + // condition occurs on the actual model table + if ($table == $model->alias) + return null; return $this->gridDataFilterTableName($params, $model, $table); } diff --git a/controllers/statement_entries_controller.php b/controllers/statement_entries_controller.php index 957aeef..b94cb39 100644 --- a/controllers/statement_entries_controller.php +++ b/controllers/statement_entries_controller.php @@ -25,10 +25,6 @@ class StatementEntriesController extends AppController { * to jqGrid. */ - function gridDataSetup(&$params) { - parent::gridDataSetup($params); - } - function gridDataTables(&$params, &$model) { $link = array(// Models @@ -56,6 +52,12 @@ class StatementEntriesController extends AppController { $link['PaymentEntry'] = array(); $link['ChargeEntry'] = array(); } + +/* if ($params['action'] === 'collected') { */ +/* $link['PaymentEntry'] = array('Receipt' => array('class' => 'Transaction')); */ +/* $link['ChargeEntry'] = array('Invoice' => array('class' => 'Transaction')); */ +/* } */ + /* if (count(array_intersect($params['fields'], array('applied'))) == 1) { */ /* $link['PaymentEntry'] = array(); */ /* $link['ChargeEntry'] = array(); */ @@ -69,26 +71,22 @@ class StatementEntriesController extends AppController { function gridDataFields(&$params, &$model) { $fields = parent::gridDataFields($params, $model); - extract($params['post']['custom']); -/* if (isset($params['post']['custom']['reconcile_id'])) { */ -/* $fields[] = array("IF(StatementEntry.type = 'CHARGE',", */ -/* " COALESCE(AppliedCharge.amount,0),", */ -/* " COALESCE(AppliedPayment.amount,0))", */ -/* " AS 'applied'"); */ -/* $fields[] = array("StatementEntry.amount - (", */ -/* "IF(StatementEntry.type = 'CHARGE',", */ -/* " COALESCE(AppliedCharge.amount,0),", */ -/* " COALESCE(AppliedPayment.amount,0))", */ -/* ") AS 'balance'"); */ -/* } */ + if (in_array('applied', $params['post']['fields'])) { + $fields[] = ("IF(StatementEntry.type = 'CHARGE'," . + " SUM(COALESCE(PaymentEntry.amount,0))," . + " SUM(COALESCE(ChargeEntry.amount,0)))" . + " AS 'applied'"); + $fields[] = ("StatementEntry.amount - (" . + "IF(StatementEntry.type = 'CHARGE'," . + " SUM(COALESCE(PaymentEntry.amount,0))," . + " SUM(COALESCE(ChargeEntry.amount,0)))" . + ") AS 'balance'"); + } $fields = array_merge($fields, $this->StatementEntry->chargePaymentFields()); - if ($params['action'] === 'collected') - $fields[] = 'MAX(Receipt.stamp) AS last_paid'; - return $fields; } @@ -106,11 +104,8 @@ class StatementEntriesController extends AppController { = array('Transaction.stamp <=' => $this->StatementEntry->Transaction->dateFormatBeforeSave($through_date . ' 23:59:59')); - if (isset($payment_accounts)) - $conditions[] = array('PaymentEntry.account_id' => $payment_accounts); - - if (isset($charge_accounts)) - $conditions[] = array('ChargeEntry.account_id' => $charge_accounts); + if (isset($account_id)) + $conditions[] = array('StatementEntry.account_id' => $account_id); if (isset($statement_entry_id)) { $conditions[] = array('OR' => @@ -145,28 +140,34 @@ class StatementEntriesController extends AppController { return $order; } - function gridDataRecords(&$params, &$model, $query) { - if ($params['action'] === 'collected') { - $tquery = array_diff_key($query, array(/*'fields'=>1,*/'group'=>1,'limit'=>1,'order'=>1)); - $tquery['group'] = array('AppliedPayment.id'); - $tquery['fields'] = array("IF(StatementEntry.type = 'CHARGE',", - " SUM(COALESCE(PaymentEntry.amount,0)),", - " SUM(COALESCE(ChargeEntry.amount,0)))", + function gridDataRecordsExecute(&$params, &$model, $query) { + if (in_array('applied', $params['post']['fields'])) { + $tquery = array_diff_key($query, array('fields'=>1,'group'=>1,'limit'=>1,'order'=>1)); + $tquery['fields'] = array("IF(StatementEntry.type = 'CHARGE'," . + " SUM(COALESCE(PaymentEntry.amount,0))," . + " SUM(COALESCE(ChargeEntry.amount,0)))" . " AS 'applied'", - "StatementEntry.amount - (", - "IF(StatementEntry.type = 'CHARGE',", - " SUM(COALESCE(PaymentEntry.amount,0)),", - " SUM(COALESCE(ChargeEntry.amount,0)))", + "StatementEntry.amount - (" . + "IF(StatementEntry.type = 'CHARGE'," . + " SUM(COALESCE(PaymentEntry.amount,0))," . + " SUM(COALESCE(ChargeEntry.amount,0)))" . ") AS 'balance'", ); + //pr(compact('tquery')); $total = $model->find('first', $tquery); $params['userdata']['total'] = $total[0]['applied']; $params['userdata']['balance'] = $total[0]['balance']; } + else { + $tquery = array_diff_key($query, array('fields'=>1,'group'=>1,'limit'=>1,'order'=>1)); + $tquery['fields'] = array("SUM(COALESCE(StatementEntry.amount,0)) AS 'total'"); + $total = $model->find('first', $tquery); + $params['userdata']['total'] = $total[0]['total']; + } - return parent::gridDataRecords($params, $model, $query); + return parent::gridDataRecordsExecute($params, $model, $query); } diff --git a/views/accounts/collected.ctp b/views/accounts/collected.ctp index 79c985d..e918bb2 100644 --- a/views/accounts/collected.ctp +++ b/views/accounts/collected.ctp @@ -24,21 +24,22 @@ function onGridLoadComplete() { } function updateEntriesGrid() { - var cust = new Array(); - var account_ids = new Array(); $("INPUT[type='checkbox']:checked").each(function(i) { account_ids.push($(this).val()); }); - cust['account_id'] = ; + var cust = new Array(); cust['from_date'] = $('#TxFromDate').val(); cust['through_date'] = $('#TxThroughDate').val(); - cust['payment_accounts'] = account_ids; + cust['account_id'] = account_ids; + + var dynamic_post = new Array(); + dynamic_post['custom'] = cust; $('#collected-total').html('Calculating...'); $('#collected-entries-jqGrid').clearGridData(); - $('#collected-entries-jqGrid').setPostDataItem('custom', serialize(cust)); + $('#collected-entries-jqGrid').setPostDataItem('dynamic_post', serialize(dynamic_post)); $('#collected-entries-jqGrid') .setGridParam({ page: 1 }) .trigger("reloadGrid"); @@ -153,11 +154,8 @@ echo '
' . "\n"; * Entries */ -echo $this->element('ledger_entries', array - (// Element configuration - 'account_id' => $account['id'], - - // Grid configuration +echo $this->element('statement_entries', array + (// Grid configuration 'config' => array ( 'grid_div_id' => 'collected-entries', @@ -165,7 +163,10 @@ echo $this->element('ledger_entries', array 'grid_events' => array('loadComplete' => 'onGridLoadComplete()'), //'grid_setup' => array('hiddengrid' => true), //'caption' => '', - 'caption' => 'Collected ' . Inflector::pluralize($account['name']) + 'caption' => 'Collected ' . Inflector::pluralize($account['name']), + 'filter' => array('StatementEntry.type' => 'PAYMENT', + 'ChargeEntry.account_id' => $account['id']), + 'exclude' => array('Account', 'Charge'), ), )); diff --git a/views/elements/statement_entries.ctp b/views/elements/statement_entries.ctp index 31cc10f..9494b87 100644 --- a/views/elements/statement_entries.ctp +++ b/views/elements/statement_entries.ctp @@ -20,23 +20,16 @@ $cols['Comment'] = array('index' => 'StatementEntry.comment', 'formatter' $cols['Charge'] = array('index' => 'charge', 'formatter' => 'currency'); $cols['Payment'] = array('index' => 'payment', 'formatter' => 'currency'); -$cols['Last Payment'] = array('index' => 'last_paid', 'formatter' => 'date'); $cols['Applied'] = array('index' => "applied", 'formatter' => 'currency'); $cols['Sub-Total'] = array('index' => 'subtotal-balance', 'formatter' => 'currency', 'sortable' => false); -/* if (!isset($statement_entry_id)) */ -/* $grid->invalidFields('Applied'); */ -/* else */ -/* $cols['Sub-Total']['index'] = 'subtotal-applied'; */ - -// REVISIT : 20090722 -// Disallowing this field until more of the rework is complete -$grid->invalidFields('Applied'); +if (isset($subtotal_column)) + $cols['Sub-Total']['index'] = + 'subtotal-' . $cols[$subtotal_column]['index']; // Include custom data -$grid->customData(compact('statement_entry_id', 'from_date', 'through_date', - 'payment_accounts', 'charge_accounts')); +$grid->customData(compact('statement_entry_id')); // Render the grid $grid @@ -45,5 +38,7 @@ $grid ->defaultFields(array('Entry', 'Date', 'Charge', 'Payment')) ->searchFields(array('Customer', 'Unit')) ->render($this, isset($config) ? $config : null, - array_diff(array_keys($cols), array('Through', 'Lease', 'Last Payment', 'Comment'))); + array_diff(array_keys($cols), array('Through', 'Lease', + 'Applied', 'Sub-Total', + 'Comment')));