diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 5d6676aa537..97b2afd7751 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -455,8 +455,8 @@ class SalesInvoice(SellingController): self.calculate_taxes_and_totals() def before_save(self): - self.set_account_for_mode_of_payment() self.set_paid_amount() + self.set_account_for_mode_of_payment() def before_submit(self): self.add_remarks() @@ -791,6 +791,13 @@ class SalesInvoice(SellingController): def set_paid_amount(self): paid_amount = 0.0 base_paid_amount = 0.0 + + if not cint(self.is_pos) and self.is_return: + self.set("payments", []) + self.paid_amount = paid_amount + self.base_paid_amount = base_paid_amount + return + for data in self.payments: data.base_amount = flt(data.amount * self.conversion_rate, self.precision("base_paid_amount")) paid_amount += data.amount diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index e210903c450..6f51e27f532 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -1049,6 +1049,21 @@ class TestSalesInvoice(FrappeTestCase): self.assertEqual(pos_return.get("payments")[0].amount, -500) self.assertEqual(pos_return.get("payments")[1].amount, -500) + def test_non_pos_return_clears_payment_rows(self): + from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_sales_return + + si = create_sales_invoice(do_not_save=True) + si.append("payments", {"mode_of_payment": "Cash", "amount": 100}) + si.insert() + si.submit() + + si_return = make_sales_return(si.name) + si_return.insert() + + self.assertEqual(si_return.is_pos, 0) + self.assertEqual(si_return.get("payments"), []) + self.assertEqual(si_return.paid_amount, 0) + def test_pos_change_amount(self): make_pos_profile( company="_Test Company with perpetual inventory",