Merge pull request #38797 from rtdany10/ar-credit-note-fix
fix: wrong paid and cn amount on pos invoice
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 50d5eae..1b14094 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -244,8 +244,12 @@
row.invoiced_in_account_currency += amount_in_account_currency
else:
if self.is_invoice(ple):
- row.credit_note -= amount
- row.credit_note_in_account_currency -= amount_in_account_currency
+ if row.voucher_no == ple.voucher_no == ple.against_voucher_no:
+ row.paid -= amount
+ row.paid_in_account_currency -= amount_in_account_currency
+ else:
+ row.credit_note -= amount
+ row.credit_note_in_account_currency -= amount_in_account_currency
else:
row.paid -= amount
row.paid_in_account_currency -= amount_in_account_currency
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index dd0842d..fbfaed6 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -76,6 +76,41 @@
return credit_note
+ def test_pos_receivable(self):
+ filters = {
+ "company": self.company,
+ "party_type": "Customer",
+ "party": [self.customer],
+ "report_date": add_days(today(), 2),
+ "based_on_payment_terms": 0,
+ "range1": 30,
+ "range2": 60,
+ "range3": 90,
+ "range4": 120,
+ "show_remarks": False,
+ }
+
+ pos_inv = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True)
+ pos_inv.posting_date = add_days(today(), 2)
+ pos_inv.is_pos = 1
+ pos_inv.append(
+ "payments",
+ frappe._dict(
+ mode_of_payment="Cash",
+ amount=flt(pos_inv.grand_total / 2),
+ ),
+ )
+ pos_inv.disable_rounded_total = 1
+ pos_inv.save()
+ pos_inv.submit()
+
+ report = execute(filters)
+ expected_data = [[pos_inv.grand_total, pos_inv.paid_amount, 0]]
+
+ row = report[1][-1]
+ self.assertEqual(expected_data[0], [row.invoiced, row.paid, row.credit_note])
+ pos_inv.cancel()
+
def test_accounts_receivable(self):
filters = {
"company": self.company,