From 76bba08e457e16c86bc3f012e9d00e1f7f1929ec Mon Sep 17 00:00:00 2001 From: tunde Date: Mon, 4 Sep 2017 13:37:32 +0100 Subject: [PATCH] patch to create and set default payment term in customer/supplier --- .../change_default_customer_credit_days.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/erpnext/patches/v8_10/change_default_customer_credit_days.py b/erpnext/patches/v8_10/change_default_customer_credit_days.py index 3b9f65da3b..c4376fa974 100644 --- a/erpnext/patches/v8_10/change_default_customer_credit_days.py +++ b/erpnext/patches/v8_10/change_default_customer_credit_days.py @@ -5,6 +5,7 @@ import frappe def execute(): payment_terms = [] customers = [] + suppliers = [] credit_days = frappe.db.sql( "SELECT DISTINCT `credit_days`, `credit_days_based_on`, `customer_name` from " "`tabCustomer` where credit_days_based_on='Fixed Days' or " @@ -27,6 +28,39 @@ def execute(): (customers,) ) + # reset + payment_terms = [] + credit_days = frappe.db.sql( + "SELECT DISTINCT `credit_days`, `credit_days_based_on`, `supplier_name` from " + "`tabSupplier` where credit_days_based_on='Fixed Days' or " + "credit_days_based_on='Last Day of the Next Month'") + + credit_records = ((record[0], record[1], record[2]) for record in credit_days) + for days, based_on, supplier_name in credit_records: + if based_on == "Fixed Days": + pyt_term_name = 'N{0}'.format(days) + else: + pyt_term_name = 'EO2M' + + if not frappe.db.exists("Payment Term", pyt_term_name): + payment_term = make_payment_term(days, based_on) + make_template(payment_term) + else: + payment_term = frappe.get_doc("Payment Term", pyt_term_name) + + payment_terms.append('WHEN `supplier_name`="%s" THEN "%s"' % (supplier_name, payment_term.payment_term_name)) + suppliers.append(supplier_name) + + begin_query_str = "UPDATE `tabSupplier` SET `payment_terms` = CASE " + value_query_str = " ".join(payment_terms) + cond_query_str = " ELSE `payment_terms` END WHERE " + + if customers: + frappe.db.sql( + begin_query_str + value_query_str + cond_query_str + '`supplier_name` IN %s', + (suppliers,) + ) + def make_template(payment_term): doc = frappe.new_doc('Payment Terms Template Detail')