From 5117d9c26663f8988444a28ee54a9a0aab7a62df Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 19 Feb 2013 15:27:31 +0530 Subject: [PATCH] refactored defaults, bin material request wip --- accounts/doctype/mis_control/mis_control.py | 6 +- .../purchase_invoice/purchase_invoice.py | 37 +-- .../page/accounts_browser/accounts_browser.py | 7 +- .../bank_reconciliation_statement.py | 4 +- .../creditors_ledger/creditors_ledger.py | 4 +- .../debtors_ledger/debtors_ledger.py | 4 +- .../doctype/purchase_order/purchase_order.py | 3 +- buying/doctype/supplier/supplier.py | 9 +- hr/doctype/appraisal/appraisal.js | 2 +- .../attendance_control_panel.py | 11 +- patches/patch_list.py | 1 + selling/doctype/customer/customer.py | 9 +- selling/doctype/plot_control/__init__.py | 1 - .../plot_control/locale/_messages_doc.json | 4 - .../doctype/plot_control/locale/ar-doc.json | 4 - .../doctype/plot_control/locale/es-doc.json | 4 - .../doctype/plot_control/locale/fr-doc.json | 4 - .../doctype/plot_control/locale/hi-doc.json | 4 - .../doctype/plot_control/locale/hr-doc.json | 4 - .../doctype/plot_control/locale/nl-doc.json | 4 - .../doctype/plot_control/locale/pt-doc.json | 4 - .../doctype/plot_control/locale/sr-doc.json | 4 - .../doctype/plot_control/locale/ta-doc.json | 4 - selling/doctype/plot_control/plot_control.py | 237 ------------------ selling/doctype/plot_control/plot_control.txt | 23 -- setup/doctype/company/company.py | 12 +- .../global_defaults/global_defaults.py | 3 +- stock/doctype/bin/bin.py | 9 +- .../material_request/material_request.py | 3 +- .../purchase_receipt/purchase_receipt.py | 3 +- stock/utils.py | 4 +- 31 files changed, 55 insertions(+), 377 deletions(-) delete mode 100644 selling/doctype/plot_control/__init__.py delete mode 100644 selling/doctype/plot_control/locale/_messages_doc.json delete mode 100644 selling/doctype/plot_control/locale/ar-doc.json delete mode 100644 selling/doctype/plot_control/locale/es-doc.json delete mode 100644 selling/doctype/plot_control/locale/fr-doc.json delete mode 100644 selling/doctype/plot_control/locale/hi-doc.json delete mode 100644 selling/doctype/plot_control/locale/hr-doc.json delete mode 100644 selling/doctype/plot_control/locale/nl-doc.json delete mode 100644 selling/doctype/plot_control/locale/pt-doc.json delete mode 100644 selling/doctype/plot_control/locale/sr-doc.json delete mode 100644 selling/doctype/plot_control/locale/ta-doc.json delete mode 100644 selling/doctype/plot_control/plot_control.py delete mode 100644 selling/doctype/plot_control/plot_control.txt diff --git a/accounts/doctype/mis_control/mis_control.py b/accounts/doctype/mis_control/mis_control.py index 6d4a8525d5..6c4828abf4 100644 --- a/accounts/doctype/mis_control/mis_control.py +++ b/accounts/doctype/mis_control/mis_control.py @@ -17,11 +17,13 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cint, cstr, flt, get_defaults, get_first_day, get_last_day, has_common +from webnotes.utils import cint, cstr, flt, get_first_day, get_last_day, has_common from webnotes.model import db_exists from webnotes.model.bean import copy_doclist from webnotes import session, msgprint +import webnotes.defaults + sql = webnotes.conn.sql from accounts.utils import get_balance_on, get_fiscal_year @@ -65,7 +67,7 @@ class DocType: #--- from month and to month (for MIS - Comparison Report) ------- month_list = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] - fiscal_start_month = sql("select MONTH(year_start_date) from `tabFiscal Year` where name = %s",(get_defaults()['fiscal_year'])) + fiscal_start_month = sql("select MONTH(year_start_date) from `tabFiscal Year` where name = %s",(webnotes.defaults.get_global_value("fiscal_year"))) fiscal_start_month = fiscal_start_month and fiscal_start_month[0][0] or 1 mon = [''] for i in range(fiscal_start_month,13): mon.append(month_list[i-1]) diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index 3043ed3e0f..3318e4e5dc 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -17,12 +17,14 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import add_days, cint, cstr, flt, formatdate, get_defaults +from webnotes.utils import add_days, cint, cstr, flt, formatdate from webnotes.model.bean import getlist from webnotes.model.code import get_obj from webnotes import msgprint, _ from setup.utils import get_company_currency +import webnotes.defaults + sql = webnotes.conn.sql from controllers.buying_controller import BuyingController @@ -32,10 +34,6 @@ class DocType(BuyingController): self.tname = 'Purchase Invoice Item' self.fname = 'entries' -# ************************** Trigger Functions **************************** - - # Credit To - # ---------- def get_credit_to(self): acc_head = sql("select name, credit_days from `tabAccount` where (name = %s or (master_name = %s and master_type = 'supplier')) and docstatus != 2", (cstr(self.doc.supplier) + " - " + self.get_company_abbr(),self.doc.supplier)) @@ -57,9 +55,6 @@ class DocType(BuyingController): return ret - - # Get Default Cost Center and Expense Head from Item Master - # ---------------------------------------------------------- def get_default_values(self,args): import json args = json.loads(args) @@ -73,9 +68,6 @@ class DocType(BuyingController): ret['cost_center'] = cost_center and cost_center[0][0] or '' return ret - - # Get Items based on PO or PR - # ---------------------------- def pull_details(self): if self.doc.purchase_receipt_main: self.validate_duplicate_docname('purchase_receipt') @@ -118,16 +110,9 @@ class DocType(BuyingController): ret={'add_tax_rate' :rate and flt(rate[0][0]) or 0 } return ret - - -# *************************** Server Utility Functions ***************************** - # Get Company abbr - # ----------------- def get_company_abbr(self): return sql("select abbr from tabCompany where name=%s", self.doc.company)[0][0] - # Check whether PO or PR is already fetched - # ------------------------------------------ def validate_duplicate_docname(self,doctype): for d in getlist(self.doclist, 'entries'): if doctype == 'purchase_receipt' and cstr(self.doc.purchase_receipt_main) == cstr(d.purchase_receipt): @@ -138,11 +123,6 @@ class DocType(BuyingController): msgprint(cstr(self.doc.purchase_order_main) + " purchase order details have already been pulled.") raise Exception , " Validation Error. " - -# **************************** VALIDATE ******************************** - - # Check for Item.is_Purchase_item = 'Yes' and Item is active - # ------------------------------------------------------------------ def check_active_purchase_items(self): for d in getlist(self.doclist, 'entries'): if d.item_code: # extra condn coz item_code is not mandatory in PV @@ -154,8 +134,6 @@ class DocType(BuyingController): msgprint("Item : '%s' is not Purchase Item"%(d.item_code)) raise Exception - # Check Conversion Rate - # ---------------------- def check_conversion_rate(self): default_currency = get_company_currency(self.doc.company) if not default_currency: @@ -259,7 +237,7 @@ class DocType(BuyingController): raise Exception # import_rate rate = flt(sql('select import_rate from `tabPurchase Order Item` where item_code=%s and parent=%s and name = %s', (d.item_code, d.purchase_order, d.po_detail))[0][0]) - if abs(rate - flt(d.import_rate)) > 1 and cint(get_defaults('maintain_same_rate')): + if abs(rate - flt(d.import_rate)) > 1 and cint(webnotes.defaults.get_global_default('maintain_same_rate')): msgprint("Import Rate for %s in the Purchase Order is %s. Rate must be same as Purchase Order Rate" % (d.item_code,rate)) raise Exception @@ -277,9 +255,6 @@ class DocType(BuyingController): msgprint("Aging Date is mandatory for opening entry") raise Exception - - # Set against account for debit to account - #------------------------------------------ def set_against_expense_account(self): against_acc = [] for d in getlist(self.doclist, 'entries'): @@ -287,8 +262,6 @@ class DocType(BuyingController): against_acc.append(d.expense_account) self.doc.against_expense_account = ','.join(against_acc) - #check in manage account if purchase order required or not. - # ==================================================================================== def po_required(self): res = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'po_required'") if res and res[0][0] == 'Yes': @@ -297,8 +270,6 @@ class DocType(BuyingController): msgprint("Purchse Order No. required against item %s"%d.item_code) raise Exception - #check in manage account if purchase receipt required or not. - # ==================================================================================== def pr_required(self): res = sql("select value from `tabSingles` where doctype = 'Global Defaults' and field = 'pr_required'") if res and res[0][0] == 'Yes': diff --git a/accounts/page/accounts_browser/accounts_browser.py b/accounts/page/accounts_browser/accounts_browser.py index 1a66fe3819..0466223725 100644 --- a/accounts/page/accounts_browser/accounts_browser.py +++ b/accounts/page/accounts_browser/accounts_browser.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import get_defaults +import webnotes.defaults + from accounts.utils import get_balance_on @webnotes.whitelist() @@ -16,8 +17,8 @@ def get_companies(): if r["role"] in roles and r["match"]=="company")) # if match == company is specified and companies are specified in user defaults - if match and webnotes.user.get_defaults().get("company"): - return webnotes.user.get_defaults().get("company") + if match: + return webnotes.defaults.get_user_defaults("company") else: return [r[0] for r in webnotes.conn.sql("""select name from tabCompany where docstatus!=2""")] diff --git a/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py b/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py index d876857ff4..1ab94a4687 100644 --- a/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py +++ b/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py @@ -16,7 +16,9 @@ #get company from __future__ import unicode_literals -company = filter_values.get('company') or get_defaults()['company'] + +import webnotes.defaults +company = filter_values.get('company') or webnotes.defaults.get_user_default('company') # To date if not filter_values.get('clearance_date1'): diff --git a/accounts/search_criteria/creditors_ledger/creditors_ledger.py b/accounts/search_criteria/creditors_ledger/creditors_ledger.py index 8a3030ddc6..cba3993847 100644 --- a/accounts/search_criteria/creditors_ledger/creditors_ledger.py +++ b/accounts/search_criteria/creditors_ledger/creditors_ledger.py @@ -16,7 +16,9 @@ #get company from __future__ import unicode_literals -company = filter_values.get('company') or get_defaults()['company'] + +import webnotes.defaults +company = filter_values.get('company') or webnotes.defaults.get_user_default('company') #get company letter head l_head = sql("select letter_head from `tabCompany` where name='%s'" % company) diff --git a/accounts/search_criteria/debtors_ledger/debtors_ledger.py b/accounts/search_criteria/debtors_ledger/debtors_ledger.py index 6ba458a90c..a2e3c36f67 100644 --- a/accounts/search_criteria/debtors_ledger/debtors_ledger.py +++ b/accounts/search_criteria/debtors_ledger/debtors_ledger.py @@ -16,7 +16,9 @@ #get company from __future__ import unicode_literals -company = filter_values.get('company') or get_defaults()['company'] + +import webnotes.defaults +company = filter_values.get('company') or webnotes.defaults.get_user_default('company') #get company letter head l_head = sql("select letter_head from `tabCompany` where name='%s'" % company) diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py index 7581a688d1..32c1bbfd30 100644 --- a/buying/doctype/purchase_order/purchase_order.py +++ b/buying/doctype/purchase_order/purchase_order.py @@ -17,7 +17,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, flt, get_defaults +from webnotes.utils import cstr, flt from webnotes.model.doc import addchild from webnotes.model.bean import getlist from webnotes.model.code import get_obj @@ -32,7 +32,6 @@ class DocType(BuyingController): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - self.defaults = get_defaults() self.tname = 'Purchase Order Item' self.fname = 'po_details' diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py index 096a43e3ff..3af63b022a 100644 --- a/buying/doctype/supplier/supplier.py +++ b/buying/doctype/supplier/supplier.py @@ -16,8 +16,9 @@ from __future__ import unicode_literals import webnotes +import webnotes.defaults -from webnotes.utils import cint, get_defaults +from webnotes.utils import cint from webnotes import msgprint, _ from webnotes.model.doc import make_autoname @@ -35,7 +36,7 @@ class DocType(TransactionBase): self.add_communication_list() def autoname(self): - supp_master_name = get_defaults()['supp_master_name'] + supp_master_name = webnotes.defaults.get_global_default('supp_master_name') if supp_master_name == 'Supplier Name': if webnotes.conn.exists("Customer", self.doc.supplier_name): @@ -98,7 +99,7 @@ class DocType(TransactionBase): def validate(self): #validation for Naming Series mandatory field... - if get_defaults()['supp_master_name'] == 'Naming Series': + if webnotes.defaults.get_global_default('supp_master_name') == 'Naming Series': if not self.doc.naming_series: msgprint("Series is Mandatory.", raise_exception=1) @@ -161,7 +162,7 @@ class DocType(TransactionBase): def on_rename(self, new, old): #update supplier_name if not naming series - if get_defaults().get('supp_master_name') == 'Supplier Name': + if webnotes.defaults.get_global_default('supp_master_name') == 'Supplier Name': update_fields = [ ('Supplier', 'name'), ('Address', 'supplier'), diff --git a/hr/doctype/appraisal/appraisal.js b/hr/doctype/appraisal/appraisal.js index f098b802c2..31fdb8e82c 100644 --- a/hr/doctype/appraisal/appraisal.js +++ b/hr/doctype/appraisal/appraisal.js @@ -26,7 +26,7 @@ cur_frm.cscript.onload = function(doc,cdt,cdn){ } cur_frm.cscript.onload_post_render = function(doc,cdt,cdn){ - if(doc.__islocal && doc.employee==user_defaults.employee) { + if(doc.__islocal && doc.employee==wn.defaults.get_user_default("employee")) { cur_frm.set_value("employee", ""); cur_frm.set_value("employee_name", "") } diff --git a/hr/doctype/attendance_control_panel/attendance_control_panel.py b/hr/doctype/attendance_control_panel/attendance_control_panel.py index fdcc43dede..dd0deb1784 100644 --- a/hr/doctype/attendance_control_panel/attendance_control_panel.py +++ b/hr/doctype/attendance_control_panel/attendance_control_panel.py @@ -16,8 +16,9 @@ from __future__ import unicode_literals import webnotes +import webnotes.default -from webnotes.utils import cint, cstr, date_diff, formatdate, get_defaults, getdate, now +from webnotes.utils import cint, cstr, date_diff, formatdate, getdate, now from webnotes.model import db_exists from webnotes.model.bean import copy_doclist from webnotes import form, msgprint @@ -30,7 +31,6 @@ class DocType: def __init__(self,d,dt): self.doc, self.doclist = d,dt - #========================================================================== def get_att_list(self): lst = [['Attendance','','','Please fill columns which are Mandatory.',' Please do not modify the structure','',''],['','','','','','',''],['[Mandatory]','','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]','[Mandatory]'],['Employee','Employee Name','Attendance Date','Status','Fiscal Year','Company','Naming Series']] @@ -46,7 +46,6 @@ class DocType: return lst - #------------------------------------------------------------------------------ # get date list inbetween from date and to date def date_diff_list(self): import datetime @@ -65,10 +64,9 @@ class DocType: return dt - #------------------------------------------------------------------------------ def get_att_data(self): - fy = get_defaults()['fiscal_year'] #get default fiscal year - comp = get_defaults()['company'] #get default company + fy = webnotes.defaults.get_global_default('fiscal_year') + comp = webnotes.defaults.get_user_default('company') #get naming series of attendance import webnotes.model.doctype @@ -82,7 +80,6 @@ class DocType: return {'fy':fy,'comp':comp,'sr':sr} - #================================================================================= def import_att_data(self): filename = self.doc.file_list.split(',') diff --git a/patches/patch_list.py b/patches/patch_list.py index 67a4868e2e..78b3a50d41 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -175,4 +175,5 @@ patch_list = [ "patches.february_2013.p02_email_digest", "patches.february_2013.p03_material_request", "patches.february_2013.p04_remove_old_doctypes", + "execute:webnotes.delete_doc('DocType', 'Plot Control')" ] \ No newline at end of file diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py index 0b49b77883..f2d49b33fb 100644 --- a/selling/doctype/customer/customer.py +++ b/selling/doctype/customer/customer.py @@ -17,9 +17,10 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, get_defaults +from webnotes.utils import cstr from webnotes.model.doc import Document, make_autoname from webnotes import msgprint, _ +import webnotes.defaults sql = webnotes.conn.sql @@ -34,7 +35,7 @@ class DocType(TransactionBase): self.add_communication_list() def autoname(self): - cust_master_name = get_defaults().get('cust_master_name') + cust_master_name = webnotes.defaults.get_global_default('cust_master_name') if cust_master_name == 'Customer Name': if webnotes.conn.exists("Supplier", self.doc.customer_name): msgprint(_("A Supplier exists with same name"), raise_exception=1) @@ -54,7 +55,7 @@ class DocType(TransactionBase): return g def validate_values(self): - if get_defaults().get('cust_master_name') == 'Naming Series' and not self.doc.naming_series: + if webnotes.defaults.get_global_default('cust_master_name') == 'Naming Series' and not self.doc.naming_series: msgprint("Series is Mandatory.") raise Exception @@ -217,7 +218,7 @@ class DocType(TransactionBase): def on_rename(self, new, old): #update customer_name if not naming series - if get_defaults().get('cust_master_name') == 'Customer Name': + if webnotes.defaults.get_global_default('cust_master_name') == 'Customer Name': update_fields = [ ('Customer', 'name'), ('Address', 'customer'), diff --git a/selling/doctype/plot_control/__init__.py b/selling/doctype/plot_control/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/selling/doctype/plot_control/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/selling/doctype/plot_control/locale/_messages_doc.json b/selling/doctype/plot_control/locale/_messages_doc.json deleted file mode 100644 index 8ab90b5bd8..0000000000 --- a/selling/doctype/plot_control/locale/_messages_doc.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "Selling", - "Plot Control" -] \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/ar-doc.json b/selling/doctype/plot_control/locale/ar-doc.json deleted file mode 100644 index f413b5f199..0000000000 --- a/selling/doctype/plot_control/locale/ar-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "\u0645\u0624\u0627\u0645\u0631\u0629 \u0627\u0644\u062a\u062d\u0643\u0645", - "Selling": "\u0628\u064a\u0639" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/es-doc.json b/selling/doctype/plot_control/locale/es-doc.json deleted file mode 100644 index d22c343dbf..0000000000 --- a/selling/doctype/plot_control/locale/es-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "Parcela de control", - "Selling": "De venta" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/fr-doc.json b/selling/doctype/plot_control/locale/fr-doc.json deleted file mode 100644 index 5bda02898d..0000000000 --- a/selling/doctype/plot_control/locale/fr-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "Contr\u00f4le Terrain", - "Selling": "Vente" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/hi-doc.json b/selling/doctype/plot_control/locale/hi-doc.json deleted file mode 100644 index b53aa6baf0..0000000000 --- a/selling/doctype/plot_control/locale/hi-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "\u092a\u094d\u0932\u0949\u091f \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923", - "Selling": "\u0935\u093f\u0915\u094d\u0930\u092f" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/hr-doc.json b/selling/doctype/plot_control/locale/hr-doc.json deleted file mode 100644 index 944889634b..0000000000 --- a/selling/doctype/plot_control/locale/hr-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "Zemlji\u0161te kontrola", - "Selling": "Prodaja" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/nl-doc.json b/selling/doctype/plot_control/locale/nl-doc.json deleted file mode 100644 index e25b4951d3..0000000000 --- a/selling/doctype/plot_control/locale/nl-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "Plot Controle", - "Selling": "Selling" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/pt-doc.json b/selling/doctype/plot_control/locale/pt-doc.json deleted file mode 100644 index 28d4b6edf4..0000000000 --- a/selling/doctype/plot_control/locale/pt-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "Controle trama", - "Selling": "Vendendo" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/sr-doc.json b/selling/doctype/plot_control/locale/sr-doc.json deleted file mode 100644 index 471450b718..0000000000 --- a/selling/doctype/plot_control/locale/sr-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "\u041f\u043b\u0430\u0446 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0430", - "Selling": "\u041f\u0440\u043e\u0434\u0430\u0458\u0430" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/locale/ta-doc.json b/selling/doctype/plot_control/locale/ta-doc.json deleted file mode 100644 index 6a7550c62d..0000000000 --- a/selling/doctype/plot_control/locale/ta-doc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Plot Control": "\u0b9a\u0ba4\u0bbf \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0bbe\u0b9f\u0bc1", - "Selling": "\u0bb5\u0bbf\u0bb1\u0bcd\u0baa\u0ba9\u0bc8" -} \ No newline at end of file diff --git a/selling/doctype/plot_control/plot_control.py b/selling/doctype/plot_control/plot_control.py deleted file mode 100644 index 9431bf9283..0000000000 --- a/selling/doctype/plot_control/plot_control.py +++ /dev/null @@ -1,237 +0,0 @@ -# ERPNext - web based ERP (http://erpnext.com) -# Copyright (C) 2012 Web Notes Technologies Pvt Ltd -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -from __future__ import unicode_literals -import webnotes - -from webnotes.utils import cint, cstr, get_defaults, now -from webnotes.model import db_exists -from webnotes.model.bean import copy_doclist - -sql = webnotes.conn.sql - - - -class DocType: - def __init__(self,doc,doclist = []): - self.doc ,self.doclist = doc, doclist - - #============================get monthly sales==================================================== - def get_monthwise_amount(self,lst): - lst = lst.split(',') - if not lst[1]: - ret = webnotes.conn.convert_to_lists(sql("SELECT SUM(grand_total) AMOUNT,CASE MONTH(due_date) WHEN 1 THEN 'JAN' WHEN 2 THEN 'FEB' WHEN 3 THEN 'MAR' WHEN 4 THEN 'APR' WHEN 5 THEN 'MAY' WHEN 6 THEN 'JUN' WHEN 7 THEN 'JUL' WHEN 8 THEN 'AUG' WHEN 9 THEN 'SEP' WHEN 10 THEN 'OCT' WHEN 11 THEN 'NOV' WHEN 12 THEN 'DEC' END MONTHNAME FROM `tabSales Invoice` WHERE docstatus = 1 AND fiscal_year = '%s' GROUP BY MONTH(due_date) ORDER BY MONTH(due_date)"%lst[0])) - else: - ret = webnotes.conn.convert_to_lists(sql("select sum(t2.amount) AMOUNT ,CASE MONTH(t1.due_date) WHEN 1 THEN 'JAN' WHEN 2 THEN 'FEB' WHEN 3 THEN 'MAR' WHEN 4 THEN 'APR' WHEN 5 THEN 'MAY' WHEN 6 THEN 'JUN' WHEN 7 THEN 'JUL' WHEN 8 THEN 'AUG' WHEN 9 THEN 'SEP' WHEN 10 THEN 'OCT' WHEN 11 THEN 'NOV' WHEN 12 THEN 'DEC' END MONTHNAME from `tabSales Invoice` t1,`tabSales Invoice Item` t2 WHERE t1.name = t2.parent and t1.docstatus = 1 and t2.item_group = '%s' AND t1.fiscal_year = '%s' GROUP BY MONTH(t1.due_date) ORDER BY MONTH(t1.due_date)"%(lst[1],lst[0]))) - - m =cint(sql("select month('%s')"%(get_defaults()['year_start_date']))[0][0]) - - lst1 = [[1,'JAN'],[2 ,'FEB'], [3,'MAR'],[4,'APR'],[5,'MAY'],[6,'JUN'],[7,'JUL'],[8,'AUG'],[9,'SEP'],[10,'OCT'],[11,'NOV'],[12,'DEC']] - lst2=[] - k=1 - - for i in range(1,13): - for j in lst1: - if j[0]==m: - lst2.append([k,j[1]]) - m +=1 - if m==13: m=1 - k +=1 - return {'msg_data':ret,'x_axis':lst2} - - #===============================get weekly sales================================================= - def get_weekwise_amount(self,lst): - - lst = lst.split(',') - - cases = self.get_week_cases(lst[0],lst[1]) - - if not lst[2]: - query = "SELECT SUM(grand_total) AMOUNT,CASE WEEK(due_date)"+ cases +"END Weekly FROM `tabSales Invoice` WHERE MONTH(due_date) = %d AND docstatus = 1 AND fiscal_year = '%s' GROUP BY Weekly ORDER BY Weekly" - - ret = webnotes.conn.convert_to_lists(sql(query%(cint(lst[0]),lst[1]))) - - else: - - query = "SELECT SUM(t2.amount) AMOUNT,CASE WEEK(t1.due_date)" + cases + "END Weekly FROM `tabSales Invoice` t1, `tabSales Invoice Item` t2 WHERE MONTH(t1.due_date) = %d AND t1.docstatus = 1 AND t1.fiscal_year = '%s' AND t1.name = t2.parent AND t2.item_group ='%s' GROUP BY Weekly ORDER BY Weekly" - - ret =webnotes.conn.convert_to_lists(sql(query%(cint(lst[0]),lst[1],lst[2]))) - - return ret and ret or '' - #================================================================================ - def get_week_cases(self,m1,fy): - d1 = self.make_date("%s,%s"%(cstr(m1),fy)) - - w = sql("select week('%s'),week(last_day('%s'))"%(d1,d1)) - w1 = cint(w[0][0]) - w2 = cint(w[0][1]) - - w3 = [] - str1 = " " - for i in range(1,7): - if(w1 <= w2): - w3.append(w1) - str1 += "WHEN "+ cstr(w1) +" THEN 'Week"+cstr(i) +"' " - w1 += 1 - - return str1 - - #===============================get yearly weekwise sales================================================= - def get_year_weekwise_amount(self,lst): - - lst = lst.split(',') - yr_st = get_defaults()['year_start_date'] - - fy = lst[0] - m1 = cint(yr_st.split('-')[1]) - - cases = ' ' - for i in range(1,13): - cases += self.get_week_cases(m1,fy) - m1 +=1 - if(m1 == 13): m1 = 1 - - if not lst[1]: - query = "SELECT SUM(grand_total) AMOUNT,CASE WEEK(due_date)"+cases+"END Weekly, month(due_date) month FROM `tabSales Invoice` WHERE docstatus = 1 AND fiscal_year = '%s' GROUP BY `month`,weekly ORDER BY `month`,weekly" - ret = webnotes.conn.convert_to_lists(sql(query%lst[0])) - - else: - - query = "SELECT SUM(t2.amount) AMOUNT,CASE WEEK(t1.due_date)" + cases + "END Weekly, month(due_date) month FROM `tabSales Invoice` t1, `tabSales Invoice Item` t2 WHERE t1.docstatus = 1 AND t1.fiscal_year = '%s' AND t1.name = t2.parent AND t2.item_group ='%s' GROUP BY Weekly ORDER BY Weekly" - ret = webnotes.conn.convert_to_lists(sql(query%(lst[0],lst[1]))) - - - return ret and ret or '' - - - #====================================make yearly weekwise dates================================================ - def yr_wk_dates(self,fy): - - from datetime import date - yr_st = get_defaults()['year_start_date'] - yr_en = get_defaults()['year_end_date'] - - fy = fy.split('-') - y1 = yr_st.split('-') - date1 = date(cint(fy[0]),cint(y1[1]),cint(y1[2])) - - y2 = yr_en.split('-') - date2 = date(cint(fy[1]),cint(y2[1]),cint(y2[2])) - - - - date_lst = [[1,self.get_months(cint(y1[1]))]] - m1=cint(y1[1])+1 - x_axis_lst = [[1,'Week1',cint(y1[1])]] - - from datetime import date, timedelta - d =dt= date1 - - week=k=1 - for i in range(0,53): - - if dt <= date2: - - if(d.weekday()>3): - d = d+timedelta(7-d.weekday()) - else: - d = d - timedelta(d.weekday()) - dlt = timedelta(days = (week-1)*7) - dt = d + dlt + timedelta(days=6) - - m2 = cint(sql("Select month('%s')"%dt)[0][0]) - - if(m1 == m2): - date_lst.append([i+2,self.get_months(m2)]) - x_axis_lst.append([i+2,'Week1',m2]) - k=1 - m1 += 1 - if(m1==13): m1 =1 - else: - date_lst.append([i+2,' ']) - x_axis_lst.append([i+2,'Week%d'%k,m2]) - week += 1 - k +=1 - - - return [date_lst,x_axis_lst] - #=================================================================================== - - def get_months(self,m): - m_lst = {1:'JAN',2:'FEB',3:'MAR',4:'APR',5:'MAY',6:'JUN',7:'JUL',8:'AUG',9:'SEP',10:'OCT',11:'NOV',12:'DEC'} - return m_lst[m] - - - - def get_weekdates(self,lst): - from datetime import date, timedelta - - d = dt = self.make_date(lst) - date_lst = [[1,cstr(d.strftime("%d/%m/%y"))]] - week=flag =1 - j=1 - last_day = sql("select last_day('%s')"%d)[0][0] - lst_m = cint(lst.split(',')[0]) - for i in range(2,8): - f=0 - if(dt < last_day): - #if(d.weekday()>4): - #d = d+timedelta(7-d.weekday()) - #else: - d = d - timedelta(d.weekday()-1) - dlt = timedelta(days = (week-1)*7) - dt = d + dlt + timedelta(days=6) - - if(cint(sql("select month('%s')"%dt)[0][0]) == lst_m and dt!=last_day): - for k in date_lst: - if(cstr(dt.strftime("%d/%m/%y")) == k[1]): - f = 1 - if f == 0: - date_lst.append([i,cstr(dt.strftime("%d/%m/%y"))]) - - elif(dt==last_day and flag ==1): - date_lst.append([i,cstr(last_day.strftime("%d/%m/%y"))]) - flag = 0 - - elif(flag == 1): - date_lst.append([i,cstr(last_day.strftime("%d/%m/%y"))]) - week += 1 - - return date_lst and date_lst or '' - - - def make_date(self,lst): - - from datetime import date, timedelta - lst = lst.split(',') - year = lst[1].split('-') - if(len(lst[0])==1): month = '0'+lst[0] - else: month = lst[0] - if(1<=cint(month)<=3): year = year[1] - elif(4<=cint(month)<=12): year = year[0] - - d = date(cint(year),cint(month),1) - - return d - - def get_item_groups(self): - ret = webnotes.conn.convert_to_lists(sql("select name from `tabItem Group` where docstatus != 2 and is_group = 'No'")) - #ret = webnotes.conn.convert_to_lists(sql("select item_group from `tabItem` where is_sales_item='Yes' and (ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now()) and item_group !=''")) - return ret and ret or '' - - def get_fiscal_year(self): - ret = webnotes.conn.convert_to_lists(sql("select name from `tabFiscal Year` where docstatus =0")) - return ret and ret or '' \ No newline at end of file diff --git a/selling/doctype/plot_control/plot_control.txt b/selling/doctype/plot_control/plot_control.txt deleted file mode 100644 index 675c4de12a..0000000000 --- a/selling/doctype/plot_control/plot_control.txt +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "owner": "harshada@webnotestech.com", - "docstatus": 0, - "creation": "2012-03-27 14:36:12", - "modified_by": "Administrator", - "modified": "2012-03-27 14:36:12" - }, - { - "section_style": "Simple", - "name": "__common__", - "colour": "White:FFF", - "module": "Selling", - "doctype": "DocType", - "version": 215, - "server_code_error": " ", - "issingle": 1 - }, - { - "name": "Plot Control", - "doctype": "DocType" - } -] \ No newline at end of file diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py index a9d11c6cf4..94c8f1c929 100644 --- a/setup/doctype/company/company.py +++ b/setup/doctype/company/company.py @@ -17,9 +17,10 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, get_defaults, set_default +from webnotes.utils import cstr, set_default from webnotes.model.doc import Document from webnotes.model.code import get_obj +import webnotes.defaults sql = webnotes.conn.sql @@ -241,8 +242,7 @@ class DocType: #delete cost center sql("delete from `tabCost Center` WHERE company_name = %s order by lft desc, rgt desc", self.doc.name) - #update value as blank for tabDefaultValue defkey=company - sql("update `tabDefaultValue` set defvalue = '' where defkey='company' and defvalue = %s", self.doc.name) + webnotes.defaults.clear_default("company", value=self.doc.name) #update value as blank for tabSingles Global Defaults sql("update `tabSingles` set value = '' where doctype='Global Defaults' and field = 'default_company' and value = %s", self.doc.name) @@ -250,8 +250,8 @@ class DocType: # on rename # --------- - def on_rename(self,newdn,olddn): + def on_rename(self,newdn,olddn): sql("update `tabCompany` set company_name = '%s' where name = '%s'" %(newdn,olddn)) sql("update `tabSingles` set value = %s where doctype='Global Defaults' and field = 'default_company' and value = %s", (newdn, olddn)) - if get_defaults('company') == olddn: - set_default('company', newdn) \ No newline at end of file + if webnotes.defaults.get_global_default('company') == olddn: + webnotes.defaults.set_global_default('company', newdn) \ No newline at end of file diff --git a/setup/doctype/global_defaults/global_defaults.py b/setup/doctype/global_defaults/global_defaults.py index 1b93e7e268..0c127485b0 100644 --- a/setup/doctype/global_defaults/global_defaults.py +++ b/setup/doctype/global_defaults/global_defaults.py @@ -17,6 +17,7 @@ from __future__ import unicode_literals """Global Defaults""" import webnotes +import webnotes.defaults from webnotes.utils import cint keydict = { @@ -82,4 +83,4 @@ class DocType: def get_defaults(self): - return webnotes.conn.get_defaults() + return webnotes.defaults.get_defaults() diff --git a/stock/doctype/bin/bin.py b/stock/doctype/bin/bin.py index e5563cc0b9..7044d5515f 100644 --- a/stock/doctype/bin/bin.py +++ b/stock/doctype/bin/bin.py @@ -25,6 +25,8 @@ from webnotes.model.code import get_obj from webnotes import msgprint sql = webnotes.conn.sql +import webnotes.defaults + class DocType: def __init__(self, doc, doclist=[]): @@ -97,7 +99,7 @@ class DocType: def reorder_item(self,doc_type,doc_name): """ Reorder item if stock reaches reorder level""" - if not hasattr(webnotes, "auto_indent"): + if not hasattr(webnotes, "auto_indent"): webnotes.auto_indent = webnotes.conn.get_value('Global Defaults', None, 'auto_indent') if webnotes.auto_indent: @@ -117,10 +119,11 @@ class DocType: def create_material_request(self, doc_type, doc_name): """ Create indent on reaching reorder level """ - defaults = webnotes.conn.get_defaults() + defaults = webnotes.defaults.get_defaults() mr = webnotes.bean([{ "doctype": "Material Request", "company": defaults.company, + "fiscal_year": defaults.fiscal_year, }]) @@ -128,8 +131,6 @@ class DocType: indent = Document('Material Request') indent.transaction_date = nowdate() indent.naming_series = 'IDT' - indent.company = get_defaults()['company'] - indent.fiscal_year = get_defaults()['fiscal_year'] indent.remark = """This is an auto generated Material Request. It was raised because the (actual + ordered + indented - reserved) quantity reaches re-order level when %s %s was created""" % (doc_type,doc_name) diff --git a/stock/doctype/material_request/material_request.py b/stock/doctype/material_request/material_request.py index e956364490..94367996b4 100644 --- a/stock/doctype/material_request/material_request.py +++ b/stock/doctype/material_request/material_request.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, flt, get_defaults +from webnotes.utils import cstr, flt from webnotes.model.bean import getlist from webnotes.model.code import get_obj from webnotes import msgprint @@ -14,7 +14,6 @@ class DocType(BuyingController): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - self.defaults = get_defaults() self.tname = 'Material Request Item' self.fname = 'indent_details' diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py index 6c3669ba1d..8858fd52e1 100644 --- a/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/stock/doctype/purchase_receipt/purchase_receipt.py @@ -17,7 +17,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cstr, flt, get_defaults +from webnotes.utils import cstr, flt from webnotes.model.doc import addchild from webnotes.model.bean import getlist from webnotes.model.code import get_obj @@ -30,7 +30,6 @@ class DocType(BuyingController): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - self.defaults = get_defaults() self.tname = 'Purchase Receipt Item' self.fname = 'purchase_receipt_details' self.count = 0 diff --git a/stock/utils.py b/stock/utils.py index 62c2a1794f..4cf3b11dc0 100644 --- a/stock/utils.py +++ b/stock/utils.py @@ -18,6 +18,7 @@ import webnotes from webnotes import msgprint, _ import json from webnotes.utils import flt, cstr +from webnotes.defaults import get_global_default def validate_end_of_life(item_code, end_of_life=None, verbose=1): if not end_of_life: @@ -99,8 +100,7 @@ def get_valuation_method(item_code): """get valuation method from item or default""" val_method = webnotes.conn.get_value('Item', item_code, 'valuation_method') if not val_method: - from webnotes.utils import get_defaults - val_method = get_defaults().get('valuation_method', 'FIFO') + val_method = get_global_default('valuation_method') or "FIFO" return val_method def get_fifo_rate(previous_stock_queue, qty):