fix: work order finish button not showing (#43875)

(cherry picked from commit 0a70be5b99)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.js
#	erpnext/manufacturing/doctype/job_card/job_card.py
This commit is contained in:
rohitwaghchaure
2024-10-28 17:21:06 +05:30
committed by Mergify
parent 73a8b6a7d7
commit 63e9da92b2
2 changed files with 157 additions and 0 deletions

View File

@@ -134,6 +134,120 @@ frappe.ui.form.on("Job Card", {
}
},
<<<<<<< HEAD
=======
complete_job_card(frm) {
let fields = [
{
fieldtype: "Float",
label: __("Completed Quantity"),
fieldname: "qty",
reqd: 1,
default: frm.doc.for_quantity - frm.doc.manufactured_qty,
},
{
fieldtype: "Datetime",
label: __("End Time"),
fieldname: "end_time",
default: frappe.datetime.now_datetime(),
},
];
frappe.prompt(
fields,
(data) => {
if (data.qty <= 0) {
frappe.throw(__("Quantity should be greater than 0"));
}
frm.call({
method: "complete_job_card",
doc: frm.doc,
args: {
qty: data.qty,
end_time: data.end_time,
},
callback: function (r) {
frm.reload_doc();
},
});
},
__("Enter Value"),
__("Update"),
__("Set Finished Good Quantity")
);
},
make_subcontracting_po(frm) {
if (frm.doc.docstatus === 1 && frm.doc.for_quantity > frm.doc.manufactured_qty) {
frm.add_custom_button(__("Make Subcontracting PO"), () => {
frappe.model.open_mapped_doc({
method: "erpnext.manufacturing.doctype.job_card.job_card.make_subcontracting_po",
frm: frm,
});
}).addClass("btn-primary");
}
},
start_timer(frm, start_time, employees) {
frm.call({
method: "start_timer",
doc: frm.doc,
args: {
start_time: start_time,
employees: employees,
},
callback: function (r) {
frm.reload_doc();
frm.trigger("make_dashboard");
},
});
},
make_finished_good(frm) {
let fields = [
{
fieldtype: "Float",
label: __("Completed Quantity"),
fieldname: "qty",
reqd: 1,
default: frm.doc.for_quantity - frm.doc.manufactured_qty,
},
{
fieldtype: "Datetime",
label: __("End Time"),
fieldname: "end_time",
default: frappe.datetime.now_datetime(),
},
];
frappe.prompt(
fields,
(data) => {
if (data.qty <= 0) {
frappe.throw(__("Quantity should be greater than 0"));
}
frm.call({
method: "make_finished_good",
doc: frm.doc,
args: {
qty: data.qty,
end_time: data.end_time,
},
callback: function (r) {
var doc = frappe.model.sync(r.message);
frappe.set_route("Form", doc[0].doctype, doc[0].name);
},
});
},
__("Enter Value"),
__("Update"),
__("Set Finished Good Quantity")
);
},
>>>>>>> 0a70be5b99 (fix: work order finish button not showing (#43875))
setup_quality_inspection: function (frm) {
let quality_inspection_field = frm.get_docfield("quality_inspection");
quality_inspection_field.get_route_options_for_new_doc = function (frm) {

View File

@@ -921,6 +921,7 @@ class JobCard(Document):
if doc.transfer_material_against == "Work Order" or doc.skip_transfer:
return
<<<<<<< HEAD
if self.items:
# sum of 'For Quantity' of Stock Entries against JC
self.transferred_qty = (
@@ -959,6 +960,48 @@ class JobCard(Document):
if job_cards:
qty = min(d.qty for d in job_cards)
=======
query = (
frappe.qb.from_(stock_entry)
.select(Sum(stock_entry.fg_completed_qty))
.where(
(stock_entry.job_card == self.name)
& (stock_entry.docstatus == 1)
& (stock_entry.purpose == "Material Transfer for Manufacture")
)
.groupby(stock_entry.job_card)
)
query = query.run()
qty = 0
if query and query[0][0]:
qty = flt(query[0][0])
self.db_set("transferred_qty", qty)
self.set_status(update_status)
if self.work_order and not frappe.get_cached_value(
"Work Order", self.work_order, "track_semi_finished_goods"
):
self.set_transferred_qty_in_work_order()
def set_transferred_qty_in_work_order(self):
doc = frappe.get_doc("Work Order", self.work_order)
qty = 0.0
if doc.transfer_material_against == "Job Card" and not doc.skip_transfer:
min_qty = []
for d in doc.operations:
if d.completed_qty:
min_qty.append(d.completed_qty)
else:
min_qty = []
break
if min_qty:
qty = min(min_qty)
>>>>>>> 0a70be5b99 (fix: work order finish button not showing (#43875))
doc.db_set("material_transferred_for_manufacturing", qty)