This rework is nowhere near complete, but there are certain things that are falling in place, and worth capturing. I started a branch for just this purpose of being able to check in intermediate work.

git-svn-id: file:///svn-source/pmgr/branches/yafr_20090716/site@352 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
abijah
2009-07-19 23:35:25 +00:00
parent af0c10f6a6
commit 3d262fd4db
24 changed files with 2401 additions and 1373 deletions

View File

@@ -2,7 +2,7 @@
class AccountsController extends AppController {
var $uses = array('Account', 'LedgerEntry');
var $uses = array('Account', 'DoubleEntry');
var $sidemenu_links =
array(array('name' => 'Accounts', 'header' => true),
@@ -68,40 +68,15 @@ class AccountsController extends AppController {
array(// Models
'CurrentLedger' => array
(// Models
'LedgerEntry'
/* REVISIT <AP> 20090615:
* I'll remove this 'conditions' section on a future checkin,
* after I've proven out the %{MODEL_ALIAS} feature will be
* sticking around.
=> array
('conditions' =>
array('OR' =>
array('LedgerEntry.debit_ledger_id = CurrentLedger.id',
'LedgerEntry.credit_ledger_id = CurrentLedger.id'),
),
),
* END REVISIT
*/
'DoubleEntry'
),
),
);
}
function jqGridDataFields(&$params, &$model) {
return array
('Account.*',
'SUM(IF(LedgerEntry.debit_ledger_id = CurrentLedger.id,
LedgerEntry.amount, NULL)) AS debits',
'SUM(IF(LedgerEntry.credit_ledger_id = CurrentLedger.id,
LedgerEntry.amount, NULL)) AS credits',
"SUM(IF(Account.type IN ('ASSET', 'EXPENSE'),
IF(LedgerEntry.debit_ledger_id = CurrentLedger.id, 1, -1),
IF(LedgerEntry.credit_ledger_id = CurrentLedger.id, 1, -1)
) * IF(LedgerEntry.amount, LedgerEntry.amount, 0)
) AS balance",
'COUNT(LedgerEntry.id) AS entries');
return array_merge(array('Account.*'),
$this->Account->Ledger->DoubleEntry->debitCreditFields('DoubleEntry', 'CurrentLedger'));
}
function jqGridDataConditions(&$params, &$model) {
@@ -191,7 +166,7 @@ class AccountsController extends AppController {
('Account' =>
array('fields' => array('name')),
'LedgerEntry' =>
'DoubleEntry' =>
array('fields' => array('id', 'amount'),
'MonetarySource' =>
@@ -206,7 +181,7 @@ class AccountsController extends AppController {
),
'fields' => false,
'conditions' => array(array('Ledger.id' => $ledger_id),
array('LedgerEntry.id IS NOT NULL'),
array('DoubleEntry.id IS NOT NULL'),
),
));
@@ -271,7 +246,7 @@ class AccountsController extends AppController {
// Get all ledger entries of the CURRENT ledger
$entries = $this->Account->findLedgerEntries($id);
$account['CurrentLedger']['LedgerEntry'] = $entries['Entries'];
$account['CurrentLedger']['DoubleEntry'] = $entries['Entries'];
// Summarize each ledger
foreach($account['Ledger'] AS &$ledger)
@@ -293,5 +268,9 @@ class AccountsController extends AppController {
$title = 'Account: ' . $account['Account']['name'];
$this->set(compact('account', 'title', 'stats'));
}
function tst($id) {
$entries = $this->Account->ledgerEntries($id, true);
pr($entries);
}
}