fix: render missing terms before printing (#58358)

(cherry picked from commit 59d80b29c4)
This commit is contained in:
Pandiyan P
2026-08-24 14:53:08 +05:30
committed by Mergify
parent 0bf34c054a
commit f56cdac45f
3 changed files with 20 additions and 24 deletions

View File

@@ -738,6 +738,8 @@ class AccountsController(TransactionBase):
self.validate_non_invoice_documents_schedule() self.validate_non_invoice_documents_schedule()
def before_print(self, settings=None): def before_print(self, settings=None):
self.set_missing_terms()
if self.doctype in [ if self.doctype in [
"Purchase Order", "Purchase Order",
"Sales Order", "Sales Order",
@@ -761,6 +763,16 @@ class AccountsController(TransactionBase):
set_print_templates_for_item_table(self, settings) set_print_templates_for_item_table(self, settings)
set_print_templates_for_taxes(self, settings) set_print_templates_for_taxes(self, settings)
def set_missing_terms(self):
if not self.get("tc_name") or self.get("terms"):
return
from erpnext.setup.doctype.terms_and_conditions.terms_and_conditions import (
get_terms_and_conditions,
)
self.terms = get_terms_and_conditions(self.tc_name, self.as_dict())
def calculate_paid_amount(self): def calculate_paid_amount(self):
if hasattr(self, "is_pos") or hasattr(self, "is_paid"): if hasattr(self, "is_pos") or hasattr(self, "is_paid"):
is_paid = self.get("is_pos") or self.get("is_paid") is_paid = self.get("is_pos") or self.get("is_paid")

View File

@@ -85,18 +85,10 @@ class BuyingController(SubcontractingController):
), ),
) )
if ( if self.get("company") and not self.get("terms"):
self.get("company") if not self.get("tc_name"):
and ( self.tc_name = frappe.get_value("Company", self.company, "default_buying_terms")
default_buying_terms := frappe.get_value( self.set_missing_terms()
"Company", self.get("company"), "default_buying_terms"
)
)
and not self.get("tc_name")
and not self.get("terms")
):
self.tc_name = default_buying_terms
self.terms = frappe.get_value("Terms and Conditions", self.get("tc_name"), "terms")
def validate_posting_date_with_po(self): def validate_posting_date_with_po(self):
po_list = {x.purchase_order for x in self.items if x.purchase_order} po_list = {x.purchase_order for x in self.items if x.purchase_order}

View File

@@ -43,18 +43,10 @@ class SellingController(StockController):
), ),
) )
if ( if self.get("company") and not self.get("terms"):
self.get("company") if not self.get("tc_name"):
and ( self.tc_name = frappe.get_value("Company", self.company, "default_selling_terms")
default_selling_terms := frappe.get_value( self.set_missing_terms()
"Company", self.get("company"), "default_selling_terms"
)
)
and not self.get("tc_name")
and not self.get("terms")
):
self.tc_name = default_selling_terms
self.terms = frappe.get_value("Terms and Conditions", self.get("tc_name"), "terms")
def validate(self): def validate(self):
super().validate() super().validate()