Merge pull request #31698 from maharshivpatel/fix-einvoice-margin-internal-transfer

fix: (india) (e-invoice) margin & internal company transfer
This commit is contained in:
Deepesh Garg
2022-07-26 21:59:44 +05:30
committed by GitHub
2 changed files with 31 additions and 6 deletions

View File

@@ -2712,6 +2712,19 @@ class TestSalesInvoice(unittest.TestCase):
self.assertEqual(einvoice["ItemList"][2]["UnitPrice"], 20)
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):
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"][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):
item = create_item("T Shirt")

View File

@@ -265,6 +265,10 @@ def get_overseas_address_details(address_name):
def get_item_list(invoice):
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:
einvoice_item_schema = read_json("einv_item_template")
item = frappe._dict({})
@@ -276,17 +280,12 @@ def get_item_list(invoice):
item.qty = abs(item.qty)
item_qty = item.qty
item.discount_amount = abs(item.discount_amount)
item.taxable_value = abs(item.taxable_value)
if invoice.get("is_return") or invoice.get("is_debit_note"):
item_qty = item_qty or 1
hide_discount_in_einvoice = cint(
frappe.db.get_single_value("E Invoice Settings", "dont_show_discounts_in_e_invoice")
)
if hide_discount_in_einvoice:
if hide_discount_in_einvoice or invoice.is_internal_customer or item.discount_amount < 0:
item.unit_rate = item.taxable_value / item_qty
item.gross_amount = item.taxable_value
item.discount_amount = 0