Skip to content

Commit 5a4ce85

Browse files
committed
fix: enhance GSTR3B report tests and streamline tax value updates in invoices
1 parent 21ced84 commit 5a4ce85

2 files changed

Lines changed: 39 additions & 12 deletions

File tree

india_compliance/gst_india/doctype/gstr_3b_report/test_gstr_3b_report.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
)
2020
from india_compliance.gst_india.utils import get_gst_accounts_by_type
2121
from india_compliance.gst_india.utils.tests import (
22+
append_item,
2223
create_purchase_invoice,
2324
create_sales_invoice,
2425
create_transaction,
@@ -38,7 +39,6 @@ def setUp(self):
3839
"Bill of Entry",
3940
"GSTR 3B Report",
4041
"Journal Entry",
41-
"Bill of Entry",
4242
):
4343
frappe.db.delete(doctype, filters=filters)
4444

@@ -513,6 +513,30 @@ def test_itc_from_pi_when_boe_not_applicable(self):
513513
self.assertEqual(itc_available["IMPG"].get("iamt"), expected_iamt)
514514
self.assertEqual(itc_available["IMPG"].get("csamt"), 0.0)
515515

516+
def test_multi_item_itc_purchase_invoice_does_not_crash_gstr_3b(self):
517+
pi = create_purchase_invoice(is_in_state=True, do_not_save=1, do_not_submit=1)
518+
append_item(
519+
pi,
520+
frappe._dict(
521+
{
522+
"doctype": "Purchase Invoice",
523+
"item_code": "_Test Trading Goods 1",
524+
"qty": 1,
525+
"rate": 100,
526+
}
527+
),
528+
)
529+
pi.insert()
530+
pi.submit()
531+
532+
output = self.get_report_output()
533+
itc_available = {row["ty"]: row for row in output.get("itc_elg", {}).get("itc_avl", [])}
534+
535+
self.assertEqual(itc_available["OTH"].get("camt"), 18.0)
536+
self.assertEqual(itc_available["OTH"].get("samt"), 18.0)
537+
self.assertEqual(itc_available["OTH"].get("iamt"), 0.0)
538+
self.assertEqual(itc_available["OTH"].get("csamt"), 0.0)
539+
516540
def test_itc_from_boe_when_boe_applicable(self):
517541
"""When is_boe_applicable=1, ITC should come from BOE, not from Purchase Invoice"""
518542
pi = create_purchase_invoice(supplier="_Test Foreign Supplier", update_stock=1)

india_compliance/gst_india/utils/gstr3b/gstr3b_inward_data.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,7 @@ def get_processed_invoices(self, doctype, data):
381381

382382
invoice.hsn_sub_category = GSTR1_SubCategory.HSN.value
383383

384-
if invoice.invoice_category in (
385-
"Composition Scheme, Exempted, Nil Rated",
386-
"Non-GST",
387-
):
388-
self.update_tax_values(invoice)
384+
self.update_tax_values(invoice)
389385

390386
self.process_uom(invoice, identified_uom)
391387
processed_invoices.append(invoice)
@@ -402,17 +398,24 @@ def get_processed_invoices(self, doctype, data):
402398

403399
def update_tax_values(self, invoice):
404400
inter = intra = 0
405-
406-
if is_inter_state_supply(invoice):
407-
inter = invoice.taxable_value
408-
else:
409-
intra = invoice.taxable_value
401+
invoice_type = ""
402+
403+
if invoice.invoice_category in (
404+
"Composition Scheme, Exempted, Nil Rated",
405+
"Non-GST",
406+
):
407+
if is_inter_state_supply(invoice):
408+
inter = invoice.taxable_value
409+
invoice_type = "Inter State"
410+
else:
411+
intra = invoice.taxable_value
412+
invoice_type = "Intra State"
410413

411414
invoice.update(
412415
{
413416
"inter": inter,
414417
"intra": intra,
415-
"invoice_type": "Inter State" if inter else "Intra State",
418+
"invoice_type": invoice_type,
416419
}
417420
)
418421

0 commit comments

Comments
 (0)