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
This commit is contained in:
@@ -4,7 +4,8 @@ use DBI;
|
|||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
use File::Copy;
|
use File::Copy;
|
||||||
|
|
||||||
my $use_ir = 1;
|
my $use_invoice = 0;
|
||||||
|
my $use_receipt = 1;
|
||||||
|
|
||||||
# Internally adjust all numbers coming from the database to
|
# Internally adjust all numbers coming from the database to
|
||||||
# be in inches. Not necessary to go to this detail, but the
|
# be in inches. Not necessary to go to this detail, but the
|
||||||
@@ -926,6 +927,7 @@ foreach $row (@{query($sdbh, $query)}) {
|
|||||||
|
|
||||||
addRow('transactions',
|
addRow('transactions',
|
||||||
{ 'stamp' => $stamp,
|
{ 'stamp' => $stamp,
|
||||||
|
#'comment' => "Invoice Transaction",
|
||||||
});
|
});
|
||||||
|
|
||||||
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}
|
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}
|
||||||
@@ -945,39 +947,51 @@ foreach $row (@{query($sdbh, $query)}) {
|
|||||||
]{'deposit'} = $row->{'ChargeAmount'};
|
]{'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...
|
# Invoice must debit the A/R ledger...
|
||||||
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'}
|
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'}
|
||||||
= $newdb{'lookup'}{'account'}{'A/R'}{'ledger_id'};
|
= $newdb{'lookup'}{'account'}{'A/R'}{'ledger_id'};
|
||||||
|
|
||||||
# ...and credit the Invoice ledger.
|
if ($use_invoice) {
|
||||||
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'}
|
addRow('transactions',
|
||||||
= $newdb{'lookup'}{'account'}{'Invoice'}{'ledger_id'};
|
{ 'stamp' => $stamp,
|
||||||
|
#'comment' => "Charges Transaction",
|
||||||
|
});
|
||||||
|
|
||||||
# Create the invoice entry
|
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'}
|
||||||
# debit: A/R credit: Invoice
|
= $newdb{'tables'}{'transactions'}{'autoid'};
|
||||||
addRow('ledger_entries',
|
|
||||||
{ 'effective_date' => $effective_date,
|
# ...and credit the Invoice ledger.
|
||||||
'through_date' => $through_date,
|
$newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'}
|
||||||
'monetary_source_id' => $newdb{'ids'}{'monetary_source'}{'internal'},
|
= $newdb{'lookup'}{'account'}{'Invoice'}{'ledger_id'};
|
||||||
'transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'tx'},
|
|
||||||
'root_transaction_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'charge_tx'},
|
# Create the invoice entry
|
||||||
'debit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'debit_ledger_id'},
|
# debit: A/R credit: Invoice
|
||||||
'credit_ledger_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_ledger_id'},
|
addRow('ledger_entries',
|
||||||
'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'customer_id'},
|
{ 'effective_date' => $effective_date,
|
||||||
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'lease_id'},
|
'through_date' => $through_date,
|
||||||
'amount' => $row->{'InvoiceAmount'},
|
'monetary_source_id' => $newdb{'ids'}{'monetary_source'}{'internal'},
|
||||||
#'comment' => "Invoice: Charge: $row->{'ChargeID'}",
|
'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'}{'charge'}{$row->{'ChargeID'}}{'lease_id'}
|
||||||
= $newdb{'lookup'}{'ledger'}{$row->{'LedgerID'}}{'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'}{$row->{'ChargeID'}}{'credit_ledger_id'}
|
||||||
= $newdb{'lookup'}{'charge_type'}{$row->{'ChargeDescription'}}{'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'}}{'debit_ledger_id'}
|
||||||
= $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'credit_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'},
|
'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'},
|
||||||
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
||||||
'amount' => $row->{'ChargeAmount'},
|
'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{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'}
|
||||||
= $newdb{'tables'}{'ledger_entries'}{'autoid'};
|
= $newdb{'tables'}{'ledger_entries'}{'autoid'};
|
||||||
|
|
||||||
# Reconcile the Invoice account. Our two entries look like:
|
if ($use_invoice) {
|
||||||
# debit: Invoice credit: Rent/LateCharge/Etc
|
# Reconcile the Invoice account. Our two entries look like:
|
||||||
# debit: A/R credit: Invoice
|
# debit: Invoice credit: Rent/LateCharge/Etc
|
||||||
# Since this is from the perspective of the Invoice account,
|
# debit: A/R credit: Invoice
|
||||||
# the credit entry is the Invoice<->A/R, and the debit
|
# Since this is from the perspective of the Invoice account,
|
||||||
# entry is the actual charge ledger entry.
|
# the credit entry is the Invoice<->A/R, and the debit
|
||||||
addRow('reconciliations',
|
# entry is the actual charge ledger entry.
|
||||||
{ 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'},
|
addRow('reconciliations',
|
||||||
'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'},
|
{ 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'ledger_entry_id'},
|
||||||
'amount' => $row->{'ChargeAmount'},
|
'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'};
|
next unless $row->{'TaxAmount'};
|
||||||
|
|
||||||
@@ -1050,23 +1070,25 @@ foreach $row (@{query($sdbh, $query)}) {
|
|||||||
'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'},
|
'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'},
|
||||||
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
||||||
'amount' => $row->{'TaxAmount'},
|
'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{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'}
|
||||||
= $newdb{'tables'}{'ledger_entries'}{'autoid'};
|
= $newdb{'tables'}{'ledger_entries'}{'autoid'};
|
||||||
|
|
||||||
# Reconcile the Invoice account. Our two entries look like:
|
if ($use_invoice) {
|
||||||
# debit: Invoice credit: Tax
|
# Reconcile the Invoice account. Our two entries look like:
|
||||||
# debit: A/R credit: Invoice
|
# debit: Invoice credit: Tax
|
||||||
# Since this is from the perspective of the Invoice account,
|
# debit: A/R credit: Invoice
|
||||||
# the credit entry is the Invoice<->A/R, and the debit
|
# Since this is from the perspective of the Invoice account,
|
||||||
# entry is the actual tax ledger entry.
|
# the credit entry is the Invoice<->A/R, and the debit
|
||||||
addRow('reconciliations',
|
# entry is the actual tax ledger entry.
|
||||||
{ 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'},
|
addRow('reconciliations',
|
||||||
'credit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'invoice'}{'ledger_entry_id'},
|
{ 'debit_ledger_entry_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'tax_ledger_entry_id'},
|
||||||
'amount' => $row->{'TaxAmount'},
|
'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'}}) {
|
if (!$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}) {
|
||||||
addRow('transactions',
|
addRow('transactions',
|
||||||
{ 'stamp' => $stamp,
|
{ 'stamp' => $stamp,
|
||||||
});
|
#'comment' => "Receipt Transaction",
|
||||||
|
});
|
||||||
$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}
|
$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}
|
||||||
= {'tx' => $newdb{'tables'}{'transactions'}{'autoid'},
|
= {'tx' => $newdb{'tables'}{'transactions'}{'autoid'},
|
||||||
'date' => $stamp,
|
'date' => $stamp,
|
||||||
@@ -1184,6 +1207,7 @@ foreach $row (@{query($sdbh, $query)}) {
|
|||||||
|
|
||||||
addRow('transactions',
|
addRow('transactions',
|
||||||
{ 'stamp' => $stamp,
|
{ 'stamp' => $stamp,
|
||||||
|
#'comment' => "Payment Split Transaction",
|
||||||
});
|
});
|
||||||
$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{'payment_tx'}
|
$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{'payment_tx'}
|
||||||
= $newdb{'tables'}{'transactions'}{'autoid'};
|
= $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'},
|
'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'},
|
'credit_ledger_id' => $newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{$row->{'PaymentType'}}{'credit_ledger_id'},
|
||||||
'amount' => $row->{'ReceiptAmount'},
|
'amount' => $row->{'ReceiptAmount'},
|
||||||
#'comment' => "Receipt: $row->{'ReceiptNum'}; ",
|
#'comment' => "Receipt: $row->{'ReceiptNum'}; ",
|
||||||
});
|
});
|
||||||
|
|
||||||
$newdb{'lookup'}{'receipt'}{$row->{'ReceiptNum'}}{$row->{'PaymentType'}}{'ledger_entry_id'}
|
$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'},
|
'customer_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'customer_id'},
|
||||||
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
'lease_id' => $newdb{'lookup'}{'charge'}{$row->{'ChargeID'}}{'lease_id'},
|
||||||
'amount' => $row->{'PaymentAmount'},
|
'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'}
|
$newdb{'lookup'}{'payment'}{$row->{'PaymentID'}}{'ledger_entry_id'}
|
||||||
@@ -1408,248 +1432,8 @@ addRow('ledger_entries',
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
## Fake Data for Testing
|
## Build the Database
|
||||||
|
|
||||||
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();
|
|
||||||
|
|
||||||
$Data::Dumper::Sortkeys = 1;
|
$Data::Dumper::Sortkeys = 1;
|
||||||
# print Dumper \%newdb;
|
# print Dumper \%newdb;
|
||||||
|
|||||||
@@ -36,16 +36,6 @@ class Transaction extends AppModel {
|
|||||||
foreach ($data['LedgerEntry'] AS $entry)
|
foreach ($data['LedgerEntry'] AS $entry)
|
||||||
$grand_total += $entry['amount'];
|
$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
|
// Go through the entered charges
|
||||||
$invoice_transaction = array_intersect_key($data, array('Transaction'=>1, 'transaction_id'=>1));
|
$invoice_transaction = array_intersect_key($data, array('Transaction'=>1, 'transaction_id'=>1));
|
||||||
foreach ($data['LedgerEntry'] AS $entry) {
|
foreach ($data['LedgerEntry'] AS $entry) {
|
||||||
@@ -56,13 +46,11 @@ class Transaction extends AppModel {
|
|||||||
($invoice_transaction,
|
($invoice_transaction,
|
||||||
array_intersect_key($entry, array('MonetarySource'=>1))
|
array_intersect_key($entry, array('MonetarySource'=>1))
|
||||||
+ array_intersect_key($entry, array('account_id'=>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']),
|
'credit_ledger_id' => $A->currentLedgerID($entry['account_id']),
|
||||||
'customer_id' => $customer_id,
|
'customer_id' => $customer_id,
|
||||||
'lease_id' => $lease_id)
|
'lease_id' => $lease_id)
|
||||||
+ $entry,
|
+ $entry
|
||||||
array('debit' => array(array('LedgerEntry' => array('id' => $ar_entry_id,
|
|
||||||
'amount' => $entry['amount']))))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($ids['error'])
|
if ($ids['error'])
|
||||||
|
|||||||
Reference in New Issue
Block a user