Merge pull request #31698 from maharshivpatel/fix-einvoice-margin-internal-transfer
fix: (india) (e-invoice) margin & internal company transfer
This commit is contained in:
@@ -2712,6 +2712,19 @@ class TestSalesInvoice(unittest.TestCase):
|
|||||||
self.assertEqual(einvoice["ItemList"][2]["UnitPrice"], 20)
|
self.assertEqual(einvoice["ItemList"][2]["UnitPrice"], 20)
|
||||||
self.assertEqual(einvoice["ItemList"][3]["UnitPrice"], 10)
|
self.assertEqual(einvoice["ItemList"][3]["UnitPrice"], 10)
|
||||||
|
|
||||||
|
si = get_sales_invoice_for_e_invoice()
|
||||||
|
si.apply_discount_on = ""
|
||||||
|
si.items[1].price_list_rate = 15
|
||||||
|
si.items[1].discount_amount = -5
|
||||||
|
si.items[1].rate = 20
|
||||||
|
si.save()
|
||||||
|
|
||||||
|
einvoice = make_einvoice(si)
|
||||||
|
validate_totals(einvoice)
|
||||||
|
|
||||||
|
self.assertEqual(einvoice["ItemList"][1]["Discount"], 0)
|
||||||
|
self.assertEqual(einvoice["ItemList"][1]["UnitPrice"], 20)
|
||||||
|
|
||||||
def test_einvoice_without_discounts(self):
|
def test_einvoice_without_discounts(self):
|
||||||
from erpnext.regional.india.e_invoice.utils import make_einvoice, validate_totals
|
from erpnext.regional.india.e_invoice.utils import make_einvoice, validate_totals
|
||||||
|
|
||||||
@@ -2804,6 +2817,19 @@ class TestSalesInvoice(unittest.TestCase):
|
|||||||
self.assertEqual(einvoice["ItemList"][2]["UnitPrice"], 18)
|
self.assertEqual(einvoice["ItemList"][2]["UnitPrice"], 18)
|
||||||
self.assertEqual(einvoice["ItemList"][3]["UnitPrice"], 5)
|
self.assertEqual(einvoice["ItemList"][3]["UnitPrice"], 5)
|
||||||
|
|
||||||
|
si = get_sales_invoice_for_e_invoice()
|
||||||
|
si.apply_discount_on = ""
|
||||||
|
si.items[1].price_list_rate = 15
|
||||||
|
si.items[1].discount_amount = -5
|
||||||
|
si.items[1].rate = 20
|
||||||
|
si.save()
|
||||||
|
|
||||||
|
einvoice = make_einvoice(si)
|
||||||
|
validate_totals(einvoice)
|
||||||
|
|
||||||
|
self.assertEqual(einvoice["ItemList"][1]["Discount"], 0)
|
||||||
|
self.assertEqual(einvoice["ItemList"][1]["UnitPrice"], 20)
|
||||||
|
|
||||||
def test_item_tax_net_range(self):
|
def test_item_tax_net_range(self):
|
||||||
item = create_item("T Shirt")
|
item = create_item("T Shirt")
|
||||||
|
|
||||||
|
|||||||
@@ -265,6 +265,10 @@ def get_overseas_address_details(address_name):
|
|||||||
def get_item_list(invoice):
|
def get_item_list(invoice):
|
||||||
item_list = []
|
item_list = []
|
||||||
|
|
||||||
|
hide_discount_in_einvoice = cint(
|
||||||
|
frappe.db.get_single_value("E Invoice Settings", "dont_show_discounts_in_e_invoice")
|
||||||
|
)
|
||||||
|
|
||||||
for d in invoice.items:
|
for d in invoice.items:
|
||||||
einvoice_item_schema = read_json("einv_item_template")
|
einvoice_item_schema = read_json("einv_item_template")
|
||||||
item = frappe._dict({})
|
item = frappe._dict({})
|
||||||
@@ -276,17 +280,12 @@ def get_item_list(invoice):
|
|||||||
item.qty = abs(item.qty)
|
item.qty = abs(item.qty)
|
||||||
item_qty = item.qty
|
item_qty = item.qty
|
||||||
|
|
||||||
item.discount_amount = abs(item.discount_amount)
|
|
||||||
item.taxable_value = abs(item.taxable_value)
|
item.taxable_value = abs(item.taxable_value)
|
||||||
|
|
||||||
if invoice.get("is_return") or invoice.get("is_debit_note"):
|
if invoice.get("is_return") or invoice.get("is_debit_note"):
|
||||||
item_qty = item_qty or 1
|
item_qty = item_qty or 1
|
||||||
|
|
||||||
hide_discount_in_einvoice = cint(
|
if hide_discount_in_einvoice or invoice.is_internal_customer or item.discount_amount < 0:
|
||||||
frappe.db.get_single_value("E Invoice Settings", "dont_show_discounts_in_e_invoice")
|
|
||||||
)
|
|
||||||
|
|
||||||
if hide_discount_in_einvoice:
|
|
||||||
item.unit_rate = item.taxable_value / item_qty
|
item.unit_rate = item.taxable_value / item_qty
|
||||||
item.gross_amount = item.taxable_value
|
item.gross_amount = item.taxable_value
|
||||||
item.discount_amount = 0
|
item.discount_amount = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user