fix: Nil and Exempted values in GSTR-3B Report
This commit is contained in:
parent
bbfff1b795
commit
abe580e8b0
@ -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,18 +150,24 @@ 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:
|
||||||
if (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
|
d.place_of_supply = "00-" + cstr(state)
|
||||||
and state == d.place_of_supply.split("-")[1]:
|
|
||||||
inward_nil_exempt_details["gst"]["intra"] += d.base_amount
|
supplier_state = address_state_map.get(d.supplier_address) or state
|
||||||
elif (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
|
|
||||||
and state != d.place_of_supply.split("-")[1]:
|
if (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
|
||||||
inward_nil_exempt_details["gst"]["inter"] += d.base_amount
|
and cstr(supplier_state) == cstr(d.place_of_supply.split("-")[1]):
|
||||||
elif d.is_non_gst == 1 and state == d.place_of_supply.split("-")[1]:
|
inward_nil_exempt_details["gst"]["intra"] += d.base_amount
|
||||||
inward_nil_exempt_details["non_gst"]["intra"] += d.base_amount
|
elif (d.is_nil_exempt == 1 or d.get('gst_category') == 'Registered Composition') \
|
||||||
elif d.is_non_gst == 1 and state != d.place_of_supply.split("-")[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["gst"]["inter"] += d.base_amount
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
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:
|
||||||
|
Loading…
Reference in New Issue
Block a user