From d34bfa8c2cb642b50d981011261346232c351418 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 13 Nov 2018 18:19:58 +0530 Subject: [PATCH] fix(patch): Fetch missing gst hsn code in transactions and set hsn-wise taxes --- erpnext/patches.txt | 3 +- .../patches/v11_0/set_missing_gst_hsn_code.py | 43 +++++++++++++++++++ erpnext/regional/india/setup.py | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 erpnext/patches/v11_0/set_missing_gst_hsn_code.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index ca256679e8..f771181f8d 100755 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -572,9 +572,10 @@ execute:frappe.delete_doc("Page", "Sales Analytics") execute:frappe.delete_doc("Page", "Purchase Analytics") execute:frappe.delete_doc("Page", "Stock Analytics") execute:frappe.delete_doc("Page", "Production Analytics") -erpnext.patches.v11_0.ewaybill_fields_gst_india +erpnext.patches.v11_0.ewaybill_fields_gst_india #2018-11-13 erpnext.patches.v11_0.drop_column_max_days_allowed erpnext.patches.v11_0.change_healthcare_desktop_icons erpnext.patches.v10_0.update_user_image_in_employee erpnext.patches.v11_0.update_delivery_trip_status erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items +erpnext.patches.v11_0.set_missing_gst_hsn_code diff --git a/erpnext/patches/v11_0/set_missing_gst_hsn_code.py b/erpnext/patches/v11_0/set_missing_gst_hsn_code.py new file mode 100644 index 0000000000..9d28a4a3f3 --- /dev/null +++ b/erpnext/patches/v11_0/set_missing_gst_hsn_code.py @@ -0,0 +1,43 @@ +import frappe +from erpnext.controllers.taxes_and_totals import get_itemised_tax_breakup_html + +def execute(): + company = frappe.db.sql_list("select name from tabCompany where country = 'India'") + if not company: + return + + doctypes = ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice", + "Supplier Quotation", "Purchase Order", "Purchase Receipt", "Purchase Invoice"] + + for dt in doctypes: + date_field = "posting_date" + if dt in ["Quotation", "Sales Order", "Supplier Quotation", "Purchase Order"]: + date_field = "transaction_date" + + transactions = frappe.db.sql(""" + select dt.name, dt_item.name as child_name + from `tab{dt}` dt, `tab{dt} Item` dt_item + where dt.name = dt_item.parent + and dt.`{date_field}` > '2018-06-01' + and dt.docstatus = 1 + and ifnull(dt_item.gst_hsn_code, '') = '' + and ifnull(dt_item.item_code, '') != '' + and dt.company in ({company}) + """.format(dt=dt, date_field=date_field, company=", ".join(['%s']*len(company))), tuple(company), as_dict=1) + + if not transactions: + continue + + transaction_rows_name = [d.child_name for d in transactions] + + frappe.db.sql(""" + update `tab{dt} Item` dt_item + set dt_item.gst_hsn_code = (select gst_hsn_code from tabItem where name=dt_item.item_code) + where dt_item.name in ({rows_name}) + """.format(dt=dt, rows_name=", ".join(['%s']*len(transaction_rows_name))), tuple(transaction_rows_name)) + + for t in transactions: + print(t.name) + trans_doc = frappe.get_doc(dt, t.name) + hsnwise_tax = get_itemised_tax_breakup_html(trans_doc) + frappe.db.set_value(dt, t.name, "other_charges_calculation", hsnwise_tax, update_modified=False) \ No newline at end of file diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py index c754121299..d282f5c3fd 100644 --- a/erpnext/regional/india/setup.py +++ b/erpnext/regional/india/setup.py @@ -85,7 +85,7 @@ def add_print_formats(): def make_custom_fields(update=True): hsn_sac_field = dict(fieldname='gst_hsn_code', label='HSN/SAC', - fieldtype='Data', options='item_code.gst_hsn_code', insert_after='description', + fieldtype='Data', fetch_from='item_code.gst_hsn_code', insert_after='description', allow_on_submit=1, print_hide=1) invoice_gst_fields = [ dict(fieldname='gst_section', label='GST Details', fieldtype='Section Break',