mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-14 12:25:09 +00:00
fix: update item reference in quality inspection
(cherry picked from commit 9da5010265)
# Conflicts:
# erpnext/public/js/controllers/transaction.js
This commit is contained in:
committed by
ruthra kumar
parent
d60d8a2625
commit
65c277fd27
@@ -1648,8 +1648,9 @@ def make_quality_inspections(doctype, docname, items):
|
|||||||
"sample_size": flt(item.get("sample_size")),
|
"sample_size": flt(item.get("sample_size")),
|
||||||
"item_serial_no": item.get("serial_no").split("\n")[0] if item.get("serial_no") else None,
|
"item_serial_no": item.get("serial_no").split("\n")[0] if item.get("serial_no") else None,
|
||||||
"batch_no": item.get("batch_no"),
|
"batch_no": item.get("batch_no"),
|
||||||
|
"child_row_reference": item.get("child_row_reference"),
|
||||||
}
|
}
|
||||||
).insert()
|
)
|
||||||
quality_inspection.save()
|
quality_inspection.save()
|
||||||
inspections.append(quality_inspection.name)
|
inspections.append(quality_inspection.name)
|
||||||
|
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
|||||||
"inspection_type": inspection_type,
|
"inspection_type": inspection_type,
|
||||||
"reference_type": me.frm.doc.doctype,
|
"reference_type": me.frm.doc.doctype,
|
||||||
"reference_name": me.frm.doc.name,
|
"reference_name": me.frm.doc.name,
|
||||||
|
"child_row_reference": row.doc.name,
|
||||||
"item_code": row.doc.item_code,
|
"item_code": row.doc.item_code,
|
||||||
"description": row.doc.description,
|
"description": row.doc.description,
|
||||||
"item_serial_no": row.doc.serial_no ? row.doc.serial_no.split("\n")[0] : null,
|
"item_serial_no": row.doc.serial_no ? row.doc.serial_no.split("\n")[0] : null,
|
||||||
@@ -385,7 +386,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
|||||||
docstatus: ["<", 2],
|
docstatus: ["<", 2],
|
||||||
inspection_type: inspection_type,
|
inspection_type: inspection_type,
|
||||||
reference_name: doc.name,
|
reference_name: doc.name,
|
||||||
item_code: d.item_code
|
item_code: d.item_code,
|
||||||
|
child_row_reference : d.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -2427,12 +2429,13 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
|||||||
fields: fields,
|
fields: fields,
|
||||||
primary_action: function () {
|
primary_action: function () {
|
||||||
const data = dialog.get_values();
|
const data = dialog.get_values();
|
||||||
|
const selected_data = data.items.filter(item => item?.__checked == 1 );
|
||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.controllers.stock_controller.make_quality_inspections",
|
method: "erpnext.controllers.stock_controller.make_quality_inspections",
|
||||||
args: {
|
args: {
|
||||||
doctype: me.frm.doc.doctype,
|
doctype: me.frm.doc.doctype,
|
||||||
docname: me.frm.doc.name,
|
docname: me.frm.doc.name,
|
||||||
items: data.items
|
items: selected_data,
|
||||||
},
|
},
|
||||||
freeze: true,
|
freeze: true,
|
||||||
callback: function (r) {
|
callback: function (r) {
|
||||||
|
|||||||
@@ -97,51 +97,25 @@ class QualityInspection(Document):
|
|||||||
if self.reference_type == "Stock Entry":
|
if self.reference_type == "Stock Entry":
|
||||||
doctype = "Stock Entry Detail"
|
doctype = "Stock Entry Detail"
|
||||||
|
|
||||||
child_row_references = frappe.get_all(
|
child_doc = frappe.qb.DocType(doctype)
|
||||||
doctype,
|
qi_doc = frappe.qb.DocType("Quality Inspection")
|
||||||
filters={"parent": self.reference_name, "item_code": self.item_code},
|
|
||||||
pluck="name",
|
|
||||||
)
|
|
||||||
|
|
||||||
if not child_row_references:
|
child_row_references = (
|
||||||
return
|
frappe.qb.from_(child_doc)
|
||||||
|
.left_join(qi_doc)
|
||||||
|
.on(child_doc.name == qi_doc.child_row_reference)
|
||||||
|
.select(child_doc.name)
|
||||||
|
.where(
|
||||||
|
(child_doc.item_code == self.item_code)
|
||||||
|
& (child_doc.parent == self.reference_name)
|
||||||
|
& (child_doc.docstatus < 2)
|
||||||
|
& (qi_doc.name.isnull())
|
||||||
|
)
|
||||||
|
.orderby(child_doc.idx)
|
||||||
|
).run(pluck=True)
|
||||||
|
|
||||||
if len(child_row_references) == 1:
|
if len(child_row_references):
|
||||||
self.child_row_reference = child_row_references[0]
|
self.child_row_reference = child_row_references[0]
|
||||||
else:
|
|
||||||
self.distribute_child_row_reference(child_row_references)
|
|
||||||
|
|
||||||
def distribute_child_row_reference(self, child_row_references):
|
|
||||||
quality_inspections = frappe.get_all(
|
|
||||||
"Quality Inspection",
|
|
||||||
filters={
|
|
||||||
"reference_name": self.reference_name,
|
|
||||||
"item_code": self.item_code,
|
|
||||||
"docstatus": ("<", 2),
|
|
||||||
},
|
|
||||||
fields=["name", "child_row_reference", "docstatus"],
|
|
||||||
order_by="child_row_reference desc",
|
|
||||||
)
|
|
||||||
|
|
||||||
for row in quality_inspections:
|
|
||||||
if not child_row_references:
|
|
||||||
break
|
|
||||||
|
|
||||||
if row.child_row_reference and row.child_row_reference in child_row_references:
|
|
||||||
child_row_references.remove(row.child_row_reference)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if row.docstatus == 1:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if row.name == self.name:
|
|
||||||
self.child_row_reference = child_row_references[0]
|
|
||||||
else:
|
|
||||||
frappe.db.set_value(
|
|
||||||
"Quality Inspection", row.name, "child_row_reference", child_row_references[0]
|
|
||||||
)
|
|
||||||
|
|
||||||
child_row_references.remove(child_row_references[0])
|
|
||||||
|
|
||||||
def validate_inspection_required(self):
|
def validate_inspection_required(self):
|
||||||
if frappe.db.get_single_value(
|
if frappe.db.get_single_value(
|
||||||
@@ -413,7 +387,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters):
|
|||||||
|
|
||||||
return frappe.db.sql(
|
return frappe.db.sql(
|
||||||
f"""
|
f"""
|
||||||
SELECT item_code
|
SELECT distinct item_code, item_name, item_group
|
||||||
FROM `tab{from_doctype}`
|
FROM `tab{from_doctype}`
|
||||||
WHERE parent=%(parent)s and docstatus < 2 and item_code like %(txt)s
|
WHERE parent=%(parent)s and docstatus < 2 and item_code like %(txt)s
|
||||||
{qi_condition} {cond} {mcond}
|
{qi_condition} {cond} {mcond}
|
||||||
@@ -444,10 +418,11 @@ def quality_inspection_query(doctype, txt, searchfield, start, page_len, filters
|
|||||||
limit_start=start,
|
limit_start=start,
|
||||||
limit_page_length=page_len,
|
limit_page_length=page_len,
|
||||||
filters={
|
filters={
|
||||||
"docstatus": 1,
|
"docstatus": ("<", 2),
|
||||||
"name": ("like", "%%%s%%" % txt),
|
"name": ("like", "%%%s%%" % txt),
|
||||||
"item_code": filters.get("item_code"),
|
"item_code": filters.get("item_code"),
|
||||||
"reference_name": ("in", [filters.get("reference_name", ""), ""]),
|
"reference_name": ("in", [filters.get("reference_name", ""), ""]),
|
||||||
|
"child_row_reference": ("in", [filters.get("child_row_reference", ""), ""]),
|
||||||
},
|
},
|
||||||
as_list=1,
|
as_list=1,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ frappe.ui.form.on("Stock Entry", {
|
|||||||
inspection_type: "Incoming",
|
inspection_type: "Incoming",
|
||||||
reference_type: frm.doc.doctype,
|
reference_type: frm.doc.doctype,
|
||||||
reference_name: frm.doc.name,
|
reference_name: frm.doc.name,
|
||||||
|
child_row_reference: row.doc.name,
|
||||||
item_code: row.doc.item_code,
|
item_code: row.doc.item_code,
|
||||||
description: row.doc.description,
|
description: row.doc.description,
|
||||||
item_serial_no: row.doc.serial_no ? row.doc.serial_no.split("\n")[0] : null,
|
item_serial_no: row.doc.serial_no ? row.doc.serial_no.split("\n")[0] : null,
|
||||||
@@ -194,6 +195,7 @@ frappe.ui.form.on("Stock Entry", {
|
|||||||
filters: {
|
filters: {
|
||||||
item_code: d.item_code,
|
item_code: d.item_code,
|
||||||
reference_name: doc.name,
|
reference_name: doc.name,
|
||||||
|
child_row_reference: d.name,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user