More tweaking to all of the grid displays. This was mostly visual, but includes some bug fixes as well (such as a manual filter override in the ledger_entries controller).

git-svn-id: file:///svn-source/pmgr/branches/yafr_20090716@371 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
abijah
2009-07-23 16:53:33 +00:00
parent 9dccbfeda8
commit 708759765f
15 changed files with 77 additions and 57 deletions

View File

@@ -59,6 +59,10 @@ class AccountsController extends AppController {
} }
function gridDataCountTables(&$params, &$model) { function gridDataCountTables(&$params, &$model) {
// Our count should NOT include anything extra,
// so we need the virtual function to prevent
// the base class from just calling our
// gridDataTables function
return parent::gridDataTables($params, $model); return parent::gridDataTables($params, $model);
} }

View File

@@ -56,6 +56,15 @@ class LedgerEntriesController extends AppController {
$this->LedgerEntry->debitCreditFields()); $this->LedgerEntry->debitCreditFields());
} }
function gridDataFilterTablesTable(&$params, &$model, $table) {
$table = $this->gridDataFilterTableName($params, $model, $table);
// Account is already part of our standard table set.
// Ensure we don't add it in again as part of filtering.
if ($table == 'Account')
return null;
return $table;
}
function gridDataOrder(&$params, &$model, $index, $direction) { function gridDataOrder(&$params, &$model, $index, $direction) {
/* if ($index === 'balance') */ /* if ($index === 'balance') */
/* return ($index .' '. $direction); */ /* return ($index .' '. $direction); */

View File

@@ -50,7 +50,11 @@ class LedgersController extends AppController {
} }
function gridDataCountTables(&$params, &$model) { function gridDataCountTables(&$params, &$model) {
return array('contain' => false); // Our count should NOT include anything extra,
// so we need the virtual function to prevent
// the base class from just calling our
// gridDataTables function.
return parent::gridDataTables($params, $model);
} }
function gridDataTables(&$params, &$model) { function gridDataTables(&$params, &$model) {

View File

@@ -55,10 +55,11 @@ class Lease extends AppModel {
('all', ('all',
array('link' => array('link' =>
array(// Models array(// Models
'StatementEntry' => array(), 'StatementEntry',
'SEx' => 'SEx' =>
array('class' => 'StatementEntry', array('class' => 'StatementEntry',
'fields' => array(),
'conditions' => array 'conditions' => array
('SEx.effective_date = DATE_ADD(StatementEntry.through_date, INTERVAL 1 day)', ('SEx.effective_date = DATE_ADD(StatementEntry.through_date, INTERVAL 1 day)',
'SEx.lease_id = StatementEntry.lease_id', 'SEx.lease_id = StatementEntry.lease_id',
@@ -75,6 +76,7 @@ class Lease extends AppModel {
), ),
) )
); );
//pr(compact('entries'));
return $entries; return $entries;
} }
@@ -111,7 +113,6 @@ class Lease extends AppModel {
return false; return false;
if (count($entries) != 1) if (count($entries) != 1)
return null; return null;
pr($entries);
return $entries[0]['StatementEntry']['through_date']; return $entries[0]['StatementEntry']['through_date'];
} }
@@ -126,12 +127,17 @@ class Lease extends AppModel {
function rentPaidThrough($id) { function rentPaidThrough($id) {
$rent_account_id = $this->StatementEntry->Account->rentAccountID(); $rent_account_id = $this->StatementEntry->Account->rentAccountID();
// First, see if we can find any unpaid entries. Of course,
// the first unpaid entry gives us a very direct indication
// of when the customer is paid up through, which is 1 day
// prior to the effective date of that first unpaid charge.
$rent = $this->StatementEntry->reconciledSet $rent = $this->StatementEntry->reconciledSet
('CHARGE', ('CHARGE',
array('fields' => array('fields' =>
array('StatementEntry.*', array('StatementEntry.*',
'DATE_SUB(StatementEntry.effective_date, INTERVAL 1 DAY) AS paid_through', 'DATE_SUB(StatementEntry.effective_date, INTERVAL 1 DAY) AS paid_through',
), ),
'conditions' => 'conditions' =>
array(array('StatementEntry.lease_id' => $id), array(array('StatementEntry.lease_id' => $id),
array('StatementEntry.account_id' => $rent_account_id)), array('StatementEntry.account_id' => $rent_account_id)),
@@ -139,63 +145,34 @@ class Lease extends AppModel {
'order' => array('StatementEntry.effective_date'), 'order' => array('StatementEntry.effective_date'),
), ),
true); true);
/* $query = array */
/* ('link' => */
/* array(// Models */
/* 'StatementEntry' => */
/* array('Entry' => */
/* array(), */
/* 'fields' => array('SUM(COALESCE(MoneyStatementEntryR.amount,0)) AS paid'), */
/* ), */
/* ), */
/* // Finally, the Money (Cash/Check/etc) Entry is the one */
/* // which reconciles our ReceiptStatementEntry debit */
/* 'DebitReconciliationStatementEntry' => */
/* array('alias' => 'MoneyStatementEntry', */
/* 'linkalias' => 'MoneyStatementEntryR', */
/* ), */
/* ), */
/* ), */
/* 'fields' => array('StatementEntry.amount', */
/* 'DATE_SUB(StatementEntry.effective_date, INTERVAL 1 DAY) AS paid_through', */
/* ), */
/* 'group' => 'StatementEntry.id HAVING paid <> StatementEntry.amount', */
/* 'conditions' => array(array('StatementEntry.lease_id' => $id), */
/* array('Account.id' => $this->StatementEntry->Ledger->Account->rentAccountID()), */
/* ), */
/* 'order' => array('StatementEntry.effective_date', */
/* ), */
/* ); */
/* $rent = $this->StatementEntry->find('first', $query); */
//pr($rent); //pr($rent);
if ($rent['entries']) if ($rent['entries'])
return $rent['entries'][0]['StatementEntry']['paid_through']; return $rent['entries'][0]['StatementEntry']['paid_through'];
// If we don't have any unpaid charges (great!), then the
// customer is paid up through the last day of the last
// charge. So, search for paid charges, which already
// have the paid through date saved as part of the entry.
$rent = $this->StatementEntry->reconciledSet $rent = $this->StatementEntry->reconciledSet
('CHARGE', ('CHARGE',
array('conditions' => array('conditions' =>
array(array('StatementEntry.lease_id' => $id), array(array('StatementEntry.lease_id' => $id),
array('StatementEntry.account_id' => $rent_account_id)), array('StatementEntry.account_id' => $rent_account_id)),
'order' => array('Entry.through_date DESC'), 'order' => array('StatementEntry.through_date DESC'),
), ),
false); false);
if ($rent) //pr($rent);
return $rent[0]['StatementEntry']['through_date'];
/* $query['fields'] = 'Entry.through_date'; */ if ($rent['entries'])
/* $query['order'] = 'Entry.through_date DESC'; */ return $rent['entries'][0]['StatementEntry']['through_date'];
/* $query['group'] = 'StatementEntry.id'; */
/* $rent = $this->StatementEntry->find('first', $query); */
/* if ($rent) */
/* return $rent['StatementEntry']['through_date']; */
// After all that, having found that there are no unpaid
// charges, and in fact, no paid charges either, we cannot
// possibly say when the customer is paid through.
return null; return null;
} }

View File

@@ -270,12 +270,14 @@ OPTION 2
$lquery = $this->reconciledSetQuery($set, $query); $lquery = $this->reconciledSetQuery($set, $query);
$result = $this->find('all', $lquery); $result = $this->find('all', $lquery);
//pr(compact('lquery', 'result'));
//pr(array('reconciledSet', compact('set', 'lquery', 'result'))); //pr(array('reconciledSet', compact('set', 'lquery', 'result')));
$resultset = array(); $resultset = array();
foreach ($result AS $i => $entry) { foreach ($result AS $i => $entry) {
//pr(compact('entry')); //pr(compact('entry'));
$entry['StatementEntry'] += $entry[0]; $entry['StatementEntry'] = $entry[0] + $entry['StatementEntry'];
unset($entry[0]); unset($entry[0]);
$entry['StatementEntry']['balance'] = $entry['StatementEntry']['balance'] =
@@ -293,6 +295,8 @@ OPTION 2
} }
} }
//pr(compact('resultset'));
//pr(array('StatementEntry::reconciledSet()' => compact('resultset'))); //pr(array('StatementEntry::reconciledSet()' => compact('resultset')));
//$resultset['stats'] = $this->stats(null, $query); //$resultset['stats'] = $this->stats(null, $query);

View File

@@ -77,9 +77,12 @@ echo $this->element('ledgers', array
echo $this->element('ledger_entries', array echo $this->element('ledger_entries', array
(// Grid configuration (// Grid configuration
'config' => array 'config' => array
('caption' => ("Current Ledger: " . ('grid_div_id' => 'ledger-ledger-entry-list',
'caption' => ("Current Ledger: " .
"(". $current_ledger['name'] .")"), "(". $current_ledger['name'] .")"),
'filter' => array('ledger_id' => $current_ledger['id']), 'filter' => array('ledger_id' => $current_ledger['id']),
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Debit', 'Credit'),
'include' => array('Balance', 'Sub-Total'),
))); )));
@@ -91,9 +94,12 @@ echo $this->element('ledger_entries', array
echo $this->element('ledger_entries', array echo $this->element('ledger_entries', array
(// Grid configuration (// Grid configuration
'config' => array 'config' => array
('grid_setup' => array('hiddengrid' => true), ('grid_div_id' => 'account-ledger-entry-list',
'grid_setup' => array('hiddengrid' => true),
'caption' => "Entire Ledger", 'caption' => "Entire Ledger",
'filter' => array('account_id' => $account['id']), 'filter' => array('account_id' => $account['id']),
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Debit', 'Credit'),
'include' => array('Balance', 'Sub-Total'),
))); )));

View File

@@ -56,6 +56,7 @@ echo $this->element('contacts', array
'config' => array 'config' => array
('caption' => 'Customer Contacts', ('caption' => 'Customer Contacts',
'filter' => array('Customer.id' => $customer['Customer']['id']), 'filter' => array('Customer.id' => $customer['Customer']['id']),
'include' => array('Type', 'Active'),
))); )));
@@ -68,6 +69,7 @@ echo $this->element('leases', array
'config' => array 'config' => array
('caption' => 'Lease History', ('caption' => 'Lease History',
'filter' => array('Customer.id' => $customer['Customer']['id']), 'filter' => array('Customer.id' => $customer['Customer']['id']),
'exclude' => array('Customer'),
))); )));
@@ -80,6 +82,7 @@ echo $this->element('statement_entries', array
'config' => array 'config' => array
('caption' => 'Account', ('caption' => 'Account',
'filter' => array('Customer.id' => $customer['Customer']['id']), 'filter' => array('Customer.id' => $customer['Customer']['id']),
'exclude' => array('Effective', 'Customer'),
))); )));

