Thanks @Syd. Your solution helped me develop this!
frappe.ui.form.on('Purchase Order', {
validate: (frm) => {
// Doc Creation:
if (!frm.doc.custom_created_by && frm.doc.workflow_state === 'Draft') {
frm.doc.custom_created_by = frappe.session.user,
frm.doc.custom_created_time = frappe.datetime.now_datetime();
}
// Doc Verification:
else if ((frm.doc.custom_read_and_verified == 1) && (frm.doc.workflow_state === 'Verification Pending')){
frm.doc.custom_verified_by = frappe.session.user,
frm.doc.custom_verified_time = frappe.datetime.now_datetime();
}
else if ((frm.doc.custom_read_and_verified != 1) && (frm.doc.workflow_state === 'Verification Pending')){
frm.doc.custom_verified_by = null,
frm.doc.custom_verified_time = null
}
// Doc Approval:
else if ((frm.doc.custom_read_and_approved == 1) && (frm.doc.workflow_state === 'Approval Pending by Manager')){
frm.doc.custom_approved_by = frappe.session.user,
frm.doc.custom_approved_time = frappe.datetime.now_datetime();
}
else if ((frm.doc.custom_read_and_approved != 1) && (frm.doc.workflow_state === 'Approval Pending by Manager')){
frm.doc.custom_approved_by = null,
frm.doc.custom_approved_time = null
}
}
});
The verifier and approver just has to tick the checkbox and save doc before making the next workflow action of verification/approval.
