mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-07 07:20:26 +00:00
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:
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user