View File

@@ -11,9 +11,10 @@ $cols['Cr/Dr'] = array('index' => 'LedgerEntry.crdr', 'formatter' =>
$cols['Tender'] = array('index' => 'Tender.name', 'formatter' => 'name'); $cols['Tender'] = array('index' => 'Tender.name', 'formatter' => 'name');
$cols['Comment'] = array('index' => 'LedgerEntry.comment', 'formatter' => 'comment', 'width'=>150); $cols['Comment'] = array('index' => 'LedgerEntry.comment', 'formatter' => 'comment', 'width'=>150);
$cols['Amount'] = array('index' => 'LedgerEntry.amount', 'formatter' => 'currency');
$cols['Debit'] = array('index' => 'debit', 'formatter' => 'currency'); $cols['Debit'] = array('index' => 'debit', 'formatter' => 'currency');
$cols['Credit'] = array('index' => 'credit', 'formatter' => 'currency'); $cols['Credit'] = array('index' => 'credit', 'formatter' => 'currency');
$cols['Amount'] = array('index' => 'LedgerEntry.amount', 'formatter' => 'currency'); $cols['Balance'] = array('index' => 'balance', 'formatter' => 'currency');
$cols['Sub-Total'] = array('index' => 'subtotal-balance', 'formatter' => 'currency', 'sortable' => false); $cols['Sub-Total'] = array('index' => 'subtotal-balance', 'formatter' => 'currency', 'sortable' => false);
@@ -25,5 +26,5 @@ $grid
->defaultFields(array('Entry', 'Date', 'Amount')) ->defaultFields(array('Entry', 'Date', 'Amount'))
->searchFields(array('Customer', 'Unit')) ->searchFields(array('Customer', 'Unit'))
->render($this, isset($config) ? $config : null, ->render($this, isset($config) ? $config : null,
array_diff(array_keys($cols), array('Debit', 'Credit', 'Sub-Total', 'Comment'))); array_diff(array_keys($cols), array('Debit', 'Credit', 'Balance', 'Sub-Total', 'Comment')));

View File

@@ -22,7 +22,7 @@ $cols['Payment'] = array('index' => 'payment', 'formatter' =>
$cols['Last Payment'] = array('index' => 'last_paid', 'formatter' => 'date'); $cols['Last Payment'] = array('index' => 'last_paid', 'formatter' => 'date');
$cols['Applied'] = array('index' => "applied", 'formatter' => 'currency'); $cols['Applied'] = array('index' => "applied", 'formatter' => 'currency');
$cols['Sub-Total'] = array('index' => 'subtotal-StatementEntry.amount', 'formatter' => 'currency', 'sortable' => false); $cols['Sub-Total'] = array('index' => 'subtotal-balance', 'formatter' => 'currency', 'sortable' => false);
/* if (!isset($statement_entry_id)) */ /* if (!isset($statement_entry_id)) */
@@ -31,8 +31,7 @@ $cols['Sub-Total'] = array('index' => 'subtotal-StatementEntry.amount', 'f
/* $cols['Sub-Total']['index'] = 'subtotal-applied'; */ /* $cols['Sub-Total']['index'] = 'subtotal-applied'; */
// REVISIT <AP>: 20090722 // REVISIT <AP>: 20090722
// Disallowing these fields until more of the rework is complete // Disallowing this field until more of the rework is complete
$grid->invalidFields('Sub-Total');
$grid->invalidFields('Applied'); $grid->invalidFields('Applied');
// Include custom data // Include custom data

View File

@@ -86,6 +86,8 @@ echo $this->element('statement_entries', array
'config' => array 'config' => array
('caption' => 'Account', ('caption' => 'Account',
'filter' => array('lease_id' => $lease['id']), 'filter' => array('lease_id' => $lease['id']),
'include' => array('Through'),
'exclude' => array('Customer', 'Lease', 'Unit'),
))); )));

