Forgot the new files on the last checkin
git-svn-id: file:///svn-source/pmgr/branches/statements_20090623@185 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
123
site/models/statement.php
Normal file
123
site/models/statement.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
class Statement extends AppModel {
|
||||
|
||||
var $hasMany = array(
|
||||
'Lease',
|
||||
'Customer',
|
||||
'StatementEntry',
|
||||
|
||||
'ChargeStatementEntry' => array(
|
||||
'className' => 'StatementEntry',
|
||||
'conditions' => array('type' => 'CHARGE'),
|
||||
),
|
||||
'PaymentStatementEntry' => array(
|
||||
'className' => 'StatementEntry',
|
||||
'conditions' => array('type' => 'PAYMENT'),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* function: findStatementEntries
|
||||
* - Returns an array of statement entries that belong to a given
|
||||
* statement. There is extra work done... see the StatementEntry model.
|
||||
*/
|
||||
function findStatementEntries($id, $cond = null, $link = null) {
|
||||
/* pr(array('function' => 'Statement::findStatementEntries', */
|
||||
/* 'args' => compact('id', 'cond', 'link'), */
|
||||
/* )); */
|
||||
|
||||
if (!isset($cond))
|
||||
$cond = array();
|
||||
|
||||
$cond[] = array('Statement.id' => $id);
|
||||
$entries = $this->find('all', array('link' => $link, 'conditions' => $cond));
|
||||
|
||||
/* pr(array('function' => 'Statement::findStatementEntries', */
|
||||
/* 'args' => compact('id', 'cond', 'link'), */
|
||||
/* 'return' => compact('entries'), */
|
||||
/* )); */
|
||||
return $entries;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* function: findEntriesRelatedToAccount
|
||||
* - Returns an array of statement entries that belong to the given
|
||||
* account, and are related to a specific account.
|
||||
*/
|
||||
function findEntriesRelatedToAccount($id, $rel_ids, $cond = null, $link = null) {
|
||||
/* pr(array('function' => 'Statement::findEntriesRelatedToAccount', */
|
||||
/* 'args' => compact('id', 'rel_ids', 'cond', 'link'), */
|
||||
/* )); */
|
||||
|
||||
if (!isset($cond))
|
||||
$cond = array();
|
||||
if (!isset($link))
|
||||
$link = array();
|
||||
if (!is_array($rel_ids))
|
||||
$rel_ids = array($rel_ids);
|
||||
|
||||
$link['StatementEntry'] = array('LedgerEntry' => array('Ledger' => array('Account')));
|
||||
$cond[] = array('Account.id' => $rel_ids);
|
||||
|
||||
$entries = $this->findStatementEntries($id, $cond, $link);
|
||||
|
||||
$stats = $this->stats($id, $cond, $link);
|
||||
$entries = array('Entries' => $entries,
|
||||
'summary' => $stats);
|
||||
|
||||
/* pr(array('function' => 'Statement::findEntriesRelatedToAccount', */
|
||||
/* 'args' => compact('id', 'relid', 'cond', 'link'), */
|
||||
/* 'return' => compact('entries'), */
|
||||
/* )); */
|
||||
return $entries;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* function: stats
|
||||
* - Returns summary data from the requested statement.
|
||||
*/
|
||||
function stats($id, $cond = null, $link = null) {
|
||||
if (!isset($cond))
|
||||
$cond = array();
|
||||
if (!isset($link))
|
||||
$link = array();
|
||||
|
||||
if (!isset($link['StatementEntry']))
|
||||
$link['StatementEntry'] = array('fields' => array());
|
||||
|
||||
$cond[] = array('Statement.id' => $id);
|
||||
|
||||
$stats = $this->find
|
||||
('first', array
|
||||
('link' => $link,
|
||||
|
||||
'fields' =>
|
||||
array("SUM(IF(StatementEntry.type = 'CHARGE',
|
||||
StatementEntry.amount, NULL)) AS charges",
|
||||
"SUM(IF(StatementEntry.type = 'PAYMENT',
|
||||
StatementEntry.amount, NULL)) AS payments",
|
||||
"SUM(IF(StatementEntry.type = 'CHARGE', 1, -1)
|
||||
* IF(StatementEntry.amount, StatementEntry.amount, 0)
|
||||
) AS balance",
|
||||
"COUNT(StatementEntry.id) AS entries"),
|
||||
|
||||
'conditions' => $cond,
|
||||
'group' => 'Statement.id',
|
||||
));
|
||||
|
||||
// The fields are all tucked into the [0] index,
|
||||
// and the rest of the array is useless (empty).
|
||||
return $stats[0];
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user