Merge pull request #34091 from rohitwaghchaure/fixed-incorrect-consumed-qty-in-scr
fix: incorrect consumed qty in subcontracting receipt
This commit is contained in:
commit
4399a93843
@ -409,7 +409,14 @@ class SubcontractingController(StockController):
|
|||||||
if self.available_materials.get(key) and self.available_materials[key]["batch_no"]:
|
if self.available_materials.get(key) and self.available_materials[key]["batch_no"]:
|
||||||
new_rm_obj = None
|
new_rm_obj = None
|
||||||
for batch_no, batch_qty in self.available_materials[key]["batch_no"].items():
|
for batch_no, batch_qty in self.available_materials[key]["batch_no"].items():
|
||||||
if batch_qty >= qty:
|
if batch_qty >= qty or (
|
||||||
|
rm_obj.consumed_qty == 0
|
||||||
|
and self.backflush_based_on == "BOM"
|
||||||
|
and len(self.available_materials[key]["batch_no"]) == 1
|
||||||
|
):
|
||||||
|
if rm_obj.consumed_qty == 0:
|
||||||
|
self.__set_consumed_qty(rm_obj, qty)
|
||||||
|
|
||||||
self.__set_batch_no_as_per_qty(item_row, rm_obj, batch_no, qty)
|
self.__set_batch_no_as_per_qty(item_row, rm_obj, batch_no, qty)
|
||||||
self.available_materials[key]["batch_no"][batch_no] -= qty
|
self.available_materials[key]["batch_no"][batch_no] -= qty
|
||||||
return
|
return
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from frappe.tests.utils import FrappeTestCase
|
||||||
@ -186,6 +187,40 @@ class TestSubcontractingOrder(FrappeTestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(len(ste.items), len(rm_items))
|
self.assertEqual(len(ste.items), len(rm_items))
|
||||||
|
|
||||||
|
def test_make_rm_stock_entry_for_batch_items_with_less_transfer(self):
|
||||||
|
set_backflush_based_on("BOM")
|
||||||
|
|
||||||
|
service_items = [
|
||||||
|
{
|
||||||
|
"warehouse": "_Test Warehouse - _TC",
|
||||||
|
"item_code": "Subcontracted Service Item 4",
|
||||||
|
"qty": 5,
|
||||||
|
"rate": 100,
|
||||||
|
"fg_item": "Subcontracted Item SA4",
|
||||||
|
"fg_item_qty": 5,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
sco = get_subcontracting_order(service_items=service_items)
|
||||||
|
rm_items = get_rm_items(sco.supplied_items)
|
||||||
|
itemwise_details = make_stock_in_entry(rm_items=rm_items)
|
||||||
|
|
||||||
|
itemwise_transfer_qty = defaultdict(int)
|
||||||
|
for item in rm_items:
|
||||||
|
item["qty"] -= 1
|
||||||
|
itemwise_transfer_qty[item["item_code"]] += item["qty"]
|
||||||
|
|
||||||
|
ste = make_stock_transfer_entry(
|
||||||
|
sco_no=sco.name,
|
||||||
|
rm_items=rm_items,
|
||||||
|
itemwise_details=copy.deepcopy(itemwise_details),
|
||||||
|
)
|
||||||
|
|
||||||
|
scr = make_subcontracting_receipt(sco.name)
|
||||||
|
|
||||||
|
for row in scr.supplied_items:
|
||||||
|
self.assertEqual(row.consumed_qty, itemwise_transfer_qty.get(row.rm_item_code) + 1)
|
||||||
|
|
||||||
def test_update_reserved_qty_for_subcontracting(self):
|
def test_update_reserved_qty_for_subcontracting(self):
|
||||||
# Create RM Material Receipt
|
# Create RM Material Receipt
|
||||||
make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=10, basic_rate=100)
|
make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=10, basic_rate=100)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user