mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 16:04:46 +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) {
|
setup_quality_inspection: function (frm) {
|
||||||
let quality_inspection_field = frm.get_docfield("quality_inspection");
|
let quality_inspection_field = frm.get_docfield("quality_inspection");
|
||||||
quality_inspection_field.get_route_options_for_new_doc = function (frm) {
|
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:
|
if doc.transfer_material_against == "Work Order" or doc.skip_transfer:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if self.items:
|
if self.items:
|
||||||
# sum of 'For Quantity' of Stock Entries against JC
|
# sum of 'For Quantity' of Stock Entries against JC
|
||||||
self.transferred_qty = (
|
self.transferred_qty = (
|
||||||
@@ -959,6 +960,48 @@ class JobCard(Document):
|
|||||||
|
|
||||||
if job_cards:
|
if job_cards:
|
||||||
qty = min(d.qty for d in 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)
|
doc.db_set("material_transferred_for_manufacturing", qty)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user