fix: Must not be able to start Job Card if it is related to Work Order that is not started yet (#29072)
* fix: Cannot start Job strat if related to Work Order not started yet
* fix: Cannot start Job strat if related to Work Order not started yet
* test
* test
* fix siders
* PR review
* chore: Code cleanup
- Better short circuit for if condition (make it such that both conditions dont always have to be computed)
- Remove `r.message` extraction by avoiding `then()`
* chore: Remove unnecessary json change
Co-authored-by: marination <maricadsouza221197@gmail.com>
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js
index b2824e1..b6646b1 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.js
+++ b/erpnext/manufacturing/doctype/job_card/job_card.js
@@ -73,10 +73,22 @@
if (frm.doc.docstatus == 0 && !frm.is_new() &&
(frm.doc.for_quantity > frm.doc.total_completed_qty || !frm.doc.for_quantity)
&& (frm.doc.items || !frm.doc.items.length || frm.doc.for_quantity == frm.doc.transferred_qty)) {
- frm.trigger("prepare_timer_buttons");
+
+ // if Job Card is link to Work Order, the job card must not be able to start if Work Order not "Started"
+ // and if stock mvt for WIP is required
+ if (frm.doc.work_order) {
+ frappe.db.get_value('Work Order', frm.doc.work_order, ['skip_transfer', 'status'], (result) => {
+ if (result.skip_transfer === 1 || result.status == 'In Process') {
+ frm.trigger("prepare_timer_buttons");
+ }
+ });
+ } else {
+ frm.trigger("prepare_timer_buttons");
+ }
}
frm.trigger("setup_quality_inspection");
+
if (frm.doc.work_order) {
frappe.db.get_value('Work Order', frm.doc.work_order,
'transfer_material_against').then((r) => {