diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py index e1eecbdbb33..84b28a85817 100644 --- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py +++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py @@ -95,6 +95,43 @@ class TestAccountsPayable(ERPNextTestSuite, AccountsTestMixin): self.assertEqual(row.paid, 120) self.assertEqual(row.outstanding, 180) + def test_show_remarks_includes_invoice_remark(self): + pi = self.create_purchase_invoice(do_not_submit=True) + pi.remarks = "AP test remark" + pi.save().submit() + + filters = { + "company": self.company, + "party_type": "Supplier", + "party": [self.supplier], + "report_date": today(), + "range": "30, 60, 90, 120", + "show_remarks": 1, + } + row = next(row for row in execute(filters)[1] if row.voucher_no == pi.name) + self.assertIn("AP test remark", row.remarks or "") + + def test_group_by_supplier_totals(self): + self.create_purchase_invoice() # outstanding 300 + + filters = { + "company": self.company, + "party_type": "Supplier", + "party": [self.supplier], + "report_date": today(), + "range": "30, 60, 90, 120", + "group_by_party": True, + } + report = execute(filters)[1] + + # a per-supplier subtotal row plus a grand total row + party_subtotal = next( + row for row in report if row.get("party") == self.supplier and not row.get("voucher_no") + ) + grand_total = next(row for row in report if row.get("party") == "Total") + self.assertEqual(party_subtotal.get("invoiced"), 300) + self.assertEqual(grand_total.get("outstanding"), 300) + def test_payment_terms_template_filters(self): from erpnext.controllers.accounts_controller import get_payment_terms diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py index 3276d12dddf..1de5aedbeca 100644 --- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py @@ -645,6 +645,42 @@ class TestAccountsReceivable(ERPNextTestSuite, AccountsTestMixin): row = next(row for row in self.ar_rows() if row.voucher_no == je.name) self.assertEqual(row.outstanding, -100) + def test_show_remarks_includes_invoice_remark(self): + si = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True) + si.remarks = "AR test remark" + si.save().submit() + + filters = { + "company": self.company, + "report_date": today(), + "range": "30, 60, 90, 120", + "show_remarks": 1, + } + row = next(row for row in execute(filters)[1] if row.voucher_no == si.name) + self.assertIn("AR test remark", row.remarks or "") + + def test_show_delivery_notes_links_delivery_note(self): + from erpnext.stock.doctype.delivery_note.mapper import make_sales_invoice + from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note + from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry + + make_stock_entry(item_code=self.item, qty=5, to_warehouse=self.warehouse, basic_rate=100) + dn = create_delivery_note( + customer=self.customer, item=self.item, warehouse=self.warehouse, cost_center=self.cost_center + ) + si = make_sales_invoice(dn.name) + si.insert() + si.submit() + + filters = { + "company": self.company, + "report_date": today(), + "range": "30, 60, 90, 120", + "show_delivery_notes": 1, + } + row = next(row for row in execute(filters)[1] if row.voucher_no == si.name) + self.assertIn(dn.name, row.delivery_notes or "") + def test_group_by_party(self): si1 = self.create_sales_invoice(do_not_submit=True) si1.posting_date = add_days(today(), -1)