fix: (india) (e-invoice) discount in CN/DN

discount fixes
This commit is contained in:
Maharshi Patel
2022-07-19 15:31:34 +05:30
parent feffc3af27
commit 6e6b55ece0

View File

@@ -273,19 +273,17 @@ def get_item_list(invoice):
item.sr_no = d.idx item.sr_no = d.idx
item.description = sanitize_for_json(d.item_name) item.description = sanitize_for_json(d.item_name)
item.qty = abs(item.qty) item.qty = abs(item.qty) or 1
item.discount_amount = abs(item.discount_amount)
item.taxable_value = abs(item.taxable_value)
hide_discount_in_einvoice = cint( hide_discount_in_einvoice = cint(
frappe.db.get_single_value("E Invoice Settings", "dont_show_discounts_in_e_invoice") frappe.db.get_single_value("E Invoice Settings", "dont_show_discounts_in_e_invoice")
) )
if hide_discount_in_einvoice: if hide_discount_in_einvoice:
if flt(item.qty) != 0.0: item.unit_rate = item.taxable_value / item.qty
item.unit_rate = abs(item.taxable_value / item.qty) item.gross_amount = item.taxable_value
else:
item.unit_rate = abs(item.taxable_value)
item.gross_amount = abs(item.taxable_value)
item.taxable_value = abs(item.taxable_value)
item.discount_amount = 0 item.discount_amount = 0
else: else:
@@ -298,12 +296,10 @@ def get_item_list(invoice):
item.discount_amount = item.discount_amount * item.qty item.discount_amount = item.discount_amount * item.qty
if invoice.get("is_return") or invoice.get("is_debit_note"): if invoice.get("is_return") or invoice.get("is_debit_note"):
item.unit_rate = (abs(item.taxable_value) + item.discount_amount) / ( item.unit_rate = (item.taxable_value + item.discount_amount) / item.qty
1 if (item.qty == 0) else item.qty
)
else: else:
try: try:
item.unit_rate = abs(item.taxable_value + item.discount_amount) / item.qty item.unit_rate = (item.taxable_value + item.discount_amount) / item.qty
except ZeroDivisionError: except ZeroDivisionError:
# This will never run but added as safety measure # This will never run but added as safety measure
frappe.throw( frappe.throw(
@@ -311,8 +307,8 @@ def get_item_list(invoice):
msg=_("Quantity can't be zero unless it's Credit/Debit Note."), msg=_("Quantity can't be zero unless it's Credit/Debit Note."),
) )
item.gross_amount = abs(item.taxable_value) + item.discount_amount item.gross_amount = item.taxable_value + item.discount_amount
item.taxable_value = abs(item.taxable_value) item.taxable_value = item.taxable_value
item.is_service_item = "Y" if item.gst_hsn_code and item.gst_hsn_code[:2] == "99" else "N" item.is_service_item = "Y" if item.gst_hsn_code and item.gst_hsn_code[:2] == "99" else "N"
item.serial_no = "" item.serial_no = ""