mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-28 01:14:46 +00:00
Added test case for Accounts receivable report based on payment terms
This commit is contained in:
@@ -1524,9 +1524,9 @@ def create_sales_invoice(**args):
|
|||||||
"warehouse": args.warehouse or "_Test Warehouse - _TC",
|
"warehouse": args.warehouse or "_Test Warehouse - _TC",
|
||||||
"qty": args.qty or 1,
|
"qty": args.qty or 1,
|
||||||
"rate": args.rate or 100,
|
"rate": args.rate or 100,
|
||||||
"income_account": "Sales - _TC",
|
"income_account": args.income_account or "Sales - _TC",
|
||||||
"expense_account": "Cost of Goods Sold - _TC",
|
"expense_account": args.expense_account or "Cost of Goods Sold - _TC",
|
||||||
"cost_center": "_Test Cost Center - _TC",
|
"cost_center": args.cost_center or "_Test Cost Center - _TC",
|
||||||
"serial_no": args.serial_no
|
"serial_no": args.serial_no
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -221,6 +221,22 @@ class ReceivablePayableReport(object):
|
|||||||
d.credit_note_amount, d.due_date, d.payment_amount , d.payment_term_amount,
|
d.credit_note_amount, d.due_date, d.payment_amount , d.payment_term_amount,
|
||||||
d.description, d.pdc_amount, d.pdc_details)
|
d.description, d.pdc_amount, d.pdc_details)
|
||||||
data.append(row)
|
data.append(row)
|
||||||
|
|
||||||
|
if credit_note_amount:
|
||||||
|
outstanding_amount, credit_note_amount, payment_amount = self.get_outstanding_amount(
|
||||||
|
gle,self.filters.report_date, self.dr_or_cr, return_entries)
|
||||||
|
|
||||||
|
pdc_amount = 0
|
||||||
|
pdc_details = []
|
||||||
|
for d in pdc_list:
|
||||||
|
pdc_amount += flt(d.pdc_amount)
|
||||||
|
if pdc_amount and d.pdc_ref and d.pdc_date:
|
||||||
|
pdc_details.append(cstr(d.pdc_ref) + "/" + formatdate(d.pdc_date))
|
||||||
|
|
||||||
|
row = self.prepare_row(party_naming_by, args, gle, outstanding_amount,
|
||||||
|
credit_note_amount, pdc_amount=pdc_amount, pdc_details=pdc_details)
|
||||||
|
data.append(row)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
pdc_amount = 0
|
pdc_amount = 0
|
||||||
pdc_details = []
|
pdc_details = []
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
import frappe
|
||||||
|
import frappe.defaults
|
||||||
|
import unittest
|
||||||
|
from frappe.utils import today, getdate, add_days
|
||||||
|
from erpnext.accounts.report.accounts_receivable.accounts_receivable import execute
|
||||||
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||||
|
|
||||||
|
class TestAccountsReceivable(unittest.TestCase):
|
||||||
|
def test_accounts_receivable(self):
|
||||||
|
frappe.db.sql("delete from `tabSales Invoice` where company='_Test Company 2'")
|
||||||
|
frappe.db.sql("delete from `tabGL Entry` where company='_Test Company 2'")
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
'company': '_Test Company 2',
|
||||||
|
'based_on_payment_terms': 1
|
||||||
|
}
|
||||||
|
|
||||||
|
name = make_sales_invoice()
|
||||||
|
report = execute(filters)
|
||||||
|
|
||||||
|
expected_data = [[100,30], [100,50], [100,20]]
|
||||||
|
|
||||||
|
self.assertEqual(expected_data[0], report[1][0][6:8])
|
||||||
|
self.assertEqual(expected_data[1], report[1][1][6:8])
|
||||||
|
self.assertEqual(expected_data[2], report[1][2][6:8])
|
||||||
|
|
||||||
|
make_payment(name)
|
||||||
|
report = execute(filters)
|
||||||
|
|
||||||
|
expected_data_after_payment = [[100,50], [100,20]]
|
||||||
|
|
||||||
|
self.assertEqual(expected_data_after_payment[0], report[1][0][6:8])
|
||||||
|
self.assertEqual(expected_data_after_payment[1], report[1][1][6:8])
|
||||||
|
|
||||||
|
make_credit_note(name)
|
||||||
|
report = execute(filters)
|
||||||
|
|
||||||
|
expected_data_after_credit_note = [[100,100,30,100,-30]]
|
||||||
|
|
||||||
|
self.assertEqual(expected_data_after_credit_note[0], report[1][0][6:11])
|
||||||
|
|
||||||
|
|
||||||
|
def make_sales_invoice():
|
||||||
|
frappe.set_user("Administrator")
|
||||||
|
|
||||||
|
si = create_sales_invoice(company="_Test Company 2",
|
||||||
|
customer = '_Test Customer 2',
|
||||||
|
currency = 'EUR',
|
||||||
|
warehouse = 'Finished Goods - _TC2',
|
||||||
|
debit_to = 'Debtors - _TC2',
|
||||||
|
income_account = 'Sales - _TC2',
|
||||||
|
expense_account = 'Cost of Goods Sold - _TC2',
|
||||||
|
cost_center = '_Test Company 2 - _TC2',
|
||||||
|
do_not_save=1)
|
||||||
|
|
||||||
|
si.append('payment_schedule', dict(due_date=getdate(add_days(today(), 30)), invoice_portion=30.00, payment_amount=30))
|
||||||
|
si.append('payment_schedule', dict(due_date=getdate(add_days(today(), 60)), invoice_portion=50.00, payment_amount=50))
|
||||||
|
si.append('payment_schedule', dict(due_date=getdate(add_days(today(), 90)), invoice_portion=20.00, payment_amount=20))
|
||||||
|
|
||||||
|
si.submit()
|
||||||
|
|
||||||
|
return si.name
|
||||||
|
|
||||||
|
def make_payment(docname):
|
||||||
|
pe = get_payment_entry("Sales Invoice", docname, bank_account="Cash - _TC2", party_amount=30)
|
||||||
|
pe.paid_from = "Debtors - _TC2"
|
||||||
|
pe.insert()
|
||||||
|
pe.submit()
|
||||||
|
|
||||||
|
|
||||||
|
def make_credit_note(docname):
|
||||||
|
create_sales_invoice(company="_Test Company 2",
|
||||||
|
customer = '_Test Customer 2',
|
||||||
|
currency = 'EUR',
|
||||||
|
qty = -1,
|
||||||
|
warehouse = 'Finished Goods - _TC2',
|
||||||
|
debit_to = 'Debtors - _TC2',
|
||||||
|
income_account = 'Sales - _TC2',
|
||||||
|
expense_account = 'Cost of Goods Sold - _TC2',
|
||||||
|
cost_center = '_Test Company 2 - _TC2',
|
||||||
|
is_return = 1,
|
||||||
|
return_against = docname)
|
||||||
|
|
||||||
Reference in New Issue
Block a user