Stock reco: item and warehouse validation and translation fixes
This commit is contained in:
parent
966edff222
commit
d64a952b5d
@ -47,7 +47,7 @@ class StockReconciliation(StockController):
|
|||||||
self.reconciliation_json = json.dumps(data)
|
self.reconciliation_json = json.dumps(data)
|
||||||
|
|
||||||
def _get_msg(row_num, msg):
|
def _get_msg(row_num, msg):
|
||||||
return _("Row # ") + ("%d: " % (row_num+head_row_no+2)) + _(msg)
|
return _("Row # {0}: ").format(row_num+head_row_no+2) + msg
|
||||||
|
|
||||||
self.validation_messages = []
|
self.validation_messages = []
|
||||||
item_warehouse_combinations = []
|
item_warehouse_combinations = []
|
||||||
@ -60,27 +60,30 @@ class StockReconciliation(StockController):
|
|||||||
for row_num, row in enumerate(rows):
|
for row_num, row in enumerate(rows):
|
||||||
# find duplicates
|
# find duplicates
|
||||||
if [row[0], row[1]] in item_warehouse_combinations:
|
if [row[0], row[1]] in item_warehouse_combinations:
|
||||||
self.validation_messages.append(_get_msg(row_num, "Duplicate entry"))
|
self.validation_messages.append(_get_msg(row_num, _("Duplicate entry")))
|
||||||
else:
|
else:
|
||||||
item_warehouse_combinations.append([row[0], row[1]])
|
item_warehouse_combinations.append([row[0], row[1]])
|
||||||
|
|
||||||
self.validate_item(row[0], row_num+head_row_no+2)
|
self.validate_item(row[0], row_num+head_row_no+2)
|
||||||
# note: warehouse will be validated through link validation
|
|
||||||
|
# validate warehouse
|
||||||
|
if not frappe.db.get_value("Warehouse", row[1]):
|
||||||
|
self.validation_messages.append(_get_msg(row_num, _("Warehouse not found in the system")))
|
||||||
|
|
||||||
# if both not specified
|
# if both not specified
|
||||||
if row[2] == "" and row[3] == "":
|
if row[2] == "" and row[3] == "":
|
||||||
self.validation_messages.append(_get_msg(row_num,
|
self.validation_messages.append(_get_msg(row_num,
|
||||||
"Please specify either Quantity or Valuation Rate or both"))
|
_("Please specify either Quantity or Valuation Rate or both")))
|
||||||
|
|
||||||
# do not allow negative quantity
|
# do not allow negative quantity
|
||||||
if flt(row[2]) < 0:
|
if flt(row[2]) < 0:
|
||||||
self.validation_messages.append(_get_msg(row_num,
|
self.validation_messages.append(_get_msg(row_num,
|
||||||
"Negative Quantity is not allowed"))
|
_("Negative Quantity is not allowed")))
|
||||||
|
|
||||||
# do not allow negative valuation
|
# do not allow negative valuation
|
||||||
if flt(row[3]) < 0:
|
if flt(row[3]) < 0:
|
||||||
self.validation_messages.append(_get_msg(row_num,
|
self.validation_messages.append(_get_msg(row_num,
|
||||||
"Negative Valuation Rate is not allowed"))
|
_("Negative Valuation Rate is not allowed")))
|
||||||
|
|
||||||
# throw all validation messages
|
# throw all validation messages
|
||||||
if self.validation_messages:
|
if self.validation_messages:
|
||||||
@ -97,6 +100,8 @@ class StockReconciliation(StockController):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
item = frappe.get_doc("Item", item_code)
|
item = frappe.get_doc("Item", item_code)
|
||||||
|
if not item:
|
||||||
|
raise frappe.ValidationError, (_("Item: {0} not found in the system").format(item_code))
|
||||||
|
|
||||||
# end of life and stock item
|
# end of life and stock item
|
||||||
validate_end_of_life(item_code, item.end_of_life, verbose=0)
|
validate_end_of_life(item_code, item.end_of_life, verbose=0)
|
||||||
@ -104,12 +109,13 @@ class StockReconciliation(StockController):
|
|||||||
|
|
||||||
# item should not be serialized
|
# item should not be serialized
|
||||||
if item.has_serial_no == "Yes":
|
if item.has_serial_no == "Yes":
|
||||||
raise frappe.ValidationError, _("Serialized Item {0} cannot be updated using Stock Reconciliation").format(item_code)
|
raise frappe.ValidationError, _("Serialized Item {0} cannot be updated \
|
||||||
|
using Stock Reconciliation").format(item_code)
|
||||||
|
|
||||||
# item managed batch-wise not allowed
|
# item managed batch-wise not allowed
|
||||||
if item.has_batch_no == "Yes":
|
if item.has_batch_no == "Yes":
|
||||||
frappe.throw(_("Item: {0} managed batch-wise, can not be reconciled using \
|
raise frappe.ValidationError, _("Item: {0} managed batch-wise, can not be reconciled using \
|
||||||
Stock Reconciliation, instead use Stock Entry").format(item_code))
|
Stock Reconciliation, instead use Stock Entry").format(item_code)
|
||||||
|
|
||||||
# docstatus should be < 2
|
# docstatus should be < 2
|
||||||
validate_cancelled_item(item_code, item.docstatus, verbose=0)
|
validate_cancelled_item(item_code, item.docstatus, verbose=0)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user