mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-23 06:59:20 +00:00
Merge pull request #44373 from Ninad1306/valuation_rate_fix
fix: Always Calculate `sales_incoming_rate` for Internal Transfers
This commit is contained in:
@@ -356,14 +356,14 @@ class BuyingController(SubcontractingController):
|
|||||||
if not self.is_internal_transfer():
|
if not self.is_internal_transfer():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self.set_sales_incoming_rate_for_internal_transfer()
|
||||||
|
|
||||||
allow_at_arms_length_price = frappe.get_cached_value(
|
allow_at_arms_length_price = frappe.get_cached_value(
|
||||||
"Stock Settings", None, "allow_internal_transfer_at_arms_length_price"
|
"Stock Settings", None, "allow_internal_transfer_at_arms_length_price"
|
||||||
)
|
)
|
||||||
if allow_at_arms_length_price:
|
if allow_at_arms_length_price:
|
||||||
return
|
return
|
||||||
|
|
||||||
self.set_sales_incoming_rate_for_internal_transfer()
|
|
||||||
|
|
||||||
for d in self.get("items"):
|
for d in self.get("items"):
|
||||||
d.discount_percentage = 0.0
|
d.discount_percentage = 0.0
|
||||||
d.discount_amount = 0.0
|
d.discount_amount = 0.0
|
||||||
|
|||||||
@@ -809,6 +809,7 @@ class TestAccountsController(IntegrationTestCase):
|
|||||||
"Stock Settings", {"allow_internal_transfer_at_arms_length_price": 1}
|
"Stock Settings", {"allow_internal_transfer_at_arms_length_price": 1}
|
||||||
)
|
)
|
||||||
def test_16_internal_transfer_at_arms_length_price(self):
|
def test_16_internal_transfer_at_arms_length_price(self):
|
||||||
|
from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_inter_company_purchase_invoice
|
||||||
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
||||||
|
|
||||||
prepare_data_for_internal_transfer()
|
prepare_data_for_internal_transfer()
|
||||||
@@ -842,6 +843,31 @@ class TestAccountsController(IntegrationTestCase):
|
|||||||
# rate should reset to incoming rate
|
# rate should reset to incoming rate
|
||||||
self.assertEqual(si.items[0].rate, 100)
|
self.assertEqual(si.items[0].rate, 100)
|
||||||
|
|
||||||
|
si.update_stock = 0
|
||||||
|
si.save()
|
||||||
|
si.submit()
|
||||||
|
|
||||||
|
pi = make_inter_company_purchase_invoice(si.name)
|
||||||
|
pi.update_stock = 1
|
||||||
|
pi.items[0].rate = arms_length_price
|
||||||
|
pi.items[0].warehouse = target_warehouse
|
||||||
|
pi.items[0].from_warehouse = warehouse
|
||||||
|
pi.save()
|
||||||
|
|
||||||
|
self.assertEqual(pi.items[0].rate, 100)
|
||||||
|
self.assertEqual(pi.items[0].valuation_rate, 100)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Stock Settings", "allow_internal_transfer_at_arms_length_price", 1)
|
||||||
|
pi = make_inter_company_purchase_invoice(si.name)
|
||||||
|
pi.update_stock = 1
|
||||||
|
pi.items[0].rate = arms_length_price
|
||||||
|
pi.items[0].warehouse = target_warehouse
|
||||||
|
pi.items[0].from_warehouse = warehouse
|
||||||
|
pi.save()
|
||||||
|
|
||||||
|
self.assertEqual(pi.items[0].rate, arms_length_price)
|
||||||
|
self.assertEqual(pi.items[0].valuation_rate, 100)
|
||||||
|
|
||||||
def test_20_journal_against_sales_invoice(self):
|
def test_20_journal_against_sales_invoice(self):
|
||||||
# Invoice in Foreign Currency
|
# Invoice in Foreign Currency
|
||||||
si = self.create_sales_invoice(qty=1, conversion_rate=80, rate=1)
|
si = self.create_sales_invoice(qty=1, conversion_rate=80, rate=1)
|
||||||
|
|||||||
Reference in New Issue
Block a user