mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-14 18:51:21 +00:00
refactor: move js validations to py
This commit is contained in:
@@ -28,63 +28,5 @@ frappe.ui.form.on("Packing Slip", {
|
|||||||
|
|
||||||
refresh: (frm) => {
|
refresh: (frm) => {
|
||||||
frm.toggle_display("misc_details", frm.doc.amended_from);
|
frm.toggle_display("misc_details", frm.doc.amended_from);
|
||||||
},
|
|
||||||
|
|
||||||
validate: (frm) => {
|
|
||||||
frm.trigger("validate_case_nos");
|
|
||||||
frm.trigger("validate_calculate_item_details");
|
|
||||||
},
|
|
||||||
|
|
||||||
// To Case No. cannot be less than From Case No.
|
|
||||||
validate_case_nos: (frm) => {
|
|
||||||
doc = locals[frm.doc.doctype][frm.doc.name];
|
|
||||||
|
|
||||||
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.validated = false;
|
|
||||||
} else if(!cint(doc.to_case_no)) {
|
|
||||||
doc.to_case_no = doc.from_case_no;
|
|
||||||
refresh_field('to_case_no');
|
|
||||||
} else if(cint(doc.to_case_no) < cint(doc.from_case_no)) {
|
|
||||||
frappe.msgprint(__("'To Case No.' cannot be less than 'From Case No.'"));
|
|
||||||
frappe.validated = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
validate_calculate_item_details: (frm) => {
|
|
||||||
frm.trigger("validate_items_qty");
|
|
||||||
frm.trigger("calc_net_total_pkg");
|
|
||||||
},
|
|
||||||
|
|
||||||
validate_items_qty: (frm) => {
|
|
||||||
frm.doc.items.forEach(item => {
|
|
||||||
if (item.qty <= 0) {
|
|
||||||
frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [item.item_code]));
|
|
||||||
frappe.validated = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
calc_net_total_pkg: (frm) => {
|
|
||||||
var net_weight_pkg = 0;
|
|
||||||
var items = frm.doc.items || [];
|
|
||||||
frm.doc.net_weight_uom = (items && items.length) ? items[0].weight_uom : '';
|
|
||||||
frm.doc.gross_weight_uom = frm.doc.net_weight_uom;
|
|
||||||
|
|
||||||
items.forEach(item => {
|
|
||||||
if(item.weight_uom != frm.doc.net_weight_uom) {
|
|
||||||
frappe.msgprint(__("Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM."));
|
|
||||||
frappe.validated = false;
|
|
||||||
}
|
|
||||||
net_weight_pkg += flt(item.net_weight) * flt(item.qty);
|
|
||||||
});
|
|
||||||
|
|
||||||
frm.doc.net_weight_pkg = roundNumber(net_weight_pkg, 2);
|
|
||||||
|
|
||||||
if(!flt(frm.doc.gross_weight_pkg)) {
|
|
||||||
frm.doc.gross_weight_pkg = frm.doc.net_weight_pkg;
|
|
||||||
}
|
|
||||||
|
|
||||||
refresh_many(['net_weight_pkg', 'net_weight_uom', 'gross_weight_uom', 'gross_weight_pkg']);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import cint
|
from frappe.utils import cint, flt
|
||||||
|
|
||||||
from erpnext.controllers.status_updater import StatusUpdater
|
from erpnext.controllers.status_updater import StatusUpdater
|
||||||
|
|
||||||
@@ -44,6 +44,7 @@ class PackingSlip(StatusUpdater):
|
|||||||
validate_uom_is_integer(self, "weight_uom", "net_weight")
|
validate_uom_is_integer(self, "weight_uom", "net_weight")
|
||||||
|
|
||||||
self.set_missing_values()
|
self.set_missing_values()
|
||||||
|
self.calculate_net_total_pkg()
|
||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
self.update_prevdoc_status()
|
self.update_prevdoc_status()
|
||||||
@@ -62,9 +63,13 @@ class PackingSlip(StatusUpdater):
|
|||||||
def validate_case_nos(self):
|
def validate_case_nos(self):
|
||||||
"""Validate if case nos overlap. If they do, recommend next case no."""
|
"""Validate if case nos overlap. If they do, recommend next case no."""
|
||||||
|
|
||||||
if not self.to_case_no:
|
if cint(self.from_case_no) <= 0:
|
||||||
|
frappe.throw(
|
||||||
|
_("The 'From Package No.' field must neither be empty nor it's value less than 1.")
|
||||||
|
)
|
||||||
|
elif not self.to_case_no:
|
||||||
self.to_case_no = self.from_case_no
|
self.to_case_no = self.from_case_no
|
||||||
elif cint(self.from_case_no) > cint(self.to_case_no):
|
elif cint(self.to_case_no) < cint(self.from_case_no):
|
||||||
frappe.throw(_("'To Package No.' cannot be less than 'From Package No.'"))
|
frappe.throw(_("'To Package No.' cannot be less than 'From Package No.'"))
|
||||||
else:
|
else:
|
||||||
ps = frappe.qb.DocType("Packing Slip")
|
ps = frappe.qb.DocType("Packing Slip")
|
||||||
@@ -93,9 +98,14 @@ class PackingSlip(StatusUpdater):
|
|||||||
|
|
||||||
def validate_items(self):
|
def validate_items(self):
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
|
if item.qty <= 0:
|
||||||
|
frappe.throw(_("Row {0}: Qty must be greater than 0.").format(item.idx))
|
||||||
|
|
||||||
if not item.dn_detail and not item.pi_detail:
|
if not item.dn_detail and not item.pi_detail:
|
||||||
frappe.throw(
|
frappe.throw(
|
||||||
_("Row {0}: Either Delivery Note Item or Packed Item reference is mandatory").format(item.idx)
|
_("Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.").format(
|
||||||
|
item.idx
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
remaining_qty = frappe.db.get_value(
|
remaining_qty = frappe.db.get_value(
|
||||||
@@ -150,6 +160,26 @@ class PackingSlip(StatusUpdater):
|
|||||||
+ 1
|
+ 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def calculate_net_total_pkg(self):
|
||||||
|
self.net_weight_uom = self.items[0].weight_uom if self.items else None
|
||||||
|
self.gross_weight_uom = self.net_weight_uom
|
||||||
|
|
||||||
|
net_weight_pkg = 0
|
||||||
|
for item in self.items:
|
||||||
|
if item.weight_uom != self.net_weight_uom:
|
||||||
|
frappe.throw(
|
||||||
|
_(
|
||||||
|
"Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM."
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
net_weight_pkg += flt(item.net_weight) * flt(item.qty)
|
||||||
|
|
||||||
|
self.net_weight_pkg = round(net_weight_pkg, 2)
|
||||||
|
|
||||||
|
if not flt(self.gross_weight_pkg):
|
||||||
|
self.gross_weight_pkg = self.net_weight_pkg
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
@frappe.validate_and_sanitize_search_inputs
|
@frappe.validate_and_sanitize_search_inputs
|
||||||
|
|||||||
Reference in New Issue
Block a user