validate returned qty only if there is reference qty
This commit is contained in:
parent
fc11fce990
commit
d681c88d79
@ -106,24 +106,25 @@ def validate_returned_items(doc):
|
|||||||
|
|
||||||
def validate_quantity(doc, args, ref, valid_items, already_returned_items):
|
def validate_quantity(doc, args, ref, valid_items, already_returned_items):
|
||||||
fields = ['qty']
|
fields = ['qty']
|
||||||
if doc.doctype in ['Purchase Invoice', 'Purchase Receipt']:
|
if doc.doctype in ['Purchase Receipt', 'Purchase Invoice']:
|
||||||
fields.extend(['received_qty', 'rejected_qty'])
|
fields.extend(['received_qty', 'rejected_qty'])
|
||||||
|
|
||||||
already_returned_data = already_returned_items.get(args.item_code) or {}
|
already_returned_data = already_returned_items.get(args.item_code) or {}
|
||||||
|
|
||||||
for column in fields:
|
for column in fields:
|
||||||
return_qty = flt(already_returned_data.get(column, 0)) if len(already_returned_data) > 0 else 0
|
returned_qty = flt(already_returned_data.get(column, 0)) if len(already_returned_data) > 0 else 0
|
||||||
referenced_qty = ref.get(column)
|
reference_qty = ref.get(column)
|
||||||
max_return_qty = flt(referenced_qty) - return_qty
|
max_returnable_qty = flt(reference_qty) - returned_qty
|
||||||
label = column.replace('_', ' ').title()
|
label = column.replace('_', ' ').title()
|
||||||
|
if reference_qty:
|
||||||
if flt(args.get(column)) > 0:
|
if flt(args.get(column)) > 0:
|
||||||
frappe.throw(_("{0} must be negative in return document").format(label))
|
frappe.throw(_("{0} must be negative in return document").format(label))
|
||||||
elif return_qty >= referenced_qty and flt(args.get(column)) != 0:
|
elif returned_qty >= reference_qty and args.get(column):
|
||||||
frappe.throw(_("Item {0} has already been returned").format(args.item_code), StockOverReturnError)
|
frappe.throw(_("Item {0} has already been returned")
|
||||||
elif abs(args.get(column)) > max_return_qty:
|
.format(args.item_code), StockOverReturnError)
|
||||||
frappe.throw(_("Row # {0}: Cannot return more than {1} for Item {2}")
|
elif abs(args.get(column)) > max_returnable_qty:
|
||||||
.format(args.idx, referenced_qty, args.item_code), StockOverReturnError)
|
frappe.throw(_("Row # {0}: Cannot return more than {1} for Item {2}")
|
||||||
|
.format(args.idx, reference_qty, args.item_code), StockOverReturnError)
|
||||||
|
|
||||||
def get_ref_item_dict(valid_items, ref_item_row):
|
def get_ref_item_dict(valid_items, ref_item_row):
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||||
|
Loading…
x
Reference in New Issue
Block a user