View File

@@ -70,6 +70,10 @@ echo $this->element('ledger_entries', array
'config' => array 'config' => array
('caption' => "Ledger Entries", ('caption' => "Ledger Entries",
'filter' => array('ledger_id' => $ledger['id']), 'filter' => array('ledger_id' => $ledger['id']),
'exclude' => array('Ledger', 'Account', 'Amount', 'Cr/Dr', 'Debit', 'Credit'),
'include' => array('Balance', 'Sub-Total'),
/* 'exclude' => array('Ledger', 'Account', 'Amount', 'Cr/Dr', 'Balance'), */
/* 'include' => array('Debit', 'Credit', 'Sub-Total'), */
))); )));

View File

@@ -104,6 +104,7 @@ echo $this->element('statement_entries', array
'config' => array 'config' => array
('caption' => 'Entries Applied', ('caption' => 'Entries Applied',
//'filter' => array('statement_entry_id' => $entry['id']), //'filter' => array('statement_entry_id' => $entry['id']),
'exclude' => array('Entry'),
))); )));

View File

@@ -61,6 +61,7 @@ echo $this->element('ledger_entries', array
'config' => array 'config' => array
('caption' => "Ledger Entries", ('caption' => "Ledger Entries",
'filter' => array('tender_id' => $tender['id']), 'filter' => array('tender_id' => $tender['id']),
'exclude' => array('Tender'),
))); )));

