Merge pull request #1925 from nabinhait/hotfix

Overflow validation fixed
This commit is contained in:
Rushabh Mehta 2014-07-10 15:46:08 +05:30
commit 052b5a68ed
8 changed files with 29 additions and 19 deletions

View File

@ -55,12 +55,12 @@ class CForm(Document):
def get_invoice_details(self, invoice_no): def get_invoice_details(self, invoice_no):
""" Pull details from invoices for referrence """ """ Pull details from invoices for referrence """
if invoice_no:
inv = frappe.db.get_value("Sales Invoice", invoice_no, inv = frappe.db.get_value("Sales Invoice", invoice_no,
["posting_date", "territory", "net_total", "grand_total"], as_dict=True) ["posting_date", "territory", "net_total", "grand_total"], as_dict=True)
return { return {
'invoice_date' : inv.posting_date, 'invoice_date' : inv.posting_date,
'territory' : inv.territory, 'territory' : inv.territory,
'net_total' : inv.net_total, 'net_total' : inv.net_total,
'grand_total' : inv.grand_total 'grand_total' : inv.grand_total
} }

View File

@ -30,6 +30,7 @@ class PurchaseInvoice(BuyingController):
'target_ref_field': 'amount', 'target_ref_field': 'amount',
'source_field': 'amount', 'source_field': 'amount',
'percent_join_field': 'purchase_order', 'percent_join_field': 'purchase_order',
'overflow_type': 'billing'
}] }]
def validate(self): def validate(self):

View File

@ -36,7 +36,8 @@ class SalesInvoice(SellingController):
'join_field': 'so_detail', 'join_field': 'so_detail',
'percent_join_field': 'sales_order', 'percent_join_field': 'sales_order',
'status_field': 'billing_status', 'status_field': 'billing_status',
'keyword': 'Billed' 'keyword': 'Billed',
'overflow_type': 'billing'
}] }]
def validate(self): def validate(self):
@ -134,7 +135,8 @@ class SalesInvoice(SellingController):
'keyword':'Delivered', 'keyword':'Delivered',
'second_source_dt': 'Delivery Note Item', 'second_source_dt': 'Delivery Note Item',
'second_source_field': 'qty', 'second_source_field': 'qty',
'second_join_field': 'prevdoc_detail_docname' 'second_join_field': 'prevdoc_detail_docname',
'overflow_type': 'delivery'
}) })
def on_update_after_submit(self): def on_update_after_submit(self):

View File

@ -24,6 +24,7 @@ class PurchaseOrder(BuyingController):
'target_ref_field': 'qty', 'target_ref_field': 'qty',
'source_field': 'qty', 'source_field': 'qty',
'percent_join_field': 'prevdoc_docname', 'percent_join_field': 'prevdoc_docname',
'overflow_type': 'order'
}] }]
def validate(self): def validate(self):

View File

@ -132,11 +132,12 @@ class StatusUpdater(Document):
if not item[args['target_ref_field']]: if not item[args['target_ref_field']]:
msgprint(_("Note: System will not check over-delivery and over-booking for Item {0} as quantity or amount is 0").format(item.item_code)) msgprint(_("Note: System will not check over-delivery and over-booking for Item {0} as quantity or amount is 0").format(item.item_code))
elif args.get('no_tolerance'): elif args.get('no_tolerance'):
item['reduce_by'] = item[args['target_field']] - \ item['reduce_by'] = item[args['target_field']] - item[args['target_ref_field']]
item[args['target_ref_field']]
if item['reduce_by'] > .01: if item['reduce_by'] > .01:
msgprint(_("Allowance for over-delivery / over-billing crossed for Item {0}").format(item.item_code)) msgprint(_("Allowance for over-{0} crossed for Item {1}")
throw(_("{0} must be less than or equal to {1}").format(_(item.target_ref_field), item[args["target_ref_field"]])) .format(args["overflow_type"], item.item_code))
throw(_("{0} must be reduced by {1} or you should increase overflow tolerance")
.format(_(item.target_ref_field.title()), item["reduce_by"]))
else: else:
self.check_overflow_with_tolerance(item, args) self.check_overflow_with_tolerance(item, args)
@ -156,8 +157,10 @@ class StatusUpdater(Document):
item['max_allowed'] = flt(item[args['target_ref_field']] * (100+tolerance)/100) item['max_allowed'] = flt(item[args['target_ref_field']] * (100+tolerance)/100)
item['reduce_by'] = item[args['target_field']] - item['max_allowed'] item['reduce_by'] = item[args['target_field']] - item['max_allowed']
msgprint(_("Allowance for over-delivery / over-billing crossed for Item {0}.").format(item["item_code"])) msgprint(_("Allowance for over-{0} crossed for Item {1}.")
throw(_("{0} must be less than or equal to {1}").format(item["target_ref_field"].title(), item["max_allowed"])) .format(args["overflow_type"], item["item_code"]))
throw(_("{0} must be reduced by {1} or you should increase overflow tolerance")
.format(_(item["target_ref_field"].title()), item["reduce_by"]))
def update_qty(self, change_modified=True): def update_qty(self, change_modified=True):
""" """

View File

@ -28,7 +28,8 @@ class InstallationNote(TransactionBase):
'source_field': 'qty', 'source_field': 'qty',
'percent_join_field': 'prevdoc_docname', 'percent_join_field': 'prevdoc_docname',
'status_field': 'installation_status', 'status_field': 'installation_status',
'keyword': 'Installed' 'keyword': 'Installed',
'overflow_type': 'installation'
}] }]
def validate(self): def validate(self):

View File

@ -29,7 +29,8 @@ class DeliveryNote(SellingController):
'source_field': 'qty', 'source_field': 'qty',
'percent_join_field': 'against_sales_order', 'percent_join_field': 'against_sales_order',
'status_field': 'delivery_status', 'status_field': 'delivery_status',
'keyword': 'Delivered' 'keyword': 'Delivered',
'overflow_type': 'delivery'
}] }]
def onload(self): def onload(self):

View File

@ -27,6 +27,7 @@ class PurchaseReceipt(BuyingController):
'target_ref_field': 'qty', 'target_ref_field': 'qty',
'source_field': 'qty', 'source_field': 'qty',
'percent_join_field': 'prevdoc_docname', 'percent_join_field': 'prevdoc_docname',
'overflow_type': 'receipt'
}] }]
def onload(self): def onload(self):