mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-18 12:39:18 +00:00
[feature] Ability to set UOM as Integer-only and related validations.
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import webnotes
|
||||
from webnotes import msgprint, _
|
||||
from webnotes.utils import load_json, cstr, flt, now_datetime
|
||||
from webnotes.utils import load_json, cstr, flt, now_datetime, cint
|
||||
from webnotes.model.doc import addchild
|
||||
|
||||
from controllers.status_updater import StatusUpdater
|
||||
@@ -276,6 +276,9 @@ class TransactionBase(StatusUpdater):
|
||||
|
||||
webnotes.bean(event_doclist).insert()
|
||||
|
||||
def validate_uom_is_integer(self, uom_field, qty_fields):
|
||||
validate_uom_is_integer(self.doclist, uom_field, qty_fields)
|
||||
|
||||
def validate_with_previous_doc(self, source_dt, ref):
|
||||
for key, val in ref.items():
|
||||
is_child = val.get("is_child_table")
|
||||
@@ -482,3 +485,23 @@ def validate_currency(args, item, meta=None):
|
||||
def delete_events(ref_type, ref_name):
|
||||
webnotes.delete_doc("Event", webnotes.conn.sql_list("""select name from `tabEvent`
|
||||
where ref_type=%s and ref_name=%s""", (ref_type, ref_name)), for_reload=True)
|
||||
|
||||
def validate_uom_is_integer(doclist, uom_field, qty_fields):
|
||||
if isinstance(qty_fields, basestring):
|
||||
qty_fields = [qty_fields]
|
||||
|
||||
integer_uoms = filter(lambda uom: webnotes.conn.get_value("UOM", uom,
|
||||
"must_be_whole_number") or None, doclist.get_distinct_values(uom_field))
|
||||
|
||||
if not integer_uoms:
|
||||
return
|
||||
|
||||
for d in doclist:
|
||||
if d.fields.get(uom_field) in integer_uoms:
|
||||
for f in qty_fields:
|
||||
if d.fields.get(f):
|
||||
if cint(d.fields[f])!=d.fields[f]:
|
||||
webnotes.msgprint(_("For UOM") + " '" + d.fields[uom_field] \
|
||||
+ "': " + _("Quantity cannot be a fraction.") \
|
||||
+ " " + _("In Row") + ": " + str(d.idx),
|
||||
raise_exception=True)
|
||||
|
||||
Reference in New Issue
Block a user