fix: payment allocation in invoice payment schedule (#36440)
* fix: payment allocation in invoice payment schedule * test: payment allocation for payment terms * chore: linting issues
This commit is contained in:
parent
49be740736
commit
edbefee10c
@ -1791,6 +1791,52 @@ class TestPurchaseInvoice(unittest.TestCase, StockTestMixin):
|
|||||||
rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
|
rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
|
||||||
self.assertAlmostEqual(returned_inv.items[0].rate, rate)
|
self.assertAlmostEqual(returned_inv.items[0].rate, rate)
|
||||||
|
|
||||||
|
def test_payment_allocation_for_payment_terms(self):
|
||||||
|
from erpnext.buying.doctype.purchase_order.test_purchase_order import (
|
||||||
|
create_pr_against_po,
|
||||||
|
create_purchase_order,
|
||||||
|
)
|
||||||
|
from erpnext.selling.doctype.sales_order.test_sales_order import (
|
||||||
|
automatically_fetch_payment_terms,
|
||||||
|
)
|
||||||
|
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
|
||||||
|
make_purchase_invoice as make_pi_from_pr,
|
||||||
|
)
|
||||||
|
|
||||||
|
automatically_fetch_payment_terms()
|
||||||
|
frappe.db.set_value(
|
||||||
|
"Payment Terms Template",
|
||||||
|
"_Test Payment Term Template",
|
||||||
|
"allocate_payment_based_on_payment_terms",
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
|
||||||
|
po = create_purchase_order(do_not_save=1)
|
||||||
|
po.payment_terms_template = "_Test Payment Term Template"
|
||||||
|
po.save()
|
||||||
|
po.submit()
|
||||||
|
|
||||||
|
pr = create_pr_against_po(po.name, received_qty=4)
|
||||||
|
pi = make_pi_from_pr(pr.name)
|
||||||
|
self.assertEqual(pi.payment_schedule[0].payment_amount, 1000)
|
||||||
|
|
||||||
|
frappe.db.set_value(
|
||||||
|
"Payment Terms Template",
|
||||||
|
"_Test Payment Term Template",
|
||||||
|
"allocate_payment_based_on_payment_terms",
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
pi = make_pi_from_pr(pr.name)
|
||||||
|
self.assertEqual(pi.payment_schedule[0].payment_amount, 2500)
|
||||||
|
|
||||||
|
automatically_fetch_payment_terms(enable=0)
|
||||||
|
frappe.db.set_value(
|
||||||
|
"Payment Terms Template",
|
||||||
|
"_Test Payment Term Template",
|
||||||
|
"allocate_payment_based_on_payment_terms",
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
|
||||||
def test_offsetting_entries_for_accounting_dimensions(self):
|
def test_offsetting_entries_for_accounting_dimensions(self):
|
||||||
from erpnext.accounts.doctype.account.test_account import create_account
|
from erpnext.accounts.doctype.account.test_account import create_account
|
||||||
from erpnext.accounts.report.trial_balance.test_trial_balance import (
|
from erpnext.accounts.report.trial_balance.test_trial_balance import (
|
||||||
|
@ -1756,8 +1756,13 @@ class AccountsController(TransactionBase):
|
|||||||
)
|
)
|
||||||
self.append("payment_schedule", data)
|
self.append("payment_schedule", data)
|
||||||
|
|
||||||
|
allocate_payment_based_on_payment_terms = frappe.db.get_value(
|
||||||
|
"Payment Terms Template", self.payment_terms_template, "allocate_payment_based_on_payment_terms"
|
||||||
|
)
|
||||||
|
|
||||||
if not (
|
if not (
|
||||||
automatically_fetch_payment_terms
|
automatically_fetch_payment_terms
|
||||||
|
and allocate_payment_based_on_payment_terms
|
||||||
and self.linked_order_has_payment_terms(po_or_so, fieldname, doctype)
|
and self.linked_order_has_payment_terms(po_or_so, fieldname, doctype)
|
||||||
):
|
):
|
||||||
for d in self.get("payment_schedule"):
|
for d in self.get("payment_schedule"):
|
||||||
|
Loading…
Reference in New Issue
Block a user