From ee8eb368e7a5ae4fa8bfcd3abb4d85068d1546a4 Mon Sep 17 00:00:00 2001 From: ravibharathi656 Date: Fri, 25 Jul 2025 13:30:05 +0530 Subject: [PATCH] fix: fetch payment term template from order (cherry picked from commit 5ed34d6ff9f50a25bde9bb6888463d2086d211f5) --- .../doctype/delivery_note/delivery_note.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 8aeb56e5d7c..299f36a6ab7 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -10,6 +10,7 @@ from frappe.model.mapper import get_mapped_doc from frappe.model.utils import get_fetch_values from frappe.utils import cint, flt +from erpnext.accounts.party import get_due_date from erpnext.controllers.accounts_controller import get_taxes_and_charges, merge_taxes from erpnext.controllers.selling_controller import SellingController @@ -917,8 +918,25 @@ def make_sales_invoice(source_name, target_doc=None, args=None): automatically_fetch_payment_terms = cint( frappe.db.get_single_value("Accounts Settings", "automatically_fetch_payment_terms") ) - if automatically_fetch_payment_terms and not doc.is_return: - doc.set_payment_schedule() + + if not doc.is_return: + so, doctype, fieldname = doc.get_order_details() + if ( + doc.linked_order_has_payment_terms(so, fieldname, doctype) + and not automatically_fetch_payment_terms + ): + payment_terms_template = frappe.db.get_value(doctype, so, "payment_terms_template") + doc.payment_terms_template = payment_terms_template + doc.due_date = get_due_date( + doc.posting_date, + "Customer", + doc.customer, + doc.company, + template_name=doc.payment_terms_template, + ) + + elif automatically_fetch_payment_terms: + doc.set_payment_schedule() return doc