diff --git a/site/models/double_entry.php b/site/models/double_entry.php index 1e9548d..552c17b 100644 --- a/site/models/double_entry.php +++ b/site/models/double_entry.php @@ -53,12 +53,27 @@ class DoubleEntry extends AppModel { */ function addDoubleEntry($entry1, $entry2, $entry1_tender = null) { -/* pr(array('DoubleEntry::addDoubleEntry' => */ -/* compact('entry1', 'entry2', 'entry1_tender'))); */ + $this->prFunctionLevel(16); + $this->prEnter(compact('entry1', 'entry2', 'entry1_tender')); $ret = array(); if (!$this->verifyDoubleEntry($entry1, $entry2, $entry1_tender)) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); + + // Handle the case where a double entry involves the same + // exact ledger. This would not serve any useful purpose. + // It is not, however, an error. It is semantically correct + // just not really logically correct. To make this easier, + // just ensure ledger_id is set for each entry, even though + // it would be handled later by the LedgerEntry model. + //array($entry1, $entry2) AS &$entry) { + for ($i=1; $i <= 2; ++$i) { + if (empty(${'entry'.$i}['ledger_id'])) + ${'entry'.$i}['ledger_id'] = + $this->DebitEntry->Account->currentLedgerID(${'entry'.$i}['account_id']); + } + if ($entry1['ledger_id'] == $entry2['ledger_id']) + return $this->prReturn(array('error' => false)); // Since this model only relates to DebitEntry and CreditEntry... $LE = new LedgerEntry(); @@ -67,13 +82,13 @@ class DoubleEntry extends AppModel { $result = $LE->addLedgerEntry($entry1, $entry1_tender); $ret['Entry1'] = $result; if ($result['error']) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); // Add the second ledger entry to the database $result = $LE->addLedgerEntry($entry2); $ret['Entry2'] = $result; if ($result['error']) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); // Now link them as a double entry $double_entry = array(); @@ -86,9 +101,9 @@ class DoubleEntry extends AppModel { $this->create(); if (!$this->save($double_entry)) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); $ret['double_entry_id'] = $this->id; - return $ret + array('error' => false); + return $this->prReturn($ret + array('error' => false)); } } diff --git a/site/models/ledger_entry.php b/site/models/ledger_entry.php index 0127cc7..542fa5c 100644 --- a/site/models/ledger_entry.php +++ b/site/models/ledger_entry.php @@ -127,12 +127,12 @@ class LedgerEntry extends AppModel { * - Inserts new Ledger Entry into the database */ function addLedgerEntry($entry, $tender = null) { -/* pr(array('LedgerEntry::addLedgerEntry' => */ -/* compact('entry', 'tender'))); */ + $this->prFunctionLevel(16); + $this->prEnter(compact('entry', 'tender')); $ret = array('data' => $entry); if (!$this->verifyLedgerEntry($entry, $tender)) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); if (empty($entry['ledger_id'])) $entry['ledger_id'] = @@ -140,7 +140,7 @@ class LedgerEntry extends AppModel { $this->create(); if (!$this->save($entry)) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); $ret['ledger_entry_id'] = $this->id; @@ -150,10 +150,10 @@ class LedgerEntry extends AppModel { $result = $this->Tender->addTender($tender); $ret['Tender'] = $result; if ($result['error']) - return array('error' => true) + $ret; + return $this->prReturn(array('error' => true) + $ret); } - return $ret + array('error' => false); + return $this->prReturn($ret + array('error' => false)); }