From 84f260e1d8ca943a1b1afbed1391734bed157b41 Mon Sep 17 00:00:00 2001 From: Maharshi Patel Date: Wed, 13 Jul 2022 01:39:36 +0530 Subject: [PATCH] fix: (india) (e-invoice) CN / DN with 0 qty Qty 0 is allowed when creating Credit or Debit Note this caused ZeroDivisionError during unit_rate calculation. fixed the issue by adding required conditionals. --- erpnext/regional/india/e_invoice/utils.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/erpnext/regional/india/e_invoice/utils.py b/erpnext/regional/india/e_invoice/utils.py index d4a2e026453..a2b8dd4e61d 100644 --- a/erpnext/regional/india/e_invoice/utils.py +++ b/erpnext/regional/india/e_invoice/utils.py @@ -276,7 +276,19 @@ def get_item_list(invoice): if invoice.get("apply_discount_on"): item.discount_amount = item.base_amount - item.base_net_amount - item.unit_rate = abs(item.taxable_value - item.discount_amount) / item.qty + if invoice.get("is_return") or invoice.get("is_debit_note"): + item.unit_rate = abs(item.taxable_value - item.discount_amount) / ( + 1 if (item.qty == 0) else item.qty + ) + else: + try: + item.unit_rate = abs(item.taxable_value - item.discount_amount) / item.qty + except ZeroDivisionError: + # This will never run but added as safety measure + frappe.throw( + title="Error: Qty is Zero", + msg="Quantity can't be zero unless it's Credit/Debit Note.", + ) item.gross_amount = abs(item.taxable_value) + item.discount_amount item.taxable_value = abs(item.taxable_value)