mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 00:14:50 +00:00
fix: incorrect requested quantity for the subcontracting order
(cherry picked from commit 691e3bb24f)
This commit is contained in:
committed by
Mergify
parent
2d9ba88870
commit
abe3e41a17
@@ -80,6 +80,23 @@ class SubcontractingOrder(SubcontractingController):
|
||||
transaction_date: DF.Date
|
||||
# end: auto-generated types
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(SubcontractingOrder, self).__init__(*args, **kwargs)
|
||||
|
||||
self.status_updater = [
|
||||
{
|
||||
"source_dt": "Subcontracting Order Item",
|
||||
"target_dt": "Material Request Item",
|
||||
"join_field": "material_request_item",
|
||||
"target_field": "ordered_qty",
|
||||
"target_parent_dt": "Material Request",
|
||||
"target_parent_field": "per_ordered",
|
||||
"target_ref_field": "stock_qty",
|
||||
"source_field": "qty",
|
||||
"percent_join_field": "material_request",
|
||||
}
|
||||
]
|
||||
|
||||
def before_validate(self):
|
||||
super(SubcontractingOrder, self).before_validate()
|
||||
|
||||
@@ -93,11 +110,15 @@ class SubcontractingOrder(SubcontractingController):
|
||||
self.reset_default_field_value("set_warehouse", "items", "warehouse")
|
||||
|
||||
def on_submit(self):
|
||||
self.update_prevdoc_status()
|
||||
self.update_requested_qty()
|
||||
self.update_ordered_qty_for_subcontracting()
|
||||
self.update_reserved_qty_for_subcontracting()
|
||||
self.update_status()
|
||||
|
||||
def on_cancel(self):
|
||||
self.update_prevdoc_status()
|
||||
self.update_requested_qty()
|
||||
self.update_ordered_qty_for_subcontracting()
|
||||
self.update_reserved_qty_for_subcontracting()
|
||||
self.update_status()
|
||||
@@ -237,6 +258,8 @@ class SubcontractingOrder(SubcontractingController):
|
||||
"stock_uom": item.stock_uom,
|
||||
"bom": bom,
|
||||
"purchase_order_item": si.purchase_order_item,
|
||||
"material_request": si.material_request,
|
||||
"material_request_item": si.material_request_item,
|
||||
}
|
||||
)
|
||||
else:
|
||||
|
||||
@@ -628,6 +628,62 @@ class TestSubcontractingOrder(FrappeTestCase):
|
||||
|
||||
self.assertEqual(ordered_qty + 10, new_ordered_qty)
|
||||
|
||||
def test_requested_qty_for_subcontracting_order(self):
|
||||
from erpnext.stock.doctype.material_request.material_request import make_purchase_order
|
||||
from erpnext.stock.doctype.material_request.test_material_request import make_material_request
|
||||
|
||||
requested_qty = frappe.db.get_value(
|
||||
"Bin",
|
||||
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "Subcontracted Item SA8"},
|
||||
fieldname="indented_qty",
|
||||
)
|
||||
requested_qty = flt(requested_qty)
|
||||
|
||||
mr = make_material_request(
|
||||
item_code="Subcontracted Item SA8",
|
||||
material_request_type="Purchase",
|
||||
qty=10,
|
||||
)
|
||||
|
||||
self.assertTrue(mr.docstatus == 1)
|
||||
|
||||
new_requested_qty = frappe.db.get_value(
|
||||
"Bin",
|
||||
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "Subcontracted Item SA8"},
|
||||
fieldname="indented_qty",
|
||||
)
|
||||
new_requested_qty = flt(new_requested_qty)
|
||||
|
||||
self.assertEqual(requested_qty + 10, new_requested_qty)
|
||||
|
||||
po = make_purchase_order(mr.name)
|
||||
po.is_subcontracted = 1
|
||||
po.supplier = "_Test Supplier"
|
||||
po.items[0].fg_item = "Subcontracted Item SA8"
|
||||
po.items[0].fg_item_qty = 10
|
||||
po.items[0].item_code = "Subcontracted Service Item 8"
|
||||
po.items[0].item_name = "Subcontracted Service Item 8"
|
||||
po.items[0].qty = 10
|
||||
po.supplier_warehouse = "_Test Warehouse 1 - _TC"
|
||||
po.save()
|
||||
po.submit()
|
||||
|
||||
self.assertTrue(po.items[0].material_request)
|
||||
self.assertTrue(po.items[0].material_request_item)
|
||||
|
||||
sco = create_subcontracting_order(po_name=po.name)
|
||||
self.assertTrue(sco.items[0].material_request)
|
||||
self.assertTrue(sco.items[0].material_request_item)
|
||||
|
||||
new_requested_qty = frappe.db.get_value(
|
||||
"Bin",
|
||||
filters={"warehouse": "_Test Warehouse - _TC", "item_code": "Subcontracted Item SA8"},
|
||||
fieldname="indented_qty",
|
||||
)
|
||||
new_requested_qty = flt(new_requested_qty)
|
||||
|
||||
self.assertEqual(requested_qty, new_requested_qty)
|
||||
|
||||
|
||||
def create_subcontracting_order(**args):
|
||||
args = frappe._dict(args)
|
||||
|
||||
@@ -40,13 +40,18 @@
|
||||
"manufacture_section",
|
||||
"manufacturer",
|
||||
"manufacturer_part_no",
|
||||
"column_break_impp",
|
||||
"reference_section",
|
||||
"material_request",
|
||||
"column_break_fpyl",
|
||||
"material_request_item",
|
||||
"accounting_dimensions_section",
|
||||
"cost_center",
|
||||
"dimension_col_break",
|
||||
"project",
|
||||
"section_break_34",
|
||||
"page_break",
|
||||
"purchase_order_item"
|
||||
"purchase_order_item",
|
||||
"page_break"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@@ -334,6 +339,37 @@
|
||||
"label": "Project",
|
||||
"options": "Project"
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_impp",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "material_request",
|
||||
"fieldtype": "Link",
|
||||
"label": "Material Request",
|
||||
"no_copy": 1,
|
||||
"options": "Material Request",
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "material_request_item",
|
||||
"fieldtype": "Data",
|
||||
"label": "Material Request Item",
|
||||
"no_copy": 1,
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "reference_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Reference"
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_fpyl",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "purchase_order_item",
|
||||
"fieldtype": "Data",
|
||||
@@ -348,7 +384,7 @@
|
||||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2023-11-23 16:56:22.182698",
|
||||
"modified": "2023-11-30 15:29:43.744618",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Subcontracting",
|
||||
"name": "Subcontracting Order Item",
|
||||
|
||||
@@ -19,7 +19,11 @@
|
||||
"fg_item",
|
||||
"column_break_12",
|
||||
"fg_item_qty",
|
||||
"purchase_order_item"
|
||||
"purchase_order_item",
|
||||
"section_break_kphn",
|
||||
"material_request",
|
||||
"column_break_piqi",
|
||||
"material_request_item"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@@ -122,11 +126,36 @@
|
||||
"no_copy": 1,
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "section_break_kphn",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Reference"
|
||||
},
|
||||
{
|
||||
"fieldname": "material_request",
|
||||
"fieldtype": "Link",
|
||||
"label": "Material Request",
|
||||
"no_copy": 1,
|
||||
"options": "Material Request",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_piqi",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "material_request_item",
|
||||
"fieldtype": "Data",
|
||||
"label": "Material Request Item",
|
||||
"no_copy": 1,
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2023-11-23 17:05:04.561948",
|
||||
"modified": "2023-11-30 13:29:31.017440",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Subcontracting",
|
||||
"name": "Subcontracting Order Service Item",
|
||||
|
||||
Reference in New Issue
Block a user