From 5495bc54a5106264d3aea8eee0b812897bb05a72 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 19 May 2015 12:00:34 +0530 Subject: [PATCH 1/6] [enhancement] default terms in company, fixes #3231 --- erpnext/accounts/utils.py | 5 ---- erpnext/public/js/controllers/transaction.js | 8 +++++- erpnext/public/js/utils.js | 16 +---------- erpnext/setup/doctype/company/company.json | 30 +++++++++++++------- erpnext/setup/doctype/company/company.py | 6 ++-- erpnext/startup/boot.py | 5 ++-- 6 files changed, 34 insertions(+), 36 deletions(-) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index e0f0e3bd2a..1853fc9316 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -421,8 +421,3 @@ def get_outstanding_invoices(amount_query, account, party_type, party): }) return all_outstanding_vouchers - -@frappe.whitelist() -def get_letter_head(company): - return frappe.db.get_value("Company",company,"default_letter_head") - diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index a96f5e97d9..c8b2b64684 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -194,6 +194,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ var fn = function() { if(me.frm.doc.company && me.frm.fields_dict.currency) { var company_currency = me.get_company_currency(); + var company_doc = frappe.get_doc(":Company", me.frm.doc.company); if (!me.frm.doc.currency) { me.frm.set_value("currency", company_currency); } @@ -204,6 +205,12 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ if (me.frm.doc.price_list_currency == company_currency) { me.frm.set_value('plc_conversion_rate', 1.0); } + if (company_doc.default_letter_head) { + me.frm.set_value("letter_head", company_doc.default_letter_head); + } + if (company_doc.default_terms) { + me.frm.set_value("tc_name", company_doc.default_terms); + } me.frm.script_manager.trigger("currency"); me.apply_pricing_rule(); @@ -213,7 +220,6 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ if (this.frm.doc.posting_date) var date = this.frm.doc.posting_date; else var date = this.frm.doc.transaction_date; erpnext.get_fiscal_year(this.frm.doc.company, date, fn); - erpnext.get_letter_head(this.frm.doc.company); if(this.frm.doc.company) { erpnext.last_selected_company = this.frm.doc.company; diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index 355fe7d148..5476d147ab 100644 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -105,21 +105,7 @@ $.extend(erpnext, { d.show(); }); - }, - - get_letter_head: function(company) { - frappe.call({ - type:"GET", - method: "erpnext.accounts.utils.get_letter_head", - args: { - "company": company - }, - callback: function(r) { - if (!r.exe) cur_frm.set_value("letter_head", r.message); - } - }); - }, - + } }); diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index 0e7b17a148..db71d0f2a2 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -52,14 +52,6 @@ "permlevel": 0, "read_only": 0 }, - { - "fieldname": "default_letter_head", - "fieldtype": "Link", - "label": "Default Letter Head", - "options": "Letter Head", - "permlevel": 0, - "precision": "" - }, { "fieldname": "domain", "fieldtype": "Select", @@ -72,9 +64,17 @@ "fieldname": "charts_section", "fieldtype": "Section Break", "hidden": 0, - "label": "Country Settings", + "label": "Default Values", "permlevel": 0 }, + { + "fieldname": "default_letter_head", + "fieldtype": "Link", + "label": "Default Letter Head", + "options": "Letter Head", + "permlevel": 0, + "precision": "" + }, { "fieldname": "default_holiday_list", "fieldtype": "Link", @@ -117,10 +117,18 @@ "options": "", "permlevel": 0 }, + { + "fieldname": "default_terms", + "fieldtype": "Link", + "label": "Default Terms", + "options": "Terms and Conditions", + "permlevel": 0, + "precision": "" + }, { "fieldname": "default_settings", "fieldtype": "Section Break", - "label": "Default Settings", + "label": "Accounts Settings", "oldfieldtype": "Section Break", "permlevel": 0, "read_only": 0 @@ -406,7 +414,7 @@ ], "icon": "icon-building", "idx": 1, - "modified": "2015-05-04 11:22:42.116328", + "modified": "2015-05-19 02:00:41.055138", "modified_by": "Administrator", "module": "Setup", "name": "Company", diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index ad89114bd4..d35892813c 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -63,6 +63,8 @@ class Company(Document): if self.default_currency: frappe.db.set_value("Currency", self.default_currency, "enabled", 1) + frappe.clear_cache() + def install_country_fixtures(self): if os.path.exists(os.path.join(os.path.dirname(__file__), "fixtures", self.country.lower())): frappe.get_attr("erpnext.setup.doctype.company.fixtures.{0}.install".format(self.country.lower()))(self) @@ -167,7 +169,7 @@ class Company(Document): where defkey='Company' and defvalue=%s""", (newdn, olddn)) frappe.defaults.clear_cache() - + def on_trash(self): """ Trash accounts and cost centers for this company if no gl entry exists @@ -178,7 +180,7 @@ class Company(Document): frappe.db.sql("delete from `tabAccount` where company = %s", self.name) # delete cost center child table - budget detail - frappe.db.sql("""delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc + frappe.db.sql("""delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc where bd.parent = cc.name and cc.company = %s""", self.name) #delete cost center frappe.db.sql("delete from `tabCost Center` WHERE company = %s", self.name) diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py index 48efa2777c..474af2cfd4 100644 --- a/erpnext/startup/boot.py +++ b/erpnext/startup/boot.py @@ -29,8 +29,9 @@ def boot_session(bootinfo): bootinfo.setup_complete = frappe.db.sql("""select name from tabCompany limit 1""") and 'Yes' or 'No' - bootinfo.docs += frappe.db.sql("""select name, default_currency, cost_center - from `tabCompany`""", as_dict=1, update={"doctype":":Company"}) + bootinfo.docs += frappe.db.sql("""select name, default_currency, cost_center, + default_terms, default_letter_head from `tabCompany`""", + as_dict=1, update={"doctype":":Company"}) def load_country_and_currency(bootinfo): country = frappe.db.get_default("country") From 476019a930a29b4e966e8ec55da8b40fc9633671 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 19 May 2015 13:02:23 +0530 Subject: [PATCH 2/6] [fix] throw name error for duplicate group --- erpnext/selling/doctype/customer/customer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 19a9aae84d..f82e2fbeeb 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -76,7 +76,7 @@ class Customer(TransactionBase): def validate_name_with_customer_group(self): if frappe.db.exists("Customer Group", self.name): - frappe.throw(_("A Customer Group exists with same name please change the Customer name or rename the Customer Group")) + frappe.throw(_("A Customer Group exists with same name please change the Customer name or rename the Customer Group"), frappe.NameError) def delete_customer_address(self): addresses = frappe.db.sql("""select name, lead from `tabAddress` @@ -125,9 +125,9 @@ def get_dashboard_info(customer): billing_this_year = frappe.db.sql("""select sum(base_grand_total) from `tabSales Invoice` - where customer=%s and docstatus = 1 and fiscal_year = %s""", + where customer=%s and docstatus = 1 and fiscal_year = %s""", (customer, frappe.db.get_default("fiscal_year"))) - + total_unpaid = frappe.db.sql("""select sum(outstanding_amount) from `tabSales Invoice` where customer=%s and docstatus = 1""", customer) From 803e998e9d69dd430b1eba335bf980e77bbfb1d5 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 19 May 2015 13:08:54 +0530 Subject: [PATCH 3/6] Fix merge mistakes --- erpnext/accounts/report/financial_statements.py | 14 -------------- .../batch_wise_balance_history.py | 4 +--- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 8a954a6e4e..88d1bebb8d 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -224,20 +224,6 @@ def sort_root_accounts(roots): roots.sort(compare_roots) -def sort_root_accounts(roots): - """Sort root types as Asset, Liability, Equity, Income, Expense""" - - def compare_roots(a, b): - if a.report_type != b.report_type and a.report_type == "Balance Sheet": - return -1 - if a.root_type != b.root_type and a.root_type == "Asset": - return -1 - if a.root_type == "Liability" and b.root_type == "Equity": - return -1 - return 1 - - roots.sort(compare_roots) - def get_gl_entries(company, from_date, to_date, root_lft, root_rgt, ignore_closing_entries=False): """Returns a dict like { "account": [gl entries], ... }""" additional_conditions = [] diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py index c6ef82fe32..d91197519a 100644 --- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py @@ -7,9 +7,7 @@ from frappe import _ from frappe.utils import flt, cint, getdate def execute(filters=None): - if not filters: filters = {} - - float_precision = cint(frappe.db.get_default("float_precision")) or 3 + if not filters: filters = {} float_precision = cint(frappe.db.get_default("float_precision")) or 3 From 129a0a4caec37321b46f446ec26bfb91c734e103 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 19 May 2015 13:12:00 +0530 Subject: [PATCH 4/6] Fix merge mistakes --- erpnext/patches/v4_2/repost_requested_qty.py | 21 -------------------- erpnext/patches/v4_2/update_advance_paid.py | 13 ------------ 2 files changed, 34 deletions(-) delete mode 100644 erpnext/patches/v4_2/repost_requested_qty.py delete mode 100644 erpnext/patches/v4_2/update_advance_paid.py diff --git a/erpnext/patches/v4_2/repost_requested_qty.py b/erpnext/patches/v4_2/repost_requested_qty.py deleted file mode 100644 index 8c1d6f7fbb..0000000000 --- a/erpnext/patches/v4_2/repost_requested_qty.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - from erpnext.utilities.repost_stock import update_bin_qty, get_indented_qty - - count=0 - for item_code, warehouse in frappe.db.sql("""select distinct item_code, warehouse - from `tabMaterial Request Item` where docstatus = 1"""): - try: - count += 1 - update_bin_qty(item_code, warehouse, { - "indented_qty": get_indented_qty(item_code, warehouse), - }) - if count % 200 == 0: - frappe.db.commit() - except: - frappe.db.rollback() diff --git a/erpnext/patches/v4_2/update_advance_paid.py b/erpnext/patches/v4_2/update_advance_paid.py deleted file mode 100644 index 818735a4e4..0000000000 --- a/erpnext/patches/v4_2/update_advance_paid.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals -import frappe - -def execute(): - for dt in ("Sales Order", "Purchase Order"): - orders_with_advance = frappe.db.sql("""select name from `tab{0}` - where docstatus < 2 and ifnull(advance_paid, 0) != 0""".format(dt), as_dict=1) - - for order in orders_with_advance: - frappe.get_doc(dt, order.name).set_total_advance_paid() \ No newline at end of file From b8252bca0068748b27f98b42ae45ab2ed8612066 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 19 May 2015 13:47:43 +0600 Subject: [PATCH 5/6] bumped to version 5.0.1 --- erpnext/__version__.py | 2 +- erpnext/hooks.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/__version__.py b/erpnext/__version__.py index 6d0efc72fa..fb2733c64f 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = 'v5.0.0' +__version__ = '5.0.1' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 1599218fd3..d8d88500eb 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -5,7 +5,7 @@ app_publisher = "Frappe 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 = "v5.0.0" +app_version = "5.0.1" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 6ed837826e..13ddbed561 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = "v5.0.0" +version = "5.0.1" with open("requirements.txt", "r") as f: install_requires = f.readlines() From 80a116ab1904a43cd47c0a0a74ab4c169bf8f415 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 19 May 2015 16:15:57 +0600 Subject: [PATCH 6/6] bumped to version 5.0.2 --- erpnext/__version__.py | 2 +- erpnext/hooks.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/__version__.py b/erpnext/__version__.py index fb2733c64f..e4f549b68b 100644 --- a/erpnext/__version__.py +++ b/erpnext/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = '5.0.1' +__version__ = '5.0.2' diff --git a/erpnext/hooks.py b/erpnext/hooks.py index d8d88500eb..846e49ef57 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -5,7 +5,7 @@ app_publisher = "Frappe 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 = "5.0.1" +app_version = "5.0.2" error_report_email = "support@erpnext.com" diff --git a/setup.py b/setup.py index 13ddbed561..30ebbbb872 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = "5.0.1" +version = "5.0.2" with open("requirements.txt", "r") as f: install_requires = f.readlines()