Merge pull request #50911 from Dharanidharan2813/fix/list-index-bp-50860

fix: Payment Terms auto-fetched in Sales Invoice Without enabling the (automatically_fetch_payment_terms) in Account settings  (backport #50149)
This commit is contained in:
ruthra kumar
2026-02-12 12:51:08 +05:30
committed by GitHub
3 changed files with 35 additions and 4 deletions

View File

@@ -2580,12 +2580,12 @@ class AccountsController(TransactionBase):
def get_order_details(self):
if self.doctype == "Sales Invoice":
po_or_so = self.get("items")[0].get("sales_order")
po_or_so = self.get("items") and self.get("items")[0].get("sales_order")
po_or_so_doctype = "Sales Order"
po_or_so_doctype_name = "sales_order"
else:
po_or_so = self.get("items")[0].get("purchase_order")
po_or_so = self.get("items") and self.get("items")[0].get("purchase_order")
po_or_so_doctype = "Purchase Order"
po_or_so_doctype_name = "purchase_order"

View File

@@ -1203,7 +1203,6 @@ def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False, a
"doctype": "Sales Invoice",
"field_map": {
"party_account_currency": "party_account_currency",
"payment_terms_template": "payment_terms_template",
},
"field_no_map": ["payment_terms_template"],
"validation": {"docstatus": ["=", 1]},

View File

@@ -202,7 +202,11 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase):
@change_settings(
"Accounts Settings",
{"add_taxes_from_item_tax_template": 0, "add_taxes_from_taxes_and_charges_template": 1},
{
"add_taxes_from_item_tax_template": 0,
"add_taxes_from_taxes_and_charges_template": 1,
"automatically_fetch_payment_terms": 1,
},
)
def test_make_sales_invoice_with_terms(self):
so = make_sales_order(do_not_submit=True)
@@ -232,6 +236,34 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase):
si1 = make_sales_invoice(so.name)
self.assertEqual(len(si1.get("items")), 0)
@change_settings("Accounts Settings", {"automatically_fetch_payment_terms": 1}) # Enable auto fetch
def test_auto_fetch_terms_enable(self):
so = make_sales_order(do_not_submit=True)
so.payment_terms_template = "_Test Payment Term Template"
so.save()
so.submit()
si = make_sales_invoice(so.name)
# Check if payment terms are copied from sales order to sales invoice
self.assertTrue(si.payment_terms_template)
si.insert()
si.submit()
@change_settings("Accounts Settings", {"automatically_fetch_payment_terms": 0}) # Disable auto fetch
def test_auto_fetch_terms_disable(self):
so = make_sales_order(do_not_submit=True)
so.payment_terms_template = "_Test Payment Term Template"
so.save()
so.submit()
si = make_sales_invoice(so.name)
# Check if payment terms are not copied from sales order to sales invoice
self.assertFalse(si.payment_terms_template)
si.insert()
si.submit()
def test_update_qty(self):
so = make_sales_order()