fix: GSTR-1 Report B2B fixes (#17751)
* fix: GSTR-1 Report fixes
* fix: Simply add tax if item tax is not specified
diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py
index f6c4782..5aa2441 100644
--- a/erpnext/regional/report/gstr_1/gstr_1.py
+++ b/erpnext/regional/report/gstr_1/gstr_1.py
@@ -67,7 +67,8 @@
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 @@
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 @@
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 @@
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