From 656686f2b19405d2cd12b3516310a77bfaa35a28 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Fri, 19 Nov 2021 11:03:13 +0530 Subject: [PATCH 1/4] fix(India): GST category not getting auto updated (cherry picked from commit f8a26a9fac2c91b036f1dd4033f3fb4797285043) --- erpnext/regional/india/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py index 6be2832ec28..9afb0a57a32 100644 --- a/erpnext/regional/india/utils.py +++ b/erpnext/regional/india/utils.py @@ -67,11 +67,11 @@ def validate_tax_category(doc, method): frappe.throw(_("Intra State tax category for GST State {0} already exists").format(doc.gst_state)) def update_gst_category(doc, method): - if hasattr(doc, 'gst_category'): - for link in doc.links: - if link.link_doctype in ['Customer', 'Supplier']: - if doc.get('gstin'): - frappe.db.set_value(link.link_doctype, {'name': link.link_name, 'gst_category': 'Unregistered'}, 'gst_category', 'Registered Regular') + for link in doc.links: + if link.link_doctype in ['Customer', 'Supplier']: + meta = frappe.get_meta(link.link_doctype) + if doc.get('gstin') and meta.has_field('gst_category'): + frappe.db.set_value(link.link_doctype, {'name': link.link_name, 'gst_category': 'Unregistered'}, 'gst_category', 'Registered Regular') def set_gst_state_and_state_number(doc): if not doc.gst_state: From 9b83e3856ab6a9c91486f58035a56d96eeae65dc Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Fri, 19 Nov 2021 11:58:44 +0530 Subject: [PATCH 2/4] fix: Add test for gst category check (cherry picked from commit cdbc991e3f97c7ed3e120b2e4720298402d1de77) # Conflicts: # erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py --- .../gstr_3b_report/test_gstr_3b_report.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py index 15f7506d682..83bb02746cc 100644 --- a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py +++ b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py @@ -67,6 +67,84 @@ class TestGSTR3BReport(unittest.TestCase): self.assertEqual(output["itc_elg"]["itc_avl"][4]["samt"], 22.50) self.assertEqual(output["itc_elg"]["itc_avl"][4]["camt"], 22.50) +<<<<<<< HEAD +======= + def test_gst_rounding(self): + gst_settings = frappe.get_doc('GST Settings') + gst_settings.round_off_gst_values = 1 + gst_settings.save() + + current_country = frappe.flags.country + frappe.flags.country = 'India' + + si = create_sales_invoice(company="_Test Company GST", + customer = '_Test GST Customer', + currency = 'INR', + warehouse = 'Finished Goods - _GST', + debit_to = 'Debtors - _GST', + income_account = 'Sales - _GST', + expense_account = 'Cost of Goods Sold - _GST', + cost_center = 'Main - _GST', + rate=216, + do_not_save=1 + ) + + si.append("taxes", { + "charge_type": "On Net Total", + "account_head": "Output Tax IGST - _GST", + "cost_center": "Main - _GST", + "description": "IGST @ 18.0", + "rate": 18 + }) + + si.save() + # Check for 39 instead of 38.88 + self.assertEqual(si.taxes[0].base_tax_amount_after_discount_amount, 39) + + frappe.flags.country = current_country + gst_settings.round_off_gst_values = 1 + gst_settings.save() + + def test_gst_category_auto_update(self): + if not frappe.db.exists("Customer", "_Test GST Customer With GSTIN"): + customer = frappe.get_doc({ + "customer_group": "_Test Customer Group", + "customer_name": "_Test GST Customer With GSTIN", + "customer_type": "Individual", + "doctype": "Customer", + "territory": "_Test Territory" + }).insert() + + self.assertEqual(customer.gst_category, 'Unregistered') + + if not frappe.db.exists('Address', '_Test GST Category-1-Billing'): + address = frappe.get_doc({ + "address_line1": "_Test Address Line 1", + "address_title": "_Test GST Category-1", + "address_type": "Billing", + "city": "_Test City", + "state": "Test State", + "country": "India", + "doctype": "Address", + "is_primary_address": 1, + "phone": "+91 0000000000", + "gstin": "29AZWPS7135H1ZG", + "gst_state": "Karnataka", + "gst_state_number": "29" + }).insert() + + address.append("links", { + "link_doctype": "Customer", + "link_name": "_Test GST Customer With GSTIN" + }) + + address.save() + + customer.load_from_db() + self.assertEqual(customer.gst_category, 'Registered Regular') + + +>>>>>>> cdbc991e3f (fix: Add test for gst category check) def make_sales_invoice(): si = create_sales_invoice(company="_Test Company GST", customer = '_Test GST Customer', From d09ed0a578a02e6808274f323b0b24786b0bda67 Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Fri, 19 Nov 2021 13:11:07 +0530 Subject: [PATCH 3/4] fix: Conflicts --- .../regional/doctype/gstr_3b_report/test_gstr_3b_report.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py index 83bb02746cc..8ebefba3642 100644 --- a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py +++ b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py @@ -67,8 +67,6 @@ class TestGSTR3BReport(unittest.TestCase): self.assertEqual(output["itc_elg"]["itc_avl"][4]["samt"], 22.50) self.assertEqual(output["itc_elg"]["itc_avl"][4]["camt"], 22.50) -<<<<<<< HEAD -======= def test_gst_rounding(self): gst_settings = frappe.get_doc('GST Settings') gst_settings.round_off_gst_values = 1 @@ -143,8 +141,6 @@ class TestGSTR3BReport(unittest.TestCase): customer.load_from_db() self.assertEqual(customer.gst_category, 'Registered Regular') - ->>>>>>> cdbc991e3f (fix: Add test for gst category check) def make_sales_invoice(): si = create_sales_invoice(company="_Test Company GST", customer = '_Test GST Customer', From 67f17c7a0c30103f3c235dfe088937313e1b68cf Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Mon, 29 Nov 2021 18:05:36 +0530 Subject: [PATCH 4/4] fix: Remove tests --- .../gstr_3b_report/test_gstr_3b_report.py | 74 ------------------- 1 file changed, 74 deletions(-) diff --git a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py index 8ebefba3642..15f7506d682 100644 --- a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py +++ b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py @@ -67,80 +67,6 @@ class TestGSTR3BReport(unittest.TestCase): self.assertEqual(output["itc_elg"]["itc_avl"][4]["samt"], 22.50) self.assertEqual(output["itc_elg"]["itc_avl"][4]["camt"], 22.50) - def test_gst_rounding(self): - gst_settings = frappe.get_doc('GST Settings') - gst_settings.round_off_gst_values = 1 - gst_settings.save() - - current_country = frappe.flags.country - frappe.flags.country = 'India' - - si = create_sales_invoice(company="_Test Company GST", - customer = '_Test GST Customer', - currency = 'INR', - warehouse = 'Finished Goods - _GST', - debit_to = 'Debtors - _GST', - income_account = 'Sales - _GST', - expense_account = 'Cost of Goods Sold - _GST', - cost_center = 'Main - _GST', - rate=216, - do_not_save=1 - ) - - si.append("taxes", { - "charge_type": "On Net Total", - "account_head": "Output Tax IGST - _GST", - "cost_center": "Main - _GST", - "description": "IGST @ 18.0", - "rate": 18 - }) - - si.save() - # Check for 39 instead of 38.88 - self.assertEqual(si.taxes[0].base_tax_amount_after_discount_amount, 39) - - frappe.flags.country = current_country - gst_settings.round_off_gst_values = 1 - gst_settings.save() - - def test_gst_category_auto_update(self): - if not frappe.db.exists("Customer", "_Test GST Customer With GSTIN"): - customer = frappe.get_doc({ - "customer_group": "_Test Customer Group", - "customer_name": "_Test GST Customer With GSTIN", - "customer_type": "Individual", - "doctype": "Customer", - "territory": "_Test Territory" - }).insert() - - self.assertEqual(customer.gst_category, 'Unregistered') - - if not frappe.db.exists('Address', '_Test GST Category-1-Billing'): - address = frappe.get_doc({ - "address_line1": "_Test Address Line 1", - "address_title": "_Test GST Category-1", - "address_type": "Billing", - "city": "_Test City", - "state": "Test State", - "country": "India", - "doctype": "Address", - "is_primary_address": 1, - "phone": "+91 0000000000", - "gstin": "29AZWPS7135H1ZG", - "gst_state": "Karnataka", - "gst_state_number": "29" - }).insert() - - address.append("links", { - "link_doctype": "Customer", - "link_name": "_Test GST Customer With GSTIN" - }) - - address.save() - - customer.load_from_db() - self.assertEqual(customer.gst_category, 'Registered Regular') - def make_sales_invoice(): si = create_sales_invoice(company="_Test Company GST", customer = '_Test GST Customer',