fix: unable to submit subcontracting order if created from material request

(cherry picked from commit 37323480dd)
This commit is contained in:
Mihir Kandoi
2026-02-19 10:13:14 +05:30
committed by Mergify
parent 3fcda3a414
commit 0422117003
4 changed files with 6 additions and 22 deletions

View File

@@ -196,6 +196,9 @@ class PurchaseOrder(BuyingController):
self.set_has_unit_price_items()
self.flags.allow_zero_qty = self.has_unit_price_items
if self.is_subcontracted:
self.status_updater[0]["source_field"] = "fg_item_qty"
def validate(self):
super().validate()

View File

@@ -111,7 +111,7 @@ status_map = {
["Pending", "eval:self.status != 'Stopped' and self.per_ordered == 0 and self.docstatus == 1"],
[
"Ordered",
"eval:self.status != 'Stopped' and self.per_ordered == 100 and self.docstatus == 1 and self.material_request_type in ['Purchase', 'Manufacture']",
"eval:self.status != 'Stopped' and self.per_ordered == 100 and self.docstatus == 1 and self.material_request_type in ['Purchase', 'Manufacture', 'Subcontracting']",
],
[
"Transferred",

View File

@@ -25,7 +25,7 @@ frappe.listview_settings["Material Request"] = {
) {
return [__("Partially Received"), "yellow", "per_ordered,<,100"];
} else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) < 100) {
return [__("Partially ordered"), "yellow", "per_ordered,<,100"];
return [__("Partially Ordered"), "yellow", "per_ordered,<,100"];
} else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) == 100) {
if (
doc.material_request_type == "Purchase" &&
@@ -35,7 +35,7 @@ frappe.listview_settings["Material Request"] = {
return [__("Partially Received"), "yellow", "per_received,<,100"];
} else if (doc.material_request_type == "Purchase" && flt(doc.per_received, precision) == 100) {
return [__("Received"), "green", "per_received,=,100"];
} else if (["Purchase", "Manufacture"].includes(doc.material_request_type)) {
} else if (["Purchase", "Manufacture", "Subcontracting"].includes(doc.material_request_type)) {
return [__("Ordered"), "green", "per_ordered,=,100"];
} else if (doc.material_request_type == "Material Transfer") {
return [__("Transfered"), "green", "per_ordered,=,100"];

View File

@@ -81,23 +81,6 @@ class SubcontractingOrder(SubcontractingController):
transaction_date: DF.Date
# end: auto-generated types
def __init__(self, *args, **kwargs):
super().__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 onload(self):
self.set_onload(
"over_transfer_allowance",
@@ -117,12 +100,10 @@ class SubcontractingOrder(SubcontractingController):
self.reset_default_field_value("set_warehouse", "items", "warehouse")
def on_submit(self):
self.update_prevdoc_status()
self.update_status()
self.update_subcontracted_quantity_in_po()
def on_cancel(self):
self.update_prevdoc_status()
self.update_status()
self.update_subcontracted_quantity_in_po(cancel=True)