'.__('Ledger Entries',true).''; $headers = array('Transaction', 'Entry', 'Date', 'Comment', 'Debit', 'Credit', 'Total'); $column_class = array(); foreach (array_intersect($headers, array('Transaction', 'Entry')) AS $k => $v) { $column_class[$k] = 'id'; } foreach (array_intersect($headers, array('Debit', 'Credit', 'Total')) AS $k => $v) { $column_class[$k] = 'currency'; } foreach (array_intersect($headers, array('Comment')) AS $k => $v) { $column_class[$k] = 'slack'; } $rows = array(); $running_total = 0; foreach($ledger_entries AS $entry) { $credit = $debit = null; $running_total += $entry[0]['balance']; if (isset($entry[0]['debit'])) $debit = $entry[0]['debit']; if (isset($entry[0]['credit'])) $credit = $entry[0]['credit']; // local references to linked tables $transaction = $entry['Transaction']; // Now that we've extracted top level 'LedgerEntry' data // move our variable to the meat of 'LedgerEntry' for clarity if (isset($entry['LedgerEntry'])) $entry = $entry['LedgerEntry']; $rows[] = array(isset($transaction['id']) ? $html->link('#'.$transaction['id'], array('controller' => 'transactions', 'action' => 'view', $transaction['id'])) : null, isset($entry['id']) ? $html->link('#'.$entry['id'], array('controller' => 'ledger_entries', 'action' => 'view', $entry['id'])) : null, FormatHelper::date($transaction['stamp']), FormatHelper::comment(array($transaction['comment'], $entry['comment'])), FormatHelper::currency($debit), FormatHelper::currency($credit), FormatHelper::currency($running_total) ); } echo $this->element('table', array('class' => 'item ledger-entries list', 'caption' => isset($caption) ? $caption : null, 'headers' => $headers, 'rows' => $rows, 'column_class' => $column_class)); ?>