From ece7ab25ae659c071deafea1d755f3022450c037 Mon Sep 17 00:00:00 2001 From: abijah Date: Sat, 11 Jul 2009 08:23:55 +0000 Subject: [PATCH] Eliminated the need for the Invoice Account. I'm having a bit of a hard time believing that it works, since it sure seems like we needed the Invoice account for some reason. However, it's entirely possible that we really just had it for symmetry with Receipt (another account which we'd love to delete). It needs more testing, but it works good enough to check in. git-svn-id: file:///svn-source/pmgr/branches/invoice_receipt_20090629@308 97e9348a-65ac-dc4b-aefc-98561f571b83 --- scripts/sitelink2pmgr.pl | 380 ++++++++---------------------------- site/models/transaction.php | 16 +- 2 files changed, 84 insertions(+), 312 deletions(-) diff --git a/scripts/sitelink2pmgr.pl b/scripts/sitelink2pmgr.pl index 54bd007..5fd40ff 100644 --- a/scripts/sitelink2pmgr.pl +++ b/scripts/sitelink2pmgr.pl @@ -4,7 +4,8 @@ use DBI; use Data::Dumper; use File::Copy; -my $use_ir = 1; +my $use_invoice = 0; +my $use_receipt = 1; # Internally adjust all numbers coming from the database to # be in inches. Not necessary to go to this detail, but the @@ -926,6 +927,7 @@ foreach $row (@{query($sdbh, $query)}) { addRow('transactions', { 'stamp' => $stamp, + #'comment' => "Invoice Transaction", }); $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}} @@ -945,39 +947,51 @@ foreach $row (@{query($sdbh, $query)}) { ]{'deposit'} = $row->{'ChargeAmount'}; } - addRow('transactions', - { 'stamp' => $stamp, - }); - - $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'} - = $newdb{'tables'}{'transactions'}{'autoid'}; - # Invoice must debit the A/R ledger... $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'} = $newdb{'lookup'}{'account'}{'A/R'}{'ledger_id'}; - # ...and credit the Invoice ledger. - $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'} - = $newdb{'lookup'}{'account'}{'Invoice'}{'ledger_id'}; + if ($use_invoice) { + addRow('transactions', + { 'stamp' => $stamp, + #'comment' => "Charges Transaction", + }); - # Create the invoice entry - # debit: A/R credit: Invoice - addRow('ledger_entries', - { 'effective_date' => $effective_date, - 'through_date' => $through_date, - 'monetary_source_id' => $newdb{'ids'}{'monetary_source'}{'internal'}, - 'transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'tx'}, - 'root_transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'}, - 'debit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'}, - 'credit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'}, - 'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'customer_id'}, - 'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'lease_id'}, - 'amount' => $row->{'InvoiceAmount'}, - #'comment' => "Invoice: Charge: $row->{'ChargeID'}", - }); + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'} + = $newdb{'tables'}{'transactions'}{'autoid'}; + + # ...and credit the Invoice ledger. + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'} + = $newdb{'lookup'}{'account'}{'Invoice'}{'ledger_id'}; + + # Create the invoice entry + # debit: A/R credit: Invoice + addRow('ledger_entries', + { 'effective_date' => $effective_date, + 'through_date' => $through_date, + 'monetary_source_id' => $newdb{'ids'}{'monetary_source'}{'internal'}, + 'transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'tx'}, + 'root_transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'}, + 'debit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'}, + 'credit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'}, + 'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'customer_id'}, + 'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'lease_id'}, + 'amount' => $row->{'InvoiceAmount'}, + #'comment' => "Invoice: Charge: $row->{'ChargeID'}", + }); + + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'} + = $newdb{'tables'}{'ledger_entries'}{'autoid'}; + } + else { + # OK, no invoice ledger + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'} + = $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'tx'}; + + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'} + = $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'}; + } - $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'} - = $newdb{'tables'}{'ledger_entries'}{'autoid'}; } @@ -998,11 +1012,11 @@ foreach $row (@{query($sdbh, $query)}) { $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'} = $newdb{'lookup'}{'ledger'}{$row->{'LedgerID'}}{'lease_id'}; - # Charge must credit the invoice ledger... + # Charge must credit the Charge ledger... $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'credit_ledger_id'} = $newdb{'lookup'}{'charge_type'}{$row->{'ChargeDescription'}}{'ledger_id'}; - # ...and debit the A/R ledger. + # ...and debit the Invoice ledger. $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'debit_ledger_id'} = $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'}; @@ -1018,23 +1032,29 @@ foreach $row (@{query($sdbh, $query)}) { 'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'}, 'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'}, 'amount' => $row->{'ChargeAmount'}, - #'comment' => "Charge: $row->{'ChargeID'}; Ledger: $row->{'LedgerID'}", + #'comment' => "Charge: $row->{'ChargeID'}; Ledger: $row->{'LedgerID'}", }); $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'} = $newdb{'tables'}{'ledger_entries'}{'autoid'}; - # Reconcile the Invoice account. Our two entries look like: - # debit: Invoice credit: Rent/LateCharge/Etc - # debit: A/R credit: Invoice - # Since this is from the perspective of the Invoice account, - # the credit entry is the Invoice<->A/R, and the debit - # entry is the actual charge ledger entry. - addRow('reconciliations', - { 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'}, - 'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'}, - 'amount' => $row->{'ChargeAmount'}, - }); + if ($use_invoice) { + # Reconcile the Invoice account. Our two entries look like: + # debit: Invoice credit: Rent/LateCharge/Etc + # debit: A/R credit: Invoice + # Since this is from the perspective of the Invoice account, + # the credit entry is the Invoice<->A/R, and the debit + # entry is the actual charge ledger entry. + addRow('reconciliations', + { 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'}, + 'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'}, + 'amount' => $row->{'ChargeAmount'}, + }); + } + else { + $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'} + = $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'}; + } next unless $row->{'TaxAmount'}; @@ -1050,23 +1070,25 @@ foreach $row (@{query($sdbh, $query)}) { 'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'}, 'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'}, 'amount' => $row->{'TaxAmount'}, - #'comment' => "Tax for ChargeID:$row->{'ChargeID'}", + #'comment' => "Tax for ChargeID:$row->{'ChargeID'}", }); $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'} = $newdb{'tables'}{'ledger_entries'}{'autoid'}; - # Reconcile the Invoice account. Our two entries look like: - # debit: Invoice credit: Tax - # debit: A/R credit: Invoice - # Since this is from the perspective of the Invoice account, - # the credit entry is the Invoice<->A/R, and the debit - # entry is the actual tax ledger entry. - addRow('reconciliations', - { 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'}, - 'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'}, - 'amount' => $row->{'TaxAmount'}, - }); + if ($use_invoice) { + # Reconcile the Invoice account. Our two entries look like: + # debit: Invoice credit: Tax + # debit: A/R credit: Invoice + # Since this is from the perspective of the Invoice account, + # the credit entry is the Invoice<->A/R, and the debit + # entry is the actual tax ledger entry. + addRow('reconciliations', + { 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'}, + 'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'}, + 'amount' => $row->{'TaxAmount'}, + }); + } } @@ -1176,7 +1198,8 @@ foreach $row (@{query($sdbh, $query)}) { if (!$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}) { addRow('transactions', { 'stamp' => $stamp, - }); + #'comment' => "Receipt Transaction", + }); $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}} = {'tx' => $newdb{'tables'}{'transactions'}{'autoid'}, 'date' => $stamp, @@ -1184,6 +1207,7 @@ foreach $row (@{query($sdbh, $query)}) { addRow('transactions', { 'stamp' => $stamp, + #'comment' => "Payment Split Transaction", }); $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{'payment_tx'} = $newdb{'tables'}{'transactions'}{'autoid'}; @@ -1245,7 +1269,7 @@ foreach $row (@{query($sdbh, $query)}) { 'debit_ledger_id' => $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{$row->{'PaymentType'}}{'debit_ledger_id'}, 'credit_ledger_id' => $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{$row->{'PaymentType'}}{'credit_ledger_id'}, 'amount' => $row->{'ReceiptAmount'}, - #'comment' => "Receipt: $row->{'ReceiptNum'}; ", + #'comment' => "Receipt: $row->{'ReceiptNum'}; ", }); $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{$row->{'PaymentType'}}{'ledger_entry_id'} @@ -1301,7 +1325,7 @@ foreach $row (@{query($sdbh, $query)}) 'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'}, 'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'}, 'amount' => $row->{'PaymentAmount'}, - #'comment' => "Receipt: $row->{'ReceiptNum'}; Charge: $row->{'ChargeID'}; Payment: $row->{'PaymentID'}", + #'comment' => "Split; Receipt: $row->{'ReceiptNum'}; Charge: $row->{'ChargeID'}; Payment: $row->{'PaymentID'}", }); $newdb{'lookup'}{'payment'}{$row->{'PaymentID'}}{'ledger_entry_id'} @@ -1408,248 +1432,8 @@ addRow('ledger_entries', }); - - ###################################################################### -## Fake Data for Testing - -my %fake = - ('customer_id' => 4, - 'ledger_id' => 4, - 'invoice' => [ { 'id' => 1000, - 'date' => '2009-05-05', - 'entry' => [ { 'id' => 2100, - 'account_name' => 'Security Deposit', - 'amount' => 10, - 'tax' => 0 }, - ], - }, - { 'id' => 1001, - 'date' => '2009-05-01', - 'thru' => '2009-05-31', - 'entry' => [ { 'id' => 2110, - 'account_name' => 'Rent', - 'amount' => 100, - 'tax' => 5 }, - ], - }, - { 'id' => 1002, - 'date' => '2009-05-11', - 'entry' => [ { 'id' => 2120, - 'account_name' => 'Late Charge', - 'amount' => 25, - 'tax' => 0 }, - ], - }, - ], - 'receipt' => [ { 'id' => 2000, - 'date' => '2009-05-15', - 'entry' => [ { 'id' => 2200, - 'track' => [ { 'debit'=>2100, 'amount'=>10 }, - { 'debit'=>2110, 'amount'=>5 } ], - 'type' => 1, - 'amount' => 15 }, - { 'id' => 2201, - 'track' => [ { 'debit'=>2110, 'amount'=>10 } ], - 'type' => 2, - 'amount' => 10 }, - { 'id' => 2202, - 'track' => [ { 'debit'=>2110, 'amount'=>5 } ], - 'type' => 3, - 'amount' => 5 }, - ], - }, - { 'id' => 2001, - 'date' => '2009-05-18', - 'entry' => [ { 'id' => 2210, - 'track' => [ { 'debit'=>2110, 'amount'=>30 } ], - 'type' => 5, - 'amount' => 30 }, - { 'id' => 2211, - 'track' => [ { 'debit'=>2110, 'amount'=>20 } ], - 'type' => 6, - 'amount' => 20 }, - ], - }, - { 'id' => 2002, - 'date' => '2009-05-22', - 'entry' => [ { 'id' => 2220, - 'track' => [ { 'debit'=>2110, 'amount'=>10 } ], - 'type' => 1, - 'amount' => 10 }, - { 'id' => 2221, - 'track' => [ { 'debit'=>2110, 'amount'=>5 } ], - 'type' => 2, - 'amount' => 5 }, - { 'id' => 2222, - 'track' => [ { 'debit'=>2110, 'amount'=>15 }, - { 'debit'=>2111, 'amount'=>5 }, - { 'debit'=>2120, 'amount'=>5 } ], - 'type' => 7, - 'amount' => 25 }, - { 'id' => 2223, - 'track' => [ { 'debit'=>2120, 'amount'=>20 } ], - 'type' => 8, - 'amount' => 30 }, - ], - }, - ], - - ); - -sub fakeTesting { - $newdb{'ids'}{'ledger'}{'Cash-Old'} = - $newdb{'lookup'}{'account'}{'Cash'}{'ledger_id'}; - - addRow('ledgers', - { 'account_id' => $newdb{'lookup'}{'account'}{'Cash'}{'account_id'}, - 'open_stamp' => 'NOW()', - 'sequence' => 2, - 'comment' => 'Opened new ledger for testing' }); - - $newdb{'lookup'}{'account'}{'Cash'}{'ledger_id'} = - $newdb{'tables'}{'ledgers'}{'autoid'}; - - my $balance = 0; - foreach $row (@{$newdb{'tables'}{'ledger_entries'}{'rows'}}) { - next unless defined $row; - $balance += $row->{'amount'} - if $row->{'debit_ledger_id'} == $newdb{'ids'}{'ledger'}{'Cash-Old'}; - $balance -= $row->{'amount'} - if $row->{'credit_ledger_id'} == $newdb{'ids'}{'ledger'}{'Cash-Old'}; - } - - addRow('transactions', - { 'stamp' => '2009-04-30' }); - - addRow('ledger_entries', - { 'monetary_source_id' => $newdb{'ids'}{'monetary_source'}{'internal'}, - 'transaction_id' => $newdb{'tables'}{'transactions'}{'autoid'}, - 'debit_ledger_id' => $newdb{'lookup'}{'account'}{'Cash'}{'ledger_id'}, - 'credit_ledger_id' => $newdb{'ids'}{'ledger'}{'Cash-Old'}, - 'amount' => $balance, - 'name' => "Close Out ($newdb{'ids'}{'ledger'}{'Cash-Old'} -> $newdb{'tables'}{'transactions'}{'autoid'})", - 'comment' => "Carrying forward old ledger balance onto new ledger" }); -# NOTE: no tracking for the Cash account - - $newdb{'tables'}{'ledgers'}{'rows'}[$newdb{'ids'}{'ledger'}{'Cash-Old'}]{'closed'} = 1; - $newdb{'tables'}{'ledgers'}{'rows'}[$newdb{'ids'}{'ledger'}{'Cash-Old'}]{'close_stamp'} = 'NOW()'; - - foreach my $ir ('invoice', 'receipt') { - foreach my $tx (@{$fake{$ir}}) { - #print Dumper ${%$tx{'date'}}; - #exit; - addRow('transactions', - { 'id' => $tx->{'id'}, - 'stamp' => $tx->{'date'}, - 'through_date' => $tx->{'thru'}, - 'comment' => "Fake $ir" }, - 1); - - foreach my $e (@{$tx->{'entry'}}) { - my $ircrdr = ($ir eq 'invoice') ? 'Invoice' : 'Receipt'; - my $dr = ($ir eq 'invoice') ? 'A/R' : 'Cash'; - my $cr = ($ir eq 'invoice') ? $e->{'account_name'} : 'A/R'; - my $crdr; - my $monetary_source_id; - - if (defined $e->{'type'}) { - addRow('monetary_sources', - { 'name' => "Money of type " . $e->{'type'}, - 'comment' => "Fake Money For " . $e->{'id'} }); - $monetary_source_id = $newdb{'tables'}{'monetary_sources'}{'autoid'}; - } - else { - $monetary_source_id = $newdb{'ids'}{'monetary_source'}{'internal'}; - } - - $crdr = $dr; - if ($use_ir) { - $crdr = $ircrdr; - addRow('ledger_entries', - { 'id' => $e->{'id'}+10000, - 'monetary_source_id' => ($ir eq 'invoice' ? undef : $monetary_source_id), - 'transaction_id' => $tx->{'id'}, - 'debit_ledger_id' => $newdb{'lookup'}{'account'}{$dr}{'ledger_id'}, - 'credit_ledger_id' => $newdb{'lookup'}{'account'}{$crdr}{'ledger_id'}, - 'customer_id' => $fake{'customer_id'}, - #'lease_id' => $fake{'lease_id'}, - 'amount' => $e->{'amount'}, - 'comment' => "Fake $ir entry" }, - 1); - } - - addRow('ledger_entries', - { 'id' => $e->{'id'}, - 'monetary_source_id' => ($ir eq 'invoice' ? $monetary_source_id : undef), - 'transaction_id' => $tx->{'id'}, - 'debit_ledger_id' => $newdb{'lookup'}{'account'}{$crdr}{'ledger_id'}, - 'credit_ledger_id' => $newdb{'lookup'}{'account'}{$cr}{'ledger_id'}, - 'customer_id' => $fake{'customer_id'}, - 'lease_id' => $fake{'lease_id'}, - 'amount' => $e->{'amount'}, - 'comment' => "Fake Entry" }, - 1); - - if ($use_ir) { - addRow('reconciliations', - { 'debit_ledger_entry_id' => $e->{'id'} + ($ir eq 'invoice' ? 10000 : 0), - 'credit_ledger_entry_id' => $e->{'id'} + ($ir eq 'invoice' ? 0 : 10000), - 'amount' => $e->{'amount'}, - }); - } - - foreach my $t (@{$e->{'track'}}) { - addRow('reconciliations', - { 'debit_ledger_entry_id' => $t->{'debit'}, - 'credit_ledger_entry_id' => $e->{'id'}, - 'amount' => $t->{'amount'} - }); - } - - next unless $e->{'tax'}; - - $crdr = $dr; - if ($use_ir) { - $crdr = $ircrdr; - addRow('ledger_entries', - { 'id' => $e->{'id'}+10001, - 'monetary_source_id' => ($ir eq 'invoice' ? undef : $monetary_source_id), - 'transaction_id' => $tx->{'id'}, - 'debit_ledger_id' => $newdb{'lookup'}{'account'}{$dr}{'ledger_id'}, - 'credit_ledger_id' => $newdb{'lookup'}{'account'}{$crdr}{'ledger_id'}, - 'customer_id' => $fake{'customer_id'}, - #'lease_id' => $fake{'lease_id'}, - 'amount' => $e->{'tax'}, - 'comment' => "Fake Tax Invoice Entry" }, - 1); - } - - addRow('ledger_entries', - { 'id' => $e->{'id'}+1, - 'monetary_source_id' => ($ir eq 'invoice' ? $monetary_source_id : undef), - 'transaction_id' => $tx->{'id'}, - 'debit_ledger_id' => $newdb{'lookup'}{'account'}{$crdr}{'ledger_id'}, - 'credit_ledger_id' => $newdb{'lookup'}{'account'}{'Tax'}{'ledger_id'}, - 'customer_id' => $fake{'customer_id'}, - 'lease_id' => $fake{'lease_id'}, - 'amount' => $e->{'tax'}, - 'comment' => "Fake Tax Entry" }, - 1); - - if ($use_ir) { - addRow('reconciliations', - { 'debit_ledger_entry_id' => $e->{'id'} + ($ir eq 'invoice' ? 10001 : 1), - 'credit_ledger_entry_id' => $e->{'id'} + ($ir eq 'invoice' ? 1 : 10001), - 'amount' => $e->{'tax'}, - }); - } - } - } - } -} - -#fakeTesting(); +## Build the Database $Data::Dumper::Sortkeys = 1; # print Dumper \%newdb; diff --git a/site/models/transaction.php b/site/models/transaction.php index 27f739a..6870b11 100644 --- a/site/models/transaction.php +++ b/site/models/transaction.php @@ -36,16 +36,6 @@ class Transaction extends AppModel { foreach ($data['LedgerEntry'] AS $entry) $grand_total += $entry['amount']; - $ids = $this->LedgerEntry->Ledger->Account->postLedgerEntry - (array_intersect_key($data, array('Transaction'=>1, 'transaction_id'=>1)), - null, - array('debit_ledger_id' => $A->currentLedgerID($A->accountReceivableAccountID()), - 'credit_ledger_id' => $A->currentLedgerID($A->invoiceAccountID()), - 'customer_id' => $customer_id, - 'lease_id' => $lease_id, - 'amount' => $grand_total)); - $ar_entry_id = $ids['id']; - // Go through the entered charges $invoice_transaction = array_intersect_key($data, array('Transaction'=>1, 'transaction_id'=>1)); foreach ($data['LedgerEntry'] AS $entry) { @@ -56,13 +46,11 @@ class Transaction extends AppModel { ($invoice_transaction, array_intersect_key($entry, array('MonetarySource'=>1)) + array_intersect_key($entry, array('account_id'=>1)), - array('debit_ledger_id' => $A->currentLedgerID($A->invoiceAccountID()), + array('debit_ledger_id' => $A->currentLedgerID($A->accountReceivableAccountID()), 'credit_ledger_id' => $A->currentLedgerID($entry['account_id']), 'customer_id' => $customer_id, 'lease_id' => $lease_id) - + $entry, - array('debit' => array(array('LedgerEntry' => array('id' => $ar_entry_id, - 'amount' => $entry['amount'])))) + + $entry ); if ($ids['error'])