refactor: packing_slip.js

(cherry picked from commit b62bf78814)
This commit is contained in:
s-aga-r
2023-04-27 19:43:37 +05:30
committed by Mergify
parent 984e32c34a
commit 0c7efae858

View File

@@ -1,52 +1,62 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
// License: GNU General Public License v3. See license.txt // For license information, please see license.txt
cur_frm.fields_dict['delivery_note'].get_query = function(doc, cdt, cdn) { frappe.ui.form.on("Packing Slip", {
setup: (frm) => {
frm.set_query('delivery_note', () => {
return { return {
filters:{ 'docstatus': 0} filters: {
docstatus: 0,
} }
} }
});
frm.set_query('item_code', 'items', (doc, cdt, cdn) => {
cur_frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
if (!doc.delivery_note) { if (!doc.delivery_note) {
frappe.throw(__("Please select a Delivery Note")); frappe.throw(__("Please select a Delivery Note"));
} else { } else {
let d = locals[cdt][cdn];
return { return {
query: "erpnext.stock.doctype.packing_slip.packing_slip.item_details", query: 'erpnext.stock.doctype.packing_slip.packing_slip.item_details',
filters:{ 'delivery_note': doc.delivery_note} filters: {
delivery_note: doc.delivery_note,
} }
} }
} }
cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
if(doc.delivery_note && doc.__islocal) {
cur_frm.cscript.get_items(doc, cdt, cdn);
}
}
cur_frm.cscript.get_items = function(doc, cdt, cdn) {
return this.frm.call({
doc: this.frm.doc,
method: "get_items",
callback: function(r) {
if(!r.exc) cur_frm.refresh();
}
}); });
} },
cur_frm.cscript.refresh = function(doc, dt, dn) { refresh: (frm) => {
cur_frm.toggle_display("misc_details", doc.amended_from); frm.toggle_display("misc_details", frm.doc.amended_from);
} },
cur_frm.cscript.validate = function(doc, cdt, cdn) { validate: (frm) => {
cur_frm.cscript.validate_case_nos(doc); frm.trigger("validate_case_nos");
cur_frm.cscript.validate_calculate_item_details(doc); frm.trigger("validate_calculate_item_details");
},
onload_post_render: (frm) => {
if(frm.doc.delivery_note && frm.doc.__islocal) {
frm.trigger("get_items");
} }
},
get_items: (frm) => {
return frm.call({
doc: frm.doc,
method: "get_items",
callback: function(r) {
if(!r.exc) {
frm.refresh();
}
}
});
},
// To Case No. cannot be less than From Case No. // To Case No. cannot be less than From Case No.
cur_frm.cscript.validate_case_nos = function(doc) { validate_case_nos: (frm) => {
doc = locals[doc.doctype][doc.name]; doc = locals[frm.doc.doctype][frm.doc.name];
if(cint(doc.from_case_no) == 0) { if(cint(doc.from_case_no) == 0) {
frappe.msgprint(__("The 'From Package No.' field must neither be empty nor it's value less than 1.")); frappe.msgprint(__("The 'From Package No.' field must neither be empty nor it's value less than 1."));
frappe.validated = false; frappe.validated = false;
@@ -57,21 +67,19 @@ cur_frm.cscript.validate_case_nos = function(doc) {
frappe.msgprint(__("'To Case No.' cannot be less than 'From Case No.'")); frappe.msgprint(__("'To Case No.' cannot be less than 'From Case No.'"));
frappe.validated = false; frappe.validated = false;
} }
} },
validate_calculate_item_details: (frm) => {
cur_frm.cscript.validate_calculate_item_details = function(doc) { doc = locals[frm.doc.doctype][frm.doc.name];
doc = locals[doc.doctype][doc.name];
var ps_detail = doc.items || []; var ps_detail = doc.items || [];
cur_frm.cscript.validate_duplicate_items(doc, ps_detail); frm.events.validate_duplicate_items(doc, ps_detail);
cur_frm.cscript.calc_net_total_pkg(doc, ps_detail); frm.events.calc_net_total_pkg(doc, ps_detail);
} },
// Do not allow duplicate items i.e. items with same item_code // Do not allow duplicate items i.e. items with same item_code
// Also check for 0 qty // Also check for 0 qty
cur_frm.cscript.validate_duplicate_items = function(doc, ps_detail) { validate_duplicate_items: (doc, ps_detail) => {
for(var i=0; i<ps_detail.length; i++) { for(var i=0; i<ps_detail.length; i++) {
for(var j=0; j<ps_detail.length; j++) { for(var j=0; j<ps_detail.length; j++) {
if(i!=j && ps_detail[i].item_code && ps_detail[i].item_code == ps_detail[j].item_code) { if(i!=j && ps_detail[i].item_code && ps_detail[i].item_code == ps_detail[j].item_code) {
@@ -80,16 +88,16 @@ cur_frm.cscript.validate_duplicate_items = function(doc, ps_detail) {
return; return;
} }
} }
if(flt(ps_detail[i].qty) <= 0) { if(flt(ps_detail[i].qty) <= 0) {
frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [ps_detail[i].item_code])); frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [ps_detail[i].item_code]));
frappe.validated = false; frappe.validated = false;
} }
} }
} },
// Calculate Net Weight of Package // Calculate Net Weight of Package
cur_frm.cscript.calc_net_total_pkg = function(doc, ps_detail) { calc_net_total_pkg: (doc, ps_detail) => {
var net_weight_pkg = 0; var net_weight_pkg = 0;
doc.net_weight_uom = (ps_detail && ps_detail.length) ? ps_detail[0].weight_uom : ''; doc.net_weight_uom = (ps_detail && ps_detail.length) ? ps_detail[0].weight_uom : '';
doc.gross_weight_uom = doc.net_weight_uom; doc.gross_weight_uom = doc.net_weight_uom;
@@ -104,10 +112,11 @@ cur_frm.cscript.calc_net_total_pkg = function(doc, ps_detail) {
} }
doc.net_weight_pkg = roundNumber(net_weight_pkg, 2); doc.net_weight_pkg = roundNumber(net_weight_pkg, 2);
if(!flt(doc.gross_weight_pkg)) { if(!flt(doc.gross_weight_pkg)) {
doc.gross_weight_pkg = doc.net_weight_pkg; doc.gross_weight_pkg = doc.net_weight_pkg;
} }
refresh_many(['net_weight_pkg', 'net_weight_uom', 'gross_weight_uom', 'gross_weight_pkg']); refresh_many(['net_weight_pkg', 'net_weight_uom', 'gross_weight_uom', 'gross_weight_pkg']);
} }
});
// TODO: validate gross weight field