From 125c0caf12dba25085ad74b8faff73ec04afdf21 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 3 May 2018 16:23:57 +0530 Subject: [PATCH] Added brand in item price doctype, item prices report (#13900) --- erpnext/patches.txt | 1 + .../v11_0/update_brand_in_item_price.py | 14 ++++++ erpnext/stock/doctype/item/item.py | 4 +- .../stock/doctype/item_price/item_price.json | 48 +++++++++++++++++-- .../item_price_stock/item_price_stock.py | 9 +++- .../stock/report/item_prices/item_prices.py | 11 +++-- .../item_wise_price_list_rate.json | 5 +- 7 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 erpnext/patches/v11_0/update_brand_in_item_price.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 982a72119c..2ca7a98cfb 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -525,3 +525,4 @@ erpnext.patches.v11_0.set_default_email_template_in_hr erpnext.patches.v10_0.taxes_issue_with_pos erpnext.patches.v10_1.transfer_subscription_to_auto_repeat erpnext.patches.v10_1.drop_old_subscription_records +erpnext.patches.v11_0.update_brand_in_item_price \ No newline at end of file diff --git a/erpnext/patches/v11_0/update_brand_in_item_price.py b/erpnext/patches/v11_0/update_brand_in_item_price.py new file mode 100644 index 0000000000..a19a6c47b6 --- /dev/null +++ b/erpnext/patches/v11_0/update_brand_in_item_price.py @@ -0,0 +1,14 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +import frappe + +def execute(): + frappe.reload_doc('stock', 'doctype', 'item_price') + + frappe.db.sql(""" update `tabItem Price`, `tabItem` + set + `tabItem Price`.brand = `tabItem`.brand + where + `tabItem Price`.item_code = `tabItem`.name + and `tabItem`.brand is not null and `tabItem`.brand != ''""") \ No newline at end of file diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 8804043615..611b3fd94c 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -527,8 +527,8 @@ class Item(WebsiteGenerator): def update_item_price(self): frappe.db.sql("""update `tabItem Price` set item_name=%s, - item_description=%s, modified=NOW() where item_code=%s""", - (self.item_name, self.description, self.name)) + item_description=%s, brand=%s, modified=NOW() where item_code=%s""", + (self.item_name, self.description, self.brand, self.name)) def on_trash(self): super(Item, self).on_trash() diff --git a/erpnext/stock/doctype/item_price/item_price.json b/erpnext/stock/doctype/item_price/item_price.json index fdc2df2f10..9f05937bcd 100644 --- a/erpnext/stock/doctype/item_price/item_price.json +++ b/erpnext/stock/doctype/item_price/item_price.json @@ -42,6 +42,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -72,6 +73,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -101,6 +103,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -130,6 +133,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -159,6 +163,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -189,6 +194,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -219,6 +225,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -251,6 +258,7 @@ "reqd": 1, "search_index": 1, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -283,6 +291,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -311,6 +320,39 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "brand", + "fieldtype": "Read Only", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Brand", + "length": 0, + "no_copy": 0, + "options": "item_code.brand", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -340,6 +382,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 }, { @@ -369,6 +412,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, + "translatable": 0, "unique": 0 } ], @@ -383,7 +427,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-01 13:03:53.397382", + "modified": "2018-05-03 12:50:14.207842", "modified_by": "Administrator", "module": "Stock", "name": "Item Price", @@ -391,7 +435,6 @@ "permissions": [ { "amend": 0, - "apply_user_permissions": 0, "cancel": 0, "create": 1, "delete": 1, @@ -411,7 +454,6 @@ }, { "amend": 0, - "apply_user_permissions": 0, "cancel": 0, "create": 1, "delete": 1, diff --git a/erpnext/stock/report/item_price_stock/item_price_stock.py b/erpnext/stock/report/item_price_stock/item_price_stock.py index ed010cd17a..30fcad8073 100644 --- a/erpnext/stock/report/item_price_stock/item_price_stock.py +++ b/erpnext/stock/report/item_price_stock/item_price_stock.py @@ -19,6 +19,12 @@ def get_columns(): "options": "Item", "width": 120 }, + { + "label": _("Brand"), + "fieldname": "brand", + "fieldtype": "Data", + "width": 100 + }, { "label": _("Warehouse"), "fieldname": "warehouse", @@ -71,7 +77,7 @@ def get_item_price_qty_data(filters): conditions += "where a.item_code=%(item_code)s" item_results = frappe.db.sql("""select a.item_code as item_name, a.name as price_list_name, - b.warehouse as warehouse, b.actual_qty as actual_qty + a.brand as brand, b.warehouse as warehouse, b.actual_qty as actual_qty from `tabItem Price` a left join `tabBin` b ON a.item_code = b.item_code {conditions}""" @@ -87,6 +93,7 @@ def get_item_price_qty_data(filters): for item_dict in item_results: data = { 'item_name': item_dict.item_name, + 'brand': item_dict.brand, 'warehouse': item_dict.warehouse, 'stock_available': item_dict.actual_qty or 0, 'buying_price_list': "", diff --git a/erpnext/stock/report/item_prices/item_prices.py b/erpnext/stock/report/item_prices/item_prices.py index ca01d199b1..0375d8fabb 100644 --- a/erpnext/stock/report/item_prices/item_prices.py +++ b/erpnext/stock/report/item_prices/item_prices.py @@ -21,7 +21,7 @@ def execute(filters=None): data = [] for item in sorted(item_map): data.append([item, item_map[item]["item_name"],item_map[item]["item_group"], - item_map[item]["description"], item_map[item]["stock_uom"], + item_map[item]["brand"], item_map[item]["description"], item_map[item]["stock_uom"], flt(last_purchase_rate.get(item, 0), precision), flt(val_rate_map.get(item, 0), precision), pl.get(item, {}).get("Selling"), @@ -34,7 +34,8 @@ def execute(filters=None): def get_columns(filters): """return columns based on filters""" - columns = [_("Item") + ":Link/Item:100", _("Item Name") + "::150",_("Item Group") + ":Link/Item Group:125", _("Description") + "::150", _("UOM") + ":Link/UOM:80", + columns = [_("Item") + ":Link/Item:100", _("Item Name") + "::150",_("Item Group") + ":Link/Item Group:125", + _("Brand") + "::100", _("Description") + "::150", _("UOM") + ":Link/UOM:80", _("Last Purchase Rate") + ":Currency:90", _("Valuation Rate") + ":Currency:80", _("Sales Price List") + "::180", _("Purchase Price List") + "::180", _("BOM Rate") + ":Currency:90"] @@ -45,9 +46,9 @@ def get_item_details(): item_map = {} - for i in frappe.db.sql("select name, item_group, item_name, description, \ - stock_uom from tabItem \ - order by item_code, item_group", as_dict=1): + for i in frappe.db.sql("""select name, item_group, item_name, description, + brand, stock_uom from tabItem + order by item_code, item_group""", as_dict=1): item_map.setdefault(i.name, i) return item_map diff --git a/erpnext/stock/report/item_wise_price_list_rate/item_wise_price_list_rate.json b/erpnext/stock/report/item_wise_price_list_rate/item_wise_price_list_rate.json index 137d6039f1..3b901dc5d3 100644 --- a/erpnext/stock/report/item_wise_price_list_rate/item_wise_price_list_rate.json +++ b/erpnext/stock/report/item_wise_price_list_rate/item_wise_price_list_rate.json @@ -1,14 +1,13 @@ { "add_total_row": 0, - "apply_user_permissions": 1, "creation": "2013-09-25 10:21:15", "disabled": 0, "docstatus": 0, "doctype": "Report", "idx": 3, "is_standard": "Yes", - "json": "{\"add_total_row\": 0, \"sort_by\": \"Item Price.modified\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Item Price\"], [\"price_list\", \"Item Price\"], [\"item_code\", \"Item Price\"], [\"item_name\", \"Item Price\"], [\"item_description\", \"Item Price\"], [\"price_list_rate\", \"Item Price\"], [\"buying\", \"Item Price\"], [\"selling\", \"Item Price\"], [\"currency\", \"Item Price\"]]}", - "modified": "2017-02-24 20:02:09.364303", + "json": "{\"fields\": [[\"name\", \"Item Price\"], [\"price_list\", \"Item Price\"], [\"currency\", \"Item Price\"], [\"item_code\", \"Item Price\"], [\"brand\", \"Item Price\"], [\"price_list_rate\", \"Item Price\"], [\"docstatus\", \"Item Price\"]], \"order_by\": \"`tabItem Price`.`modified` asc\", \"add_total_row\": 0, \"filters\": []}", + "modified": "2018-05-03 12:48:39.802088", "modified_by": "Administrator", "module": "Stock", "name": "Item-wise Price List Rate",