From 5495bc54a5106264d3aea8eee0b812897bb05a72 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 19 May 2015 12:00:34 +0530 Subject: [PATCH 1/2] [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 e0f0e3bd2a8..1853fc93160 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 a96f5e97d9b..c8b2b64684f 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 355fe7d1489..5476d147ab9 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 0e7b17a148c..db71d0f2a24 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 ad89114bd46..d35892813c4 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 48efa2777cd..474af2cfd41 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/2] [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 19a9aae84d5..f82e2fbeeb7 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)