From 7fc8b2fa5018946cbcd7320dad835e2764743a2d Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Mon, 27 May 2019 13:30:52 +0530 Subject: [PATCH] fix: GSTR-1 Report B2B fixes (#17751) * fix: GSTR-1 Report fixes * fix: Simply add tax if item tax is not specified --- erpnext/regional/report/gstr_1/gstr_1.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py index f6c4782e24..5aa2441ee6 100644 --- a/erpnext/regional/report/gstr_1/gstr_1.py +++ b/erpnext/regional/report/gstr_1/gstr_1.py @@ -67,7 +67,8 @@ class Gstr1Report(object): row.append("Y" if invoice_details.posting_date <= date(2017, 7, 1) else "N") row.append("C" if invoice_details.return_against else "R") - self.data.append(row) + if taxable_value: + self.data.append(row) def get_b2cs_data(self): b2cs_output = {} @@ -113,9 +114,14 @@ class Gstr1Report(object): row.append(export_type) else: row.append(invoice_details.get(fieldname)) + taxable_value = 0 + for item_code, net_amount in self.invoice_items.get(invoice).items(): + if item_code in items: + if self.item_tax_rate.get(invoice) and tax_rate == self.item_tax_rate.get(invoice, {}).get(item_code): + taxable_value += abs(net_amount) + elif not self.item_tax_rate.get(invoice): + taxable_value += abs(net_amount) - taxable_value = sum([abs(net_amount) - for item_code, net_amount in self.invoice_items.get(invoice).items() if item_code in items]) row += [tax_rate or 0, taxable_value] return row, taxable_value @@ -184,8 +190,10 @@ class Gstr1Report(object): def get_invoice_items(self): self.invoice_items = frappe._dict() + self.item_tax_rate = frappe._dict() + items = frappe.db.sql(""" - select item_code, parent, base_net_amount + select item_code, parent, base_net_amount, item_tax_rate from `tab%s Item` where parent in (%s) """ % (self.doctype, ', '.join(['%s']*len(self.invoices))), tuple(self.invoices), as_dict=1) @@ -196,6 +204,12 @@ class Gstr1Report(object): sum(i.get('base_net_amount', 0) for i in items if i.item_code == d.item_code and i.parent == d.parent)) + item_tax_rate = json.loads(d.item_tax_rate) + + if item_tax_rate: + for account, rate in item_tax_rate.items(): + self.item_tax_rate.setdefault(d.parent, {}).setdefault(d.item_code, rate) + def get_items_based_on_tax_rate(self): self.tax_details = frappe.db.sql(""" select