array('date') */ /* ); */ var $belongsTo = array( 'Customer', ); var $hasMany = array( 'LedgerEntry', ); var $hasAndBelongsToMany = array( 'ReconciledLedgerEntry' => array( 'className' => 'LedgerEntry', 'joinTable' => 'reconciliations', 'foreignKey' => 'ledger_entry_id', 'associationForeignKey' => 'transaction_id', ), ); function beforeSave() { if(!empty($this->data['Transaction']['stamp'])) { $this->data['Transaction']['stamp'] = $this->dateFormatBeforeSave($this->data['Transaction']['stamp']); } return true; } /************************************************************************** ************************************************************************** ************************************************************************** * function: findReconciledLedgerEntries * - Returns ledger entries that are reconciled by the given * transaction (such as charges reconciled by a receipt) */ function findReconciledLedgerEntries($id = null) { $reconciled['LedgerEntry'] = $this->find ('all', array ('link' => array ('ReconciledLedgerEntry' => array ('fields' => array ('id', "COALESCE(SUM(Reconciliation.amount),0) AS 'reconciled'", "ReconciledLedgerEntry.amount - COALESCE(SUM(Reconciliation.amount),0) AS 'balance'", ), ), ), 'group' => ('ReconciledLedgerEntry.id'), 'conditions' => array('Transaction.id' => $id), 'fields' => array(), )); //pr($reconciled); $balance = 0; foreach ($reconciled['LedgerEntry'] AS &$entry) { $entry = array_merge($entry["ReconciledLedgerEntry"], $entry[0]); $balance += $entry['balance']; } $reconciled['balance'] = $balance; return $reconciled; } } ?>