Merge pull request #1336 from akhileshdarjee/disable-price-list
Enabled feature for Price List
diff --git a/accounts/doctype/sales_invoice/pos.js b/accounts/doctype/sales_invoice/pos.js
index 1d58f2d..b71b45e 100644
--- a/accounts/doctype/sales_invoice/pos.js
+++ b/accounts/doctype/sales_invoice/pos.js
@@ -530,6 +530,7 @@
else if (operation == "decrease-qty")
d.qty != 1 ? d.qty -= 1 : d.qty = 1;
+ me.frm.script_manager.trigger("qty", d.doctype, d.name);
me.refresh();
}
});
diff --git a/buying/doctype/supplier/supplier.js b/buying/doctype/supplier/supplier.js
index ec4d3e6..d0e5f95 100644
--- a/buying/doctype/supplier/supplier.js
+++ b/buying/doctype/supplier/supplier.js
@@ -3,7 +3,7 @@
wn.require('app/setup/doctype/contact_control/contact_control.js');
-cur_frm.cscript.refresh = function(doc,dt,dn) {
+cur_frm.cscript.refresh = function(doc, dt, dn) {
cur_frm.cscript.make_dashboard(doc);
erpnext.hide_naming_series();
@@ -93,7 +93,7 @@
cur_frm.contact_list.run();
}
-cur_frm.fields_dict['default_price_list'].get_query = function(doc,cdt,cdn) {
+cur_frm.fields_dict['default_price_list'].get_query = function(doc, cdt, cdn) {
return{
filters:{'buying': 1}
}
diff --git a/buying/utils.py b/buying/utils.py
index 35d89c5..ec13454 100644
--- a/buying/utils.py
+++ b/buying/utils.py
@@ -89,8 +89,10 @@
# try fetching from price list
if args.buying_price_list and args.price_list_currency:
- price_list_rate = webnotes.conn.sql("""select ref_rate from `tabItem Price`
- where price_list=%s and item_code=%s and buying=1""",
+ price_list_rate = webnotes.conn.sql("""select ip.ref_rate from
+ `tabItem Price` ip, `tabPrice List` pl
+ where ip.price_list=pl.name and ip.price_list=%s and
+ ip.item_code=%s and ip.buying=1 and pl.enabled=1""",
(args.buying_price_list, args.item_code), as_dict=1)
if price_list_rate:
diff --git a/patches/1401/enable_all_price_list.py b/patches/1401/enable_all_price_list.py
new file mode 100644
index 0000000..9cf141f
--- /dev/null
+++ b/patches/1401/enable_all_price_list.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2014, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+def execute():
+ webnotes.reload_doc("stock", "doctype", "price_list")
+ webnotes.conn.sql("""update `tabPrice List` set enabled=1""")
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 2598ae8..89e3309 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -266,4 +266,5 @@
"patches.1401.p01_move_related_property_setters_to_custom_field",
"patches.1401.p01_make_buying_selling_as_check_box_in_price_list",
"patches.1401.update_billing_status_for_zero_value_order",
+ "patches.1401.enable_all_price_list",
]
\ No newline at end of file
diff --git a/selling/doctype/customer/customer.js b/selling/doctype/customer/customer.js
index 5d04690..fb5d887 100644
--- a/selling/doctype/customer/customer.js
+++ b/selling/doctype/customer/customer.js
@@ -18,7 +18,7 @@
cur_frm.add_fetch('lead_name', 'company_name', 'customer_name');
cur_frm.add_fetch('default_sales_partner','commission_rate','default_commission_rate');
-cur_frm.cscript.refresh = function(doc,dt,dn) {
+cur_frm.cscript.refresh = function(doc, dt, dn) {
cur_frm.cscript.setup_dashboard(doc);
erpnext.hide_naming_series();
@@ -107,20 +107,20 @@
}
-cur_frm.fields_dict['customer_group'].get_query = function(doc,dt,dn) {
+cur_frm.fields_dict['customer_group'].get_query = function(doc, dt, dn) {
return{
filters:{'is_group': 'No'}
}
}
-cur_frm.fields_dict.lead_name.get_query = function(doc,cdt,cdn) {
+cur_frm.fields_dict.lead_name.get_query = function(doc, cdt, cdn) {
return{
query:"controllers.queries.lead_query"
}
}
-cur_frm.fields_dict['default_price_list'].get_query = function(doc,cdt,cdn) {
+cur_frm.fields_dict['default_price_list'].get_query = function(doc, cdt, cdn) {
return{
filters:{'selling': 1}
}
diff --git a/selling/utils/__init__.py b/selling/utils/__init__.py
index f495f58..b71c9d4 100644
--- a/selling/utils/__init__.py
+++ b/selling/utils/__init__.py
@@ -150,8 +150,10 @@
return out
def _get_price_list_rate(args, item_bean, meta):
- ref_rate = webnotes.conn.sql("""select ref_rate from `tabItem Price`
- where price_list=%s and item_code=%s and selling=1""",
+ ref_rate = webnotes.conn.sql("""select ip.ref_rate from
+ `tabItem Price` ip, `tabPrice List` pl
+ where ip.price_list=pl.name and ip.price_list=%s and
+ ip.item_code=%s and ip.selling=1 and pl.enabled=1""",
(args.selling_price_list, args.item_code), as_dict=1)
if not ref_rate:
diff --git a/selling/utils/product.py b/selling/utils/product.py
index 32ff85a..22bb880 100644
--- a/selling/utils/product.py
+++ b/selling/utils/product.py
@@ -27,8 +27,9 @@
else:
in_stock = -1
- price = price_list and webnotes.conn.sql("""select ref_rate, currency from
- `tabItem Price` where item_code=%s and price_list=%s""",
+ price = price_list and webnotes.conn.sql("""select ip.ref_rate, ip.currency from
+ `tabItem Price` ip, `tabPrice List` pl where ip.price_list=pl.name and
+ ip.item_code=%s and ip.price_list=%s and pl.enabled=1""",
(item_code, price_list), as_dict=1) or []
price = price and price[0] or None
diff --git a/setup/page/setup_wizard/setup_wizard.py b/setup/page/setup_wizard/setup_wizard.py
index ededd47..943d8b6 100644
--- a/setup/page/setup_wizard/setup_wizard.py
+++ b/setup/page/setup_wizard/setup_wizard.py
@@ -98,6 +98,7 @@
{
"doctype": "Price List",
"price_list_name": "Standard " + pl_type,
+ "enabled": 1,
"buying": 1 if pl_type == "Buying" else 0,
"selling": 1 if pl_type == "Selling" else 0,
"currency": args["currency"]
diff --git a/setup/utils.py b/setup/utils.py
index 0571c15..68a5a5a 100644
--- a/setup/utils.py
+++ b/setup/utils.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import webnotes
-from webnotes import _, msgprint
+from webnotes import _, msgprint, throw
import json
def get_company_currency(company):
@@ -11,8 +11,8 @@
if not currency:
currency = webnotes.conn.get_default("currency")
if not currency:
- msgprint(_('Please specify Default Currency in Company Master \
- and Global Defaults'), raise_exception=True)
+ throw(_('Please specify Default Currency in Company Master \
+ and Global Defaults'))
return currency
@@ -32,5 +32,14 @@
@webnotes.whitelist()
def get_price_list_currency(price_list):
- return {"price_list_currency": webnotes.conn.get_value("Price List", price_list,
- "currency")}
\ No newline at end of file
+ price_list_currency = webnotes.conn.get_value("Price List", {"name": price_list,
+ "enabled": 1}, "currency")
+
+ if not price_list_currency:
+ throw("{message}: {price_list} {disabled}".format(**{
+ "message": _("Price List"),
+ "price_list": price_list,
+ "disabled": _("is disabled.")
+ }))
+ else:
+ return {"price_list_currency": price_list_currency}
\ No newline at end of file
diff --git a/stock/doctype/item_price/item_price.py b/stock/doctype/item_price/item_price.py
index e2c9f2f..cb07e70 100644
--- a/stock/doctype/item_price/item_price.py
+++ b/stock/doctype/item_price/item_price.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import webnotes
-from webnotes import _
+from webnotes import throw, _
class ItemPriceDuplicateItem(webnotes.ValidationError): pass
@@ -12,26 +12,36 @@
self.doc, self.doclist = d, dl
def validate(self):
+ self.validate_price_list()
self.check_duplicate_item()
self.update_price_list_details()
self.update_item_details()
- def update_price_list_details(self):
- self.doc.buying, self.doc.selling, self.doc.currency = webnotes.conn.get_value("Price List",
- self.doc.price_list, ["buying", "selling", "currency"])
-
- def update_item_details(self):
- self.doc.item_name, self.doc.item_description = webnotes.conn.get_value("Item",
- self.doc.item_code, ["item_name", "description"])
+ def validate_price_list(self):
+ enabled = webnotes.conn.get_value("Price List", self.doc.price_list, "enabled")
+ if not enabled:
+ throw("{message}: {price_list} {disabled}".format(**{
+ "message": _("Price List"),
+ "price_list": self.doc.price_list,
+ "disabled": _("is disabled.")
+ }))
def check_duplicate_item(self):
if webnotes.conn.sql("""select name from `tabItem Price`
where item_code=%s and price_list=%s and name!=%s""",
(self.doc.item_code, self.doc.price_list, self.doc.name)):
- webnotes.throw("{duplicate_item}: {item_code}, {already}: {price_list}".format(**{
+ throw("{duplicate_item}: {item_code}, {already}: {price_list}".format(**{
"duplicate_item": _("Duplicate Item"),
"item_code": self.doc.item_code,
"already": _("already available in Price List"),
"price_list": self.doc.price_list
}), ItemPriceDuplicateItem)
+
+ def update_price_list_details(self):
+ self.doc.buying, self.doc.selling, self.doc.currency = webnotes.conn.get_value("Price List",
+ {"name": self.doc.price_list, "enabled": 1}, ["buying", "selling", "currency"])
+
+ def update_item_details(self):
+ self.doc.item_name, self.doc.item_description = webnotes.conn.get_value("Item",
+ self.doc.item_code, ["item_name", "description"])
\ No newline at end of file
diff --git a/stock/doctype/price_list/price_list.txt b/stock/doctype/price_list/price_list.txt
index 69c3ecb..daa89d1 100644
--- a/stock/doctype/price_list/price_list.txt
+++ b/stock/doctype/price_list/price_list.txt
@@ -2,7 +2,7 @@
{
"creation": "2013-01-25 11:35:09",
"docstatus": 0,
- "modified": "2014-01-06 18:28:23",
+ "modified": "2014-01-17 13:29:39",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -43,6 +43,18 @@
"name": "Price List"
},
{
+ "default": "1",
+ "doctype": "DocField",
+ "fieldname": "enabled",
+ "fieldtype": "Check",
+ "label": "Enabled"
+ },
+ {
+ "doctype": "DocField",
+ "fieldname": "sb_1",
+ "fieldtype": "Section Break"
+ },
+ {
"doctype": "DocField",
"fieldname": "price_list_name",
"fieldtype": "Data",
diff --git a/stock/doctype/price_list/test_price_list.py b/stock/doctype/price_list/test_price_list.py
index bdcacc3..803be27 100644
--- a/stock/doctype/price_list/test_price_list.py
+++ b/stock/doctype/price_list/test_price_list.py
@@ -11,6 +11,7 @@
{
"doctype": "Price List",
"price_list_name": "_Test Price List",
+ "enabled": 1,
"currency": "INR",
"selling": 1
},
@@ -24,6 +25,7 @@
{
"doctype": "Price List",
"price_list_name": "_Test Price List 2",
+ "enabled": 1,
"currency": "INR",
"selling": 1
},
@@ -37,6 +39,7 @@
{
"doctype": "Price List",
"price_list_name": "_Test Price List India",
+ "enabled": 1,
"currency": "INR",
"selling": 1
},
@@ -50,6 +53,7 @@
{
"doctype": "Price List",
"price_list_name": "_Test Price List Rest of the World",
+ "enabled": 1,
"currency": "USD",
"selling": 1
},
diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py
index db4ee40..e1b0ef3 100644
--- a/stock/doctype/warehouse/warehouse.py
+++ b/stock/doctype/warehouse/warehouse.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, validate_email_add
-from webnotes import msgprint, _
+from webnotes import throw, msgprint, _
class DocType:
def __init__(self, doc, doclist=[]):
@@ -18,7 +18,7 @@
def validate(self):
if self.doc.email_id and not validate_email_add(self.doc.email_id):
- msgprint("Please enter valid Email Id", raise_exception=1)
+ throw(_("Please enter valid Email Id"))
self.update_parent_account()
@@ -76,8 +76,8 @@
for d in bins:
if d['actual_qty'] or d['reserved_qty'] or d['ordered_qty'] or \
d['indented_qty'] or d['projected_qty'] or d['planned_qty']:
- msgprint("""Warehouse: %s can not be deleted as qty exists for item: %s"""
- % (self.doc.name, d['item_code']), raise_exception=1)
+ throw("""Warehouse: %s can not be deleted as qty exists for item: %s"""
+ % (self.doc.name, d['item_code']))
else:
webnotes.conn.sql("delete from `tabBin` where name = %s", d['name'])
@@ -88,8 +88,8 @@
if webnotes.conn.sql("""select name from `tabStock Ledger Entry`
where warehouse = %s""", self.doc.name):
- msgprint("""Warehouse can not be deleted as stock ledger entry
- exists for this warehouse.""", raise_exception=1)
+ throw(_("""Warehouse can not be deleted as stock ledger entry
+ exists for this warehouse."""))
def before_rename(self, olddn, newdn, merge=False):
# Add company abbr if not provided
diff --git a/stock/report/item_prices/item_prices.py b/stock/report/item_prices/item_prices.py
index 5eee7df..c9efd69 100644
--- a/stock/report/item_prices/item_prices.py
+++ b/stock/report/item_prices/item_prices.py
@@ -16,7 +16,6 @@
val_rate_map = get_valuation_rate()
precision = get_currency_precision() or 2
-
data = []
for item in sorted(item_map):
data.append([item, item_map[item]["item_name"],
@@ -65,9 +64,10 @@
rate = {}
- price_list = webnotes.conn.sql("""select item_code, buying, selling,
- concat(price_list, " - ", currency, " ", ref_rate) as price
- from `tabItem Price`""", as_dict=1)
+ price_list = webnotes.conn.sql("""select ip.item_code, ip.buying, ip.selling,
+ concat(ip.price_list, " - ", ip.currency, " ", ip.ref_rate) as price
+ from `tabItem Price` ip, `tabPrice List` pl
+ where ip.price_list=pl.name and pl.enabled=1""", as_dict=1)
for j in price_list:
if j.price: