From a54815fd9d53437443ba69157c47351c3ad91508 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 22 Jan 2018 16:02:23 +0530 Subject: [PATCH 01/10] [new] Allow Rename and Member link with user --- erpnext/non_profit/doctype/donor/donor.json | 4 ++-- erpnext/non_profit/doctype/member/member.json | 7 ++++--- erpnext/non_profit/doctype/volunteer/volunteer.json | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/erpnext/non_profit/doctype/donor/donor.json b/erpnext/non_profit/doctype/donor/donor.json index d753727c03b..7e24dacbe10 100644 --- a/erpnext/non_profit/doctype/donor/donor.json +++ b/erpnext/non_profit/doctype/donor/donor.json @@ -2,7 +2,7 @@ "allow_copy": 0, "allow_guest_to_view": 0, "allow_import": 0, - "allow_rename": 0, + "allow_rename": 1, "autoname": "field:email", "beta": 0, "creation": "2017-09-19 16:20:27.510196", @@ -295,7 +295,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-15 09:40:41.153561", + "modified": "2018-01-22 15:53:35.059946", "modified_by": "Administrator", "module": "Non Profit", "name": "Donor", diff --git a/erpnext/non_profit/doctype/member/member.json b/erpnext/non_profit/doctype/member/member.json index 0eab6ae9ad2..2178aca54ff 100644 --- a/erpnext/non_profit/doctype/member/member.json +++ b/erpnext/non_profit/doctype/member/member.json @@ -2,7 +2,7 @@ "allow_copy": 0, "allow_guest_to_view": 0, "allow_import": 0, - "allow_rename": 0, + "allow_rename": 1, "autoname": "field:email", "beta": 0, "creation": "2017-09-11 09:24:52.898356", @@ -140,7 +140,7 @@ "collapsible": 0, "columns": 0, "fieldname": "email", - "fieldtype": "Data", + "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -151,6 +151,7 @@ "label": "Email", "length": 0, "no_copy": 0, + "options": "User", "permlevel": 0, "precision": "", "print_hide": 0, @@ -325,7 +326,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-15 09:38:41.878167", + "modified": "2018-01-22 15:58:46.507509", "modified_by": "Administrator", "module": "Non Profit", "name": "Member", diff --git a/erpnext/non_profit/doctype/volunteer/volunteer.json b/erpnext/non_profit/doctype/volunteer/volunteer.json index 0d18bab0c7b..ef827e60b46 100644 --- a/erpnext/non_profit/doctype/volunteer/volunteer.json +++ b/erpnext/non_profit/doctype/volunteer/volunteer.json @@ -2,7 +2,7 @@ "allow_copy": 0, "allow_guest_to_view": 0, "allow_import": 0, - "allow_rename": 0, + "allow_rename": 1, "autoname": "field:email", "beta": 0, "creation": "2017-09-19 16:16:45.676019", @@ -506,7 +506,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-15 09:40:25.229551", + "modified": "2018-01-22 15:53:46.480182", "modified_by": "Administrator", "module": "Non Profit", "name": "Volunteer", From e2b31085a766277e3557c8f5d5e6de20112a73bf Mon Sep 17 00:00:00 2001 From: Shreya Date: Tue, 23 Jan 2018 10:54:23 +0530 Subject: [PATCH 02/10] fetch uom conversion factor in material request --- erpnext/stock/doctype/stock_entry/stock_entry.js | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 4c5031dd0dd..9093946d318 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -72,6 +72,7 @@ frappe.ui.form.on('Stock Entry', { mr_item.item_code = item.item_code; mr_item.item_name = item.item_name; mr_item.uom = item.uom; + mr_item.conversion_factor = item.conversion_factor; mr_item.item_group = item.item_group; mr_item.description = item.description; mr_item.image = item.image; From a137fe82a1cc546f3619527a47ef75a2ee6b0ce3 Mon Sep 17 00:00:00 2001 From: Shreya Date: Tue, 23 Jan 2018 11:00:58 +0530 Subject: [PATCH 03/10] fix error message --- erpnext/controllers/accounts_controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 8de1a1219c8..c7b520608e6 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -484,7 +484,7 @@ class AccountsController(TransactionBase): max_allowed_amt = flt(ref_amt * (100 + tolerance) / 100) if total_billed_amt - max_allowed_amt > 0.01: - frappe.throw(_("Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set in Buying Settings").format(item.item_code, item.idx, max_allowed_amt)) + frappe.throw(_("Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set in Stock Settings").format(item.item_code, item.idx, max_allowed_amt)) def get_company_default(self, fieldname): from erpnext.accounts.utils import get_company_default From 3959aeb8486297108978beb56215177cf1fc093f Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 23 Jan 2018 15:40:29 +0530 Subject: [PATCH 04/10] [fix] parse value before setting it to dissable_rounded_total on Purchase Invoice --- erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js | 2 +- erpnext/public/js/controllers/transaction.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index 2fbf014289e..de0b6f5add0 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -18,7 +18,7 @@ erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({ this.frm.set_df_property("credit_to", "print_hide", 0); } } else { - this.frm.set_value("disable_rounded_total", frappe.sys_defaults.disable_rounded_total); + this.frm.set_value("disable_rounded_total", cint(frappe.sys_defaults.disable_rounded_total)); } // formatter for material request item diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index d290c92eafa..d06a76a5178 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -539,7 +539,8 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ // due_date is to be changed, payment terms template and/or payment schedule must // be removed as due_date is automatically changed based on payment terms if (this.frm.doc.due_date) { - if (this.frm.doc.payment_terms_template || this.frm.doc.payment_schedule.length) { + if (this.frm.doc.payment_terms_template || + (this.frm.doc.payment_schedule && this.frm.doc.payment_schedule.length)) { var message1 = ""; var message2 = ""; var final_message = "Please clear the "; From d78e6e04eaad383675b54ad481d4e057335592e6 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 23 Jan 2018 15:42:46 +0530 Subject: [PATCH 05/10] Run country fixtures if country changed in the company (#12494) --- erpnext/setup/doctype/company/company.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index c0e90e04fd3..8812d8e821b 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -34,6 +34,7 @@ class Company(Document): self.validate_currency() self.validate_coa_input() self.validate_perpetual_inventory() + self.check_country_change() def validate_abbr(self): if not self.abbr: @@ -80,9 +81,12 @@ class Company(Document): if not frappe.db.sql("""select name from tabAccount where company=%s and docstatus<2 limit 1""", self.name): if not frappe.local.flags.ignore_chart_of_accounts: + frappe.flags.country_change = True self.create_default_accounts() self.create_default_warehouses() - install_country_fixtures(self.name) + + if frappe.flags.country_change: + install_country_fixtures(self.name) if not frappe.db.get_value("Cost Center", {"is_group": 0, "company": self.name}): self.create_default_cost_center() @@ -147,6 +151,13 @@ class Company(Document): frappe.msgprint(_("Set default inventory account for perpetual inventory"), alert=True, indicator='orange') + def check_country_change(self): + frappe.flags.country_change = False + + if not self.get('__islocal') and \ + self.country != frappe.db.get_value('Company', self.name, 'country'): + frappe.flags.country_change = True + def set_default_accounts(self): self._set_default_account("default_cash_account", "Cash") self._set_default_account("default_bank_account", "Bank") From dfae11bceee3fa6046cd041c512a5bb9d9bfff00 Mon Sep 17 00:00:00 2001 From: Shreya Date: Tue, 23 Jan 2018 16:46:24 +0530 Subject: [PATCH 06/10] disabled warehouse in list view --- erpnext/stock/doctype/warehouse/warehouse.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json index 95544c15e12..b6307a46336 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.json +++ b/erpnext/stock/doctype/warehouse/warehouse.json @@ -150,7 +150,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Disabled", "length": 0, @@ -699,7 +699,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-08-21 02:12:33.652689", + "modified": "2018-01-23 16:45:45.546649", "modified_by": "Administrator", "module": "Stock", "name": "Warehouse", From 266e66cd1b440fb439800f2f460e7cc20fc63cfd Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Tue, 23 Jan 2018 12:34:04 +0530 Subject: [PATCH 07/10] Disabled property set only once for has serial no and has batch no field in item doctype --- erpnext/stock/doctype/item/item.js | 7 +++++++ erpnext/stock/doctype/item/item.json | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index aed6f41040c..4e61bd9fe6c 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -106,6 +106,13 @@ frappe.ui.form.on("Item", { frappe.set_route("Form", "Item Variant Settings"); }, __("View")); } + + const stock_exists = (frm.doc.__onload + && frm.doc.__onload.stock_exists) ? 1 : 0; + + ['has_serial_no', 'has_batch_no'].forEach((fieldname) => { + frm.set_df_property(fieldname, 'read_only', stock_exists); + }); }, validate: function(frm){ diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json index 7d18dd6f606..7fa4b539f0f 100644 --- a/erpnext/stock/doctype/item/item.json +++ b/erpnext/stock/doctype/item/item.json @@ -1180,7 +1180,7 @@ "report_hide": 0, "reqd": 0, "search_index": 0, - "set_only_once": 1, + "set_only_once": 0, "unique": 0 }, { @@ -1370,7 +1370,7 @@ "report_hide": 0, "reqd": 0, "search_index": 0, - "set_only_once": 1, + "set_only_once": 0, "unique": 0 }, { @@ -3453,7 +3453,7 @@ "issingle": 0, "istable": 0, "max_attachments": 1, - "modified": "2017-12-27 15:47:17.039337", + "modified": "2018-01-23 12:21:16.641517", "modified_by": "Administrator", "module": "Stock", "name": "Item", From 4b9a55b0ef6627d59b89f34fb689cb87d556fd6d Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 24 Jan 2018 07:48:43 +0530 Subject: [PATCH 08/10] [fix] If buying or selling price list not found, return empty dict --- .../item_price_stock/item_price_stock.py | 55 ++++++++----------- 1 file changed, 22 insertions(+), 33 deletions(-) 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 9ee7d05d35b..ed010cd17aa 100644 --- a/erpnext/stock/report/item_price_stock/item_price_stock.py +++ b/erpnext/stock/report/item_price_stock/item_price_stock.py @@ -66,7 +66,6 @@ def get_data(filters, columns): return item_price_qty_data def get_item_price_qty_data(filters): - item_dicts = [] conditions = "" if filters.get("item_code"): conditions += "where a.item_code=%(item_code)s" @@ -78,11 +77,10 @@ def get_item_price_qty_data(filters): {conditions}""" .format(conditions=conditions), filters, as_dict=1) - price_list_names = ",".join(['"' + frappe.db.escape(item['price_list_name']) + '"' - for item in item_results]) + price_list_names = list(set([frappe.db.escape(item.price_list_name) for item in item_results])) - buying_price_map = get_buying_price_map(price_list_names) - selling_price_map = get_selling_price_map(price_list_names) + buying_price_map = get_price_map(price_list_names, buying=1) + selling_price_map = get_price_map(price_list_names, selling=1) result = [] if item_results: @@ -109,40 +107,31 @@ def get_item_price_qty_data(filters): return result -def get_buying_price_map(price_list_names): - buying_price = frappe.db.sql(""" +def get_price_map(price_list_names, buying=0, selling=0): + price_map = {} + + if not price_list_names: + return price_map + + rate_key = "Buying Rate" if buying else "Selling Rate" + price_list_key = "Buying Price List" if buying else "Selling Price List" + price_list_condition = " and buying=1" if buying else " and selling=1" + + pricing_details = frappe.db.sql(""" select name,price_list,price_list_rate from `tabItem Price` where - name in ({price_list_names}) and buying=1 - """.format(price_list_names=price_list_names), as_dict=1) + name in ({price_list_names}) {price_list_condition} + """.format(price_list_names=', '.join(['%s']*len(price_list_names)), + price_list_condition=price_list_condition), price_list_names, as_dict=1) - buying_price_map = {} - for d in buying_price: + for d in pricing_details: name = d["name"] - buying_price_map[name] = { - "Buying Price List" :d["price_list"], - "Buying Rate" :d["price_list_rate"] + price_map[name] = { + price_list_key :d["price_list"], + rate_key :d["price_list_rate"] } - return buying_price_map -def get_selling_price_map(price_list_names): - selling_price = frappe.db.sql(""" - select - name,price_list,price_list_rate - from - `tabItem Price` - where - name in ({price_list_names}) and selling=1 - """.format(price_list_names=price_list_names), as_dict=1) - - selling_price_map = {} - for d in selling_price: - name = d["name"] - selling_price_map[name] = { - "Selling Price List" :d["price_list"], - "Selling Rate" :d["price_list_rate"] - } - return selling_price_map \ No newline at end of file + return price_map From 6cc10104f0e10ed788a453d39fd4253531c023ad Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 24 Jan 2018 11:14:48 +0530 Subject: [PATCH 09/10] [fix] enable rename for payment terms and payment term template --- erpnext/accounts/doctype/payment_term/payment_term.json | 6 +++--- .../payment_terms_template/payment_terms_template.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/erpnext/accounts/doctype/payment_term/payment_term.json b/erpnext/accounts/doctype/payment_term/payment_term.json index 702319ba74d..10cfcf2a325 100644 --- a/erpnext/accounts/doctype/payment_term/payment_term.json +++ b/erpnext/accounts/doctype/payment_term/payment_term.json @@ -1,8 +1,8 @@ { "allow_copy": 0, "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, + "allow_import": 1, + "allow_rename": 1, "autoname": "field:payment_term_name", "beta": 0, "creation": "2017-08-10 15:24:54.876365", @@ -265,7 +265,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-08-10 16:26:03.581501", + "modified": "2018-01-24 11:13:42.800048", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Term", diff --git a/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.json b/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.json index 095965886d4..7a3483d6c32 100644 --- a/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.json +++ b/erpnext/accounts/doctype/payment_terms_template/payment_terms_template.json @@ -1,8 +1,8 @@ { "allow_copy": 0, "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, + "allow_import": 1, + "allow_rename": 1, "autoname": "field:template_name", "beta": 0, "creation": "2017-08-10 15:34:28.058054", @@ -85,7 +85,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-08-10 15:46:33.877884", + "modified": "2018-01-24 11:13:31.158613", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Terms Template", From 381d452b78fc66c13b5b9dd7c16f4be6e08d1b12 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 24 Jan 2018 11:52:53 +0600 Subject: [PATCH 10/10] bumped to version 10.0.14 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 24de2c69712..f4876bd46fe 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.0.13' +__version__ = '10.0.14' def get_default_company(user=None): '''Get default company for user'''