mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-16 21:35:09 +00:00
fix: incoming rate should be zero for rejected items (#44857)
(cherry picked from commit a515a399cf)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
@@ -1838,6 +1838,52 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
|
|||||||
|
|
||||||
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
|
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
|
||||||
|
|
||||||
|
def test_adjust_incoming_rate_for_rejected_item(self):
|
||||||
|
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1)
|
||||||
|
|
||||||
|
# Cost of Item is zero in Purchase Receipt
|
||||||
|
pr = make_purchase_receipt(qty=1, rejected_qty=1, rate=0)
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 0)
|
||||||
|
|
||||||
|
pi = create_purchase_invoice_from_receipt(pr.name)
|
||||||
|
for row in pi.items:
|
||||||
|
row.qty = 1
|
||||||
|
row.rate = 150
|
||||||
|
|
||||||
|
pi.save()
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name, "warehouse": pi.items[0].warehouse},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 150)
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{
|
||||||
|
"voucher_type": "Purchase Receipt",
|
||||||
|
"voucher_no": pr.name,
|
||||||
|
"warehouse": pi.items[0].rejected_warehouse,
|
||||||
|
},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertFalse(stock_value_difference)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
|
||||||
|
|
||||||
def test_item_less_defaults(self):
|
def test_item_less_defaults(self):
|
||||||
pi = frappe.new_doc("Purchase Invoice")
|
pi = frappe.new_doc("Purchase Invoice")
|
||||||
pi.supplier = "_Test Supplier"
|
pi.supplier = "_Test Supplier"
|
||||||
|
|||||||
@@ -920,12 +920,17 @@ class PurchaseReceipt(BuyingController):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def enable_recalculate_rate_in_sles(self):
|
def enable_recalculate_rate_in_sles(self):
|
||||||
|
rejected_warehouses = frappe.get_all(
|
||||||
|
"Purchase Receipt Item", filters={"parent": self.name}, pluck="rejected_warehouse"
|
||||||
|
)
|
||||||
|
|
||||||
sle_table = frappe.qb.DocType("Stock Ledger Entry")
|
sle_table = frappe.qb.DocType("Stock Ledger Entry")
|
||||||
(
|
(
|
||||||
frappe.qb.update(sle_table)
|
frappe.qb.update(sle_table)
|
||||||
.set(sle_table.recalculate_rate, 1)
|
.set(sle_table.recalculate_rate, 1)
|
||||||
.where(sle_table.voucher_no == self.name)
|
.where(sle_table.voucher_no == self.name)
|
||||||
.where(sle_table.voucher_type == "Purchase Receipt")
|
.where(sle_table.voucher_type == "Purchase Receipt")
|
||||||
|
.where(sle_table.warehouse.notin(rejected_warehouses))
|
||||||
).run()
|
).run()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user