Merge pull request #37686 from s-aga-r/FIX-37423
feat: allow return of components for SCO that don't have SCR created
This commit is contained in:
commit
74b6bfb9eb
@ -1020,14 +1020,34 @@ class StockEntry(StockController):
|
|||||||
& (se.docstatus == 1)
|
& (se.docstatus == 1)
|
||||||
& (se_detail.item_code == se_item.item_code)
|
& (se_detail.item_code == se_item.item_code)
|
||||||
& (
|
& (
|
||||||
(se.purchase_order == self.purchase_order)
|
((se.purchase_order == self.purchase_order) & (se_detail.po_detail == se_item.po_detail))
|
||||||
if self.subcontract_data.order_doctype == "Purchase Order"
|
if self.subcontract_data.order_doctype == "Purchase Order"
|
||||||
else (se.subcontracting_order == self.subcontracting_order)
|
else (
|
||||||
|
(se.subcontracting_order == self.subcontracting_order)
|
||||||
|
& (se_detail.sco_rm_detail == se_item.sco_rm_detail)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
).run()[0][0]
|
)
|
||||||
|
).run()[0][0] or 0
|
||||||
|
|
||||||
if flt(total_supplied, precision) > flt(total_allowed, precision):
|
total_returned = 0
|
||||||
|
if self.subcontract_data.order_doctype == "Subcontracting Order":
|
||||||
|
total_returned = (
|
||||||
|
frappe.qb.from_(se)
|
||||||
|
.inner_join(se_detail)
|
||||||
|
.on(se.name == se_detail.parent)
|
||||||
|
.select(Sum(se_detail.transfer_qty))
|
||||||
|
.where(
|
||||||
|
(se.purpose == "Material Transfer")
|
||||||
|
& (se.docstatus == 1)
|
||||||
|
& (se.is_return == 1)
|
||||||
|
& (se_detail.item_code == se_item.item_code)
|
||||||
|
& (se_detail.sco_rm_detail == se_item.sco_rm_detail)
|
||||||
|
& (se.subcontracting_order == self.subcontracting_order)
|
||||||
|
)
|
||||||
|
).run()[0][0] or 0
|
||||||
|
|
||||||
|
if flt(total_supplied - total_returned, precision) > flt(total_allowed, precision):
|
||||||
frappe.throw(
|
frappe.throw(
|
||||||
_("Row {0}# Item {1} cannot be transferred more than {2} against {3} {4}").format(
|
_("Row {0}# Item {1} cannot be transferred more than {2} against {3} {4}").format(
|
||||||
se_item.idx,
|
se_item.idx,
|
||||||
|
|||||||
@ -107,7 +107,7 @@ frappe.ui.form.on('Subcontracting Order', {
|
|||||||
get_materials_from_supplier: function (frm) {
|
get_materials_from_supplier: function (frm) {
|
||||||
let sco_rm_details = [];
|
let sco_rm_details = [];
|
||||||
|
|
||||||
if (frm.doc.status != "Closed" && frm.doc.supplied_items && frm.doc.per_received > 0) {
|
if (frm.doc.status != "Closed" && frm.doc.supplied_items) {
|
||||||
frm.doc.supplied_items.forEach(d => {
|
frm.doc.supplied_items.forEach(d => {
|
||||||
if (d.total_supplied_qty > 0 && d.total_supplied_qty != d.consumed_qty) {
|
if (d.total_supplied_qty > 0 && d.total_supplied_qty != d.consumed_qty) {
|
||||||
sco_rm_details.push(d.name);
|
sco_rm_details.push(d.name);
|
||||||
@ -193,7 +193,7 @@ erpnext.buying.SubcontractingOrderController = class SubcontractingOrderControll
|
|||||||
}
|
}
|
||||||
|
|
||||||
has_unsupplied_items() {
|
has_unsupplied_items() {
|
||||||
return this.frm.doc['supplied_items'].some(item => item.required_qty > item.supplied_qty);
|
return this.frm.doc['supplied_items'].some(item => item.required_qty > (item.supplied_qty - item.returned_qty));
|
||||||
}
|
}
|
||||||
|
|
||||||
make_subcontracting_receipt() {
|
make_subcontracting_receipt() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user