mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-22 11:44:11 +00:00
fix: throw if item order field is not set in subcontracting controller
(cherry picked from commit d256365f4a)
This commit is contained in:
@@ -166,29 +166,46 @@ class SubcontractingController(StockController):
|
|||||||
_("Row {0}: Item {1} must be a subcontracted item.").format(item.idx, item.item_name)
|
_("Row {0}: Item {1} must be a subcontracted item.").format(item.idx, item.item_name)
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.doctype != "Subcontracting Receipt" and item.qty > flt(
|
if self.doctype != "Subcontracting Receipt":
|
||||||
get_pending_subcontracted_quantity(
|
order_item_doctype = (
|
||||||
self.doctype,
|
|
||||||
self.purchase_order if self.doctype == "Subcontracting Order" else self.sales_order,
|
|
||||||
).get(
|
|
||||||
item.purchase_order_item
|
|
||||||
if self.doctype == "Subcontracting Order"
|
|
||||||
else item.sales_order_item
|
|
||||||
)
|
|
||||||
/ item.subcontracting_conversion_factor,
|
|
||||||
frappe.get_precision(
|
|
||||||
"Purchase Order Item"
|
"Purchase Order Item"
|
||||||
if self.doctype == "Subcontracting Order"
|
if self.doctype == "Subcontracting Order"
|
||||||
else "Sales Order Item",
|
else "Sales Order Item"
|
||||||
"qty",
|
|
||||||
),
|
|
||||||
):
|
|
||||||
frappe.throw(
|
|
||||||
_(
|
|
||||||
"Row {0}: Item {1}'s quantity cannot be higher than the available quantity."
|
|
||||||
).format(item.idx, item.item_name)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
order_name = (
|
||||||
|
self.purchase_order if self.doctype == "Subcontracting Order" else self.sales_order
|
||||||
|
)
|
||||||
|
order_item_field = frappe.scrub(order_item_doctype)
|
||||||
|
|
||||||
|
if not item.get(order_item_field):
|
||||||
|
frappe.throw(
|
||||||
|
_("Row {0}: Item {1} must be linked to a {2}.").format(
|
||||||
|
item.idx, item.item_name, order_item_doctype
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
pending_qty = flt(
|
||||||
|
flt(
|
||||||
|
get_pending_subcontracted_quantity(
|
||||||
|
order_item_doctype,
|
||||||
|
order_name,
|
||||||
|
).get(item.get(order_item_field))
|
||||||
|
)
|
||||||
|
/ item.subcontracting_conversion_factor,
|
||||||
|
frappe.get_precision(
|
||||||
|
order_item_doctype,
|
||||||
|
"qty",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
if item.qty > pending_qty:
|
||||||
|
frappe.throw(
|
||||||
|
_(
|
||||||
|
"Row {0}: Item {1}'s quantity cannot be higher than the available quantity."
|
||||||
|
).format(item.idx, item.item_name)
|
||||||
|
)
|
||||||
|
|
||||||
if self.doctype != "Subcontracting Inward Order":
|
if self.doctype != "Subcontracting Inward Order":
|
||||||
item.amount = item.qty * item.rate
|
item.amount = item.qty * item.rate
|
||||||
|
|
||||||
@@ -1333,9 +1350,7 @@ def get_item_details(items):
|
|||||||
|
|
||||||
|
|
||||||
def get_pending_subcontracted_quantity(doctype, name):
|
def get_pending_subcontracted_quantity(doctype, name):
|
||||||
table = frappe.qb.DocType(
|
table = frappe.qb.DocType(doctype)
|
||||||
"Purchase Order Item" if doctype == "Subcontracting Order" else "Sales Order Item"
|
|
||||||
)
|
|
||||||
query = (
|
query = (
|
||||||
frappe.qb.from_(table)
|
frappe.qb.from_(table)
|
||||||
.select(table.name, table.stock_qty, table.subcontracted_qty)
|
.select(table.name, table.stock_qty, table.subcontracted_qty)
|
||||||
|
|||||||
Reference in New Issue
Block a user