fix: Nil and Exempted values in GSTR-3B Report

This commit is contained in:
Deepesh Garg 2022-03-01 17:37:38 +05:30
parent bbfff1b795
commit abe580e8b0

View File

@ -127,7 +127,8 @@ class GSTR3BReport(Document):
def get_inward_nil_exempt(self, state): def get_inward_nil_exempt(self, state):
inward_nil_exempt = frappe.db.sql(""" inward_nil_exempt = frappe.db.sql("""
SELECT p.place_of_supply, sum(i.base_amount) as base_amount, i.is_nil_exempt, i.is_non_gst SELECT p.place_of_supply, p.supplier_address,
i.base_amount, i.is_nil_exempt, i.is_non_gst
FROM `tabPurchase Invoice` p , `tabPurchase Invoice Item` i FROM `tabPurchase Invoice` p , `tabPurchase Invoice Item` i
WHERE p.docstatus = 1 and p.name = i.parent WHERE p.docstatus = 1 and p.name = i.parent
and p.is_opening = 'No' and p.is_opening = 'No'
@ -135,7 +136,7 @@ class GSTR3BReport(Document):
and (i.is_nil_exempt = 1 or i.is_non_gst = 1 or p.gst_category = 'Registered Composition') and and (i.is_nil_exempt = 1 or i.is_non_gst = 1 or p.gst_category = 'Registered Composition') and
month(p.posting_date) = %s and year(p.posting_date) = %s month(p.posting_date) = %s and year(p.posting_date) = %s
and p.company = %s and p.company_gstin = %s and p.company = %s and p.company_gstin = %s
GROUP BY p.place_of_supply, i.is_nil_exempt, i.is_non_gst""", """,
(self.month_no, self.year, self.company, self.gst_details.get("gstin")), as_dict=1) (self.month_no, self.year, self.company, self.gst_details.get("gstin")), as_dict=1)
inward_nil_exempt_details = { inward_nil_exempt_details = {
@ -149,17 +150,23 @@ class GSTR3BReport(Document):
} }
} }
address_state_map = get_address_state_map()
for d in inward_nil_exempt: for d in inward_nil_exempt:
if d.place_of_supply: if not d.place_of_supply:
d.place_of_supply = "00-" + cstr(state)
supplier_state = address_state_map.get(d.supplier_address) or state
if (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \ if (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
and state == d.place_of_supply.split("-")[1]: and cstr(supplier_state) == cstr(d.place_of_supply.split("-")[1]):
inward_nil_exempt_details["gst"]["intra"] += d.base_amount inward_nil_exempt_details["gst"]["intra"] += d.base_amount
elif (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \ elif (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
and state != d.place_of_supply.split("-")[1]: and cstr(supplier_state) != cstr(d.place_of_supply.split("-")[1]):
inward_nil_exempt_details["gst"]["inter"] += d.base_amount inward_nil_exempt_details["gst"]["inter"] += d.base_amount
elif d.is_non_gst == 1 and state == d.place_of_supply.split("-")[1]: elif d.is_non_gst == 1 and cstr(supplier_state) == cstr(d.place_of_supply.split("-")[1]):
inward_nil_exempt_details["non_gst"]["intra"] += d.base_amount inward_nil_exempt_details["non_gst"]["intra"] += d.base_amount
elif d.is_non_gst == 1 and state != d.place_of_supply.split("-")[1]: elif d.is_non_gst == 1 and cstr(supplier_state) != cstr(d.place_of_supply.split("-")[1]):
inward_nil_exempt_details["non_gst"]["inter"] += d.base_amount inward_nil_exempt_details["non_gst"]["inter"] += d.base_amount
return inward_nil_exempt_details return inward_nil_exempt_details
@ -419,6 +426,11 @@ class GSTR3BReport(Document):
return ",".join(missing_field_invoices) return ",".join(missing_field_invoices)
def get_address_state_map():
return frappe._dict(
frappe.get_all('Address', fields=['name', 'gst_state'], as_list=1)
)
def get_json(template): def get_json(template):
file_path = os.path.join(os.path.dirname(__file__), '{template}.json'.format(template=template)) file_path = os.path.join(os.path.dirname(__file__), '{template}.json'.format(template=template))
with open(file_path, 'r') as f: with open(file_path, 'r') as f: