Skip to content

Commit

Permalink
test: individual SO unreconciliation from Payment Entry
Browse files Browse the repository at this point in the history
'Advance in Separate Party Account' must be enabled
  • Loading branch information
ruthra-kumar committed Oct 12, 2024
1 parent b6448f1 commit b921fc9
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -363,3 +363,54 @@ def test_05_unreconcile_order(self):
self.assertEqual(so.advance_paid, 0)
self.assertEqual(len(pe.references), 0)
self.assertEqual(pe.unallocated_amount, 100)

def test_06_unreconcile_advance_from_payment_entry(self):
self.enable_advance_as_liability()
so1 = self.create_sales_order()
so2 = self.create_sales_order()

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

# Assert 'Advance Paid'
so1.reload()
self.assertEqual(so1.advance_paid, 150)
so2.reload()
self.assertEqual(so2.advance_paid, 110)

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), 2)
allocations = [(x.reference_name, x.allocated_amount) for x in unreconcile.allocations]
self.assertListEqual(allocations, [(so1.name, 150), (so2.name, 110)])
# unreconcile so2
unreconcile.remove(unreconcile.allocations[0])
unreconcile.save().submit()

# Assert 'Advance Paid'
so1.reload()
so2.reload()
pe.reload()
self.assertEqual(so1.advance_paid, 150)
self.assertEqual(so2.advance_paid, 0)
self.assertEqual(len(pe.references), 1)
self.assertEqual(pe.unallocated_amount, 110)

self.disable_advance_as_liability()
30 changes: 30 additions & 0 deletions erpnext/accounts/test/accounts_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,22 @@ def create_company(self, company_name="_Test Company", abbr="_TC"):
"parent_account": "Bank Accounts - " + abbr,
}
),
frappe._dict(
{
"attribute_name": "advance_received",
"account_name": "Advance Received",
"parent_account": "Current Liabilities - " + abbr,
"account_type": "Receivable",
}
),
frappe._dict(
{
"attribute_name": "advance_paid",
"account_name": "Advance Paid",
"parent_account": "Current Assets - " + abbr,
"account_type": "Payable",
}
),
]
for acc in other_accounts:
acc_name = acc.account_name + " - " + abbr
Expand All @@ -107,11 +123,25 @@ def create_company(self, company_name="_Test Company", abbr="_TC"):
"company": self.company,
}
)
new_acc.account_type = acc.get("account_type", None)
new_acc.save()
setattr(self, acc.attribute_name, new_acc.name)

self.identify_default_warehouses()

def enable_advance_as_liability(self):
company = frappe.get_doc("Company", self.company)
company.book_advance_payments_in_separate_party_account = True
company.default_advance_received_account = self.advance_received
company.default_advance_paid_account = self.advance_paid
company.save()

def disable_advance_as_liability(self):
company = frappe.get_doc("Company", self.company)
company.book_advance_payments_in_separate_party_account = False
company.default_advance_paid_account = company.default_advance_received_account = None
company.save()

def identify_default_warehouses(self):
for w in frappe.db.get_all(
"Warehouse", filters={"company": self.company}, fields=["name", "warehouse_name"]
Expand Down

0 comments on commit b921fc9

Please sign in to comment.