sales order - allow same item to enter multiple times. Throws warning

This commit is contained in:
Neil Trini Lasrado 2015-01-21 14:33:49 +05:30
parent 71a6b93d89
commit f108c2df72

View File

@ -5,7 +5,7 @@ from __future__ import unicode_literals
import frappe import frappe
import frappe.utils import frappe.utils
from frappe.utils import cstr, flt, getdate, comma_and from frappe.utils import cstr, flt, getdate, comma_and
from frappe import _ from frappe import _ , msgprint
from frappe.model.mapper import get_mapped_doc from frappe.model.mapper import get_mapped_doc
from erpnext.controllers.selling_controller import SellingController from erpnext.controllers.selling_controller import SellingController
@ -34,32 +34,23 @@ class SalesOrder(SellingController):
frappe.msgprint(_("Warning: Sales Order {0} already exists against same Purchase Order number").format(so[0][0])) frappe.msgprint(_("Warning: Sales Order {0} already exists against same Purchase Order number").format(so[0][0]))
def validate_for_items(self): def validate_for_items(self):
check_list, flag = [], 0 check_list = []
chk_dupl_itm = []
for d in self.get('items'): for d in self.get('items'):
e = [d.item_code, d.description, d.warehouse, d.prevdoc_docname or ''] check_list.append(cstr(d.item_code))
f = [d.item_code, d.description]
if frappe.db.get_value("Item", d.item_code, "is_stock_item") == 'Yes': if frappe.db.get_value("Item", d.item_code, "is_stock_item") == 'Yes':
if not d.warehouse: if not d.warehouse:
frappe.throw(_("Reserved warehouse required for stock item {0}").format(d.item_code)) frappe.throw(_("Reserved warehouse required for stock item {0}").format(d.item_code))
if e in check_list:
frappe.throw(_("Item {0} has been entered twice").format(d.item_code))
else:
check_list.append(e)
else:
if f in chk_dupl_itm:
frappe.throw(_("Item {0} has been entered twice").format(d.item_code))
else:
chk_dupl_itm.append(f)
# used for production plan # used for production plan
d.transaction_date = self.transaction_date d.transaction_date = self.transaction_date
tot_avail_qty = frappe.db.sql("select projected_qty from `tabBin` \ tot_avail_qty = frappe.db.sql("select projected_qty from `tabBin` \
where item_code = %s and warehouse = %s", (d.item_code,d.warehouse)) where item_code = %s and warehouse = %s", (d.item_code,d.warehouse))
d.projected_qty = tot_avail_qty and flt(tot_avail_qty[0][0]) or 0 d.projected_qty = tot_avail_qty and flt(tot_avail_qty[0][0]) or 0
unique_chk_list = set(check_list)
if len(unique_chk_list) != len(check_list):
frappe.msgprint(_("Warning:Same item has been entered multiple times."))
def validate_sales_mntc_quotation(self): def validate_sales_mntc_quotation(self):
for d in self.get('items'): for d in self.get('items'):