View File

@@ -73,6 +73,7 @@ echo $this->element('statement_entries', array
( (
'caption' => 'Statement Entries', 'caption' => 'Statement Entries',
'filter' => array('transaction_id' => $transaction['id']), 'filter' => array('transaction_id' => $transaction['id']),
'exclude' => array('Transaction'),
))); )));
@@ -86,6 +87,7 @@ echo $this->element('ledger_entries', array
( (
'caption' => 'Ledger Entries', 'caption' => 'Ledger Entries',
'filter' => array('transaction_id' => $transaction['id']), 'filter' => array('transaction_id' => $transaction['id']),
'exclude' => array('Transaction'),
))); )));

View File

@@ -67,6 +67,7 @@ echo $this->element('leases', array
'config' => array 'config' => array
('caption' => 'Lease History', ('caption' => 'Lease History',
'filter' => array('Unit.id' => $unit['id']), 'filter' => array('Unit.id' => $unit['id']),
'exclude' => array('Unit'),
))); )));
@@ -75,7 +76,7 @@ echo $this->element('leases', array
*/ */
if (isset($current_lease['id'])) { if (isset($current_lease['id'])) {
echo $this->element('ledger_entries', array echo $this->element('statement_entries', array
(// Grid configuration (// Grid configuration
'config' => array 'config' => array
( (
@@ -84,6 +85,8 @@ if (isset($current_lease['id'])) {
. $current_lease['Customer']['name'] . $current_lease['Customer']['name']
. ')'), . ')'),
'filter' => array('Lease.id' => $current_lease['id']), 'filter' => array('Lease.id' => $current_lease['id']),
'include' => array('Through'),
'exclude' => array('Customer', 'Lease', 'Unit'),
))); )));
} }