Files
pmgr/site/views/elements/ledger.ctp

321 lines
9.9 KiB
PHP

<?php /* -*- mode:PHP -*- */
/* if (isset($heading)) */
/* echo $heading; */
/* else */
/* echo '<h2>'.__('Payments',true).'</h2>'; */
?>
<div class="ledger collection">
<!-- <span class="title">$caption</span> -->
<?php
; // Alignment purposes only
// Charges Only
// Payments Only
// Mixture of both (by date)
// Match both (payments match charges)
/**********************************************************************
* Charges Only
*/
if (isset($ledger['charges'])) {
$headers = array('Charge', 'Date', 'Through', 'Type', 'Comment', 'Amount', 'Balance', 'Total');
$rows = array();
$row_class = array();
$running_total = 0;
foreach($lease['Charge'] AS $charge) {
$amount = $charge['total'];
$balance = $amount;
foreach ($charge['Receipt'] AS $receipt)
$balance -= $receipt['ChargesReceipt']['amount'];
$running_total += $balance;
$rows[] = array($html->link('#'.$charge['id'],
array('controller' => 'charges',
'action' => 'view',
$charge['id'])),
datefmt($charge['charge_date']),
datefmt($charge['charge_to_date']),
$charge['ChargeType']['name'],
$charge['comment'],
currency($amount),
currency($balance),
//currency($amount - $paid));
currency($running_total));
$row_class[] = 'charge';
}
echo ('<div class="ledger history charges">' . "\n");
echo $this->element('table',
array('class' => 'item ledger list',
'caption' => $caption,
'headers' => $headers,
'rows' => $rows,
'row_class' => $row_class,
'column_class' => $headers));
echo ('</div>' . "\n");
}
/**********************************************************************
* Receipts Only
*/
if (isset($ledger['receipts'])) {
$headers = array('Receipt', 'Date', 'Comment', 'Amount', 'Balance', 'Total');
$receipts = array();
foreach ($lease['Charge'] AS $charge) {
foreach($charge['Receipt'] AS $receipt) {
if (!isset($receipts[$receipt['id']])) {
$receipts[$receipt['id']] = $receipt;
$receipts[$receipt['id']]['amount'] = 0;
$receipts[$receipt['id']]['charge'] = 0;
foreach($receipt['Payment'] AS $payment)
$receipts[$receipt['id']]['amount'] += $payment['amount'];
unset($receipts[$receipt['id']]['ChargesReceipt']);
unset($receipts[$receipt['id']]['Payment']);
}
$receipts[$receipt['id']]['charge'] += $receipt['ChargesReceipt']['amount'];
}
}
usort($receipts,
create_function('$a, $b',
'$adate = TimeHelper::toUnix(isset($a["charge_date"]) ? $a["charge_date"] : $a["stamp"]); ' .
'$bdate = TimeHelper::toUnix(isset($b["charge_date"]) ? $b["charge_date"] : $b["stamp"]); ' .
'return strcmp($adate, $bdate);')
);
$rows = array();
$row_class = array();
$running_total = 0;
foreach ($receipts AS $receipt) {
$amount = $receipt['amount'];
$balance = $amount - $receipt['charge'];
$running_total += $balance;
$rows[] = array($html->link('#'.$receipt['id'],
array('controller' => 'receipts',
'action' => 'view',
$receipt['id'])),
datefmt($receipt['stamp']),
$receipt['comment'],
currency($amount),
currency($balance),
currency($running_total));
$row_class[] = 'receipt';
}
echo ('<div class="ledger history receipts">' . "\n");
echo $this->element('table',
array('class' => 'item ledger list',
'caption' => $caption,
'headers' => $headers,
'rows' => $rows,
'row_class' => $row_class,
'column_class' => $headers));
echo ('</div>' . "\n");
}
/* $headers = array('Receipt', 'Date', 'Comment', 'Amount', 'Balance', 'Total'); */
/* $rows = array(); */
/* $row_class = array(); */
/* $running_total = 0; */
/* $odd = 0; */
/* foreach($lease['Receipt'] AS $charge) { */
/* $amount = $charge['total']; */
/* $balance = $amount; */
/* foreach ($charge['Receipt'] AS $receipt) */
/* $balance -= $receipt['ChargesReceipt']['amount']; */
/* $running_total += $balance; */
/* $charge_amount = 0; */
/* $payment_amount = 0; */
/* foreach($receipt['Charge'] AS $charge) */
/* $charge_amount += $charge['ChargesReceipt']['amount']; */
/* foreach($receipt['Payment'] AS $payment) */
/* $payment_amount += $payment['amount']; */
/* foreach ($charge['Receipt'] AS $receipt) { */
/* $amount = -1 * $receipt['ChargesReceipt']['amount']; */
/* $running_total += $amount; */
/* $rows[] = array($html->link('#'.$receipt['id'], */
/* array('controller' => 'receipts', */
/* 'action' => 'view', */
/* $receipt['id'])), */
/* datefmt($receipt['stamp']), */
/* $receipt['comment'], */
/* currency($amount), */
/* currency($running_total)); */
/* $row_class[] = array('receipt', ($odd % 2) ? 'oddrow' : 'evnrow'); */
/* } */
/* $rows[] = array($html->link('#'.$charge['id'], */
/* array('controller' => 'charges', */
/* 'action' => 'view', */
/* $charge['id'])), */
/* datefmt($charge['charge_date']), */
/* datefmt($charge['charge_to_date']), */
/* $charge['ChargeType']['name'], */
/* $charge['comment'], */
/* currency($amount), */
/* currency($balance), */
/* //currency($amount - $paid)); */
/* currency($running_total)); */
/* $row_class[] = array('charge', (++$odd % 2) ? 'oddrow' : 'evnrow'); */
/* } */
/* echo ('<div class="ledger history charges">' . "\n"); */
/* echo $this->element('table', */
/* array('class' => 'item ledger list', */
/* 'caption' => $caption */
/* 'suppress_alternate_rows' => true, */
/* 'headers' => $headers, */
/* 'rows' => $rows, */
/* 'row_class' => $row_class, */
/* 'column_class' => $headers)); */
/* echo ('</div>' . "\n"); */
/**********************************************************************
* Mixture
*/
if (isset($ledger['mix'])) {
$headers = array(/*'Charge/Receipt'*/'ID', 'Date', /*'Through',*/ 'Type', 'Comment', 'Amount', 'Total');
$receipts = array();
foreach ($lease['Charge'] AS $charge) {
foreach($charge['Receipt'] AS $receipt) {
if (!isset($receipts[$receipt['id']])) {
$receipts[$receipt['id']] = $receipt;
$receipts[$receipt['id']]['amount'] = 0;
unset($receipts[$receipt['id']]['ChargesReceipt']);
unset($receipts[$receipt['id']]['Payment']);
}
$receipts[$receipt['id']]['amount'] += $receipt['ChargesReceipt']['amount'];
}
}
$mix = array_merge($lease['Charge'], $receipts);
usort($mix,
create_function('$a, $b',
'$adate = TimeHelper::toUnix(isset($a["charge_date"]) ? $a["charge_date"] : $a["stamp"]); ' .
'$bdate = TimeHelper::toUnix(isset($b["charge_date"]) ? $b["charge_date"] : $b["stamp"]); ' .
'return strcmp($adate, $bdate);')
);
$rows = array();
$row_class = array();
$running_total = 0;
foreach ($mix AS $row) {
if (isset($row['charge_date'])) {
$controller = 'charges';
$class = 'charge';
$rowdate = datefmt($row['charge_date']) .' - '. datefmt($row['charge_to_date']);
$name = $row['ChargeType']['name'];
$amount = $row['total'];
}
else {
$controller = 'receipts';
$class = 'receipt';
$rowdate = ' -- ' . datefmt($row['stamp']);
$name = 'Payment Applied';
$amount = -1 * $row['amount'];
}
$running_total += $amount;
$rows[] = array($html->link('#'.$row['id'],
array('controller' => $controller,
'action' => 'view',
$row['id'])),
$rowdate,
$name,
$row['comment'],
currency($amount),
currency($running_total));
$row_class[] = $class;
}
echo ('<div class="ledger history mix">' . "\n");
echo $this->element('table',
array('class' => 'item ledger list',
'caption' => $caption,
//'suppress_alternate_rows' => true,
'headers' => $headers,
'rows' => $rows,
'row_class' => $row_class,
'column_class' => $headers));
echo ('</div>' . "\n");
}
/**********************************************************************
* Match
*/
if (isset($ledger['match'])) {
$headers = array(/*'Charge/Receipt'*/'ID', 'Date', /*'Through',*/ 'Type', 'Comment', 'Amount', 'Total');
$rows = array();
$row_class = array();
$running_total = 0;
$odd = 0;
foreach($lease['Charge'] AS $charge) {
$amount = $charge['total'];
$running_total += $amount;
$rows[] = array($html->link('#'.$charge['id'],
array('controller' => 'charges',
'action' => 'view',
$charge['id'])),
datefmt($charge['charge_date']) .' - '. datefmt($charge['charge_to_date']),
$charge['ChargeType']['name'],
$charge['comment'],
currency($amount),
currency($running_total));
$row_class[] = array('charge', (++$odd % 2) ? 'oddrow' : 'evnrow');
foreach ($charge['Receipt'] AS $receipt) {
$amount = -1 * $receipt['ChargesReceipt']['amount'];
$running_total += $amount;
$rows[] = array($html->link('#'.$receipt['id'],
array('controller' => 'receipts',
'action' => 'view',
$receipt['id'])),
' -- ' . datefmt($receipt['stamp']),
'Payment Applied',
$receipt['comment'],
currency($amount),
currency($running_total));
$row_class[] = array('receipt', ($odd % 2) ? 'oddrow' : 'evnrow');
}
}
echo ('<div class="ledger history match">' . "\n");
echo $this->element('table',
array('class' => 'item ledger list',
'caption' => $caption,
'suppress_alternate_rows' => true,
'headers' => $headers,
'rows' => $rows,
'row_class' => $row_class,
'column_class' => $headers));
echo ('</div>' . "\n");
}