diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index b1a4ebb94e9..756fc6cc3d4 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -151,6 +151,7 @@ class AccountsController(TransactionBase): self.validate_inter_company_reference() self.disable_pricing_rule_on_internal_transfer() + self.disable_tax_included_prices_for_internal_transfer() self.set_incoming_rate() if self.meta.get_field("currency"): @@ -398,6 +399,20 @@ class AccountsController(TransactionBase): alert=1, ) + def disable_tax_included_prices_for_internal_transfer(self): + if self.is_internal_transfer(): + tax_updated = False + for tax in self.get("taxes"): + if tax.get("included_in_print_rate"): + tax.included_in_print_rate = 0 + tax_updated = True + + if tax_updated: + frappe.msgprint( + _("Disabled tax included prices since this {} is an internal transfer").format(self.doctype), + alert=1, + ) + def validate_due_date(self): if self.get("is_pos"): return diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py index 1b9f16814c5..d747383d6a5 100644 --- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py @@ -1050,9 +1050,22 @@ class TestDeliveryNote(FrappeTestCase): do_not_submit=True, ) + dn.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "_Test Account Service Tax - _TC", + "description": "Tax 1", + "rate": 14, + "cost_center": "_Test Cost Center - _TC", + "included_in_print_rate": 1, + }, + ) + self.assertEqual(dn.items[0].rate, 500) # haven't saved yet dn.save() self.assertEqual(dn.ignore_pricing_rule, 1) + self.assertEqual(dn.taxes[0].included_in_print_rate, 0) # rate should reset to incoming rate self.assertEqual(dn.items[0].rate, rate) @@ -1063,6 +1076,7 @@ class TestDeliveryNote(FrappeTestCase): dn.save() self.assertEqual(dn.items[0].rate, rate) + self.assertEqual(dn.items[0].net_rate, rate) def test_internal_transfer_precision_gle(self): from erpnext.selling.doctype.customer.test_customer import create_internal_customer