Skip to content

Commit

Permalink
Merge pull request #40135 from frappe/mergify/bp/version-15-hotfix/pr…
Browse files Browse the repository at this point in the history
…-40133

fix: reset advance amount on unreconciliation of Sales/Purchase Orders (backport #40133)
  • Loading branch information
ruthra-kumar authored Feb 27, 2024
2 parents 1860399 + 0694fd1 commit 9f8a278
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order


class TestUnreconcilePayment(AccountsTestMixin, FrappeTestCase):
Expand Down Expand Up @@ -49,6 +50,16 @@ def create_payment_entry(self):
)
return pe

def create_sales_order(self):
so = make_sales_order(
company=self.company,
customer=self.customer,
item=self.item,
rate=100,
transaction_date=today(),
)
return so

def test_01_unreconcile_invoice(self):
si1 = self.create_sales_invoice()
si2 = self.create_sales_invoice()
Expand Down Expand Up @@ -314,3 +325,41 @@ def test_04_unreconciliation_on_multi_currency_invoice(self):
),
1,
)

def test_05_unreconcile_order(self):
so = self.create_sales_order()

pe = self.create_payment_entry()
# Allocation payment against Sales Order
pe.paid_amount = 100
pe.append(
"references",
{"reference_doctype": so.doctype, "reference_name": so.name, "allocated_amount": 100},
)
pe.save().submit()

# Assert 'Advance Paid'
so.reload()
self.assertEqual(so.advance_paid, 100)

unreconcile = frappe.get_doc(
{
"doctype": "Unreconcile Payment",
"company": self.company,
"voucher_type": pe.doctype,
"voucher_no": pe.name,
}
)
unreconcile.add_references()
self.assertEqual(len(unreconcile.allocations), 1)
allocations = [x.reference_name for x in unreconcile.allocations]
self.assertEquals([so.name], allocations)
# unreconcile so
unreconcile.save().submit()

# Assert 'Advance Paid'
so.reload()
pe.reload()
self.assertEqual(so.advance_paid, 0)
self.assertEqual(len(pe.references), 0)
self.assertEqual(pe.unallocated_amount, 100)
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ def on_submit(self):
update_voucher_outstanding(
alloc.reference_doctype, alloc.reference_name, alloc.account, alloc.party_type, alloc.party
)
if doc.doctype in frappe.get_hooks("advance_payment_doctypes"):
doc.set_total_advance_paid()

frappe.db.set_value("Unreconcile Payment Entries", alloc.name, "unlinked", True)


Expand Down

0 comments on commit 9f8a278

Please sign in to comment.