diff --git a/erpnext/__version__.py b/erpnext/__version__.py index 2908f6aeab9..3ea0d2f6ef6 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1 +1 @@ -__version__ = '4.14.0' +__version__ = '4.15.0' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 0688b4cc9ff..2902ef834f4 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors" app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations" app_icon = "icon-th" app_color = "#e74c3c" -app_version = "4.14.0" +app_version = "4.15.0" error_report_email = "support@erpnext.com" diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js index 3a124850199..ae4699efd8a 100644 --- a/erpnext/public/js/transaction.js +++ b/erpnext/public/js/transaction.js @@ -402,20 +402,26 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({ }, _set_values_for_item_list: function(children) { + var me = this; $.each(children, function(i, d) { + var existing_pricing_rule = frappe.model.get_value(d.doctype, d.name, "pricing_rule"); $.each(d, function(k, v) { if (["doctype", "name"].indexOf(k)===-1) { frappe.model.set_value(d.doctype, d.name, k, v); } }); + // if pricing rule set as blank from an existing value, apply price_list + if(existing_pricing_rule && !d.pricing_rule) { + me.apply_price_list(frappe.get_doc(d.doctype, d.name)); + } }); }, - apply_price_list: function() { + apply_price_list: function(item) { var me = this; return this.frm.call({ method: "erpnext.stock.get_item_details.apply_price_list", - args: { args: this._get_args() }, + args: { args: this._get_args(item) }, callback: function(r) { if (!r.exc) { me.in_apply_price_list = true; diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/erpnext/selling/doctype/opportunity/opportunity.js index af31d395153..59acc10be49 100644 --- a/erpnext/selling/doctype/opportunity/opportunity.js +++ b/erpnext/selling/doctype/opportunity/opportunity.js @@ -35,8 +35,6 @@ erpnext.selling.Opportunity = frappe.ui.form.Controller.extend({ }); } - if(this.frm.doc.customer && !this.frm.doc.customer_name) cur_frm.cscript.customer(this.frm.doc); - this.setup_queries(); }, diff --git a/erpnext/selling/doctype/opportunity/opportunity.json b/erpnext/selling/doctype/opportunity/opportunity.json index 17291ad13f5..92defc2acf4 100644 --- a/erpnext/selling/doctype/opportunity/opportunity.json +++ b/erpnext/selling/doctype/opportunity/opportunity.json @@ -47,6 +47,7 @@ "in_filter": 1, "in_list_view": 1, "label": "Customer", + "no_copy": 1, "oldfieldname": "customer", "oldfieldtype": "Link", "options": "Customer", @@ -416,7 +417,7 @@ "icon": "icon-info-sign", "idx": 1, "is_submittable": 1, - "modified": "2014-12-01 08:46:35.331148", + "modified": "2014-12-19 10:49:20.695720", "modified_by": "Administrator", "module": "Selling", "name": "Opportunity", diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.js b/erpnext/setup/page/setup_wizard/setup_wizard.js index 939eae648e0..3252e8acd6e 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.js +++ b/erpnext/setup/page/setup_wizard/setup_wizard.js @@ -61,14 +61,27 @@ frappe.pages['setup-wizard'].onload = function(wrapper) { fields: [ { "fieldname": "language", "label": __("Language"), "fieldtype": "Select", - options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski", - "italiano", "nederlands", "polski", "português brasileiro", "português", "српски", "தமிழ்", - "ไทย", "中国(简体)", "中國(繁體)"], - reqd:1, "default": "english" + reqd:1 }, ], help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."), onload: function(slide) { + var me = this; + + if (!this.language_list) { + frappe.call({ + method: "erpnext.setup.page.setup_wizard.setup_wizard.load_languages", + callback: function(r) { + me.language_list = r.message; + slide.get_input("language") + .add_options(r.message) + .val("english"); + } + }) + } else { + slide.get_input("language").add_options(this.language_list); + } + slide.get_input("language").on("change", function() { var lang = $(this).val() || "english"; frappe._messages = {}; diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py index c5e3f4339ef..6e3c7186258 100644 --- a/erpnext/setup/page/setup_wizard/setup_wizard.py +++ b/erpnext/setup/page/setup_wizard/setup_wizard.py @@ -434,4 +434,6 @@ def load_messages(language): send_translations(m) return lang - +@frappe.whitelist() +def load_languages(): + return sorted(get_lang_dict().keys()) diff --git a/setup.py b/setup.py index 8c9712e8ab6..1a20cfdb730 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.14.0" +version = "4.15.0" with open("requirements.txt", "r") as f: install_requires = f.readlines()