diff --git a/addons/account/account.py b/addons/account/account.py index fbbbfd64537..bf072507aa0 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -595,12 +595,15 @@ class account_account(osv.osv): res.append((record['id'], name)) return res - def copy(self, cr, uid, id, default={}, context=None, done_list=[], local=False): + def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False): + if default is None: + default = {} + else: + default = default.copy() + if done_list is None: + done_list = [] account = self.browse(cr, uid, id, context=context) new_child_ids = [] - if not default: - default = {} - default = default.copy() default.update(code=_("%s (copy)") % (account['code'] or '')) if not local: done_list = [] @@ -777,11 +780,14 @@ class account_journal(osv.osv): (_check_currency, 'Configuration error!\nThe currency chosen should be shared by the default accounts too.', ['currency','default_debit_account_id','default_credit_account_id']), ] - def copy(self, cr, uid, id, default={}, context=None, done_list=[], local=False): - journal = self.browse(cr, uid, id, context=context) - if not default: + def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False): + if default is None: default = {} - default = default.copy() + else: + default = default.copy() + if done_list is None: + done_list = [] + journal = self.browse(cr, uid, id, context=context) default.update( code=_("%s (copy)") % (journal['code'] or ''), name=_("%s (copy)") % (journal['name'] or ''), @@ -1178,7 +1184,7 @@ class account_fiscalyear(osv.osv): 'end_journal_period_id':fields.many2one('account.journal.period','End of Year Entries Journal', readonly=True), } - def copy(self, cr, uid, id, default={}, context=None): + def copy(self, cr, uid, id, default=None, context=None): default.update({ 'period_ids': [], 'end_journal_period_id': False @@ -1437,9 +1443,15 @@ class account_move(osv.osv): result = super(account_move, self).create(cr, uid, vals, context) return result - def copy(self, cr, uid, id, default={}, context=None): + def copy(self, cr, uid, id, default=None, context=None): + if context is None: + default = {} + else: + default = default.copy() if context is None: context = {} + else: + context = context.copy() default.update({ 'state':'draft', 'name':'/', @@ -2269,7 +2281,10 @@ class account_model(osv.osv): _defaults = { 'legend': lambda self, cr, uid, context:_('You can specify year, month and date in the name of the model using the following labels:\n\n%(year)s: To Specify Year \n%(month)s: To Specify Month \n%(date)s: Current Date\n\ne.g. My model on %(date)s'), } - def generate(self, cr, uid, ids, datas={}, context=None): + + def generate(self, cr, uid, ids, data=None, context=None): + if data is None: + data = {} move_ids = [] entry = {} account_move_obj = self.pool.get('account.move') @@ -2280,8 +2295,8 @@ class account_model(osv.osv): if context is None: context = {} - if datas.get('date', False): - context.update({'date': datas['date']}) + if data.get('date', False): + context.update({'date': data['date']}) move_date = context.get('date', time.strftime('%Y-%m-%d')) move_date = datetime.strptime(move_date,"%Y-%m-%d") @@ -2467,10 +2482,10 @@ class account_subscription_line(osv.osv): all_moves = [] obj_model = self.pool.get('account.model') for line in self.browse(cr, uid, ids, context=context): - datas = { + data = { 'date': line.date, } - move_ids = obj_model.generate(cr, uid, [line.subscription_id.model_id.id], datas, context) + move_ids = obj_model.generate(cr, uid, [line.subscription_id.model_id.id], data, context) tocheck[line.subscription_id.id] = True self.write(cr, uid, [line.id], {'move_id':move_ids[0]}) all_moves.extend(move_ids) @@ -3236,7 +3251,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): property_obj.create(cr, uid, vals, context=context) return True - def _install_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, acc_ref={}, taxes_ref={}, tax_code_ref={}, context=None): + def _install_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, acc_ref=None, taxes_ref=None, tax_code_ref=None, context=None): ''' This function recursively loads the template objects and create the real objects from them. @@ -3254,6 +3269,12 @@ class wizard_multi_charts_accounts(osv.osv_memory): * a last identical containing the mapping of tax code templates and tax codes :rtype: tuple(dict, dict, dict) ''' + if acc_ref is None: + acc_ref = {} + if taxes_ref is None: + taxes_ref = {} + if tax_code_ref is None: + tax_code_ref = {} template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) if template.parent_id: tmp1, tmp2, tmp3 = self._install_template(cr, uid, template.parent_id.id, company_id, code_digits=code_digits, acc_ref=acc_ref, taxes_ref=taxes_ref, tax_code_ref=tax_code_ref, context=context) @@ -3266,7 +3287,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): tax_code_ref.update(tmp3) return acc_ref, taxes_ref, tax_code_ref - def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None): + def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref=None, taxes_ref=None, tax_code_ref=None, context=None): ''' This function generates all the objects from the templates @@ -3284,6 +3305,12 @@ class wizard_multi_charts_accounts(osv.osv_memory): * a last identical containing the mapping of tax code templates and tax codes :rtype: tuple(dict, dict, dict) ''' + if account_ref is None: + account_ref = {} + if taxes_ref is None: + taxes_ref = {} + if tax_code_ref is None: + tax_code_ref = {} template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) obj_tax_code_template = self.pool.get('account.tax.code.template') obj_acc_tax = self.pool.get('account.tax') diff --git a/addons/account/account_bank.py b/addons/account/account_bank.py index e44d2acd163..2323f8aaa8a 100644 --- a/addons/account/account_bank.py +++ b/addons/account/account_bank.py @@ -29,12 +29,12 @@ class bank(osv.osv): 'currency_id': fields.related('journal_id', 'currency', type="many2one", relation='res.currency', readonly=True, string="Currency", help="Currency of the related account journal."), } - def create(self, cr, uid, data, context={}): + def create(self, cr, uid, data, context=None): result = super(bank, self).create(cr, uid, data, context=context) self.post_write(cr, uid, [result], context=context) return result - def write(self, cr, uid, ids, data, context={}): + def write(self, cr, uid, ids, data, context=None): result = super(bank, self).write(cr, uid, ids, data, context=context) self.post_write(cr, uid, ids, context=context) return result @@ -53,7 +53,7 @@ class bank(osv.osv): data['currency_name'] = data['currency_id'] and currency_name[data['currency_id'][0]] or '' return super(bank, self)._prepare_name_get(cr, uid, bank_dicts, context=context) - def post_write(self, cr, uid, ids, context={}): + def post_write(self, cr, uid, ids, context=None): if isinstance(ids, (int, long)): ids = [ids] diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index bb1ace992ca..b111cf2b771 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1105,7 +1105,7 @@ class account_move_line(osv.osv): 'has been confirmed.') % res[2]) return res - def _remove_move_reconcile(self, cr, uid, move_ids=[], context=None): + def _remove_move_reconcile(self, cr, uid, move_ids=None, context=None): # Function remove move rencocile ids related with moves obj_move_line = self.pool.get('account.move.line') obj_move_rec = self.pool.get('account.move.reconcile') diff --git a/addons/account/project/wizard/account_analytic_chart.py b/addons/account/project/wizard/account_analytic_chart.py index a10e938e293..92367e27da5 100644 --- a/addons/account/project/wizard/account_analytic_chart.py +++ b/addons/account/project/wizard/account_analytic_chart.py @@ -47,4 +47,4 @@ class account_analytic_chart(osv.osv_memory): return result account_analytic_chart() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/project/wizard/account_analytic_inverted_balance_report.py b/addons/account/project/wizard/account_analytic_inverted_balance_report.py index 2c9690fee50..95365716a22 100644 --- a/addons/account/project/wizard/account_analytic_inverted_balance_report.py +++ b/addons/account/project/wizard/account_analytic_inverted_balance_report.py @@ -52,4 +52,4 @@ class account_analytic_inverted_balance(osv.osv_memory): } account_analytic_inverted_balance() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/project/wizard/project_account_analytic_line.py b/addons/account/project/wizard/project_account_analytic_line.py index e49fbe911cb..54979d79b8a 100644 --- a/addons/account/project/wizard/project_account_analytic_line.py +++ b/addons/account/project/wizard/project_account_analytic_line.py @@ -55,4 +55,4 @@ class project_account_analytic_line(osv.osv_memory): project_account_analytic_line() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/report/account_balance.py b/addons/account/report/account_balance.py index c3117e60379..fdda9cb11ce 100644 --- a/addons/account/report/account_balance.py +++ b/addons/account/report/account_balance.py @@ -68,7 +68,7 @@ class account_balance(report_sxw.rml_parse, common_report_header): return self.pool.get('account.account').browse(self.cr, self.uid, data['form']['id']).company_id.name return super(account_balance ,self)._get_account(data) - def lines(self, form, ids=[], done=None):#, level=1): + def lines(self, form, ids=None, done=None): def _process_child(accounts, disp_acc, parent): account_rec = [acct for acct in accounts if acct['id']==parent][0] currency_obj = self.pool.get('res.currency') diff --git a/addons/account/report/account_central_journal.py b/addons/account/report/account_central_journal.py index d3113b63133..a42712f40d7 100644 --- a/addons/account/report/account_central_journal.py +++ b/addons/account/report/account_central_journal.py @@ -105,4 +105,4 @@ class journal_print(report_sxw.rml_parse, common_report_header): report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/report/account_general_journal.py b/addons/account/report/account_general_journal.py index 9eb81157dba..0ffa08b31ef 100644 --- a/addons/account/report/account_general_journal.py +++ b/addons/account/report/account_general_journal.py @@ -158,4 +158,4 @@ class journal_print(report_sxw.rml_parse, common_report_header): report_sxw.report_sxw('report.account.general.journal', 'account.journal.period', 'addons/account/report/general_journal.rml', parser=journal_print, header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/report/account_report.py b/addons/account/report/account_report.py index 59745355c5e..56e324bc361 100644 --- a/addons/account/report/account_report.py +++ b/addons/account/report/account_report.py @@ -284,4 +284,4 @@ class report_account_sales(osv.osv): )""") report_account_sales() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/report/account_tax_report.py b/addons/account/report/account_tax_report.py index 2a0c5987b47..cef1cf54af0 100644 --- a/addons/account/report/account_tax_report.py +++ b/addons/account/report/account_tax_report.py @@ -160,7 +160,7 @@ class tax_report(report_sxw.rml_parse, common_report_header): i+=1 return res - def _get_codes(self, based_on, company_id, parent=False, level=0, period_list=[], context=None): + def _get_codes(self, based_on, company_id, parent=False, level=0, period_list=None, context=None): obj_tc = self.pool.get('account.tax.code') ids = obj_tc.search(self.cr, self.uid, [('parent_id','=',parent),('company_id','=',company_id)], order='sequence', context=context) @@ -171,7 +171,11 @@ class tax_report(report_sxw.rml_parse, common_report_header): res += self._get_codes(based_on, company_id, code.id, level+1, context=context) return res - def _add_codes(self, based_on, account_list=[], period_list=[], context=None): + def _add_codes(self, based_on, account_list=None, period_list=None, context=None): + if account_list is None: + account_list = [] + if period_list is None: + period_list = [] res = [] obj_tc = self.pool.get('account.tax.code') for account in account_list: diff --git a/addons/account/res_currency.py b/addons/account/res_currency.py index 8e02836274a..ce781a1e11a 100644 --- a/addons/account/res_currency.py +++ b/addons/account/res_currency.py @@ -45,4 +45,3 @@ class res_currency_account(osv.osv): res_currency_account() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/account/wizard/account_invoice_state.py b/addons/account/wizard/account_invoice_state.py index 55eab584040..7c7f6882b75 100644 --- a/addons/account/wizard/account_invoice_state.py +++ b/addons/account/wizard/account_invoice_state.py @@ -71,4 +71,4 @@ class account_invoice_cancel(osv.osv_memory): account_invoice_cancel() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_journal_select.py b/addons/account/wizard/account_journal_select.py index 98099925e29..b91c195f6b3 100644 --- a/addons/account/wizard/account_journal_select.py +++ b/addons/account/wizard/account_journal_select.py @@ -47,4 +47,4 @@ class account_journal_select(osv.osv_memory): account_journal_select() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_move_bank_reconcile.py b/addons/account/wizard/account_move_bank_reconcile.py index 4679089b7cc..2b29bf6b30d 100644 --- a/addons/account/wizard/account_move_bank_reconcile.py +++ b/addons/account/wizard/account_move_bank_reconcile.py @@ -61,4 +61,4 @@ the bank account\nin the journal definition for reconciliation.')) account_move_bank_reconcile() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_move_journal.py b/addons/account/wizard/account_move_journal.py index da6a142972b..246532d38d7 100644 --- a/addons/account/wizard/account_move_journal.py +++ b/addons/account/wizard/account_move_journal.py @@ -38,7 +38,7 @@ class account_move_journal(osv.osv_memory): _defaults = { 'target_move': 'all' } - def _get_period(self, cr, uid, context={}): + def _get_period(self, cr, uid, context=None): """ Return default account period value """ diff --git a/addons/account/wizard/account_move_line_reconcile_select.py b/addons/account/wizard/account_move_line_reconcile_select.py index 8e57c57884d..e23212c514c 100644 --- a/addons/account/wizard/account_move_line_reconcile_select.py +++ b/addons/account/wizard/account_move_line_reconcile_select.py @@ -52,4 +52,4 @@ class account_move_line_reconcile_select(osv.osv_memory): account_move_line_reconcile_select() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_move_line_select.py b/addons/account/wizard/account_move_line_select.py index 4a2f40ec708..a99750a36fe 100644 --- a/addons/account/wizard/account_move_line_select.py +++ b/addons/account/wizard/account_move_line_select.py @@ -69,4 +69,4 @@ class account_move_line_select(osv.osv_memory): account_move_line_select() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_move_line_unreconcile_select.py b/addons/account/wizard/account_move_line_unreconcile_select.py index ad59493503d..26421eb4c0c 100644 --- a/addons/account/wizard/account_move_line_unreconcile_select.py +++ b/addons/account/wizard/account_move_line_unreconcile_select.py @@ -41,4 +41,4 @@ class account_move_line_unreconcile_select(osv.osv_memory): account_move_line_unreconcile_select() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_reconcile.py b/addons/account/wizard/account_reconcile.py index f3d25b1c8db..6f6c8f07844 100644 --- a/addons/account/wizard/account_reconcile.py +++ b/addons/account/wizard/account_reconcile.py @@ -160,4 +160,4 @@ class account_move_line_reconcile_writeoff(osv.osv_memory): account_move_line_reconcile_writeoff() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_state_open.py b/addons/account/wizard/account_state_open.py index f75aff365fe..32795f0f5b7 100644 --- a/addons/account/wizard/account_state_open.py +++ b/addons/account/wizard/account_state_open.py @@ -41,4 +41,4 @@ class account_state_open(osv.osv_memory): account_state_open() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_subscription_generate.py b/addons/account/wizard/account_subscription_generate.py index dc5209ebea0..0dae5aa90a8 100644 --- a/addons/account/wizard/account_subscription_generate.py +++ b/addons/account/wizard/account_subscription_generate.py @@ -50,4 +50,4 @@ class account_subscription_generate(osv.osv_memory): account_subscription_generate() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/wizard/account_unreconcile.py b/addons/account/wizard/account_unreconcile.py index 0e6c38f9d7c..5494875cf26 100644 --- a/addons/account/wizard/account_unreconcile.py +++ b/addons/account/wizard/account_unreconcile.py @@ -50,4 +50,4 @@ class account_unreconcile_reconcile(osv.osv_memory): account_unreconcile_reconcile() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_analytic_plans/report/crossovered_analytic.py b/addons/account_analytic_plans/report/crossovered_analytic.py index 3e8eec81c55..5b22f5e266c 100644 --- a/addons/account_analytic_plans/report/crossovered_analytic.py +++ b/addons/account_analytic_plans/report/crossovered_analytic.py @@ -34,7 +34,7 @@ class crossovered_analytic(report_sxw.rml_parse): }) self.base_amount = 0.00 - def find_children(self,ref_ids): + def find_children(self, ref_ids): to_return_ids = [] final_list = [] parent_list = [] @@ -53,7 +53,7 @@ class crossovered_analytic(report_sxw.rml_parse): final_list.extend(set_list) return final_list #to_return_ids[0] - def set_account(self,cats): + def set_account(self, cats): lst = [] category = self.pool.get('account.analytic.account').read(self.cr, self.uid, cats) for cat in category: @@ -62,7 +62,7 @@ class crossovered_analytic(report_sxw.rml_parse): lst.extend(self.set_account(cat['child_ids'])) return lst - def _ref_lines(self,form): + def _ref_lines(self, form): result = [] res = {} acc_pool = self.pool.get('account.analytic.account') @@ -112,7 +112,9 @@ class crossovered_analytic(report_sxw.rml_parse): result.append(res) return result - def _lines(self, form, ids={}): + def _lines(self, form, ids=None): + if ids is None: + ids = {} if not ids: ids = self.ids diff --git a/addons/account_anglo_saxon/__init__.py b/addons/account_anglo_saxon/__init__.py index 07b514d0327..440f8e87df7 100644 --- a/addons/account_anglo_saxon/__init__.py +++ b/addons/account_anglo_saxon/__init__.py @@ -23,4 +23,4 @@ import stock import purchase import invoice -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_anglo_saxon/sale.py b/addons/account_anglo_saxon/sale.py deleted file mode 100644 index e2cfa7bbb3b..00000000000 --- a/addons/account_anglo_saxon/sale.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import fields, osv - -#class sale_order_line(osv.osv): -# _name = 'sale.order.line' -# _description = 'Sale Order line' -# _inherit = 'sale.order.line' -# -# def invoice_line_create(self, cr, uid, ids, context={}): -# line_ids = super('sale_order_line',self).invoice_line_create(cr, uid, ids, context) -# invoice_line_obj = self.pool.get('account.invoice.line') -# for line in invoice_line_obj.browse(cr, uid, line_ids): -# if line.product_id: -# a = line.product_id.product_tmpl_id.property_stock_account_output and line.product_id.product_tmpl_id.property_stock_account_output.id -# if not a: -# a = line.product_id.categ_id.property_stock_account_output_categ and line.product_id.categ_id.property_stock_account_output_categ.id -# if a: -# a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, a) -# invoice_line_obj.write(cr, uid, line.id, {'account_id':a}) -# -#sale_order_line() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index e6861d0db67..4c6f9b7a637 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -75,7 +75,7 @@ class account_asset_asset(osv.osv): _name = 'account.asset.asset' _description = 'Asset' - def _get_period(self, cr, uid, context={}): + def _get_period(self, cr, uid, context=None): periods = self.pool.get('account.period').find(cr, uid) if periods: return periods[0] @@ -176,7 +176,9 @@ class account_asset_asset(osv.osv): year = depreciation_date.year return True - def validate(self, cr, uid, ids, context={}): + def validate(self, cr, uid, ids, context=None): + if context is None: + context = {} return self.write(cr, uid, ids, { 'state':'open' }, context) @@ -304,7 +306,7 @@ class account_asset_asset(osv.osv): default.update({'depreciation_line_ids': [], 'state': 'draft'}) return super(account_asset_asset, self).copy(cr, uid, id, default, context=context) - def _compute_entries(self, cr, uid, ids, period_id, context={}): + def _compute_entries(self, cr, uid, ids, period_id, context=None): result = [] period_obj = self.pool.get('account.period') depreciation_obj = self.pool.get('account.asset.depreciation.line') diff --git a/addons/account_budget/report/analytic_account_budget_report.py b/addons/account_budget/report/analytic_account_budget_report.py index aa5d39f8d49..e29af98b6a3 100644 --- a/addons/account_budget/report/analytic_account_budget_report.py +++ b/addons/account_budget/report/analytic_account_budget_report.py @@ -35,7 +35,9 @@ class analytic_account_budget_report(report_sxw.rml_parse): }) self.context = context - def funct(self, object, form, ids={}, done=None, level=1): + def funct(self, object, form, ids=None, done=None, level=1): + if ids is None: + ids = {} if not ids: ids = self.ids if not done: @@ -153,7 +155,7 @@ class analytic_account_budget_report(report_sxw.rml_parse): tot['perc'] = float(tot['prac'] / tot['theo']) * 100 return result - def funct_total(self,form): + def funct_total(self, form): result = [] res = {} res = { @@ -167,4 +169,4 @@ class analytic_account_budget_report(report_sxw.rml_parse): report_sxw.report_sxw('report.account.analytic.account.budget', 'account.analytic.account', 'addons/account_budget/report/analytic_account_budget_report.rml',parser=analytic_account_budget_report,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_budget/report/budget_report.py b/addons/account_budget/report/budget_report.py index 7681f9268d9..c7d4ba58f68 100644 --- a/addons/account_budget/report/budget_report.py +++ b/addons/account_budget/report/budget_report.py @@ -34,7 +34,9 @@ class budget_report(report_sxw.rml_parse): }) self.context = context - def funct(self, object, form, ids={}, done=None, level=1): + def funct(self, object, form, ids=None, done=None, level=1): + if ids is None: + ids = {} if not ids: ids = self.ids if not done: diff --git a/addons/account_budget/report/crossovered_budget_report.py b/addons/account_budget/report/crossovered_budget_report.py index b70b7da34bb..9f2f59fe715 100644 --- a/addons/account_budget/report/crossovered_budget_report.py +++ b/addons/account_budget/report/crossovered_budget_report.py @@ -37,7 +37,9 @@ class budget_report(report_sxw.rml_parse): }) self.context = context - def funct(self, object, form, ids={}, done=None, level=1): + def funct(self, object, form, ids=None, done=None, level=1): + if ids is None: + ids = {} if not ids: ids = self.ids if not done: diff --git a/addons/account_budget/wizard/account_budget_analytic.py b/addons/account_budget/wizard/account_budget_analytic.py index 3e3b4b0fa9d..6397ee87c76 100644 --- a/addons/account_budget/wizard/account_budget_analytic.py +++ b/addons/account_budget/wizard/account_budget_analytic.py @@ -52,4 +52,4 @@ class account_budget_analytic(osv.osv_memory): account_budget_analytic() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_budget/wizard/account_budget_crossovered_report.py b/addons/account_budget/wizard/account_budget_crossovered_report.py index ff6b6492a5a..e120bc47caa 100644 --- a/addons/account_budget/wizard/account_budget_crossovered_report.py +++ b/addons/account_budget/wizard/account_budget_crossovered_report.py @@ -53,4 +53,4 @@ class account_budget_crossvered_report(osv.osv_memory): account_budget_crossvered_report() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_budget/wizard/account_budget_report.py b/addons/account_budget/wizard/account_budget_report.py index fdae4c94adf..6ef22c649e9 100644 --- a/addons/account_budget/wizard/account_budget_report.py +++ b/addons/account_budget/wizard/account_budget_report.py @@ -54,4 +54,4 @@ class account_budget_report(osv.osv_memory): account_budget_report() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_followup/__init__.py b/addons/account_followup/__init__.py index 4bfe3186298..ffa88c40a32 100644 --- a/addons/account_followup/__init__.py +++ b/addons/account_followup/__init__.py @@ -23,4 +23,4 @@ import account_followup import wizard import report -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_followup/wizard/__init__.py b/addons/account_followup/wizard/__init__.py index aea714d2a86..ad072c5b7d8 100644 --- a/addons/account_followup/wizard/__init__.py +++ b/addons/account_followup/wizard/__init__.py @@ -21,4 +21,4 @@ import account_followup_print -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_followup/wizard/account_followup_print.py b/addons/account_followup/wizard/account_followup_print.py index 1e84681b1ea..5791bacbed0 100644 --- a/addons/account_followup/wizard/account_followup_print.py +++ b/addons/account_followup/wizard/account_followup_print.py @@ -209,7 +209,7 @@ class account_followup_print_all(osv.osv_memory): to_update[str(id)]= {'level': fups[followup_line_id][1], 'partner_id': stat_line_id} return {'partner_ids': partner_list, 'to_update': to_update} - def do_mail(self ,cr, uid, ids, context=None): + def do_mail(self, cr, uid, ids, context=None): mod_obj = self.pool.get('ir.model.data') move_obj = self.pool.get('account.move.line') user_obj = self.pool.get('res.users') diff --git a/addons/account_payment/__init__.py b/addons/account_payment/__init__.py index 6188de6a9da..82a05aa73e9 100644 --- a/addons/account_payment/__init__.py +++ b/addons/account_payment/__init__.py @@ -29,4 +29,4 @@ import account_move_line import account_invoice import report -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/account_invoice.py b/addons/account_payment/account_invoice.py index fd787863c7d..7138540fa3b 100644 --- a/addons/account_payment/account_invoice.py +++ b/addons/account_payment/account_invoice.py @@ -50,4 +50,4 @@ class Invoice(osv.osv): Invoice() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/account_move_line.py b/addons/account_payment/account_move_line.py index cbbeb949b3c..047b472e53b 100644 --- a/addons/account_payment/account_move_line.py +++ b/addons/account_payment/account_move_line.py @@ -26,7 +26,7 @@ from tools.translate import _ class account_move_line(osv.osv): _inherit = "account.move.line" - def amount_to_pay(self, cr, uid, ids, name, arg={}, context=None): + def amount_to_pay(self, cr, uid, ids, name, arg=None, context=None): """ Return the amount still to pay regarding all the payemnt orders (excepting cancelled orders)""" if not ids: @@ -117,4 +117,4 @@ class account_move_line(osv.osv): account_move_line() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py index 1d4c46df029..fceff99b3f2 100644 --- a/addons/account_payment/account_payment.py +++ b/addons/account_payment/account_payment.py @@ -139,7 +139,9 @@ class payment_order(osv.osv): wf_service.trg_validate(uid, 'payment.order', ids[0], 'done', cr) return True - def copy(self, cr, uid, id, default={}, context=None): + def copy(self, cr, uid, id, default=None, context=None): + if default is None: + default = {} default.update({ 'state': 'draft', 'line_ids': [], diff --git a/addons/account_payment/report/__init__.py b/addons/account_payment/report/__init__.py index e9d7f4013ac..c73a5f33001 100644 --- a/addons/account_payment/report/__init__.py +++ b/addons/account_payment/report/__init__.py @@ -20,4 +20,4 @@ ############################################################################## import payment_order -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/report/payment_order.py b/addons/account_payment/report/payment_order.py index 0b2a8061906..6872bbe3516 100644 --- a/addons/account_payment/report/payment_order.py +++ b/addons/account_payment/report/payment_order.py @@ -77,7 +77,7 @@ class payment_order(report_sxw.rml_parse): user = pool.get('res.users').browse(self.cr, self.uid, self.uid) return user.company_id and user.company_id.currency_id and user.company_id.currency_id.symbol or False - def _get_account_name(self,bank_id): + def _get_account_name(self, bank_id): if bank_id: pool = pooler.get_pool(self.cr.dbname) value_name = pool.get('res.partner.bank').name_get(self.cr, self.uid, [bank_id]) @@ -87,4 +87,4 @@ class payment_order(report_sxw.rml_parse): report_sxw.report_sxw('report.payment.order', 'payment.order', 'addons/account_payment/report/payment_order.rml', parser=payment_order, header="external") -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/wizard/__init__.py b/addons/account_payment/wizard/__init__.py index 1c5aefacc78..35b907cd337 100644 --- a/addons/account_payment/wizard/__init__.py +++ b/addons/account_payment/wizard/__init__.py @@ -23,4 +23,4 @@ import account_payment_order import account_payment_populate_statement import account_payment_pay -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/wizard/account_payment_pay.py b/addons/account_payment/wizard/account_payment_pay.py index 6bcb04fa490..3c16618f3d2 100644 --- a/addons/account_payment/wizard/account_payment_pay.py +++ b/addons/account_payment/wizard/account_payment_pay.py @@ -56,4 +56,4 @@ class account_payment_make_payment(osv.osv_memory): account_payment_make_payment() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_payment/wizard/account_payment_populate_statement.py b/addons/account_payment/wizard/account_payment_populate_statement.py index 6f2d9d02dbc..ecfd4988329 100644 --- a/addons/account_payment/wizard/account_payment_populate_statement.py +++ b/addons/account_payment/wizard/account_payment_populate_statement.py @@ -120,4 +120,4 @@ class account_payment_populate_statement(osv.osv_memory): account_payment_populate_statement() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_sequence/__init__.py b/addons/account_sequence/__init__.py index b6707106d4b..e85a910f037 100644 --- a/addons/account_sequence/__init__.py +++ b/addons/account_sequence/__init__.py @@ -22,4 +22,4 @@ import account_sequence import account_sequence_installer -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_voucher/__init__.py b/addons/account_voucher/__init__.py index 9796f81d5e5..2b1478d9fa0 100644 --- a/addons/account_voucher/__init__.py +++ b/addons/account_voucher/__init__.py @@ -24,4 +24,4 @@ import invoice import report import wizard -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 30358f701ef..75de84c0277 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -849,7 +849,7 @@ class account_voucher(osv.osv): res['account_id'] = account_id return {'value':res} - def _sel_context(self, cr, uid, voucher_id,context=None): + def _sel_context(self, cr, uid, voucher_id, context=None): """ Select the context to use accordingly if it needs to be multicurrency or not. @@ -1275,7 +1275,9 @@ class account_voucher(osv.osv): self.reconcile_send_note(cr, uid, [voucher.id], context=context) return True - def copy(self, cr, uid, id, default={}, context=None): + def copy(self, cr, uid, id, default=None, context=None): + if default is None: + default = {} default.update({ 'state': 'draft', 'number': False, diff --git a/addons/account_voucher/report/__init__.py b/addons/account_voucher/report/__init__.py index caeb155adbe..862843352a8 100644 --- a/addons/account_voucher/report/__init__.py +++ b/addons/account_voucher/report/__init__.py @@ -23,4 +23,4 @@ import account_voucher import account_voucher_print import account_voucher_sales_receipt -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/anonymization/anonymization.py b/addons/anonymization/anonymization.py index 43d198b27e2..8834645c460 100644 --- a/addons/anonymization/anonymization.py +++ b/addons/anonymization/anonymization.py @@ -363,7 +363,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): }) raise osv.except_osv(error_type, error_msg) - def anonymize_database(self,cr, uid, ids, context=None): + def anonymize_database(self, cr, uid, ids, context=None): """Sets the 'anonymized' state to defined fields""" # create a new history record: @@ -498,7 +498,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): 'target':'new', } - def reverse_anonymize_database(self,cr, uid, ids, context=None): + def reverse_anonymize_database(self, cr, uid, ids, context=None): """Set the 'clear' state to defined fields""" ir_model_fields_anonymization_model = self.pool.get('ir.model.fields.anonymization') diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py index 332808d8a18..9232a696da8 100644 --- a/addons/audittrail/audittrail.py +++ b/addons/audittrail/audittrail.py @@ -202,7 +202,7 @@ class audittrail_objects_proxy(object_proxy): res = value return res - def create_log_line(self, cr, uid, log_id, model, lines=[]): + def create_log_line(self, cr, uid, log_id, model, lines=None): """ Creates lines for changed fields with its old and new values @@ -211,6 +211,8 @@ class audittrail_objects_proxy(object_proxy): @param model: Object which values are being changed @param lines: List of values for line is to be created """ + if lines is None: + lines = [] pool = pooler.get_pool(cr.dbname) obj_pool = pool.get(model.model) model_pool = pool.get('ir.model') @@ -349,9 +351,9 @@ class audittrail_objects_proxy(object_proxy): data[(model.id, resource_id)] = {'text':values_text, 'value': values} return data - def prepare_audittrail_log_line(self, cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=[]): + def prepare_audittrail_log_line(self, cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=None): """ - This function compares the old data (i.e before the method was executed) and the new data + This function compares the old data (i.e before the method was executed) and the new data (after the method was executed) and returns a structure with all the needed information to log those differences. @@ -375,9 +377,11 @@ class audittrail_objects_proxy(object_proxy): (model.id, resource_id): [] } - The reason why the structure returned is build as above is because when modifying an existing + The reason why the structure returned is build as above is because when modifying an existing record, we may have to log a change done in a x2many field of that object """ + if field_list is None: + field_list = [] key = (model.id, resource_id) lines = { key: [] @@ -416,7 +420,7 @@ class audittrail_objects_proxy(object_proxy): lines[key].append(data) return lines - def process_data(self, cr, uid, pool, res_ids, model, method, old_values={}, new_values={}, field_list=[]): + def process_data(self, cr, uid, pool, res_ids, model, method, old_values=None, new_values=None, field_list=None): """ This function processes and iterates recursively to log the difference between the old data (i.e before the method was executed) and the new data and creates audittrail log @@ -435,6 +439,8 @@ class audittrail_objects_proxy(object_proxy): on specific fields only. :return: True """ + if field_list is None: + field_list = [] # loop on all the given ids for res_id in res_ids: # compare old and new values and get audittrail log lines accordingly diff --git a/addons/auth_oauth/__openerp__.py b/addons/auth_oauth/__openerp__.py index d43815e8018..c8da9c65d4a 100644 --- a/addons/auth_oauth/__openerp__.py +++ b/addons/auth_oauth/__openerp__.py @@ -38,7 +38,10 @@ Allow users to login through Google OAuth2. 'security/ir.model.access.csv' ], 'js': ['static/src/js/auth_oauth.js'], - 'css': ['static/lib/zocial/css/zocial.css'], + 'css': [ + 'static/lib/zocial/css/zocial.css', + 'static/src/css/auth_oauth.css', + ], 'qweb': ['static/src/xml/auth_oauth.xml'], 'installable': True, 'auto_install': False, diff --git a/addons/auth_oauth/auth_oauth_data.xml b/addons/auth_oauth/auth_oauth_data.xml index 7bb95192e5d..83e9df2e44d 100644 --- a/addons/auth_oauth/auth_oauth_data.xml +++ b/addons/auth_oauth/auth_oauth_data.xml @@ -2,6 +2,15 @@ + + OpenERP Accounts + https://accounts.openerp.com/oauth2/auth + userinfo + https://accounts.openerp.com/oauth2/tokeninfo + + zocial openerp + Sign in with OpenERP account + Facebook Graph https://www.facebook.com/dialog/oauth diff --git a/addons/auth_oauth/controllers/main.py b/addons/auth_oauth/controllers/main.py index 5d939f19db1..ae01df5f6f7 100644 --- a/addons/auth_oauth/controllers/main.py +++ b/addons/auth_oauth/controllers/main.py @@ -16,10 +16,13 @@ class OAuthController(openerpweb.Controller): @openerpweb.jsonrequest def list_providers(self, req, dbname): - registry = openerp.modules.registry.RegistryManager.get(dbname) - with registry.cursor() as cr: - providers = registry.get('auth.oauth.provider') - l = providers.read(cr, SUPERUSER_ID, providers.search(cr, SUPERUSER_ID, [('enabled','=',True)])) + try: + registry = openerp.modules.registry.RegistryManager.get(dbname) + with registry.cursor() as cr: + providers = registry.get('auth.oauth.provider') + l = providers.read(cr, SUPERUSER_ID, providers.search(cr, SUPERUSER_ID, [('enabled','=',True)])) + except Exception: + l = [] return l @openerpweb.httprequest diff --git a/addons/auth_oauth/res_users.py b/addons/auth_oauth/res_users.py index b4f62612746..fd26e89c2e3 100644 --- a/addons/auth_oauth/res_users.py +++ b/addons/auth_oauth/res_users.py @@ -1,6 +1,7 @@ import logging import urllib +import urlparse import urllib2 import simplejson @@ -20,8 +21,11 @@ class res_users(osv.Model): } def auth_oauth_rpc(self, cr, uid, endpoint, access_token, context=None): - params = urllib.urlencode({'access_token':access_token}) - url = endpoint + '?' + params + params = urllib.urlencode({ 'access_token': access_token }) + if urlparse.urlparse(endpoint)[4]: + url = endpoint + '&' + params + else: + url = endpoint + '?' + params f = urllib2.urlopen(url) response = f.read() return simplejson.loads(response) @@ -38,26 +42,32 @@ class res_users(osv.Model): validation = self.auth_oauth_rpc(cr, uid, p.validation_endpoint, access_token) if validation.get("error"): raise openerp.exceptions.AccessDenied - login = validation['email'] + if p.data_endpoint: + data = self.auth_oauth_rpc(cr, uid, p.data_endpoint, access_token) + validation.update(data) + # required oauth_uid = validation['user_id'] - name = self.auth_oauth_rpc(cr, uid, p.data_endpoint, access_token)['name'] - - credentials = (cr.dbname, login, access_token) + if not oauth_uid: + raise openerp.exceptions.AccessDenied + email = validation.get('email', 'provider_%d_user_%d' % (p.id, oauth_uid)) + # optional + name = validation.get('name', email) res = self.search(cr, uid, [("oauth_uid", "=", oauth_uid)]) if res: - self.write(cr, uid, res[0], {'oauth_access_token':access_token}) + self.write(cr, uid, res[0], { 'oauth_access_token': access_token }) else: # New user new_user = { 'name': name, - 'login': login, - 'user_email': login, - 'oauth_provider_id': 1, + 'login': email, + 'user_email': email, + 'oauth_provider_id': p.id, 'oauth_uid': oauth_uid, 'oauth_access_token': access_token, 'active': True, } self.auth_signup_create(cr, uid, new_user) + credentials = (cr.dbname, email, access_token) return credentials def check_credentials(self, cr, uid, password): diff --git a/addons/auth_oauth/static/src/css/auth_oauth.css b/addons/auth_oauth/static/src/css/auth_oauth.css new file mode 100644 index 00000000000..ed6130e3123 --- /dev/null +++ b/addons/auth_oauth/static/src/css/auth_oauth.css @@ -0,0 +1,35 @@ +.openerp .oe_application .zocial { + font: white; +} + +.openerp .zocial.openerp:before { + content: "\E02E"; + font-style: italic; + text-shadow: 0 1px 1px black; +} + +.openerp a.zocial.openerp { + float: right; + border: 1px solid #222222; + color: white; + margin: 0; + background-color: #b92020; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b92020), to(#600606)); + background-image: -webkit-linear-gradient(top, #b92020, #600606); + background-image: -moz-linear-gradient(top, #b92020, #600606); + background-image: -ms-linear-gradient(top, #b92020, #600606); + background-image: -o-linear-gradient(top, #b92020, #600606); + background-image: linear-gradient(to bottom, #b92020, #600606); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + text-shadow: none; + font-weight: normal; +} + +.openerp .oe_login .oe_oauth_provider_login_button { + margin-top: 4px; +} diff --git a/addons/auth_oauth/static/src/js/auth_oauth.js b/addons/auth_oauth/static/src/js/auth_oauth.js index 4a41e720726..5c80d29f4e9 100644 --- a/addons/auth_oauth/static/src/js/auth_oauth.js +++ b/addons/auth_oauth/static/src/js/auth_oauth.js @@ -1,8 +1,9 @@ openerp.auth_oauth = function(instance) { var QWeb = instance.web.qweb; - instance.web.Login = instance.web.Login.extend({ + instance.web.Login.include({ start: function(parent, params) { + var self = this; var d = this._super.apply(this, arguments); this.$el.on('click', 'a.zocial', this.on_oauth_sign_in); this.oauth_providers = []; @@ -11,7 +12,13 @@ openerp.auth_oauth = function(instance) { } else if(this.params.oauth_error === 2) { this.do_warn("Authentication error",""); } - return d.then(this.do_oauth_load); + return d.then(this.do_oauth_load).fail(function() { + self.do_oauth_load([]); + }); + }, + on_db_loaded: function(result) { + this._super.apply(this, arguments); + this.$("form [name=db]").change(this.do_oauth_load); }, do_oauth_load: function() { var db = this.$("form [name=db]").val(); @@ -21,6 +28,7 @@ openerp.auth_oauth = function(instance) { }, on_oauth_loaded: function(result) { this.oauth_providers = result; + this.$('.oe_oauth_provider_login_button').remove(); var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this}); this.$(".oe_login_pane form ul").after(buttons); }, @@ -33,7 +41,7 @@ openerp.auth_oauth = function(instance) { var state_object = { d: dbname, p: p.id - } + }; var state = JSON.stringify(state_object); var params = { response_type: 'token', diff --git a/addons/auth_oauth/static/src/xml/auth_oauth.xml b/addons/auth_oauth/static/src/xml/auth_oauth.xml index c2693804e59..76c71b83f10 100644 --- a/addons/auth_oauth/static/src/xml/auth_oauth.xml +++ b/addons/auth_oauth/static/src/xml/auth_oauth.xml @@ -2,8 +2,7 @@ - -
+
diff --git a/addons/base_crypt/crypt.py b/addons/base_crypt/crypt.py index b27dad22363..81a60a5dd5f 100644 --- a/addons/base_crypt/crypt.py +++ b/addons/base_crypt/crypt.py @@ -47,7 +47,9 @@ import logging magic_md5 = '$1$' _logger = logging.getLogger(__name__) -def gen_salt( length=8, symbols=ascii_letters + digits ): +def gen_salt( length=8, symbols=None): + if symbols is None: + symbols = ascii_letters + digits seed() return ''.join( sample( symbols, length ) ) diff --git a/addons/base_iban/i18n/nl_BE.po b/addons/base_iban/i18n/nl_BE.po index 51fb108b6b8..a7b7b057e56 100644 --- a/addons/base_iban/i18n/nl_BE.po +++ b/addons/base_iban/i18n/nl_BE.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2009-04-20 10:04+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2012-10-01 11:08+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 05:58+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" #. module: base_iban #: constraint:res.partner.bank:0 @@ -23,22 +23,27 @@ msgid "" "Please define BIC/Swift code on bank for bank type IBAN Account to make " "valid payments" msgstr "" +"\n" +"Definieer een BIC/Swift-code voor IBAN-rekeningen om geldige betalingen te " +"maken." #. module: base_iban #: code:addons/base_iban/base_iban.py:139 #, python-format msgid "This IBAN does not pass the validation check, please verify it" msgstr "" +"Dit IBAN-nummer voldoet niet aan de controle. Gelieve het nummer na te " +"kijken." #. module: base_iban #: model:res.partner.bank.type,format_layout:base_iban.bank_iban msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s" -msgstr "" +msgstr "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s" #. module: base_iban #: model:res.partner.bank.type.field,name:base_iban.bank_swift_field msgid "bank_bic" -msgstr "" +msgstr "bank_bic" #. module: base_iban #: model:res.partner.bank.type.field,name:base_iban.bank_zip_field @@ -67,6 +72,8 @@ msgid "" "The IBAN does not seem to be correct. You should have entered something like " "this %s" msgstr "" +"Dit IBAN-nummer lijkt niet juist te zijn. U dient een nummer in te geven in " +"dit formaat %s." #. module: base_iban #: field:res.partner.bank,iban:0 @@ -77,7 +84,7 @@ msgstr "IBAN" #: code:addons/base_iban/base_iban.py:140 #, python-format msgid "The IBAN is invalid, it should begin with the country code" -msgstr "" +msgstr "Dit IBAN-nummer is ongeldig; het moet beginnen met de landcode." #. module: base_iban #: model:res.partner.bank.type,name:base_iban.bank_iban @@ -87,7 +94,7 @@ msgstr "IBAN-rekening" #. module: base_iban #: constraint:res.partner.bank:0 msgid "The RIB and/or IBAN is not valid" -msgstr "" +msgstr "RIB en/of IBAN is niet geldig." #, python-format #~ msgid "The IBAN is invalid, It should begin with the country code" diff --git a/addons/base_module_doc_rst/report/ir_module_reference_print_graph.py b/addons/base_module_doc_rst/report/ir_module_reference_print_graph.py index 62848383000..e70b2da63b1 100644 --- a/addons/base_module_doc_rst/report/ir_module_reference_print_graph.py +++ b/addons/base_module_doc_rst/report/ir_module_reference_print_graph.py @@ -79,4 +79,4 @@ report_sxw.report_sxw('report.ir.module.reference.graph', 'ir.module.module', 'addons/base_module_doc_rst/report/ir_module_reference_graph.rml', parser=ir_module_reference_print_graph, header=False) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_module_record/wizard/base_module_record_objects.py b/addons/base_module_record/wizard/base_module_record_objects.py index 22383bc37d6..de2c6861c44 100644 --- a/addons/base_module_record/wizard/base_module_record_objects.py +++ b/addons/base_module_record/wizard/base_module_record_objects.py @@ -127,7 +127,7 @@ class base_module_record_objects(osv.osv_memory): _name = 'base.module.record.objects' _description = "Base Module Record Objects" - def inter_call(self,cr,uid,data,context=None): + def inter_call(self, cr, uid, data, context=None): res=base_module_save._create_module(self, cr, uid, data, context) mod_obj = self.pool.get('ir.model.data') model_data_ids = mod_obj.search(cr, uid,[('model', '=', 'ir.ui.view'), ('name', '=', 'module_create_form_view')], context=context) diff --git a/addons/base_report_designer/openerp_sxw2rml/openerp_sxw2rml.py b/addons/base_report_designer/openerp_sxw2rml/openerp_sxw2rml.py index a37d46b78a2..436650eb2cd 100644 --- a/addons/base_report_designer/openerp_sxw2rml/openerp_sxw2rml.py +++ b/addons/base_report_designer/openerp_sxw2rml/openerp_sxw2rml.py @@ -42,11 +42,11 @@ import copy class DomApiGeneral: """General DOM API utilities.""" - def __init__(self,content_string="",file=""): + def __init__(self, content_string="", file=""): self.content_string = content_string self.re_digits = re.compile(r"(.*?\d)(pt|cm|mm|inch|in)") - def _unitTuple(self,string): + def _unitTuple(self, string): """Split values and units to a tuple.""" temp = self.re_digits.findall(string) if not temp: @@ -54,13 +54,15 @@ class DomApiGeneral: else: return (temp[0]) - def stringPercentToFloat(self,string): + def stringPercentToFloat(self, string): temp = string.replace("""%""","") return float(temp)/100 - def findChildrenByName(self,parent,name,attr_dict={}): + def findChildrenByName(self, parent, name, attr_dict=None): """Helper functions. Does not work recursively. Optional: also test for certain attribute/value pairs.""" + if attr_dict is None: + attr_dict = {} children = [] for c in parent.childNodes: if c.nodeType == c.ELEMENT_NODE and c.nodeName == name: @@ -70,7 +72,7 @@ class DomApiGeneral: else: return self._selectForAttributes(nodelist=children,attr_dict=attr_dict) - def _selectForAttributes(self,nodelist,attr_dict): + def _selectForAttributes(self, nodelist, attr_dict): "Helper function.""" selected_nodes = [] for n in nodelist: @@ -83,7 +85,7 @@ class DomApiGeneral: selected_nodes.append(n) return selected_nodes - def _stringToTuple(self,s): + def _stringToTuple(self, s): """Helper function.""" try: temp = string.split(s,",") @@ -91,13 +93,13 @@ class DomApiGeneral: except: return None - def _tupleToString(self,t): + def _tupleToString(self, t): try: return self.openOfficeStringUtf8("%s,%s" % (t[0],t[1])) except: return None - def _lengthToFloat(self,value): + def _lengthToFloat(self, value): v = value if not self.re_digits.search(v): return v @@ -113,7 +115,7 @@ class DomApiGeneral: except: return v - def openOfficeStringUtf8(self,string): + def openOfficeStringUtf8(self, string): if type(string) == unicode: return string.encode("utf-8") tempstring = unicode(string,"cp1252").encode("utf-8") @@ -121,7 +123,7 @@ class DomApiGeneral: class DomApi(DomApiGeneral): """This class provides a DOM-API for XML-Files from an SXW-Archive.""" - def __init__(self,xml_content,xml_styles): + def __init__(self, xml_content, xml_styles): DomApiGeneral.__init__(self) self.content_dom = xml.dom.minidom.parseString(xml_content) self.styles_dom = xml.dom.minidom.parseString(xml_styles) @@ -145,7 +147,7 @@ class DomApi(DomApiGeneral): for s in self.style_dict.keys(): self.style_properties_dict[s] = self.getStylePropertiesDict(s) - def updateWithPercents(self,dict,updatedict): + def updateWithPercents(self, dict, updatedict): """Sometimes you find values like "115%" in the style hierarchy.""" if not updatedict: # no style hierarchies for this style? => @@ -244,7 +246,7 @@ class DomApi(DomApiGeneral): def toxml(self): return self.content_dom.toxml(encoding="utf-8") - def getStylePropertiesDict(self,style_name): + def getStylePropertiesDict(self, style_name): res = {} if self.style_dict[style_name].hasAttribute("style:parent-style-name"): @@ -265,7 +267,7 @@ class PyOpenOffice(object): self.save_pict = save_pict self.images = {} - def oo_read(self,fname): + def oo_read(self, fname): z = zipfile.ZipFile(fname,"r") content = z.read('content.xml') style = z.read('styles.xml') @@ -281,7 +283,7 @@ class PyOpenOffice(object): z.close() return content,style - def oo_replace(self,content): + def oo_replace(self, content): regex = [ (r"]*/>", ""), (r"(.*?)]*/>", "$2"), @@ -290,7 +292,7 @@ class PyOpenOffice(object): content = re.sub(key, val, content) return content - def unpackNormalize(self,sourcefile): + def unpackNormalize(self, sourcefile): c,s = self.oo_read(sourcefile) c = self.oo_replace(c) dom = DomApi(c,s) diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/About.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/About.py index 401cf88b418..43b452b82e2 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/About.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/About.py @@ -52,7 +52,7 @@ if __name__<>'package': from lib.gui import * class About(unohelper.Base, XJobExecutor): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/AddAttachment.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/AddAttachment.py index a9a18cd9bfa..ba69174ffc6 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/AddAttachment.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/AddAttachment.py @@ -64,7 +64,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): 'PDF' : 'pdf', 'OpenOffice': 'sxw', } - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" @@ -132,7 +132,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): self.win.addButton('btnCancel', -2 - 27 , -5 , 30 , 15, 'Cancel' ,actionListenerProc = self.btnCancel_clicked ) self.win.doModalDialog("lstResourceType", self.Kind.keys()[0]) - def btnSearch_clicked( self, oActionEvent ): + def btnSearch_clicked(self, oActionEvent): modelSelectedItem = self.win.getListBoxSelectedItem("lstmodel") if modelSelectedItem == "": return @@ -151,7 +151,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): for result in self.aSearchResult: self.lstResource.addItem(result[1],result[0]) - def _send_attachment( self, name, data, res_model, res_id ): + def _send_attachment(self, name, data, res_model, res_id): desktop = getDesktop() oDoc2 = desktop.getCurrentComponent() docinfo = oDoc2.getDocumentInfo() @@ -166,7 +166,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): return self.sock.execute( database, uid, self.password, 'ir.attachment', 'create', params ) - def send_attachment( self, model, resource_id ): + def send_attachment(self, model, resource_id): desktop = getDesktop() oDoc2 = desktop.getCurrentComponent() docinfo = oDoc2.getDocumentInfo() @@ -187,7 +187,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): data = read_data_from_file( get_absolute_file_path( url ) ) return self._send_attachment( os.path.basename( url ), data, model, resource_id ) - def btnOkWithoutInformation_clicked( self, oActionEvent ): + def btnOkWithoutInformation_clicked(self, oActionEvent): desktop = getDesktop() oDoc2 = desktop.getCurrentComponent() docinfo = oDoc2.getDocumentInfo() @@ -199,7 +199,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): res = self.send_attachment( docinfo.getUserFieldValue(3), docinfo.getUserFieldValue(2) ) self.win.endExecute() - def btnOkWithInformation_clicked(self,oActionEvent): + def btnOkWithInformation_clicked(self, oActionEvent): if self.win.getListBoxSelectedItem("lstResourceType") == "": ErrorDialog( "You have to select a resource type.", "", "Selection Error." ) return @@ -221,7 +221,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): res = self.send_attachment( self.dModel[self.win.getListBoxSelectedItem('lstmodel')], resourceid ) self.win.endExecute() - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() def doc2pdf(self, strFile): @@ -262,7 +262,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ): # Can be None if len(strFilterSubName) <= 0 return filename - def _MakePropertyValue(self, cName = "", uValue = u"" ): + def _MakePropertyValue(self, cName="", uValue=u""): oPropertyValue = createUnoStruct( "com.sun.star.beans.PropertyValue" ) if cName: oPropertyValue.Name = cName diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Change.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Change.py index 75bfd65e1b6..b85a9d9bb06 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Change.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Change.py @@ -59,7 +59,7 @@ if __name__<>"package": database="test" class Change( unohelper.Base, XJobExecutor ): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" @@ -107,7 +107,7 @@ class Change( unohelper.Base, XJobExecutor ): self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() ) self.win.doModalDialog( "lstProtocol", protocol) - def btnNext_clicked(self,oActionEvent): + def btnNext_clicked(self, oActionEvent): global url aVal='' #aVal= Fetature used diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertBracesToField.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertBracesToField.py index bb80c3ecd61..c1fa8b22a85 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertBracesToField.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertBracesToField.py @@ -3,31 +3,31 @@ # Portions of this file are under the following copyright and license: # # -# Copyright (c) 2003-2004 Danny Brewer -# d29583@groovegarden.com -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See: http://www.gnu.org/licenses/lgpl.html +# Copyright (c) 2003-2004 Danny Brewer +# d29583@groovegarden.com +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See: http://www.gnu.org/licenses/lgpl.html +# # -# # and other portions are under the following copyright and license: # # # OpenERP, Open Source Management Solution>.. -# Copyright (C) 2004-2010 OpenERP SA (). +# Copyright (C) 2004-2010 OpenERP SA (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -63,7 +63,7 @@ if __name__<>"package": class ConvertBracesToField( unohelper.Base, XJobExecutor ): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" @@ -198,7 +198,7 @@ class ConvertBracesToField( unohelper.Base, XJobExecutor ): info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) self.logobj.log_write('ConvertBraceToField', LOG_ERROR, info) - def getRes(self,sock,sObject,sVar): + def getRes(self, sock, sObject, sVar): desktop=getDesktop() doc =desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() @@ -215,7 +215,9 @@ class ConvertBracesToField( unohelper.Base, XJobExecutor ): sObject = self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:]) return sObject - def getBraces(self,aReportSyntex=[]): + def getBraces(self, aReportSyntex=None): + if aReportSyntex is None: + aReportSyntex = [] desktop=getDesktop() doc = desktop.getCurrentComponent() aSearchString=[] diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertFieldsToBraces.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertFieldsToBraces.py index 892061c56b4..ffa88a8cd06 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertFieldsToBraces.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ConvertFieldsToBraces.py @@ -57,7 +57,7 @@ if __name__<>"package": uid = 3 class ConvertFieldsToBraces( unohelper.Base, XJobExecutor ): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ExportToRML.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ExportToRML.py index 644763595df..d92b2aec14f 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ExportToRML.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ExportToRML.py @@ -67,7 +67,7 @@ if __name__<>"package": class ExportToRML( unohelper.Base, XJobExecutor ): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Expression.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Expression.py index 6c0d04d4bf3..9e3b175b67b 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Expression.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Expression.py @@ -57,7 +57,7 @@ if __name__<>"package": uid = 3 class Expression(unohelper.Base, XJobExecutor ): - def __init__(self,sExpression="",sName="", bFromModify=False): + def __init__(self, sExpression="", sName="", bFromModify=False): LoginTest() if not loginstatus and __name__=="package": exit(1) @@ -75,7 +75,7 @@ class Expression(unohelper.Base, XJobExecutor ): self.win.doModalDialog("",None) - def btnOk_clicked( self, oActionEvent ): + def btnOk_clicked(self, oActionEvent): desktop=getDesktop() doc = desktop.getCurrentComponent() text = doc.Text @@ -105,7 +105,7 @@ class Expression(unohelper.Base, XJobExecutor ): else: ErrorDialog("Please fill appropriate data in Name field or in Expression field.") - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() if __name__<>"package" and __name__=="__main__": diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py index 513be2e0e64..3e39b528b6b 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py @@ -64,7 +64,7 @@ if __name__<>"package": class Fields(unohelper.Base, XJobExecutor ): - def __init__(self,sVariable="",sFields="",sDisplayName="",bFromModify=False): + def __init__(self, sVariable="", sFields="", sDisplayName="", bFromModify=False): LoginTest() if not loginstatus and __name__=="package": exit(1) @@ -177,7 +177,7 @@ class Fields(unohelper.Base, XJobExecutor ): ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice") self.win.endExecute() - def lstbox_selected(self,oItemEvent): + def lstbox_selected(self, oItemEvent): try: desktop=getDesktop() @@ -200,7 +200,7 @@ class Fields(unohelper.Base, XJobExecutor ): if self.bModify: self.win.setEditText("txtUName",self.sGDisplayName) - def getRes(self,sock ,sObject,sVar): + def getRes(self, sock, sObject, sVar): desktop=getDesktop() doc =desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() @@ -219,7 +219,7 @@ class Fields(unohelper.Base, XJobExecutor ): else: return sObject - def cmbVariable_selected(self,oItemEvent): + def cmbVariable_selected(self, oItemEvent): if self.count > 0 : try: desktop=getDesktop() @@ -246,7 +246,7 @@ class Fields(unohelper.Base, XJobExecutor ): info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) self.logobj.log_write('Fields', LOG_ERROR, info) - def btnOk_clicked( self, oActionEvent ): + def btnOk_clicked(self, oActionEvent): desktop=getDesktop() doc = desktop.getCurrentComponent() cursor = doc.getCurrentController().getViewCursor() @@ -281,7 +281,7 @@ class Fields(unohelper.Base, XJobExecutor ): else: ErrorDialog("Please fill appropriate data in Name field \nor select particular value from the list of fields.") - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() if __name__<>"package" and __name__=="__main__": diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ModifyExistingReport.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ModifyExistingReport.py index ebe2650575d..bc7d439c76d 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ModifyExistingReport.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ModifyExistingReport.py @@ -65,7 +65,7 @@ if __name__<>'package': uid = 3 class ModifyExistingReport(unohelper.Base, XJobExecutor): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" @@ -177,10 +177,10 @@ class ModifyExistingReport(unohelper.Base, XJobExecutor): self.win.endExecute() - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() - def btnDelete_clicked( self, oActionEvent ): + def btnDelete_clicked(self, oActionEvent): desktop=getDesktop() doc = desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/NewReport.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/NewReport.py index 6022e44df7a..138c68b690e 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/NewReport.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/NewReport.py @@ -66,7 +66,7 @@ if __name__<>"package": # # class NewReport(unohelper.Base, XJobExecutor): - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" @@ -99,7 +99,7 @@ class NewReport(unohelper.Base, XJobExecutor): self.win.addButton('btnCancel',-2 - 70 - 5 ,-5, 35,15,'Cancel' ,actionListenerProc = self.btnCancel_clicked ) self.win.doModalDialog("",None) - def btnOk_clicked(self,oActionEvent): + def btnOk_clicked(self, oActionEvent): desktop=getDesktop() doc = desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() @@ -107,7 +107,7 @@ class NewReport(unohelper.Base, XJobExecutor): self.logobj.log_write('Module Name',LOG_INFO, ':Module use in creating a report %s using database %s' % (self.aModuleName[self.lstModule.getSelectedItemPos()], database)) self.win.endExecute() - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() if __name__<>"package" and __name__=="__main__": diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Repeatln.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Repeatln.py index ca2d9bf2d36..16735d40f4e 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Repeatln.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Repeatln.py @@ -64,7 +64,7 @@ if __name__<>"package": #class RepeatIn: class RepeatIn( unohelper.Base, XJobExecutor ): - def __init__(self,sObject="",sVariable="",sFields="",sDisplayName="",bFromModify=False): + def __init__(self, sObject="", sVariable="", sFields="", sDisplayName="", bFromModify=False): # Interface Design LoginTest() self.logobj=Logger() @@ -204,7 +204,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ): ErrorDialog("Please Select Appropriate module" ,"Create new report from: \nOpenERP -> Open a New Report") self.win.endExecute() - def lstbox_selected(self,oItemEvent): + def lstbox_selected(self, oItemEvent): sItem=self.win.getListBoxSelectedItem("lstFields") sMain=self.aListRepeatIn[self.win.getListBoxSelectedItemPos("lstFields")] @@ -215,7 +215,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ): self.win.setEditText("txtName",sMain[sMain.rfind("/")+1:]) self.win.setEditText("txtUName","|-."+sItem[sItem.rfind("/")+1:]+".-|") - def cmbVariable_selected(self,oItemEvent): + def cmbVariable_selected(self, oItemEvent): if self.count > 0 : @@ -290,7 +290,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ): else: ErrorDialog("Please fill appropriate data in Object Field or Name field \nor select particular value from the list of fields.") - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() if __name__<>"package" and __name__=="__main__": diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/SendToServer.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/SendToServer.py index d32f7aa6c20..4568620dc8c 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/SendToServer.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/SendToServer.py @@ -72,7 +72,7 @@ class SendtoServer(unohelper.Base, XJobExecutor): 'HTML' : 'html' } - def __init__(self,ctx): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" @@ -136,10 +136,10 @@ class SendtoServer(unohelper.Base, XJobExecutor): self.win.doModalDialog("lstResourceType", self.Kind.keys()[0]) - def lstbox_selected(self,oItemEvent): + def lstbox_selected(self, oItemEvent): pass - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() def btnOk_clicked(self, oActionEvent): @@ -221,7 +221,7 @@ class SendtoServer(unohelper.Base, XJobExecutor): id=self.sock.execute(database, uid, self.password, 'ir.actions.report.xml' ,'create', params) return id - def getInverseFieldsRecord(self,nVal): + def getInverseFieldsRecord(self, nVal): desktop=getDesktop() doc = desktop.getCurrentComponent() count=0 diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ServerParameter.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ServerParameter.py index ba9817ca20a..c399634bfe5 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ServerParameter.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/ServerParameter.py @@ -59,7 +59,7 @@ if __name__<>"package": database="test" class ServerParameter( unohelper.Base, XJobExecutor ): - def __init__(self, aVal= None, sURL=""): + def __init__(self, aVal=None, sURL=""): self.module = "openerp_report" self.version = "0.1" desktop=getDesktop() @@ -116,8 +116,7 @@ class ServerParameter( unohelper.Base, XJobExecutor ): #self.win.doModalDialog("lstDatabase",docinfo.getUserFieldValue(2)) - def btnOk_clicked(self,oActionEvent): - + def btnOk_clicked(self, oActionEvent): sLogin=self.win.getEditText("txtLoginName") sPassword=self.win.getEditText("txtPassword") global url @@ -157,11 +156,10 @@ class ServerParameter( unohelper.Base, XJobExecutor ): self.logobj.log_write('successful login',LOG_INFO, ': successful login from %s using database %s' % (sLogin, sDatabase)) self.win.endExecute() - - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() - def btnPrevious_clicked(self,oActionEvent): + def btnPrevious_clicked(self, oActionEvent): self.win.endExecute() Change(None) self.win.endExecute() @@ -172,5 +170,4 @@ if __name__<>"package" and __name__=="__main__": elif __name__=="package": g_ImplementationHelper.addImplementation( ServerParameter, "org.openoffice.openerp.report.serverparam", ("com.sun.star.task.Job",),) - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py index 06bce1f9fa5..13d02c86329 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py @@ -61,7 +61,7 @@ if __name__<>"package": class AddLang(unohelper.Base, XJobExecutor ): - def __init__(self,sVariable="",sFields="",sDisplayName="",bFromModify=False): + def __init__(self, sVariable="", sFields="", sDisplayName="", bFromModify=False): LoginTest() if not loginstatus and __name__=="package": exit(1) @@ -157,7 +157,7 @@ class AddLang(unohelper.Base, XJobExecutor ): ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice") self.win.endExecute() - def lstbox_selected(self,oItemEvent): + def lstbox_selected(self, oItemEvent): try: desktop=getDesktop() @@ -183,7 +183,7 @@ class AddLang(unohelper.Base, XJobExecutor ): if self.bModify: self.win.setEditText("txtUName",self.sGDisplayName) - def getRes(self,sock ,sObject,sVar): + def getRes(self, sock, sObject, sVar): desktop=getDesktop() doc =desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() @@ -203,7 +203,7 @@ class AddLang(unohelper.Base, XJobExecutor ): return sObject - def cmbVariable_selected(self,oItemEvent): + def cmbVariable_selected(self, oItemEvent): if self.count > 0 : try: desktop=getDesktop() @@ -229,7 +229,7 @@ class AddLang(unohelper.Base, XJobExecutor ): except: import traceback;traceback.print_exc() - def btnOk_clicked( self, oActionEvent ): + def btnOk_clicked(self, oActionEvent): self.bOkay = True desktop=getDesktop() doc = desktop.getCurrentComponent() @@ -263,7 +263,7 @@ class AddLang(unohelper.Base, XJobExecutor ): else: ErrorDialog("Please fill appropriate data in name field \nor select particular value from the list of fields.") - def btnCancel_clicked( self, oActionEvent ): + def btnCancel_clicked(self, oActionEvent): self.win.endExecute() diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/error.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/error.py index c0a3e5b5d63..cb86f5f429a 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/error.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/error.py @@ -48,7 +48,7 @@ if __name__<>"package": from gui import * class ErrorDialog: - def __init__(self,sErrorMsg, sErrorHelpMsg="",sTitle="Error Message"): + def __init__(self, sErrorMsg, sErrorHelpMsg="", sTitle="Error Message"): self.win = DBModalDialog(50, 50, 150, 90, sTitle) self.win.addFixedText("lblErrMsg", 5, 5, 190, 25, sErrorMsg) self.win.addFixedText("lblErrHelpMsg", 5, 30, 190, 25, sErrorHelpMsg) diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/functions.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/functions.py index 29f1cd87e46..1b614224147 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/functions.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/functions.py @@ -59,7 +59,13 @@ if __name__<>"package": database="test" uid = 1 -def genTree(object,aList,insField,host,level=3, ending=[], ending_excl=[], recur=[], root='', actualroot=""): +def genTree(object, aList, insField, host, level=3, ending=None, ending_excl=None, recur=None, root='', actualroot=""): + if ending is None: + ending = [] + if ending_excl is None: + ending_excl = [] + if recur is None: + recur = [] try: global url sock=RPCSession(url) @@ -79,7 +85,7 @@ def genTree(object,aList,insField,host,level=3, ending=[], ending_excl=[], recur info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) obj.log_write('Function', LOG_ERROR, info) -def VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList,sTableName=""): +def VariableScope(oTcur, insVariable, aObjectList, aComponentAdd, aItemList, sTableName=""): if sTableName.find(".") != -1: for i in range(len(aItemList)): if aComponentAdd[i]==sTableName: @@ -96,7 +102,7 @@ def VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList,sTableNa if aObjectList[j][:aObjectList[j].find("(")] == sLVal and sLVal!="": insVariable.append(aObjectList[j]) -def getList(aObjectList,host,count): +def getList(aObjectList, host, count): desktop=getDesktop() doc =desktop.getCurrentComponent() docinfo=doc.getDocumentInfo() @@ -128,7 +134,7 @@ def getList(aObjectList,host,count): else: aObjectList.append("List of " + docinfo.getUserFieldValue(3)) -def getRelation(sRelName, sItem, sObjName, aObjectList, host ): +def getRelation(sRelName, sItem, sObjName, aObjectList, host): global url sock=RPCSession(url) global passwd @@ -143,7 +149,7 @@ def getRelation(sRelName, sItem, sObjName, aObjectList, host ): getRelation(res[k]['relation'], sItem[sItem.find(".")+1:], sObjName,aObjectList,host) -def getPath(sPath,sMain): +def getPath(sPath, sMain): desktop=getDesktop() doc =desktop.getCurrentComponent() oParEnum = doc.getTextFields().createEnumeration() @@ -161,7 +167,7 @@ def getPath(sPath,sMain): getPath(sPath, sMain) return sPath -def EnumDocument(aItemList,aComponentAdd): +def EnumDocument(aItemList, aComponentAdd): desktop = getDesktop() parent="" bFlag = False @@ -183,7 +189,7 @@ def EnumDocument(aItemList,aComponentAdd): aItemList.append( templist ) aComponentAdd.append( parent ) -def getChildTable(oPar,aItemList,aComponentAdd,sTableName=""): +def getChildTable(oPar, aItemList, aComponentAdd, sTableName=""): sNames = oPar.getCellNames() bEmptyTableFlag=True for val in sNames: @@ -229,7 +235,7 @@ def getChildTable(oPar,aItemList,aComponentAdd,sTableName=""): aComponentAdd.append(sTableName+"."+oPar.Name) return 0 -def getRecersiveSection(oCurrentSection,aSectionList): +def getRecersiveSection(oCurrentSection, aSectionList): desktop=getDesktop() doc =desktop.getCurrentComponent() oParEnum=doc.getText().createEnumeration() diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/logreport.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/logreport.py index 42198337450..f05a836c546 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/logreport.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/logreport.py @@ -39,11 +39,10 @@ def log_detail(self): _logger.setLevel(logging.INFO) class Logger(object): - def log_write(self,name,level,msg): + def log_write(self, name, level, msg): getattr(_logger,level)(msg) def shutdown(self): logging.shutdown() - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/rpc.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/rpc.py index f7c7f636485..5d6f8ca6dbc 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/rpc.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/rpc.py @@ -52,7 +52,7 @@ class RPCGateway(object): class RPCSession(object): - def __init__(self,url): + def __init__(self, url): m = re.match('^(http[s]?://|socket://)([\w.\-]+):(\d{1,5})$', url or '') @@ -152,7 +152,7 @@ class XMLRPCGateway(RPCGateway): return res - def execute(self, sDatabase,UID,sPassword,obj, method, *args): + def execute(self, sDatabase, UID, sPassword, obj, method, *args): global rpc_url sock = xmlrpclib.ServerProxy(rpc_url + 'object') diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/tools.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/tools.py index ef22a3a0d51..53dc81f5bc3 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/tools.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/lib/tools.py @@ -21,19 +21,19 @@ ############################################################################## import urllib -def get_absolute_file_path( url ): +def get_absolute_file_path(url): url_unquoted = urllib.unquote(url) return os.name == 'nt' and url_unquoted[1:] or url_unquoted # This function reads the content of a file and return it to the caller -def read_data_from_file( filename ): +def read_data_from_file(filename): fp = file( filename, "rb" ) data = fp.read() fp.close() return data # This function writes the content to a file -def write_data_to_file( filename, data ): +def write_data_to_file(filename, data): fp = file( filename, 'wb' ) fp.write( data ) fp.close() diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py index 03478651def..b5f5a1501b9 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py @@ -61,7 +61,7 @@ if __name__<>"package": uid = 3 class modify(unohelper.Base, XJobExecutor ): - def __init__( self, ctx ): + def __init__(self, ctx): self.ctx = ctx self.module = "openerp_report" self.version = "0.1" diff --git a/addons/base_report_designer/plugin/openerp_report_designer/test/test_fields.py b/addons/base_report_designer/plugin/openerp_report_designer/test/test_fields.py index 8954aa8d7a8..c23e0e739bf 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/test/test_fields.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/test/test_fields.py @@ -10,7 +10,13 @@ import time sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object') -def get(object, level=3, ending=[], ending_excl=[], recur=[], root=''): +def get(object, level=3, ending=None, ending_excl=None, recur=None, root=''): + if ending is None: + ending = [] + if ending_excl is None: + ending_excl = [] + if recur is None: + recur = [] res = sock.execute('terp', 3, 'admin', 'account.invoice', 'fields_get') key = res.keys() key.sort() diff --git a/addons/base_setup/i18n/nl_BE.po b/addons/base_setup/i18n/nl_BE.po index 1662fc1a1dc..ba30f4dd262 100644 --- a/addons/base_setup/i18n/nl_BE.po +++ b/addons/base_setup/i18n/nl_BE.po @@ -7,44 +7,44 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2009-04-24 15:11+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2012-10-01 11:22+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:08+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" #. module: base_setup #: field:user.preferences.config,menu_tips:0 msgid "Display Tips" -msgstr "" +msgstr "Tips weergeven" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Guest" -msgstr "" +msgstr "Gast" #. module: base_setup #: model:ir.model,name:base_setup.model_product_installer msgid "product.installer" -msgstr "" +msgstr "product.installer" #. module: base_setup #: selection:product.installer,customers:0 msgid "Create" -msgstr "" +msgstr "Maken" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Member" -msgstr "" +msgstr "Lid" #. module: base_setup #: field:migrade.application.installer.modules,sync_google_contact:0 msgid "Sync Google Contact" -msgstr "" +msgstr "Google-contacten synchroniseren" #. module: base_setup #: help:user.preferences.config,context_tz:0 @@ -52,21 +52,23 @@ msgid "" "Set default for new user's timezone, used to perform timezone conversions " "between the server and the client." msgstr "" +"Stel de standaardtijdzone in voor nieuwe gebruikers. Deze wordt gebruikt om " +"tijdzoneconversies te doen tussen server en client." #. module: base_setup #: selection:product.installer,customers:0 msgid "Import" -msgstr "" +msgstr "Importeren" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Donor" -msgstr "" +msgstr "Donor" #. module: base_setup #: model:ir.actions.act_window,name:base_setup.action_base_setup_company msgid "Set Company Header and Footer" -msgstr "" +msgstr "Stel uw kop- en voettekst in" #. module: base_setup #: model:ir.actions.act_window,help:base_setup.action_base_setup_company @@ -75,21 +77,24 @@ msgid "" "printed on your reports. You can click on the button 'Preview Header' in " "order to check the header/footer of PDF documents." msgstr "" +"Vul uw bedrijfsgegevens in (adres, logo, bankrekeningen), zodat deze worden " +"afgedrukt op uw rapporten. U kunt op de knop 'Voorbeeld koptekst' klikken om " +"de koptekst en voettekst van pdf-documenten te controleren." #. module: base_setup #: field:product.installer,customers:0 msgid "Customers" -msgstr "" +msgstr "Klanten" #. module: base_setup #: selection:user.preferences.config,view:0 msgid "Extended" -msgstr "" +msgstr "Uitgebreid" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Patient" -msgstr "" +msgstr "Patiënt" #. module: base_setup #: model:ir.actions.act_window,help:base_setup.action_import_create_installer @@ -98,26 +103,29 @@ msgid "" "you can import your existing partners by CSV spreadsheet from \"Import " "Data\" wizard" msgstr "" +"Maak of importeer klanten en contactpersonen manueel vanuit dit scherm. U " +"kunt ook bestaande klanten importeren vanuit een csv-bestand met de wizard " +"\"Gegevens importeren\"." #. module: base_setup #: view:user.preferences.config:0 msgid "Define Users's Preferences" -msgstr "" +msgstr "Stel de gebruikersvoorkeuren in" #. module: base_setup #: model:ir.actions.act_window,name:base_setup.action_user_preferences_config_form msgid "Define default users preferences" -msgstr "" +msgstr "Stel de standaard gebruikersvoorkeuren in" #. module: base_setup #: help:migrade.application.installer.modules,import_saleforce:0 msgid "For Import Saleforce" -msgstr "" +msgstr "Voor Salesforce-import" #. module: base_setup #: help:migrade.application.installer.modules,quickbooks_ippids:0 msgid "For Quickbooks Ippids" -msgstr "" +msgstr "Voor Quickboos Ippids" #. module: base_setup #: help:user.preferences.config,view:0 @@ -126,6 +134,9 @@ msgid "" "simplified interface, which has less features but is easier. You can always " "switch later from the user preferences." msgstr "" +"Als u OpenERP voor de eerste keer gebruikt, raden wij u aan de eenvoudige " +"weergave te kiezen, met minder functies en een eenvoudige werking. U kunt " +"deze keuze altijd wijzigen via de gebruikersvoorkeuren." #. module: base_setup #: view:base.setup.terminology:0 @@ -136,12 +147,12 @@ msgstr "res_config_contents" #. module: base_setup #: field:user.preferences.config,view:0 msgid "Interface" -msgstr "" +msgstr "Interface" #. module: base_setup #: model:ir.model,name:base_setup.model_migrade_application_installer_modules msgid "migrade.application.installer.modules" -msgstr "" +msgstr "migrade.application.installer.modules" #. module: base_setup #: view:base.setup.terminology:0 @@ -149,21 +160,23 @@ msgid "" "You can use this wizard to change the terminologies for customers in the " "whole application." msgstr "" +"Met deze wizard kunt u een andere benaming kiezen voor klanten, die in de " +"volledige toepassing zal worden gebruikt." #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Tenant" -msgstr "" +msgstr "Huurder" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Customer" -msgstr "" +msgstr "Klant" #. module: base_setup #: field:user.preferences.config,context_lang:0 msgid "Language" -msgstr "" +msgstr "Taal" #. module: base_setup #: help:user.preferences.config,context_lang:0 @@ -172,6 +185,9 @@ msgid "" "available. If you want to Add new Language, you can add it from 'Load an " "Official Translation' wizard from 'Administration' menu." msgstr "" +"Kiest de standaardtaal voor de gebruik, als er vertalingen beschikbaar zijn. " +"Een Nieuwe taal instellen kan via het menu Beheer, Laad een officiële " +"vertaling." #. module: base_setup #: view:user.preferences.config:0 @@ -180,47 +196,50 @@ msgid "" "ones. Afterwards, users are free to change those values on their own user " "preference form." msgstr "" +"Hiermee wijst u de standaardinstellingen toe aan nieuwe en bestaande " +"gebruikers. Een gebruiker kan deze waarden altijd wijzigen via zijn " +"voorkeuren." #. module: base_setup #: field:base.setup.terminology,partner:0 msgid "How do you call a Customer" -msgstr "" +msgstr "Hoe wordt een klant bij u genoemd?" #. module: base_setup #: field:migrade.application.installer.modules,quickbooks_ippids:0 msgid "Quickbooks Ippids" -msgstr "" +msgstr "Quickbooks Ippids" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Client" -msgstr "" +msgstr "Cliënt" #. module: base_setup #: field:migrade.application.installer.modules,import_saleforce:0 msgid "Import Saleforce" -msgstr "" +msgstr "Salesforce-import" #. module: base_setup #: field:user.preferences.config,context_tz:0 msgid "Timezone" -msgstr "" +msgstr "Tijdzone" #. module: base_setup #: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form msgid "Use another word to say \"Customer\"" -msgstr "" +msgstr "Gebruik een andere benaming voor Klant" #. module: base_setup #: model:ir.model,name:base_setup.model_base_setup_terminology msgid "base.setup.terminology" -msgstr "" +msgstr "base.setup.terminology" #. module: base_setup #: help:user.preferences.config,menu_tips:0 msgid "" "Check out this box if you want to always display tips on each menu action" -msgstr "" +msgstr "Schakel dit vakje in als u voor elke menuactie tips wilt weergaven." #. module: base_setup #: field:base.setup.terminology,config_logo:0 @@ -233,52 +252,52 @@ msgstr "Afbeelding" #. module: base_setup #: model:ir.model,name:base_setup.model_user_preferences_config msgid "user.preferences.config" -msgstr "" +msgstr "user.preferences.config" #. module: base_setup #: model:ir.actions.act_window,name:base_setup.action_config_access_other_user msgid "Create Additional Users" -msgstr "" +msgstr "Extra gebruikers maken" #. module: base_setup #: model:ir.actions.act_window,name:base_setup.action_import_create_installer msgid "Create or Import Customers" -msgstr "" +msgstr "Klanten maken of importeren" #. module: base_setup #: field:migrade.application.installer.modules,import_sugarcrm:0 msgid "Import Sugarcrm" -msgstr "" +msgstr "SugarCRM-import" #. module: base_setup #: help:product.installer,customers:0 msgid "Import or create customers" -msgstr "" +msgstr "Klanten maken of importeren" #. module: base_setup #: selection:user.preferences.config,view:0 msgid "Simplified" -msgstr "" +msgstr "Eenvoudig" #. module: base_setup #: help:migrade.application.installer.modules,import_sugarcrm:0 msgid "For Import Sugarcrm" -msgstr "" +msgstr "Voor SugarCRM-import" #. module: base_setup #: selection:base.setup.terminology,partner:0 msgid "Partner" -msgstr "" +msgstr "Relatie" #. module: base_setup #: view:base.setup.terminology:0 msgid "Specify Your Terminology" -msgstr "" +msgstr "Kies uw terminologie" #. module: base_setup #: help:migrade.application.installer.modules,sync_google_contact:0 msgid "For Sync Google Contact" -msgstr "" +msgstr "Voor synchronisatie met Google-contacten" #~ msgid "Logo" #~ msgstr "Logo" diff --git a/addons/base_vat/__init__.py b/addons/base_vat/__init__.py index 1d7c143b7dc..2331d5661c1 100644 --- a/addons/base_vat/__init__.py +++ b/addons/base_vat/__init__.py @@ -22,4 +22,4 @@ import res_company import base_vat -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_vat/i18n/nl_BE.po b/addons/base_vat/i18n/nl_BE.po index f468f96cd38..9d68fcb0f78 100644 --- a/addons/base_vat/i18n/nl_BE.po +++ b/addons/base_vat/i18n/nl_BE.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2009-04-24 15:11+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2012-10-01 11:23+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:07+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" #. module: base_vat #: code:addons/base_vat/base_vat.py:141 @@ -34,7 +34,7 @@ msgstr "De naam van de firma moet uniek zijn" #. module: base_vat #: constraint:res.partner:0 msgid "Error ! You cannot create recursive associated members." -msgstr "" +msgstr "U kunt niet dezelfde verenigingsleden maken." #. module: base_vat #: field:res.company,vat_check_vies:0 diff --git a/addons/base_vat/res_company.py b/addons/base_vat/res_company.py index e7641db9c68..1c63aa20f07 100644 --- a/addons/base_vat/res_company.py +++ b/addons/base_vat/res_company.py @@ -29,4 +29,4 @@ class res_company_vat (osv.osv): "rather than via a simple format validation (checksum)."), } - \ No newline at end of file + diff --git a/addons/caldav/caldav_node.py b/addons/caldav/caldav_node.py index e32801f5cd5..4c7598660f1 100644 --- a/addons/caldav/caldav_node.py +++ b/addons/caldav/caldav_node.py @@ -43,7 +43,7 @@ class node_calendar_collection(nodes.node_dir): DAV_M_NS = dict_merge2(nodes.node_dir.DAV_M_NS, { "http://calendarserver.org/ns/" : '_get_dav', } ) - def _file_get(self,cr, nodename=False): + def _file_get(self, cr, nodename=False): return [] def _child_get(self, cr, name=False, parent_id=False, domain=None): @@ -100,7 +100,7 @@ class node_calendar_res_col(nodes.node_res_obj): DAV_M_NS = dict_merge2(nodes.node_res_obj.DAV_M_NS, { "http://calendarserver.org/ns/" : '_get_dav', } ) - def _file_get(self,cr, nodename=False): + def _file_get(self, cr, nodename=False): return [] def _child_get(self, cr, name=False, parent_id=False, domain=None): @@ -181,7 +181,7 @@ class node_calendar(nodes.node_class): http_options = { 'DAV': ['calendar-access'] } - def __init__(self,path, parent, context, calendar): + def __init__(self, path, parent, context, calendar): super(node_calendar,self).__init__(path, parent,context) self.calendar_id = calendar.id self.mimetype = 'application/x-directory' @@ -271,7 +271,7 @@ class node_calendar(nodes.node_class): def children(self, cr, domain=None): return self._child_get(cr, domain=domain) - def child(self,cr, name, domain=None): + def child(self, cr, name, domain=None): res = self._child_get(cr, name, domain=domain) if res: return res[0] @@ -353,16 +353,16 @@ class node_calendar(nodes.node_class): return None - def set_data(self, cr, data, fil_obj = None): + def set_data(self, cr, data, fil_obj=None): uid = self.context.uid calendar_obj = self.context._dirobj.pool.get('basic.calendar') res = calendar_obj.import_cal(cr, uid, data, self.calendar_id) return res - def get_data_len(self, cr, fil_obj = None): + def get_data_len(self, cr, fil_obj=None): return self.content_length - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'calendar-%d' % (self.calendar_id,) def rmcol(self, cr): @@ -441,7 +441,7 @@ class res_node_calendar(nodes.node_class): http_options = { 'DAV': ['calendar-access'] } - def __init__(self,path, parent, context, res_obj, res_model=None, res_id=None): + def __init__(self, path, parent, context, res_obj, res_model=None, res_id=None): super(res_node_calendar,self).__init__(path, parent, context) self.mimetype = 'text/calendar' self.create_date = parent.create_date @@ -474,10 +474,10 @@ class res_node_calendar(nodes.node_class): def _get_caldav_calendar_data(self, cr): return self.get_data(cr) - def get_data_len(self, cr, fil_obj = None): + def get_data_len(self, cr, fil_obj=None): return self.content_length - def set_data(self, cr, data, fil_obj = None): + def set_data(self, cr, data, fil_obj=None): uid = self.context.uid context = self.context.context.copy() context.update(self.dctx) @@ -486,7 +486,7 @@ class res_node_calendar(nodes.node_class): res = calendar_obj.import_cal(cr, uid, data, self.calendar_id, context=context) return res - def _get_ttag(self,cr): + def _get_ttag(self, cr): res = False if self.model and self.res_id: res = '%s_%d' % (self.model, self.res_id) diff --git a/addons/claim_from_delivery/i18n/nl_BE.po b/addons/claim_from_delivery/i18n/nl_BE.po new file mode 100644 index 00000000000..51f4f9c276c --- /dev/null +++ b/addons/claim_from_delivery/i18n/nl_BE.po @@ -0,0 +1,23 @@ +# Dutch (Belgium) translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-10-01 11:24+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" +"Language-Team: Dutch (Belgium) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" + +#. module: claim_from_delivery +#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery +msgid "Claim" +msgstr "Klacht" diff --git a/addons/crm/crm.py b/addons/crm/crm.py index cca195a1539..d5f5b2511d1 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -58,7 +58,7 @@ class crm_case_channel(osv.osv): class crm_case_stage(osv.osv): """ Model for case stages. This models the main stages of a document - management flow. Main CRM objects (leads, opportunities, project + management flow. Main CRM objects (leads, opportunities, project issues, ...) will now use only stages, instead of state and stages. Stages are for example used to display the kanban view of records. """ @@ -126,11 +126,11 @@ class crm_case_section(osv.osv): 'note': fields.text('Description'), 'working_hours': fields.float('Working Hours', digits=(16,2 )), 'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'), - 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True, + 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True, help="The email address associated with this team. New emails received will automatically " "create new leads assigned to the team."), } - + def _get_stage_common(self, cr, uid, context): ids = self.pool.get('crm.case.stage').search(cr, uid, [('case_default','=',1)], context=context) return ids @@ -165,12 +165,12 @@ class crm_case_section(osv.osv): name = record['parent_id'][1] + ' / ' + name res.append((record['id'], name)) return res - + def create(self, cr, uid, vals, context=None): mail_alias = self.pool.get('mail.alias') if not vals.get('alias_id'): vals.pop('alias_name', None) # prevent errors during copy() - alias_id = mail_alias.create_unique_alias(cr, uid, + alias_id = mail_alias.create_unique_alias(cr, uid, {'alias_name': vals['name']}, model_name="crm.lead", context=context) @@ -178,7 +178,7 @@ class crm_case_section(osv.osv): res = super(crm_case_section, self).create(cr, uid, vals, context) mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'section_id': res, 'type':'lead'}}, context) return res - + def unlink(self, cr, uid, ids, context=None): # Cascade-delete mail aliases as well, as they should not exist without the sales team. mail_alias = self.pool.get('mail.alias') @@ -217,7 +217,6 @@ class crm_case_resource_type(osv.osv): 'section_id': fields.many2one('crm.case.section', 'Sales Team'), } - def _links_get(self, cr, uid, context=None): """Gets links value for reference field""" obj = self.pool.get('res.request.link') diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index d668ea710c1..7e33f397e8a 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -311,7 +311,6 @@ class crm_lead(base_stage, format_address, osv.osv): } return {'value' : values} - def _check(self, cr, uid, ids=False, context=None): """ Override of the base.stage method. Function called by the scheduler to process cases for date actions @@ -801,7 +800,7 @@ class crm_lead(base_stage, format_address, osv.osv): if section_id: vals.setdefault('message_follower_ids', []) vals['message_follower_ids'] += [(4, follower.id) for follower in section_id.message_follower_ids] - return super(crm_lead,self).write(cr, uid, ids, vals, context) + return super(crm_lead,self).write(cr, uid, ids, vals, context) # ---------------------------------------- # Mail Gateway diff --git a/addons/crm/i18n/nl_BE.po b/addons/crm/i18n/nl_BE.po index 1c2847856a0..3be96ce5a7d 100644 --- a/addons/crm/i18n/nl_BE.po +++ b/addons/crm/i18n/nl_BE.po @@ -1,178 +1,179 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * crm -# +# * crm +# Els Van Vossel , 2012. msgid "" msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2009-04-10 09:40+0000\n" -"Last-Translator: Fabien (Open ERP) \n" -"Language-Team: \n" +"PO-Revision-Date: 2012-10-01 17:09+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" +"Language-Team: Els Van Vossel\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:06+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" +"Language: nl\n" #. module: crm #: view:crm.lead.report:0 msgid "# Leads" -msgstr "" +msgstr "# Leads" #. module: crm #: view:crm.lead:0 selection:crm.lead,type:0 view:crm.lead.report:0 #: selection:crm.lead.report,type:0 msgid "Lead" -msgstr "" +msgstr "Lead" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor3 msgid "Need Services" -msgstr "" +msgstr "Heeft diensten nodig" #. module: crm #: selection:crm.meeting,rrule_type:0 msgid "Monthly" -msgstr "" +msgstr "Maandelijks" #. module: crm #: model:ir.model,name:crm.model_crm_case_stage msgid "Stage of case" -msgstr "" +msgstr "Fase van zaak" #. module: crm #: view:crm.meeting:0 msgid "Visibility" -msgstr "" +msgstr "Zichtbaarheid" #. module: crm #: field:crm.lead,title:0 msgid "Title" -msgstr "" +msgstr "Titel" #. module: crm #: field:crm.meeting,show_as:0 msgid "Show as" -msgstr "" +msgstr "Weergeven als" #. module: crm #: field:crm.meeting,day:0 selection:crm.meeting,select1:0 msgid "Date of month" -msgstr "" +msgstr "Dag van de maand" #. module: crm #: view:crm.lead:0 view:crm.phonecall:0 msgid "Today" -msgstr "" +msgstr "Vandaag" #. module: crm #: view:crm.lead2opportunity.partner:0 view:crm.merge.opportunity:0 msgid "Select Opportunities" -msgstr "" +msgstr "Opportuniteiten kiezen" #. module: crm #: view:crm.meeting:0 view:crm.phonecall2opportunity:0 #: view:crm.phonecall2phonecall:0 msgid " " -msgstr "" +msgstr " " #. module: crm #: view:crm.lead.report:0 field:crm.phonecall.report,delay_close:0 msgid "Delay to close" -msgstr "" +msgstr "Dagen tot afsluiten" #. module: crm #: view:crm.lead:0 msgid "Previous Stage" -msgstr "" +msgstr "Vorige fase" #. module: crm #: code:addons/crm/wizard/crm_add_note.py:28 #, python-format msgid "Can not add note!" -msgstr "" +msgstr "Kan geen notitie toevoegen" #. module: crm #: field:crm.case.stage,name:0 msgid "Stage Name" -msgstr "" +msgstr "Fasenaam" #. module: crm #: model:ir.model,name:crm.model_crm_lead_report msgid "CRM Lead Analysis" -msgstr "" +msgstr "Analyse CRM Leads" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 #: field:crm.phonecall.report,day:0 msgid "Day" -msgstr "" +msgstr "Dag" #. module: crm #: sql_constraint:crm.case.section:0 msgid "The code of the sales team must be unique !" -msgstr "" +msgstr "De code van het verkoopteam moet uniek zijn" #. module: crm #: code:addons/crm/crm_lead.py:553 #, python-format msgid "Lead '%s' has been converted to an opportunity." -msgstr "" +msgstr "Lead '%s' is omgezet naar een opportuniteit." #. module: crm #: code:addons/crm/crm_lead.py:294 #, python-format msgid "The lead '%s' has been closed." -msgstr "" +msgstr "Lead '%s' is gesloten." #. module: crm #: view:crm.lead.report:0 msgid "Exp. Closing" -msgstr "" +msgstr "Verw. sluiting" #. module: crm #: selection:crm.meeting,rrule_type:0 msgid "Yearly" -msgstr "" +msgstr "Jaarlijks" #. module: crm #: help:crm.lead.report,creation_day:0 msgid "Creation day" -msgstr "" +msgstr "Creatiedatum" #. module: crm #: field:crm.segmentation.line,name:0 msgid "Rule Name" -msgstr "" +msgstr "Regelnaam" #. module: crm #: view:crm.case.section:0 msgid "Configuration" -msgstr "" +msgstr "Instellingen" #. module: crm #: view:crm.case.resource.type:0 view:crm.lead:0 field:crm.lead,type_id:0 #: view:crm.lead.report:0 field:crm.lead.report,type_id:0 #: model:ir.model,name:crm.model_crm_case_resource_type msgid "Campaign" -msgstr "" +msgstr "Campagne" #. module: crm #: view:crm.lead:0 msgid "Search Opportunities" -msgstr "" +msgstr "Opportuniteiten zoeken" #. module: crm #: help:crm.lead.report,deadline_month:0 msgid "Expected closing month" -msgstr "" +msgstr "Verwachte afsluitmaand" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Assigned Opportunities to" -msgstr "" +msgstr "Opportuniteiten toegewezen aan" #. module: crm #: view:crm.lead:0 field:crm.lead,partner_id:0 view:crm.lead.report:0 @@ -190,41 +191,41 @@ msgstr "" #: model:ir.model,name:crm.model_res_partner #: model:process.node,name:crm.process_node_partner0 msgid "Partner" -msgstr "" +msgstr "Relatie" #. module: crm #: field:crm.meeting,organizer:0 field:crm.meeting,organizer_id:0 msgid "Organizer" -msgstr "" +msgstr "Organisator" #. module: crm #: view:crm.phonecall:0 #: model:ir.actions.act_window,name:crm.phonecall_to_phonecall_act msgid "Schedule Other Call" -msgstr "" +msgstr "Nog een gesprek plannen" #. module: crm #: code:addons/crm/crm_phonecall.py:216 #: model:crm.case.categ,name:crm.categ_meet3 view:crm.phonecall:0 #, python-format msgid "Phone Call" -msgstr "" +msgstr "Telefoongesprek" #. module: crm #: field:crm.lead,optout:0 msgid "Opt-Out" -msgstr "" +msgstr "Uitschrijven" #. module: crm #: field:crm.meeting,end_type:0 msgid "Recurrence termination" -msgstr "" +msgstr "Einde recurrentie" #. module: crm #: code:addons/crm/crm_lead.py:323 #, python-format msgid "The opportunity '%s' has been marked as lost." -msgstr "" +msgstr "Opportuniteit '%s' is als verloren ingesteld." #. module: crm #: model:ir.actions.act_window,help:crm.action_report_crm_lead @@ -234,49 +235,52 @@ msgid "" "sort out your leads analysis by different groups to get accurate grained " "analysis." msgstr "" +"Met de leadsanalyse kunt u CRM-informatie opvolgen, zoals de " +"behandelingstermijn, het aantal antwoorden en de verzonden e-mails. U kunt " +"uw leadsanalyse sorteren volgens diverse groepen voor een accurate analyse." #. module: crm #: view:crm.lead:0 msgid "Send New Email" -msgstr "" +msgstr "Nieuwe mail versturen" #. module: crm #: field:crm.segmentation,segmentation_line:0 msgid "Criteria" -msgstr "" +msgstr "Criteria" #. module: crm #: view:crm.segmentation:0 msgid "Excluded Answers :" -msgstr "" +msgstr "Uitgesloten antwoorden:" #. module: crm #: field:crm.case.stage,section_ids:0 msgid "Sections" -msgstr "" +msgstr "Secties" #. module: crm #: view:crm.merge.opportunity:0 msgid "_Merge" -msgstr "" +msgstr "_Samenvoegen" #. module: crm #: view:crm.lead.report:0 #: model:ir.actions.act_window,name:crm.action_report_crm_lead #: model:ir.ui.menu,name:crm.menu_report_crm_leads_tree msgid "Leads Analysis" -msgstr "" +msgstr "Leadanalyse" #. module: crm #: selection:crm.meeting,class:0 msgid "Public" -msgstr "" +msgstr "Openbaar" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_resource_type_act #: model:ir.ui.menu,name:crm.menu_crm_case_resource_type_act msgid "Campaigns" -msgstr "" +msgstr "Campagnes" #. module: crm #: view:crm.lead:0 field:crm.lead,state:0 view:crm.lead.report:0 @@ -284,19 +288,19 @@ msgstr "" #: field:crm.phonecall,state:0 view:crm.phonecall.report:0 #: field:crm.phonecall.report,state:0 msgid "State" -msgstr "" +msgstr "Status" #. module: crm #: model:ir.actions.act_window,name:crm.crm_lead_categ_action #: model:ir.ui.menu,name:crm.menu_crm_case_phonecall-act #: model:ir.ui.menu,name:crm.menu_crm_lead_categ msgid "Categories" -msgstr "" +msgstr "Categorieën" #. module: crm #: view:crm.lead:0 msgid "Dates" -msgstr "" +msgstr "Datums" #. module: crm #: help:crm.lead,optout:0 @@ -304,22 +308,24 @@ msgid "" "If opt-out is checked, this contact has refused to receive emails or " "unsubscribed to a campaign." msgstr "" +"Als uitschrijven is aangevinkt, wil deze contactpersoon niet langer mails " +"krijgen, of hij heeft zich uitgeschreven van een campagne." #. module: crm #: model:process.transition,name:crm.process_transition_leadpartner0 msgid "Prospect Partner" -msgstr "" +msgstr "Prospectrelatie" #. module: crm #: code:addons/crm/crm_lead.py:735 #, python-format msgid "No Subject" -msgstr "" +msgstr "Geen onderwerp" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead6 msgid "Google Adwords 2" -msgstr "" +msgstr "Google Adwords 2" #. module: crm #: selection:crm.lead2opportunity.partner,action:0 @@ -327,7 +333,7 @@ msgstr "" #: selection:crm.lead2partner,action:0 #: selection:crm.phonecall2partner,action:0 msgid "Link to an existing partner" -msgstr "" +msgstr "Koppelen aan een bestaande relatie" #. module: crm #: view:crm.lead:0 field:crm.lead,contact_id:0 view:crm.meeting:0 @@ -335,74 +341,74 @@ msgstr "" #: field:crm.phonecall,partner_contact:0 #: field:crm.phonecall2phonecall,contact_name:0 msgid "Contact" -msgstr "" +msgstr "Contactpersoon" #. module: crm #: view:crm.meeting:0 msgid "Delegate" -msgstr "" +msgstr "Delegeren" #. module: crm #: selection:crm.segmentation.line,expr_operator:0 msgid "=" -msgstr "" +msgstr "=" #. module: crm #: field:base.action.rule,regex_history:0 msgid "Regular Expression on Case History" -msgstr "" +msgstr "Expressie op historiek van zaak" #. module: crm #: code:addons/crm/crm_lead.py:274 #, python-format msgid "The lead '%s' has been opened." -msgstr "" +msgstr "Lead '%s' is geopend." #. module: crm #: model:process.transition,name:crm.process_transition_opportunitymeeting0 msgid "Opportunity Meeting" -msgstr "" +msgstr "Vergadering voor opportuniteit" #. module: crm #: help:crm.lead.report,delay_close:0 help:crm.phonecall.report,delay_close:0 msgid "Number of Days to close the case" -msgstr "" +msgstr "Aantal dagen tot afsluiten van zaak" #. module: crm #: model:process.node,note:crm.process_node_opportunities0 msgid "When a real project/opportunity is detected" -msgstr "" +msgstr "Als een project/opportuniteit reëel wordt" #. module: crm #: view:res.partner:0 field:res.partner,opportunity_ids:0 msgid "Leads and Opportunities" -msgstr "" +msgstr "Leads en opportuniteiten" #. module: crm #: view:crm.lead:0 msgid "Communication" -msgstr "" +msgstr "Communicatie" #. module: crm #: selection:crm.meeting,week_list:0 msgid "Tuesday" -msgstr "" +msgstr "Dinsdag" #. module: crm #: field:crm.lead,write_date:0 msgid "Update Date" -msgstr "" +msgstr "Bijwerkingsdatum" #. module: crm #: field:crm.case.section,user_id:0 msgid "Team Leader" -msgstr "" +msgstr "Teamleider" #. module: crm #: field:crm.lead2opportunity.partner,name:0 #: field:crm.lead2opportunity.partner.mass,name:0 msgid "Select Action" -msgstr "" +msgstr "Actie selecteren" #. module: crm #: help:crm.case.stage,probability:0 @@ -410,6 +416,8 @@ msgid "" "This percentage depicts the default/average probability of the Case for this " "stage to be a success" msgstr "" +"Dit percentage drukt de standaard/gemiddelde slaagkans uit voor de zaak in " +"deze fase." #. module: crm #: field:base.action.rule,trg_categ_id:0 view:crm.lead:0 @@ -419,22 +427,22 @@ msgstr "" #: field:crm.phonecall.report,categ_id:0 #: field:crm.phonecall2phonecall,categ_id:0 msgid "Category" -msgstr "" +msgstr "Categorie" #. module: crm #: view:crm.lead:0 msgid "Opportunity / Customer" -msgstr "" +msgstr "Opportuniteit / klant" #. module: crm #: view:crm.lead.report:0 msgid "#Opportunities" -msgstr "" +msgstr "#Opportuniteiten" #. module: crm #: view:crm.meeting:0 msgid "Privacy" -msgstr "" +msgstr "Privacy" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_stage_form_installer @@ -446,120 +454,126 @@ msgid "" "Revenue\" and the \"Expected Closing Date.\" You should also have a look at " "the tooltip of the field \"Change Probability Automatically\"." msgstr "" +"Met fasen kunnen verkopers vlot opvolgen waar een specifieke opportuniteit " +"zich bevindt in de verkoopcyclus. Om uw verkooppijplijn efficiënt te kunnen " +"opvolgen, moet u de voorwaarden voor het doorgaan naar de volgende fase " +"eenduidig vastleggen. Voorbeeld: een opportuniteit komt op 'Gekwalificeerd' " +"wanneer \"Verwachte opbrengst\" en \"Verwachte afsluitdatum\" zijn ingevuld. " +"Lees ook eens de tip bij het veld \"Kans automatisch bijwerken\"." #. module: crm #: view:crm.lead.report:0 msgid "Opportunity Analysis" -msgstr "" +msgstr "Opportuniteitenanalyse" #. module: crm #: help:crm.meeting,location:0 msgid "Location of Event" -msgstr "" +msgstr "Plaats van de gebeurtenis" #. module: crm #: field:crm.meeting,rrule:0 msgid "Recurrent Rule" -msgstr "" +msgstr "Recurrente regel" #. module: crm #: model:process.transition,note:crm.process_transition_opportunitymeeting0 msgid "Normal or phone meeting for opportunity" -msgstr "" +msgstr "Gewone of telefonische vergadering over opportuniteit" #. module: crm #: view:crm.case.section:0 msgid "Mail Gateway" -msgstr "" +msgstr "Mailgateway" #. module: crm #: model:process.node,note:crm.process_node_leads0 msgid "Very first contact with new prospect" -msgstr "" +msgstr "Allereerste contact met een nieuwe prospect" #. module: crm #: view:crm.lead2opportunity.partner:0 view:crm.partner2opportunity:0 #: model:ir.actions.act_window,name:crm.action_view_crm_partner2opportunity #: model:ir.actions.act_window,name:crm.crm_partner2opportunity msgid "Create Opportunity" -msgstr "" +msgstr "Opportuniteit maken" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "August" -msgstr "" +msgstr "Augustus" #. module: crm #: code:addons/crm/crm.py:433 view:crm.lead:0 view:res.partner:0 #, python-format msgid "Escalate" -msgstr "" +msgstr "Escaleren" #. module: crm #: view:crm.lead:0 msgid "Mailings" -msgstr "" +msgstr "Mailings" #. module: crm #: view:crm.phonecall:0 msgid "To Do" -msgstr "" +msgstr "Nog te doen" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "June" -msgstr "" +msgstr "Juni" #. module: crm #: selection:crm.segmentation,state:0 msgid "Not Running" -msgstr "" +msgstr "Niet actief" #. module: crm #: field:crm.lead,email:0 msgid "E-Mail" -msgstr "" +msgstr "E-mail" #. module: crm #: view:crm.phonecall:0 msgid "Phonecalls during last 7 days" -msgstr "" +msgstr "Telefoongesprekken van de afgelopen 7 dagen" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "October" -msgstr "" +msgstr "Oktober" #. module: crm #: view:crm.segmentation:0 msgid "Included Answers :" -msgstr "" +msgstr "Inbegrepen antwoorden:" #. module: crm #: help:crm.meeting,email_from:0 help:crm.phonecall,email_from:0 msgid "These people will receive email." -msgstr "" +msgstr "Deze mensen zullen een e-mail krijgen." #. module: crm #: view:crm.meeting:0 field:crm.meeting,name:0 msgid "Summary" -msgstr "" +msgstr "Samenvatting" #. module: crm #: view:crm.segmentation:0 msgid "State of Mind Computation" -msgstr "" +msgstr "Berekening humeur" #. module: crm #: view:crm.case.categ:0 msgid "Case Category" -msgstr "" +msgstr "Zaakcategorie" #. module: crm #: help:crm.segmentation,som_interval_default:0 @@ -567,36 +581,38 @@ msgid "" "Default state of mind for period preceeding the 'Max Interval' computation. " "This is the starting state of mind by default if the partner has no event." msgstr "" +"Standaardhumeur voor de periode vóór de berekening van 'Max. interval'. Dit " +"is het beginhumeur als er voor de relatie geen gebeurtenis is." #. module: crm #: field:crm.lead,partner_address_name:0 msgid "Partner Contact Name" -msgstr "" +msgstr "Contactpersoon relatie" #. module: crm #: selection:crm.meeting,end_type:0 msgid "End date" -msgstr "" +msgstr "Einddatum" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Schedule/Log a Call" -msgstr "" +msgstr "Een gesprek plannen/noteren" #. module: crm #: constraint:base.action.rule:0 msgid "Error: The mail is not well formated" -msgstr "" +msgstr "Fout: de mail heeft het verkeerde formaat." #. module: crm #: view:crm.segmentation:0 msgid "Profiling Options" -msgstr "" +msgstr "Profileringsopties" #. module: crm #: view:crm.phonecall.report:0 msgid "#Phone calls" -msgstr "" +msgstr "#Telefoongesprekken" #. module: crm #: help:crm.segmentation,categ_id:0 @@ -604,17 +620,19 @@ msgid "" "The partner category that will be added to partners that match the " "segmentation criterions after computation." msgstr "" +"De relatiecategorie die wordt toegewezen aan relaties die voldoen aan de " +"segmenteringscriteria." #. module: crm #: code:addons/crm/crm_meeting.py:93 #, python-format msgid "The meeting '%s' has been confirmed." -msgstr "" +msgstr "Vergadering '%s' is bevestigd." #. module: crm #: selection:crm.add.note,state:0 selection:crm.lead,state:0 msgid "In Progress" -msgstr "" +msgstr "Lopende" #. module: crm #: help:crm.case.section,reply_to:0 @@ -622,27 +640,29 @@ msgid "" "The email address put in the 'Reply-To' of all emails sent by OpenERP about " "cases in this sales team" msgstr "" +"Het e-mailadres in 'Antwoord naar' voor alle e-mails die door OpenERP voor " +"zaken van dit verkoopteam worden verstuurd." #. module: crm #: field:crm.lead.report,creation_month:0 msgid "Creation Month" -msgstr "" +msgstr "Creatiemaand" #. module: crm #: field:crm.case.section,resource_calendar_id:0 #: model:ir.ui.menu,name:crm.menu_action_resource_calendar_form msgid "Working Time" -msgstr "" +msgstr "Werkuren" #. module: crm #: view:crm.segmentation.line:0 msgid "Partner Segmentation Lines" -msgstr "" +msgstr "Relatiesegmenteringslijnen" #. module: crm #: view:crm.lead:0 view:crm.meeting:0 msgid "Details" -msgstr "" +msgstr "Details" #. module: crm #: help:crm.meeting,exrule:0 @@ -650,16 +670,18 @@ msgid "" "Defines a rule or repeating pattern of time to exclude from the recurring " "rule." msgstr "" +"Definieert een regel of een herhalend tijdspatroon die van de recurrente " +"regel moet worden uitgesloten." #. module: crm #: view:crm.lead:0 msgid "Leads Form" -msgstr "" +msgstr "Leadformulier" #. module: crm #: view:crm.segmentation:0 model:ir.model,name:crm.model_crm_segmentation msgid "Partner Segmentation" -msgstr "" +msgstr "Relatiesegmentering" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_categ_meet @@ -670,41 +692,46 @@ msgid "" "using the caldav interface.\n" " " msgstr "" +"De kalender van vergaderingen wordt door de verkoopteams gedeeld en is " +"volledig geïntegreerd met andere toepassingen zoals werknemersvakantie of " +"opportuniteiten. U kunt vergaderingen ook synchroniseren met uw gsm via de " +"caldav-interface.\n" +" " #. module: crm #: field:crm.lead2opportunity.partner.mass,user_ids:0 msgid "Salesmans" -msgstr "" +msgstr "Verkopers" #. module: crm #: field:crm.lead.report,probable_revenue:0 msgid "Probable Revenue" -msgstr "" +msgstr "Verwachte opbrengst" #. module: crm #: help:crm.lead.report,creation_month:0 msgid "Creation month" -msgstr "" +msgstr "Creatiemaand" #. module: crm #: help:crm.segmentation,name:0 msgid "The name of the segmentation." -msgstr "" +msgstr "Naam van de segmentering" #. module: crm #: field:crm.case.stage,probability:0 field:crm.lead,probability:0 msgid "Probability (%)" -msgstr "" +msgstr "Kans (%)" #. module: crm #: field:crm.lead,company_currency:0 msgid "Company Currency" -msgstr "" +msgstr "Firmamunt" #. module: crm #: view:crm.lead:0 msgid "Leads Generation" -msgstr "" +msgstr "Leads maken" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_section_view_form_installer @@ -715,6 +742,11 @@ msgid "" "opportunities, you can assign the following stage to the team: Territory, " "Qualified, Qualified Sponsors, Proposition, Negociaton, Won/Lost." msgstr "" +"Maak verkoopteams om uw verkooporganisatie te structureren en voeg " +"gebruikers toe aan elk team. Maak ook verkoopfasen per team/ Als u " +"technieken zoals Solutions Selling gebruikt, kunt u vb. de volgende fasen " +"aan een team toekennen: Territorium, Gekwalificeerd, Gekwalificeerde " +"sponsors, Voorstel, Onderhandeling, Gewonnen/Verloren." #. module: crm #: code:addons/crm/crm_lead.py:718 view:crm.lead:0 selection:crm.lead,type:0 @@ -722,42 +754,42 @@ msgstr "" #: field:crm.meeting,opportunity_id:0 #, python-format msgid "Opportunity" -msgstr "" +msgstr "Opportuniteit" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities created in last month" -msgstr "" +msgstr "Leads/opportuniteiten van de afgelopen maand" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead7 msgid "Television" -msgstr "" +msgstr "Televisie" #. module: crm #: view:crm.segmentation:0 msgid "Stop Process" -msgstr "" +msgstr "Verwerking stoppen" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 msgid "Month-1" -msgstr "" +msgstr "Maand-1" #. module: crm #: view:crm.phonecall:0 msgid "Search Phonecalls" -msgstr "" +msgstr "Telefoongesprekken zoeken" #. module: crm #: view:crm.lead2partner:0 view:crm.phonecall2partner:0 msgid "Continue" -msgstr "" +msgstr "Doorgaan" #. module: crm #: field:crm.segmentation,som_interval:0 msgid "Days per Period" -msgstr "" +msgstr "Dagen per periode" #. module: crm #: field:crm.meeting,byday:0 @@ -767,17 +799,17 @@ msgstr "" #. module: crm #: field:base.action.rule,act_section_id:0 msgid "Set Team to" -msgstr "" +msgstr "Team instellen op" #. module: crm #: view:calendar.attendee:0 field:calendar.attendee,categ_id:0 msgid "Event Type" -msgstr "" +msgstr "Gebeurtenistype" #. module: crm #: field:crm.segmentation,exclusif:0 msgid "Exclusive" -msgstr "" +msgstr "Exclusief" #. module: crm #: code:addons/crm/crm_lead.py:832 @@ -786,43 +818,45 @@ msgid "" "You cannot delete lead '%s'; it must be in state 'Draft' to be deleted. You " "should better cancel it, instead of deleting it." msgstr "" +"U kunt lead '%s' niet verwijderen; daarvoor moet de lead in status " +"'Voorlopig' staan. U kunt de lead beter annuleren." #. module: crm #: code:addons/crm/crm_lead.py:451 #, python-format msgid "From %s : %s" -msgstr "" +msgstr "Van %s : %s" #. module: crm #: field:crm.lead.report,creation_year:0 msgid "Creation Year" -msgstr "" +msgstr "Creatiejaar" #. module: crm #: field:crm.lead.report,create_date:0 #: field:crm.phonecall.report,create_date:0 msgid "Create Date" -msgstr "" +msgstr "Creatiedatum" #. module: crm #: field:crm.lead,ref2:0 msgid "Reference 2" -msgstr "" +msgstr "Referentie 2" #. module: crm #: view:crm.segmentation:0 msgid "Sales Purchase" -msgstr "" +msgstr "Aankoop/verkoop" #. module: crm #: help:crm.case.section,resource_calendar_id:0 msgid "Used to compute open days" -msgstr "" +msgstr "Dient om dagen geopend te berekenen" #. module: crm #: view:crm.lead:0 msgid "Schedule Meeting" -msgstr "" +msgstr "Vergadering beleggen" #. module: crm #: view:crm.case.stage:0 field:crm.case.stage,requirements:0 @@ -835,21 +869,23 @@ msgid "" "This property defines the list of date/time exceptions for a recurring " "calendar component." msgstr "" +"Met dit kenmerk definieert u de lijst van uitzonderingen qua datum/tijd voor " +"een recurrent kalenderonderdeel." #. module: crm #: view:crm.phonecall2opportunity:0 msgid "Convert To Opportunity " -msgstr "" +msgstr "Omzetten naar opportuniteit " #. module: crm #: help:crm.meeting,recurrency:0 msgid "Recurrent Meeting" -msgstr "" +msgstr "Recurrente vergadering" #. module: crm #: view:crm.phonecall:0 msgid "Unassigned Phonecalls" -msgstr "" +msgstr "Niet-toegewezen telefoongesprekken" #. module: crm #: view:crm.lead:0 field:crm.lead2opportunity.partner,opportunity_ids:0 @@ -859,45 +895,45 @@ msgstr "" #: model:ir.ui.menu,name:crm.menu_crm_case_opp #: model:process.node,name:crm.process_node_opportunities0 msgid "Opportunities" -msgstr "" +msgstr "Opportuniteiten" #. module: crm #: field:crm.segmentation,categ_id:0 msgid "Partner Category" -msgstr "" +msgstr "Relatiecategorie" #. module: crm #: view:crm.add.note:0 #: model:ir.actions.act_window,name:crm.action_crm_add_note msgid "Add Note" -msgstr "" +msgstr "Notitie toevoegen" #. module: crm #: field:crm.lead,is_supplier_add:0 msgid "Supplier" -msgstr "" +msgstr "Leverancier" #. module: crm #: view:crm.lead:0 msgid "Mark Won" -msgstr "" +msgstr "Als gewonnen markeren" #. module: crm #: selection:crm.segmentation.line,expr_name:0 msgid "Purchase Amount" -msgstr "" +msgstr "Aankoopbedrag" #. module: crm #: view:crm.lead:0 msgid "Mark Lost" -msgstr "" +msgstr "Als verloren markeren" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "March" -msgstr "" +msgstr "Maart" #. module: crm #: code:addons/crm/crm_lead.py:491 @@ -905,62 +941,62 @@ msgstr "" #: code:addons/crm/wizard/crm_lead_to_partner.py:47 #, python-format msgid "Warning !" -msgstr "" +msgstr "Waarschuwing" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls made in current year" -msgstr "" +msgstr "Telefoongesprekken van dit jaar" #. module: crm #: field:crm.lead,day_open:0 msgid "Days to Open" -msgstr "" +msgstr "Dagen tot openen" #. module: crm #: view:crm.meeting:0 msgid "Show Time as" -msgstr "" +msgstr "Tijd tonen als" #. module: crm #: view:crm.phonecall2partner:0 msgid "Create Partner" -msgstr "" +msgstr "Relatie maken" #. module: crm #: selection:crm.segmentation.line,expr_operator:0 msgid "<" -msgstr "" +msgstr "<" #. module: crm #: field:crm.lead,mobile:0 field:crm.phonecall,partner_mobile:0 msgid "Mobile" -msgstr "" +msgstr "Gsm" #. module: crm #: view:crm.lead:0 msgid "Next Stage" -msgstr "" +msgstr "Volgende fase" #. module: crm #: view:crm.meeting:0 msgid "My Meetings" -msgstr "" +msgstr "Mijn vergaderingen" #. module: crm #: view:crm.phonecall:0 msgid "Todays's Phonecalls" -msgstr "" +msgstr "Telefoongesprekken van vandaag" #. module: crm #: view:board.board:0 msgid "Statistics Dashboard" -msgstr "" +msgstr "Statistiekdashboard" #. module: crm #: field:crm.lead,ref:0 msgid "Reference" -msgstr "" +msgstr "Referentie" #. module: crm #: field:crm.lead,optin:0 @@ -977,7 +1013,7 @@ msgstr "" #: field:res.partner,meeting_ids:0 #, python-format msgid "Meetings" -msgstr "" +msgstr "Vergaderingen" #. module: crm #: field:crm.lead,date_action_next:0 field:crm.lead,title_action:0 @@ -988,12 +1024,12 @@ msgstr "" #. module: crm #: field:crm.meeting,end_date:0 msgid "Repeat Until" -msgstr "" +msgstr "Herhalen tot" #. module: crm #: field:crm.meeting,date_deadline:0 msgid "Deadline" -msgstr "" +msgstr "Deadline" #. module: crm #: help:crm.meeting,active:0 @@ -1001,32 +1037,34 @@ msgid "" "If the active field is set to true, it will allow you to hide the " "event alarm information without removing it." msgstr "" +"Als het veld Actief is ingeschakeld, kunt u de alarminfo verbergen zonder " +"dat u deze verwijdert." #. module: crm #: view:crm.lead:0 msgid "Change Color" -msgstr "" +msgstr "Kleur wijzigen" #. module: crm #: view:crm.segmentation:0 msgid "Partner Segmentations" -msgstr "" +msgstr "Relatiesegmenteringen" #. module: crm #: field:crm.meeting,user_id:0 view:crm.phonecall:0 #: field:crm.phonecall,user_id:0 view:res.partner:0 msgid "Responsible" -msgstr "" +msgstr "Verantwoordelijke" #. module: crm #: view:crm.lead.report:0 msgid "Show only opportunity" -msgstr "" +msgstr "Enkel opportuniteit tonen" #. module: crm #: view:res.partner:0 msgid "Previous" -msgstr "" +msgstr "Vorige" #. module: crm #: view:crm.lead:0 @@ -1036,52 +1074,52 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Statistics" -msgstr "" +msgstr "Statistieken" #. module: crm #: view:crm.meeting:0 msgid "From" -msgstr "" +msgstr "Van" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Convert into Opportunities" -msgstr "" +msgstr "Omzetten naar opportuniteit" #. module: crm #: view:crm.lead:0 msgid "Show Sales Team" -msgstr "" +msgstr "Verkoopteam tonen" #. module: crm #: view:res.partner:0 msgid "Next" -msgstr "" +msgstr "Volgende" #. module: crm #: view:crm.lead:0 msgid "Stage:" -msgstr "" +msgstr "Fase:" #. module: crm #: model:crm.case.stage,name:crm.stage_lead5 view:crm.lead:0 msgid "Won" -msgstr "" +msgstr "Gewonnen" #. module: crm #: field:crm.lead.report,delay_expected:0 msgid "Overpassed Deadline" -msgstr "" +msgstr "Deadline overschreden" #. module: crm #: model:crm.case.section,name:crm.section_sales_department msgid "Sales Department" -msgstr "" +msgstr "Verkoopafdeling" #. module: crm #: selection:crm.segmentation.line,expr_name:0 msgid "State of Mind" -msgstr "" +msgstr "Humeur" #. module: crm #: field:crm.lead,type:0 field:crm.lead.report,type:0 @@ -1092,70 +1130,70 @@ msgstr "" #. module: crm #: view:crm.segmentation:0 msgid "Compute Segmentation" -msgstr "" +msgstr "Segmentering berekenen" #. module: crm #: field:crm.case.stage,on_change:0 msgid "Change Probability Automatically" -msgstr "" +msgstr "Kans automatisch wijzigen" #. module: crm #: field:crm.lead,create_date:0 field:crm.meeting,create_date:0 #: view:crm.phonecall:0 field:crm.phonecall,create_date:0 #: field:crm.phonecall.report,creation_date:0 msgid "Creation Date" -msgstr "" +msgstr "Creatiedatum" #. module: crm #: view:board.board:0 msgid "My Opportunities" -msgstr "" +msgstr "Mijn opportuniteiten" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor5 msgid "Need a Website Design" -msgstr "" +msgstr "Heeft een websiteontwerp nodig" #. module: crm #: view:crm.phonecall.report:0 msgid "Year of call" -msgstr "" +msgstr "Jaar van telefoontje" #. module: crm #: field:crm.meeting,recurrent_uid:0 msgid "Recurrent ID" -msgstr "" +msgstr "Recurrente ID" #. module: crm #: view:crm.lead:0 view:crm.meeting:0 view:res.partner:0 msgid "Subject" -msgstr "" +msgstr "Onderwerp" #. module: crm #: field:crm.meeting,tu:0 msgid "Tue" -msgstr "" +msgstr "Din" #. module: crm #: view:crm.case.stage:0 view:crm.lead:0 field:crm.lead,stage_id:0 #: view:crm.lead.report:0 field:crm.lead.report,stage_id:0 msgid "Stage" -msgstr "" +msgstr "Fase" #. module: crm #: view:crm.lead:0 msgid "History Information" -msgstr "" +msgstr "Historiekinformatie" #. module: crm #: field:base.action.rule,act_mail_to_partner:0 msgid "Mail to Partner" -msgstr "" +msgstr "Mail naar relatie" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Call Details" -msgstr "" +msgstr "Details gesprek" #. module: crm #: field:crm.meeting,class:0 @@ -1165,22 +1203,24 @@ msgstr "" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Log call" -msgstr "" +msgstr "Gesprek noteren" #. module: crm #: help:crm.meeting,rrule_type:0 msgid "Let the event automatically repeat at that interval" msgstr "" +"Zorg ervoor dat de gebeurtenis automatisch wordt herhaald volgens dit " +"interval." #. module: crm #: view:base.action.rule:0 msgid "Condition Case Fields" -msgstr "" +msgstr "Voorwaardevelden" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls which are in pending state" -msgstr "" +msgstr "Telefoongesprekken in status Wachtend." #. module: crm #: view:crm.case.section:0 field:crm.case.section,stage_ids:0 @@ -1189,14 +1229,14 @@ msgstr "" #: model:ir.actions.act_window,name:crm.crm_lead_stage_act #: model:ir.ui.menu,name:crm.menu_crm_lead_stage_act msgid "Stages" -msgstr "" +msgstr "Fasen" #. module: crm #: field:crm.lead,planned_revenue:0 #: field:crm.partner2opportunity,planned_revenue:0 #: field:crm.phonecall2opportunity,planned_revenue:0 msgid "Expected Revenue" -msgstr "" +msgstr "Verwachte opbrengst" #. module: crm #: model:ir.actions.act_window,help:crm.crm_phonecall_categ_action @@ -1204,18 +1244,20 @@ msgid "" "Create specific phone call categories to better define the type of calls " "tracked in the system." msgstr "" +"Maak specifieke gesprekscategorieën zodat u vlot de verschillende soorten " +"gesprekken kunt opvolgen." #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "September" -msgstr "" +msgstr "September" #. module: crm #: field:crm.segmentation,partner_id:0 msgid "Max Partner ID processed" -msgstr "" +msgstr "Max. relatie-ID verwerkt" #. module: crm #: help:crm.case.stage,on_change:0 @@ -1223,38 +1265,39 @@ msgid "" "Setting this stage will change the probability automatically on the " "opportunity." msgstr "" +"Als u deze fase instelt, wijzigt de kans automatisch voor de opportuniteit." #. module: crm #: model:ir.actions.act_window,name:crm.action_report_crm_phonecall #: model:ir.ui.menu,name:crm.menu_report_crm_phonecalls_tree msgid "Phone Calls Analysis" -msgstr "" +msgstr "Analyse telefoongesprekken" #. module: crm #: field:crm.lead.report,opening_date:0 #: field:crm.phonecall.report,opening_date:0 msgid "Opening Date" -msgstr "" +msgstr "Startdatum" #. module: crm #: help:crm.phonecall,duration:0 msgid "Duration in Minutes" -msgstr "" +msgstr "Duur in minuten" #. module: crm #: field:crm.case.channel,name:0 msgid "Channel Name" -msgstr "" +msgstr "Kanaalnaam" #. module: crm #: field:crm.partner2opportunity,name:0 field:crm.phonecall2opportunity,name:0 msgid "Opportunity Name" -msgstr "" +msgstr "Opportuniteitnaam" #. module: crm #: help:crm.lead.report,deadline_day:0 msgid "Expected closing day" -msgstr "" +msgstr "Verwachte afsluitdatum" #. module: crm #: help:crm.case.section,active:0 @@ -1262,11 +1305,13 @@ msgid "" "If the active field is set to true, it will allow you to hide the sales team " "without removing it." msgstr "" +"Als het veld Actief is ingeschakeld, kunt u het verkoopteam verbergen zonder " +"dat u dit verwijdert." #. module: crm #: field:crm.lead,street2:0 msgid "Street2" -msgstr "" +msgstr "Straat 2" #. module: crm #: help:crm.case.stage,case_default:0 @@ -1274,31 +1319,33 @@ msgid "" "If you check this field, this stage will be proposed by default on each " "sales team. It will not assign this stage to existing teams." msgstr "" +"Als u dit veld aanvinkt, wordt de fase standaard voor elk verkoopteam " +"voorgesteld. De fase wordt niet toegewezen aan bestaande teams." #. module: crm #: field:crm.meeting,fr:0 msgid "Fri" -msgstr "" +msgstr "Vrij" #. module: crm #: model:ir.model,name:crm.model_crm_lead msgid "crm.lead" -msgstr "" +msgstr "Lead" #. module: crm #: field:crm.meeting,write_date:0 msgid "Write Date" -msgstr "" +msgstr "Schrijfdatum" #. module: crm #: view:crm.meeting:0 msgid "End of Recurrency" -msgstr "" +msgstr "Einde recurrentie" #. module: crm #: view:crm.meeting:0 msgid "Reminder" -msgstr "" +msgstr "Herinnering" #. module: crm #: help:crm.segmentation,sales_purchase_active:0 @@ -1306,16 +1353,18 @@ msgid "" "Check if you want to use this tab as part of the segmentation rule. If not " "checked, the criteria beneath will be ignored" msgstr "" +"Vink aan als u dit tabblad als onderdeel van een segmenteringsregel wilt " +"gebruiken. Zoniet worden onderstaande criteria genegeerd." #. module: crm #: help:crm.meeting,alarm_id:0 msgid "Set an alarm at this time, before the event occurs" -msgstr "" +msgstr "Stel een alarm in voordat de gebeurtenis plaatsvindt." #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner msgid "Schedule a Call" -msgstr "" +msgstr "Een gesprek plannen" #. module: crm #: view:crm.lead2partner:0 view:crm.phonecall:0 view:crm.phonecall2partner:0 @@ -1328,7 +1377,7 @@ msgstr "" #. module: crm #: field:crm.segmentation,state:0 msgid "Execution Status" -msgstr "" +msgstr "Uitvoeringsstatus" #. module: crm #: help:crm.phonecall,state:0 @@ -1341,16 +1390,24 @@ msgid "" " \n" "If the call needs to be done then the state is set to 'Not Held'." msgstr "" +"De status wordt op 'Uit te voeren' gezet als er een zaak wordt gemaakt. " +" \n" +"Als de zaak lopende is, wordt de status op 'Open' gezet. " +" \n" +"Als het gesprek is gevoerd, wordt de status op 'Uitgevoerd' gezet. " +" \n" +"Als het gesprek nog moet worden uitgevoerd, gaat de status naar 'Niet " +"uitgevoerd'." #. module: crm #: selection:crm.meeting,week_list:0 msgid "Monday" -msgstr "" +msgstr "Maandag" #. module: crm #: field:crm.lead,day_close:0 msgid "Days to Close" -msgstr "" +msgstr "Dagen tot afsluiten" #. module: crm #: field:crm.case.section,complete_name:0 @@ -1361,60 +1418,62 @@ msgstr "" #: code:addons/crm/crm_lead.py:296 #, python-format msgid "The case '%s' has been closed." -msgstr "" +msgstr "Zaak '%s' is gesloten." #. module: crm #: model:ir.model,name:crm.model_crm_partner2opportunity msgid "Partner To Opportunity" -msgstr "" +msgstr "Relatie naar opportuniteit" #. module: crm #: field:crm.meeting,date:0 field:crm.opportunity2phonecall,date:0 #: view:crm.phonecall:0 field:crm.phonecall,date:0 #: field:crm.phonecall2phonecall,date:0 view:res.partner:0 msgid "Date" -msgstr "" +msgstr "Datum" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 msgid "Extended Filters..." -msgstr "" +msgstr "Uitgebreide filters..." #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls which are in closed state" -msgstr "" +msgstr "Telefoongesprekken in status uitgevoerd." #. module: crm #: view:crm.phonecall.report:0 msgid "Search" -msgstr "" +msgstr "Zoeken" #. module: crm #: view:board.board:0 msgid "Opportunities by Categories" -msgstr "" +msgstr "Opportuniteiten per categorie" #. module: crm #: model:crm.case.section,name:crm.section_sales_marketing_department msgid "Sales Marketing Department" -msgstr "" +msgstr "Afdeling Sales & Marketing" #. module: crm #: view:crm.phonecall.report:0 msgid "Date of call" -msgstr "" +msgstr "Datum van gesprek" #. module: crm #: help:crm.lead,section_id:0 msgid "" "When sending mails, the default email address is taken from the sales team." msgstr "" +"E-mails worden verzonden naar het standaardmailadres van het verkoopteam." #. module: crm #: view:crm.meeting:0 msgid "Choose day in the month where repeat the meeting" msgstr "" +"Kies de dag van de maand waarop deze vergadering moet worden herhaald." #. module: crm #: view:crm.segmentation:0 @@ -1425,18 +1484,18 @@ msgstr "" #: view:crm.phonecall:0 #: model:ir.actions.act_window,name:crm.crm_case_categ_meet_create_partner msgid "Schedule a Meeting" -msgstr "" +msgstr "Een vergadering beleggen" #. module: crm #: code:addons/crm/crm_lead.py:431 #, python-format msgid "Merged opportunities" -msgstr "" +msgstr "Samengevoegde opportuniteiten" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_section_view_form_installer msgid "Define Sales Team" -msgstr "" +msgstr "Verkoopteam instellen" #. module: crm #: model:ir.actions.act_window,help:crm.crm_segmentation_tree-act @@ -1445,26 +1504,29 @@ msgid "" "better manage your interactions with them. The segmentation tool is able to " "assign categories to partners according to criteria you set." msgstr "" +"Maak specifieke relatiecategorieën die u aan relaties kunt toekennen voor " +"een betere interactie. De segmenteringstool kan automatisch categorieën " +"toewijzen aan relaties op basis van door u ingestelde criteria." #. module: crm #: field:crm.case.section,code:0 msgid "Code" -msgstr "" +msgstr "Code" #. module: crm #: field:crm.case.section,child_ids:0 msgid "Child Teams" -msgstr "" +msgstr "Onderliggende teams" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls which are in draft and open state" -msgstr "" +msgstr "Telefoongesprekken in status Uit te voeren en Open." #. module: crm #: model:crm.case.resource.type,name:crm.type_lead1 msgid "Telesales" -msgstr "" +msgstr "Televerkoop" #. module: crm #: view:crm.lead:0 @@ -1484,47 +1546,49 @@ msgstr "" #. module: crm #: model:ir.model,name:crm.model_res_users msgid "res.users" -msgstr "" +msgstr "res.users" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in pending state" -msgstr "" +msgstr "Leads/opportuniteiten in status Wachtend." #. module: crm #: model:ir.model,name:crm.model_crm_merge_opportunity msgid "Merge two Opportunities" -msgstr "" +msgstr "Twee opportuniteiten samenvoegen" #. module: crm #: field:crm.meeting,exrule:0 msgid "Exception Rule" -msgstr "" +msgstr "Uitzonderingsregel" #. module: crm #: help:base.action.rule,act_mail_to_partner:0 msgid "Check this if you want the rule to send an email to the partner." msgstr "" +"Schakel dit in als u wilt dat met deze regel een e-mail naar de relatie " +"wordt verstuurd." #. module: crm #: field:crm.phonecall,opportunity_id:0 msgid "Lead/Opportunity" -msgstr "" +msgstr "Lead/opportuniteit" #. module: crm #: view:crm.lead:0 msgid "Mail" -msgstr "" +msgstr "E-mail" #. module: crm #: model:ir.actions.act_window,name:crm.crm_phonecall_categ_action msgid "Phonecall Categories" -msgstr "" +msgstr "Telefooncategorieën" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in open state" -msgstr "" +msgstr "Leads/opportuniteiten in status Open." #. module: crm #: model:ir.actions.act_window,name:crm.act_oppor_categ @@ -1537,43 +1601,45 @@ msgid "" "The name of the future partner that will be created while converting the " "lead into opportunity" msgstr "" +"De naam van de toekomstige relatie die zal worden gemaakt als van de lead " +"een opportuniteit wordt gemaakt." #. module: crm #: constraint:crm.case.section:0 msgid "Error ! You cannot create recursive Sales team." -msgstr "" +msgstr "U kunt niet dezelfde verkoopteams maken." #. module: crm #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Log a call" -msgstr "" +msgstr "Gesprek noteren" #. module: crm #: selection:crm.lead2opportunity.partner,action:0 #: selection:crm.lead2opportunity.partner.mass,action:0 msgid "Do not link to a partner" -msgstr "" +msgstr "Geen relatie koppelen" #. module: crm #: view:crm.meeting:0 msgid "Search Meetings" -msgstr "" +msgstr "Vergaderingen zoeken" #. module: crm #: selection:crm.segmentation.line,expr_name:0 msgid "Sale Amount" -msgstr "" +msgstr "Verkoopbedrag" #. module: crm #: view:crm.meeting:0 msgid "Choose day where repeat the meeting" -msgstr "" +msgstr "Kies de dag waarop deze vergadering moet worden herhaald." #. module: crm #: selection:crm.meeting,state:0 msgid "Unconfirmed" -msgstr "" +msgstr "Niet bevestigd" #. module: crm #: model:ir.actions.act_window,help:crm.action_report_crm_opportunity @@ -1584,6 +1650,10 @@ msgid "" "mainly used by the sales manager in order to do the periodic review with the " "teams of the sales pipeline." msgstr "" +"Met de Opportuniteitenanalyse krijgt u info zoals verwachte opbrengst, " +"geplande kosten, overschreden deadlines of het aantal interacties per " +"opportuniteit. Dit rapport wordt meestal door de sales manager gebruikt om " +"periodiek de verkooppijplijn door te nemen met de teams." #. module: crm #: field:crm.case.categ,name:0 field:crm.lead,name:0 @@ -1594,7 +1664,7 @@ msgstr "" #. module: crm #: field:crm.meeting,alarm_id:0 field:crm.meeting,base_calendar_alarm_id:0 msgid "Alarm" -msgstr "" +msgstr "Herinnering" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_stage_act @@ -1603,48 +1673,51 @@ msgid "" "organise their sales pipeline. Stages will allow them to easily track how a " "specific lead or opportunity is positioned in the sales cycle." msgstr "" +"Voeg specifieke fasen toe aan leads en opportuniteiten waarmee uw verkopers " +"hun pijplijn beter kunnen organiseren. Met fasen kan vlot worden opgevolgd " +"waar een bepaalde lead of opportuniteit zich bevindt in de verkoopcyclus." #. module: crm #: model:ir.actions.act_window,name:crm.action_crm_send_mass_convert msgid "Convert opportunities" -msgstr "" +msgstr "Opportuniteiten omzetten" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 msgid "My Case(s)" -msgstr "" +msgstr "Mijn zaken" #. module: crm #: field:crm.lead,birthdate:0 msgid "Birthdate" -msgstr "" +msgstr "Geboortedatum" #. module: crm #: view:crm.meeting:0 msgid "The" -msgstr "" +msgstr "De" #. module: crm #: view:crm.lead:0 view:crm.phonecall:0 msgid "Creation" -msgstr "" +msgstr "Creatie" #. module: crm #: selection:crm.lead,priority:0 selection:crm.lead.report,priority:0 #: selection:crm.phonecall,priority:0 #: selection:crm.phonecall.report,priority:0 msgid "High" -msgstr "" +msgstr "Hoog" #. module: crm #: model:process.node,note:crm.process_node_partner0 msgid "Convert to prospect to business partner" -msgstr "" +msgstr "Prospect omzetten naar relatie" #. module: crm #: view:crm.meeting:0 msgid "Meeting / Partner" -msgstr "" +msgstr "Vergadering / relatie" #. module: crm #: view:crm.phonecall2opportunity:0 @@ -1658,6 +1731,9 @@ msgid "" "sent/to be sent to your colleagues/partners. You can not only invite OpenERP " "users, but also external parties, such as a customer." msgstr "" +"Met uitnodigingen kunt u vergaderingen beleggen met uw collega's / relaties " +"en de aanwezigheden opvolgen. U kunt niet alleen OpenERP-gebruikers " +"uitnodigen, maar ook externe partijen, zoals een klant." #. module: crm #: selection:crm.meeting,week_list:0 @@ -1667,164 +1743,165 @@ msgstr "" #. module: crm #: selection:crm.meeting,byday:0 msgid "Fifth" -msgstr "" +msgstr "Vijfde" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in done state" -msgstr "" +msgstr "Leads/opportuniteiten in status Gereed." #. module: crm #: field:crm.lead.report,delay_close:0 msgid "Delay to Close" -msgstr "" +msgstr "Dagen tot afsluiten" #. module: crm #: field:crm.meeting,we:0 msgid "Wed" -msgstr "" +msgstr "Woe" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor6 msgid "Potential Reseller" -msgstr "" +msgstr "Mogelijke reseller" #. module: crm #: help:crm.case.section,change_responsible:0 msgid "" "When escalating to this team override the saleman with the team leader." msgstr "" +"Bij escaleren naar dit team, wordt de verkoper vervangen door de teamleider." #. module: crm #: field:crm.lead.report,planned_revenue:0 msgid "Planned Revenue" -msgstr "" +msgstr "Geplande opbrengst" #. module: crm #: view:crm.lead:0 view:crm.lead.report:0 view:crm.phonecall:0 #: view:crm.phonecall.report:0 msgid "Group By..." -msgstr "" +msgstr "Groeperen op..." #. module: crm #: help:crm.lead,partner_id:0 msgid "Optional linked partner, usually after conversion of the lead" -msgstr "" +msgstr "Optionele gekoppelde relatie, doorgaans na omzetting van de lead" #. module: crm #: view:crm.meeting:0 msgid "Invitation details" -msgstr "" +msgstr "Details uitnodiging" #. module: crm #: field:crm.case.section,parent_id:0 msgid "Parent Team" -msgstr "" +msgstr "Hoofdteam" #. module: crm #: field:crm.lead,date_action:0 msgid "Next Action Date" -msgstr "" +msgstr "Volgende actiedatum" #. module: crm #: selection:crm.segmentation,state:0 msgid "Running" -msgstr "" +msgstr "Lopend" #. module: crm #: field:crm.lead,zip:0 msgid "Zip" -msgstr "" +msgstr "Postcode" #. module: crm #: code:addons/crm/crm_lead.py:278 #, python-format msgid "The case '%s' has been opened." -msgstr "" +msgstr "Zaak '%s' is geopend." #. module: crm #: model:crm.case.categ,name:crm.categ_phone1 msgid "Inbound" -msgstr "" +msgstr "Inkomend" #. module: crm #: view:crm.phonecall.report:0 msgid "Month of call" -msgstr "" +msgstr "Maand van gesprek" #. module: crm #: view:crm.phonecall.report:0 #: model:ir.actions.act_window,name:crm.act_crm_opportunity_crm_phonecall_new msgid "Phone calls" -msgstr "" +msgstr "Telefoongesprekken" #. module: crm #: selection:crm.meeting,show_as:0 msgid "Free" -msgstr "" +msgstr "Vrij" #. module: crm #: field:crm.case.section,allow_unlink:0 msgid "Allow Delete" -msgstr "" +msgstr "Verwijderen toelaten" #. module: crm #: field:crm.meeting,mo:0 msgid "Mon" -msgstr "" +msgstr "Maa" #. module: crm #: selection:crm.lead,priority:0 selection:crm.lead.report,priority:0 #: selection:crm.phonecall,priority:0 #: selection:crm.phonecall.report,priority:0 msgid "Highest" -msgstr "" +msgstr "Hoogste" #. module: crm #: help:crm.lead.report,creation_year:0 msgid "Creation year" -msgstr "" +msgstr "Creatiejaar" #. module: crm #: view:crm.case.section:0 view:crm.lead:0 field:crm.lead,description:0 #: view:crm.opportunity2phonecall:0 msgid "Notes" -msgstr "" +msgstr "Opmerkingen" #. module: crm #: field:crm.segmentation.line,expr_value:0 msgid "Value" -msgstr "" +msgstr "Waarde" #. module: crm #: help:crm.lead,type:0 help:crm.lead.report,type:0 msgid "Type is used to separate Leads and Opportunities" -msgstr "" +msgstr "Type wordt gebruikt om leads van opportuniteiten te onderscheiden" #. module: crm #: view:crm.lead:0 view:crm.lead.report:0 msgid "Opportunity by Categories" -msgstr "" +msgstr "Opportuniteiten per categorie" #. module: crm #: view:crm.lead:0 field:crm.lead,partner_name:0 msgid "Customer Name" -msgstr "" +msgstr "Klantennaam" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall2opportunity msgid "Phonecall To Opportunity" -msgstr "" +msgstr "Telefoongesprek naar opportuniteit" #. module: crm #: field:crm.case.section,reply_to:0 msgid "Reply-To" -msgstr "" +msgstr "Antwoord aan" #. module: crm #: view:crm.case.section:0 msgid "Select Stages for this Sales Team" -msgstr "" +msgstr "Fasen voor verkoopteam kiezen" #. module: crm #: view:board.board:0 @@ -1834,22 +1911,22 @@ msgstr "" #. module: crm #: view:crm.meeting:0 msgid "Recurrency Option" -msgstr "" +msgstr "Recurrentieoptie" #. module: crm #: view:crm.lead:0 msgid "Lead / Customer" -msgstr "" +msgstr "Lead / klant" #. module: crm #: model:process.transition,note:crm.process_transition_leadpartner0 msgid "Prospect is converting to business partner" -msgstr "" +msgstr "Prospect wordt omgezet naar relatie" #. module: crm #: model:ir.actions.act_window,name:crm.phonecall2opportunity_act msgid "Convert To Opportunity" -msgstr "" +msgstr "Omzetten naar opportuniteit" #. module: crm #: view:crm.case.channel:0 @@ -1864,55 +1941,55 @@ msgstr "" #: view:crm.phonecall.report:0 selection:crm.phonecall.report,state:0 #: view:res.partner:0 msgid "Held" -msgstr "" +msgstr "Uitgevoerd" #. module: crm #: view:crm.lead:0 msgid "Reset to Draft" -msgstr "" +msgstr "Terug naar Voorlopig" #. module: crm #: view:crm.lead:0 msgid "Extra Info" -msgstr "" +msgstr "Extra informatie" #. module: crm #: view:crm.merge.opportunity:0 #: model:ir.actions.act_window,name:crm.action_merge_opportunities #: model:ir.actions.act_window,name:crm.merge_opportunity_act msgid "Merge Opportunities" -msgstr "" +msgstr "Opportuniteiten samenvoegen" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead5 msgid "Google Adwords" -msgstr "" +msgstr "Google Adwords" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall msgid "crm.phonecall" -msgstr "" +msgstr "Telefoongesprek" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead3 msgid "Mail Campaign 2" -msgstr "" +msgstr "Mailcampagne 2" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead2 msgid "Mail Campaign 1" -msgstr "" +msgstr "Mailcampagne 1" #. module: crm #: view:crm.lead:0 msgid "Create" -msgstr "" +msgstr "Maken" #. module: crm #: code:addons/crm/crm_lead.py:849 #, python-format msgid "Changed Stage to: %s" -msgstr "" +msgstr "Fase gewijzigd in: %s" #. module: crm #: view:crm.lead:0 field:crm.lead,priority:0 view:crm.lead.report:0 @@ -1924,38 +2001,38 @@ msgstr "" #. module: crm #: field:crm.segmentation,sales_purchase_active:0 msgid "Use The Sales Purchase Rules" -msgstr "" +msgstr "Gebruik de aankoop/verkoopregels" #. module: crm #: model:ir.model,name:crm.model_crm_lead2opportunity_partner msgid "Lead To Opportunity Partner" -msgstr "" +msgstr "Lead naar opportuniteit / relatie" #. module: crm #: field:crm.lead,location_id:0 field:crm.meeting,location:0 msgid "Location" -msgstr "" +msgstr "Locatie" #. module: crm #: model:ir.model,name:crm.model_crm_lead2opportunity_partner_mass msgid "Mass Lead To Opportunity Partner" -msgstr "" +msgstr "Vele leads naar opportuniteit / relatie" #. module: crm #: view:crm.lead:0 msgid "Reply" -msgstr "" +msgstr "Beantwoorden" #. module: crm #: model:process.node,note:crm.process_node_meeting0 msgid "Schedule a normal or phone meeting" -msgstr "" +msgstr "Plan een gewone of een telefonische vergadering" #. module: crm #: code:addons/crm/crm.py:430 #, python-format msgid "Error !" -msgstr "" +msgstr "Fout" #. module: crm #: model:ir.actions.act_window,help:crm.crm_meeting_categ_action @@ -1963,48 +2040,51 @@ msgid "" "Create different meeting categories to better organize and classify your " "meetings." msgstr "" +"Maak verschillende vergadercategorieën om uw vergaderingen beter te " +"organiseren." #. module: crm #: model:ir.model,name:crm.model_crm_segmentation_line msgid "Segmentation line" -msgstr "" +msgstr "Segmenteringslijn" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Planned Date" -msgstr "" +msgstr "Geplande datum" #. module: crm #: field:crm.meeting,base_calendar_url:0 msgid "Caldav URL" -msgstr "" +msgstr "Caldav-url" #. module: crm #: view:crm.lead:0 msgid "Expected Revenues" -msgstr "" +msgstr "Verwachte opbrengst" #. module: crm #: field:crm.lead,contact_name:0 msgid "Contact Name" -msgstr "" +msgstr "Naam contactpersoon" #. module: crm #: view:crm.lead:0 msgid "Leads creating during last 7 days" -msgstr "" +msgstr "Leads van de afgelopen 7 dagen" #. module: crm #: view:crm.phonecall2partner:0 msgid "Are you sure you want to create a partner based on this Phonecall ?" msgstr "" +"Bent u zeker dat u een relatie wilt maken op basis van dit telefoongesprek?" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "July" -msgstr "" +msgstr "Juli" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_section_act @@ -2015,72 +2095,77 @@ msgid "" "The opportunities and sales order displayed, will automatically be filtered " "according to his team." msgstr "" +"Definieer een verkoopteam als u uw verkopers of afdelingen in afzonderlijke " +"teams wilt onderbrengen. Elk team werkt op eigen opportuniteiten, " +"verkooporders, enz. Elke gebruiker kan een standaardteam instellen via zijn " +"voorkeuren. De getoonde opportuniteiten en verkooporders zijn automatisch " +"diegene van dat team." #. module: crm #: view:crm.lead.report:0 msgid "Show only lead" -msgstr "" +msgstr "Enkel lead tonen" #. module: crm #: help:crm.meeting,count:0 msgid "Repeat x times" -msgstr "" +msgstr "x keren herhalen" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_section_act #: model:ir.model,name:crm.model_crm_case_section #: model:ir.ui.menu,name:crm.menu_crm_case_section_act msgid "Sales Teams" -msgstr "" +msgstr "Verkoopteams" #. module: crm #: model:ir.model,name:crm.model_crm_lead2partner msgid "Lead to Partner" -msgstr "" +msgstr "Lead naar relatie" #. module: crm #: view:crm.segmentation:0 field:crm.segmentation.line,segmentation_id:0 #: model:ir.actions.act_window,name:crm.crm_segmentation-act msgid "Segmentation" -msgstr "" +msgstr "Segmentering" #. module: crm #: view:crm.lead:0 msgid "Team" -msgstr "" +msgstr "Team" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities which are in New state" -msgstr "" +msgstr "Leads/opportuniteiten in status Nieuw." #. module: crm #: view:crm.phonecall:0 selection:crm.phonecall,state:0 #: view:crm.phonecall.report:0 view:res.partner:0 msgid "Not Held" -msgstr "" +msgstr "Niet uitgevoerd" #. module: crm #: field:crm.lead.report,probability:0 msgid "Probability" -msgstr "" +msgstr "Kans" #. module: crm #: view:crm.lead:0 msgid "Pending Opportunities" -msgstr "" +msgstr "Wachtende opportuniteiten" #. module: crm #: code:addons/crm/crm_lead.py:491 #, python-format msgid "Please select more than one opportunity from the list view." -msgstr "" +msgstr "Gelieve meer dan één opportuniteit te kiezen uit de lijst." #. module: crm #: view:crm.lead.report:0 field:crm.meeting,month_list:0 #: view:crm.phonecall.report:0 field:crm.phonecall.report,month:0 msgid "Month" -msgstr "" +msgstr "Maand" #. module: crm #: view:crm.lead:0 @@ -2088,7 +2173,7 @@ msgstr "" #: model:ir.ui.menu,name:crm.menu_crm_case_categ0_act_leads #: model:process.node,name:crm.process_node_leads0 msgid "Leads" -msgstr "" +msgstr "Leads" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_category_act_leads_all @@ -2103,6 +2188,15 @@ msgid "" "email gateway: new emails may create leads, each of them automatically gets " "the history of the conversation with the prospect." msgstr "" +"Met leads kunt u initiële contacten met een prospect of relatie bijhouden " +"die interesse heeft in uw producten of diensten. Een lead is doorgaans de " +"eerste stap in uw verkoopcyclus. Na kwalificatie kan van de lead een " +"opportuniteit worden gemaakt. Ook de relatie kan worden gemaakt voor verdere " +"opvolging van activiteiten. U kunt een prospectendatabase importeren, uw " +"visitekaartjes bijhouden of het contactformulier op uw website integreren " +"met de leads in OpenERP. Leads kunnen ook worden gekoppeld aan de " +"mailgateway: nieuwe e-mails kunnen een nieuwe lead maken en de historiek van " +"de communicatie met de prospect wordt bijgehouden." #. module: crm #: selection:crm.lead2opportunity.partner,action:0 @@ -2110,18 +2204,18 @@ msgstr "" #: selection:crm.lead2partner,action:0 #: selection:crm.phonecall2partner,action:0 msgid "Create a new partner" -msgstr "" +msgstr "Relatie maken" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0 #: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound msgid "Scheduled Calls" -msgstr "" +msgstr "Geplande gesprekken" #. module: crm #: view:crm.meeting:0 view:res.partner:0 msgid "Start Date" -msgstr "" +msgstr "Begindatum" #. module: crm #: view:crm.phonecall:0 @@ -2131,39 +2225,42 @@ msgstr "" #. module: crm #: view:crm.meeting:0 msgid "Decline" -msgstr "" +msgstr "Afwijzen" #. module: crm #: field:crm.lead,user_email:0 msgid "User Email" -msgstr "" +msgstr "E-mail gebruiker" #. module: crm #: help:crm.lead,optin:0 msgid "If opt-in is checked, this contact has accepted to receive emails." msgstr "" +"Als Inschrijven is ingeschakeld, wil deze contactpersoon e-mails ontvangen." #. module: crm #: view:crm.meeting:0 msgid "Reset to Unconfirmed" -msgstr "" +msgstr "Terug naar onbevestigd" #. module: crm #: field:crm.opportunity2phonecall,note:0 field:crm.phonecall2phonecall,note:0 msgid "Note" -msgstr "" +msgstr "Opmerking" #. module: crm #: constraint:res.users:0 msgid "The chosen company is not in the allowed companies for this user" msgstr "" +"De gekozen firma behoort niet tot de toegelaten bedrijven voor deze " +"gebruiker." #. module: crm #: selection:crm.lead,priority:0 selection:crm.lead.report,priority:0 #: selection:crm.phonecall,priority:0 #: selection:crm.phonecall.report,priority:0 msgid "Low" -msgstr "" +msgstr "Laag" #. module: crm #: selection:crm.add.note,state:0 field:crm.lead,date_closed:0 @@ -2171,22 +2268,22 @@ msgstr "" #: selection:crm.lead.report,state:0 field:crm.meeting,date_closed:0 #: field:crm.phonecall,date_closed:0 msgid "Closed" -msgstr "" +msgstr "Gesloten" #. module: crm #: view:crm.lead:0 msgid "Total of Planned Revenue" -msgstr "" +msgstr "Totaal geplande opbrengst" #. module: crm #: view:crm.lead:0 msgid "Open Opportunities" -msgstr "" +msgstr "Openstaande opportuniteiten" #. module: crm #: model:crm.case.categ,name:crm.categ_meet2 msgid "Internal Meeting" -msgstr "" +msgstr "Interne vergadering" #. module: crm #: code:addons/crm/crm.py:454 selection:crm.add.note,state:0 view:crm.lead:0 @@ -2194,12 +2291,12 @@ msgstr "" #: selection:crm.lead.report,state:0 selection:crm.phonecall.report,state:0 #, python-format msgid "Pending" -msgstr "" +msgstr "Wachtend" #. module: crm #: model:crm.case.categ,name:crm.categ_meet1 msgid "Customer Meeting" -msgstr "" +msgstr "Vergadering met klant" #. module: crm #: field:crm.lead,email_cc:0 @@ -2212,72 +2309,72 @@ msgstr "" #: model:ir.ui.menu,name:crm.menu_crm_case_phone #: model:ir.ui.menu,name:crm.menu_crm_config_phonecall view:res.partner:0 msgid "Phone Calls" -msgstr "" +msgstr "Telefoongesprekken" #. module: crm #: view:crm.case.stage:0 msgid "Stage Search" -msgstr "" +msgstr "Fasen zoeken" #. module: crm #: help:crm.lead.report,delay_open:0 help:crm.phonecall.report,delay_open:0 msgid "Number of Days to open the case" -msgstr "" +msgstr "Aantal dagen tot openen van zaak" #. module: crm #: selection:crm.meeting,end_type:0 msgid "Number of repetitions" -msgstr "" +msgstr "Aantal herhalingen" #. module: crm #: field:crm.lead,phone:0 field:crm.opportunity2phonecall,phone:0 #: field:crm.phonecall,partner_phone:0 field:crm.phonecall2phonecall,phone:0 msgid "Phone" -msgstr "" +msgstr "Tel." #. module: crm #: field:crm.case.channel,active:0 field:crm.case.section,active:0 #: field:crm.lead,active:0 field:crm.meeting,active:0 #: field:crm.phonecall,active:0 msgid "Active" -msgstr "" +msgstr "Actief" #. module: crm #: code:addons/crm/crm_lead.py:856 #, python-format msgid "The stage of opportunity '%s' has been changed to '%s'." -msgstr "" +msgstr "De fase van opportuniteit '%s' is gewijzigd in '%s'." #. module: crm #: selection:crm.segmentation.line,operator:0 msgid "Mandatory Expression" -msgstr "" +msgstr "Verplichte expressie" #. module: crm #: selection:crm.segmentation.line,expr_operator:0 msgid ">" -msgstr "" +msgstr ">" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Schedule Call" -msgstr "" +msgstr "Een gesprek plannen" #. module: crm #: view:crm.meeting:0 msgid "Uncertain" -msgstr "" +msgstr "Onzeker" #. module: crm #: help:crm.case.stage,sequence:0 msgid "Used to order stages." -msgstr "" +msgstr "Dient om fasen te rangschikken." #. module: crm #: code:addons/crm/crm_lead.py:276 #, python-format msgid "The opportunity '%s' has been opened." -msgstr "" +msgstr "Opportuniteit '%s' is geopend." #. module: crm #: field:crm.lead2opportunity.partner,action:0 @@ -2285,44 +2382,44 @@ msgstr "" #: field:crm.lead2partner,action:0 field:crm.opportunity2phonecall,action:0 #: field:crm.phonecall2partner,action:0 field:crm.phonecall2phonecall,action:0 msgid "Action" -msgstr "" +msgstr "Actie" #. module: crm #: field:crm.segmentation,som_interval_decrease:0 msgid "Decrease (0>1)" -msgstr "" +msgstr "Verlagen (0>1)" #. module: crm #: field:crm.lead.report,deadline_day:0 msgid "Exp. Closing Day" -msgstr "" +msgstr "Verw. sluiting" #. module: crm #: field:crm.case.section,change_responsible:0 msgid "Reassign Escalated" -msgstr "" +msgstr "Geëscaleerd opnieuw toewijzen" #. module: crm #: selection:crm.meeting,rrule_type:0 msgid "Weekly" -msgstr "" +msgstr "Wekelijks" #. module: crm #: view:crm.lead.report:0 #: model:ir.actions.act_window,name:crm.action_report_crm_opportunity #: model:ir.ui.menu,name:crm.menu_report_crm_opportunities_tree msgid "Opportunities Analysis" -msgstr "" +msgstr "Opportuniteitenanalyse" #. module: crm #: view:crm.lead:0 msgid "Misc" -msgstr "" +msgstr "Diversen" #. module: crm #: model:ir.actions.act_window,name:crm.open_board_crm msgid "Sales" -msgstr "" +msgstr "Verkoop" #. module: crm #: code:addons/crm/crm.py:430 @@ -2331,58 +2428,60 @@ msgid "" "You can not escalate, you are already at the top level regarding your sales-" "team category." msgstr "" +"U kunt niet escaleren; u heeft het hoogste niveau in de verkoopteams al " +"bereikt." #. module: crm #: model:crm.case.categ,name:crm.categ_oppor8 view:crm.meeting:0 msgid "Other" -msgstr "" +msgstr "Andere" #. module: crm #: view:crm.meeting:0 selection:crm.meeting,state:0 msgid "Done" -msgstr "" +msgstr "Gereed" #. module: crm #: help:crm.meeting,interval:0 msgid "Repeat every (Days/Week/Month/Year)" -msgstr "" +msgstr "Herhaal elk(e) (Dag/Week/Maand/Jaar)" #. module: crm #: field:crm.segmentation,som_interval_max:0 msgid "Max Interval" -msgstr "" +msgstr "Max. interval" #. module: crm #: code:addons/crm/crm.py:396 view:crm.lead:0 view:crm.lead.report:0 #: selection:crm.lead.report,state:0 view:res.partner:0 #, python-format msgid "Open" -msgstr "" +msgstr "Open" #. module: crm #: field:crm.lead,city:0 msgid "City" -msgstr "" +msgstr "Plaats" #. module: crm #: view:crm.lead:0 view:res.partner:0 msgid "History" -msgstr "" +msgstr "Historiek" #. module: crm #: selection:crm.meeting,show_as:0 msgid "Busy" -msgstr "" +msgstr "Bezet" #. module: crm #: field:crm.lead.report,creation_day:0 msgid "Creation Day" -msgstr "" +msgstr "Creatiedatum" #. module: crm #: field:crm.meeting,interval:0 msgid "Repeat every" -msgstr "" +msgstr "Herhalen elke" #. module: crm #: field:crm.meeting,recurrency:0 @@ -2392,27 +2491,27 @@ msgstr "" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls made in last month" -msgstr "" +msgstr "Telefoongesprekken van de afgelopen maand" #. module: crm #: model:ir.actions.act_window,name:crm.act_my_oppor msgid "My Open Opportunities" -msgstr "" +msgstr "Mijn openstaande opportuniteiten" #. module: crm #: field:base.action.rule,trg_max_history:0 msgid "Maximum Communication History" -msgstr "" +msgstr "Maximale communicatiehistoriek" #. module: crm #: view:crm.meeting:0 msgid "Invite People" -msgstr "" +msgstr "Mensen uitnodigen" #. module: crm #: view:crm.meeting:0 field:crm.meeting,categ_id:0 msgid "Meeting Type" -msgstr "" +msgstr "Vergadertype" #. module: crm #: help:crm.lead,state:0 @@ -2425,16 +2524,23 @@ msgid "" " \n" "If the case needs to be reviewed then the state is set to 'Pending'." msgstr "" +"De status wordt op 'Nieuw' gezet als er een zaak wordt gemaakt. " +" \n" +"Als de zaak lopende is, wordt de status op 'Open' gezet. " +" \n" +"Als de zaak klaar is, wordt de status op 'Gereed' gezet. " +" \n" +"Als de zaak moet worden herbekeken, gaat de status naar 'Wachtend'." #. module: crm #: view:crm.meeting:0 view:res.partner:0 msgid "End Date" -msgstr "" +msgstr "Einddatum" #. module: crm #: selection:crm.meeting,byday:0 msgid "Third" -msgstr "" +msgstr "Derde" #. module: crm #: help:crm.segmentation,som_interval_max:0 @@ -2442,47 +2548,49 @@ msgid "" "The computation is made on all events that occured during this interval, the " "past X periods." msgstr "" +"De berekening wordt uitgevoerd voor alle gebeurtenissen tijdens dit " +"interval, de afgelopen X perioden." #. module: crm #: view:crm.lead:0 msgid "Unassigned Opportunities" -msgstr "" +msgstr "Niet-toegewezen opportuniteiten" #. module: crm #: view:crm.lead.report:0 msgid "# of Emails" -msgstr "" +msgstr "# e-mails" #. module: crm #: view:crm.lead:0 msgid "Search Leads" -msgstr "" +msgstr "Leads zoeken" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 #: field:crm.phonecall.report,delay_open:0 msgid "Delay to open" -msgstr "" +msgstr "Dagen tot openen" #. module: crm #: view:crm.meeting:0 msgid "Recurrency period" -msgstr "" +msgstr "Recurrentieperiode" #. module: crm #: field:crm.meeting,week_list:0 msgid "Weekday" -msgstr "" +msgstr "Weekdag" #. module: crm #: view:crm.lead:0 msgid "Referrer" -msgstr "" +msgstr "Doorverwijzer" #. module: crm #: field:crm.lead,id:0 field:crm.meeting,id:0 field:crm.phonecall,id:0 msgid "ID" -msgstr "" +msgstr "ID" #. module: crm #: help:crm.lead,type_id:0 @@ -2490,235 +2598,237 @@ msgid "" "From which campaign (seminar, marketing campaign, mass mailing, ...) did " "this contact come from?" msgstr "" +"Van welke campagne (seminarie, marketingcampagne, mailing, ...) komt deze " +"contactpersoon?" #. module: crm #: model:ir.model,name:crm.model_calendar_attendee msgid "Attendee information" -msgstr "" +msgstr "Info over aanwezigen" #. module: crm #: view:crm.segmentation:0 msgid "Segmentation Test" -msgstr "" +msgstr "Segmenteringstest" #. module: crm #: field:crm.lead,user_login:0 msgid "User Login" -msgstr "" +msgstr "Aanmeldgegevens" #. module: crm #: view:crm.segmentation:0 msgid "Continue Process" -msgstr "" +msgstr "Verder verwerken" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities created in current year" -msgstr "" +msgstr "Leads/opportuniteiten van dit jaar" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall2partner msgid "Phonecall to Partner" -msgstr "" +msgstr "Telefoontje naar relatie" #. module: crm #: field:crm.opportunity2phonecall,user_id:0 #: field:crm.phonecall2phonecall,user_id:0 msgid "Assign To" -msgstr "" +msgstr "Toegewezen aan" #. module: crm #: field:crm.add.note,state:0 msgid "Set New State To" -msgstr "" +msgstr "Zet nieuwe status op" #. module: crm #: field:crm.lead,date_action_last:0 field:crm.meeting,date_action_last:0 #: field:crm.phonecall,date_action_last:0 msgid "Last Action" -msgstr "" +msgstr "Laatste actie" #. module: crm #: field:crm.meeting,duration:0 field:crm.phonecall,duration:0 #: field:crm.phonecall.report,duration:0 msgid "Duration" -msgstr "" +msgstr "Duur" #. module: crm #: view:crm.lead:0 msgid "Show countries" -msgstr "" +msgstr "Landen tonen" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Select Salesman" -msgstr "" +msgstr "Verkoper kiezen" #. module: crm #: view:board.board:0 msgid "Sales Dashboard" -msgstr "" +msgstr "Verkoopdashboard" #. module: crm #: field:crm.lead.report,nbr:0 field:crm.phonecall.report,nbr:0 msgid "# of Cases" -msgstr "" +msgstr "# zaken" #. module: crm #: help:crm.meeting,section_id:0 help:crm.phonecall,section_id:0 msgid "Sales team to which Case belongs to." -msgstr "" +msgstr "Verkoopteam aan wie de zaak toebehoort" #. module: crm #: selection:crm.meeting,week_list:0 msgid "Sunday" -msgstr "" +msgstr "Zondag" #. module: crm #: selection:crm.meeting,byday:0 msgid "Fourth" -msgstr "" +msgstr "Vierde" #. module: crm #: selection:crm.add.note,state:0 msgid "Unchanged" -msgstr "" +msgstr "Ongewijzigd" #. module: crm #: model:ir.actions.act_window,name:crm.crm_segmentation_tree-act #: model:ir.ui.menu,name:crm.menu_crm_segmentation-act msgid "Partners Segmentation" -msgstr "" +msgstr "Relatiesegmentering" #. module: crm #: field:crm.lead,fax:0 msgid "Fax" -msgstr "" +msgstr "Fax" #. module: crm #: view:crm.lead.report:0 msgid "Leads/Opportunities created in current month" -msgstr "" +msgstr "Leads/opportuniteiten van deze maand" #. module: crm #: view:crm.meeting:0 msgid "Assignment" -msgstr "" +msgstr "Toewijzing" #. module: crm #: field:crm.lead,company_id:0 view:crm.lead.report:0 #: field:crm.lead.report,company_id:0 field:crm.phonecall,company_id:0 #: view:crm.phonecall.report:0 field:crm.phonecall.report,company_id:0 msgid "Company" -msgstr "" +msgstr "Bedrijf" #. module: crm #: selection:crm.meeting,week_list:0 msgid "Friday" -msgstr "" +msgstr "Vrijdag" #. module: crm #: field:crm.meeting,allday:0 msgid "All Day" -msgstr "" +msgstr "Alle dagen" #. module: crm #: field:crm.segmentation.line,operator:0 msgid "Mandatory / Optional" -msgstr "" +msgstr "Verplicht / optie" #. module: crm #: view:crm.lead:0 msgid "Unassigned Leads" -msgstr "" +msgstr "Niet-toegewezen leads" #. module: crm #: field:crm.lead,subjects:0 msgid "Subject of Email" -msgstr "" +msgstr "Onderwerp van mail" #. module: crm #: model:ir.actions.act_window,name:crm.action_view_attendee_form #: model:ir.ui.menu,name:crm.menu_attendee_invitations msgid "Meeting Invitations" -msgstr "" +msgstr "Uitnodigingen" #. module: crm #: view:crm.phonecall:0 selection:crm.phonecall,state:0 #: view:crm.phonecall.report:0 selection:crm.phonecall.report,state:0 #: view:res.partner:0 msgid "Todo" -msgstr "" +msgstr "Uit te voeren" #. module: crm #: field:crm.case.categ,object_id:0 msgid "Object Name" -msgstr "" +msgstr "Objectnaam" #. module: crm #: help:crm.lead,email_from:0 msgid "E-mail address of the contact" -msgstr "" +msgstr "E-mailadres van de contactpersoon" #. module: crm #: field:crm.lead,referred:0 msgid "Referred by" -msgstr "" +msgstr "Doorverwijzer" #. module: crm #: view:crm.lead:0 model:ir.model,name:crm.model_crm_add_note msgid "Add Internal Note" -msgstr "" +msgstr "Interne notitie toevoegen" #. module: crm #: code:addons/crm/crm_lead.py:853 #, python-format msgid "The stage of lead '%s' has been changed to '%s'." -msgstr "" +msgstr "De fase van lead '%s' is gewijzigd in '%s'." #. module: crm #: selection:crm.meeting,byday:0 msgid "Last" -msgstr "" +msgstr "Laatste" #. module: crm #: field:crm.lead,message_ids:0 field:crm.meeting,message_ids:0 #: field:crm.phonecall,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Berichten" #. module: crm #: help:crm.lead,channel_id:0 msgid "Communication channel (mail, direct, phone, ...)" -msgstr "" +msgstr "Communicatiekanaal (mail, direct, telefoon, ...)" #. module: crm #: code:addons/crm/crm_action_rule.py:61 #, python-format msgid "Error!" -msgstr "" +msgstr "Fout" #. module: crm #: field:crm.opportunity2phonecall,name:0 field:crm.phonecall2phonecall,name:0 msgid "Call summary" -msgstr "" +msgstr "Samenvatting gesprek" #. module: crm #: selection:crm.add.note,state:0 selection:crm.lead,state:0 #: selection:crm.lead.report,state:0 selection:crm.meeting,state:0 #: selection:crm.phonecall,state:0 selection:crm.phonecall.report,state:0 msgid "Cancelled" -msgstr "" +msgstr "Geannuleerd" #. module: crm #: field:crm.add.note,body:0 msgid "Note Body" -msgstr "" +msgstr "Midden notitie" #. module: crm #: view:board.board:0 msgid "My Planned Revenues by Stage" -msgstr "" +msgstr "Mijn geplande opbrengsten per fase" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_category_act_oppor11 @@ -2735,16 +2845,26 @@ msgid "" "opportunities, convert them into quotations, manage related documents, track " "all customer related activities, and much more." msgstr "" +"Via opportuniteiten kunt u uw verkooppijplijn opvolgen aan de hand van klant-" +" of prospectgerelateerde verkoopdocumenten. Informatie zoals verwachte " +"opbrengst, fase, verwachte sluitingsdatum, communicatiehistoriek, enz. kan " +"worden bijgehouden. Opportuniteiten kunnen worden gekoppeld aan de " +"mailgateway: maak van nieuwe mails een opportuniteit en bewaar de " +"communicatiehistoriek.\n" +"\n" +"U en uw team kunnen vergadering en telefoongesprekken plannen voor " +"opportuniteiten. Maak van een opportuniteit een offerte, volg de documenten " +"en alle klantenactiviteiten op, en nog veel meer." #. module: crm #: field:crm.lead,color:0 msgid "Color Index" -msgstr "" +msgstr "Kleurindex" #. module: crm #: view:crm.lead:0 msgid "Links" -msgstr "" +msgstr "Koppelingen" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_categ_action @@ -2754,6 +2874,10 @@ msgid "" "instance reflect your product structure or the different types of sales you " "do." msgstr "" +"Maak specifieke categorieën volgens uw activiteiten, zodat u leads en " +"opportuniteiten beter kunt organiseren en analyseren. Die categorieën kunnen " +"bijvoorbeeld uw productenstructuur weergeven of de verschillende types " +"verkoop." #. module: crm #: help:crm.segmentation,som_interval_decrease:0 @@ -2761,6 +2885,8 @@ msgid "" "If the partner has not purchased (or bought) during a period, decrease the " "state of mind by this factor. It's a multiplication" msgstr "" +"Als de relatie niets heeft gekocht gedurende een bepaalde periode, kunt u " +"het humeur veranderen. Het gaat om een vermenigvuldiging." #. module: crm #: model:ir.actions.act_window,help:crm.action_report_crm_phonecall @@ -2770,21 +2896,25 @@ msgid "" "several criteria and drill down the information, by adding more groups in " "the report." msgstr "" +"Hiermee analyseert u de prestaties van uw verkoopteam volgens hun " +"telefoongespreken. U kunt de informatie groeperen of filteren volgens " +"diverse criteria en verder zoeken in de infrmatie door meer groepen toe te " +"voegen." #. module: crm #: view:crm.lead.report:0 msgid "# Mails" -msgstr "" +msgstr "# E-mails" #. module: crm #: field:crm.phonecall,name:0 view:res.partner:0 msgid "Call Summary" -msgstr "" +msgstr "Samenvatting gesprek" #. module: crm #: view:crm.lead:0 msgid "Todays' Leads" -msgstr "" +msgstr "Leads van de dag" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_categ_phone_outgoing0 @@ -2795,86 +2925,91 @@ msgid "" "customer. You can also import a .CSV file with a list of calls to be done by " "your sales team." msgstr "" +"In Geplande gesprekken vindt u alle telefoontjes die uw verkoopteam moet " +"uitvoeren. Een verkoper kan info over het gesprek noteren in het formulier. " +"Deze info is ook toegankelijk via de relatiefiche, zodat elk contact kan " +"worden bijgehouden. U kunt ook een csv-bestand importeren met een lijst van " +"uit te voeren telefoongesprekken." #. module: crm #: field:crm.segmentation.line,expr_operator:0 msgid "Operator" -msgstr "" +msgstr "Operator" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall2phonecall msgid "Phonecall To Phonecall" -msgstr "" +msgstr "Gesprek naar gesprek" #. module: crm #: view:crm.lead:0 #: model:ir.actions.act_window,name:crm.opportunity2phonecall_act msgid "Schedule/Log Call" -msgstr "" +msgstr "Een gesprek plannen/noteren" #. module: crm #: selection:crm.meeting,state:0 msgid "Confirmed" -msgstr "" +msgstr "Bevestigd" #. module: crm #: model:ir.actions.act_window,name:crm.act_oppor_stage_user msgid "Planned Revenue By User and Stage" -msgstr "" +msgstr "Geplande opbrengst per gebruiker en fase" #. module: crm #: view:crm.meeting:0 msgid "Confirm" -msgstr "" +msgstr "Bevestigen" #. module: crm #: field:crm.meeting,su:0 msgid "Sun" -msgstr "" +msgstr "Zon" #. module: crm #: field:crm.phonecall.report,section_id:0 msgid "Section" -msgstr "" +msgstr "Sectie" #. module: crm #: selection:crm.segmentation.line,operator:0 msgid "Optional Expression" -msgstr "" +msgstr "Optionele expressie" #. module: crm #: selection:crm.meeting,select1:0 msgid "Day of month" -msgstr "" +msgstr "Dag van de maand" #. module: crm #: model:ir.actions.act_window,name:crm.act_my_oppor_stage msgid "Planned Revenue By Stage" -msgstr "" +msgstr "Geplande opbrengst per fase" #. module: crm #: selection:crm.add.note,state:0 model:crm.case.stage,name:crm.stage_lead1 #: view:crm.lead:0 selection:crm.lead,state:0 view:crm.lead.report:0 msgid "New" -msgstr "" +msgstr "Nieuw" #. module: crm #: view:crm.lead:0 field:crm.lead,email_from:0 field:crm.meeting,email_from:0 #: field:crm.phonecall,email_from:0 msgid "Email" -msgstr "" +msgstr "E-mail" #. module: crm #: view:crm.case.channel:0 view:crm.lead:0 field:crm.lead,channel_id:0 #: view:crm.lead.report:0 field:crm.lead.report,channel_id:0 msgid "Channel" -msgstr "" +msgstr "Kanaal" #. module: crm #: view:crm.lead:0 view:crm.lead.report:0 view:crm.meeting:0 #: view:crm.phonecall:0 view:crm.phonecall.report:0 msgid "My Sales Team(s)" -msgstr "" +msgstr "Mijn verkoopteam(s)" #. module: crm #: help:crm.segmentation,exclusif:0 @@ -2884,119 +3019,123 @@ msgid "" "If checked, remove the category from partners that doesn't match " "segmentation criterions" msgstr "" +"Schakel in als de categorie beperkt is tot relaties die voldoen aan de " +"segmenteringsregels.\n" +"Als dit is ingeschakeld, wordt de categorie verwijderd van relaties die niet " +"voldoen aan de segmenteringscriteria." #. module: crm #: field:crm.meeting,exdate:0 msgid "Exception Date/Times" -msgstr "" +msgstr "Uitzonderingsdata/tijden" #. module: crm #: help:crm.meeting,date_deadline:0 msgid "" "Deadline Date is automatically computed from Start " "Date + Duration" -msgstr "" +msgstr "Deadline wordt automatisch berekend volgens Begindatum + Duur" #. module: crm #: field:crm.lead,state_id:0 msgid "Fed. State" -msgstr "" +msgstr "Staat/Provincie" #. module: crm #: model:process.transition,note:crm.process_transition_leadopportunity0 msgid "Creating business opportunities from Leads" -msgstr "" +msgstr "Opportuniteiten maken van leads" #. module: crm #: model:ir.actions.act_window,name:crm.open_board_statistical_dash #: model:ir.ui.menu,name:crm.menu_board_statistics_dash msgid "CRM Dashboard" -msgstr "" +msgstr "CRM-dashboard" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor4 msgid "Need Information" -msgstr "" +msgstr "Heeft informatie nodig" #. module: crm #: model:process.transition,name:crm.process_transition_leadopportunity0 msgid "Prospect Opportunity" -msgstr "" +msgstr "Opportuniteit" #. module: crm #: field:base.action.rule,act_categ_id:0 msgid "Set Category to" -msgstr "" +msgstr "Categorie instellen op" #. module: crm #: view:crm.meeting:0 msgid "Mail To" -msgstr "" +msgstr "Mail naar" #. module: crm #: field:crm.meeting,th:0 msgid "Thu" -msgstr "" +msgstr "Don" #. module: crm #: view:crm.add.note:0 view:crm.merge.opportunity:0 #: view:crm.opportunity2phonecall:0 view:crm.phonecall2opportunity:0 #: view:crm.phonecall2phonecall:0 msgid "_Cancel" -msgstr "" +msgstr "_Annuleren" #. module: crm #: selection:crm.meeting,rrule_type:0 msgid "Daily" -msgstr "" +msgstr "Dagelijks" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_stage_form_installer msgid "Review Sales Stages" -msgstr "" +msgstr "Verkoopfasen bekijken" #. module: crm #: model:crm.case.stage,name:crm.stage_lead2 msgid "Qualification" -msgstr "" +msgstr "Kwalificatie" #. module: crm #: field:crm.lead,partner_address_email:0 msgid "Partner Contact Email" -msgstr "" +msgstr "E-mail contactpersoon relatie" #. module: crm #: code:addons/crm/wizard/crm_lead_to_partner.py:48 #, python-format msgid "A partner is already defined." -msgstr "" +msgstr "De relatie bestaat al." #. module: crm #: selection:crm.meeting,byday:0 msgid "First" -msgstr "" +msgstr "Eerste" #. module: crm #: field:crm.lead.report,deadline_month:0 msgid "Exp. Closing Month" -msgstr "" +msgstr "Verw. sluitingsmaand" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "December" -msgstr "" +msgstr "December" #. module: crm #: view:base.action.rule:0 msgid "Condition on Communication History" -msgstr "" +msgstr "Voorwaarde op communicatiehistoriek" #. module: crm #: view:crm.phonecall:0 msgid "Date of Call" -msgstr "" +msgstr "Datum van gesprek" #. module: crm #: help:crm.segmentation,som_interval:0 @@ -3009,87 +3148,94 @@ msgid "" "bought goods to another supplier. \n" "Use this functionality for recurring businesses." msgstr "" +"Een periode is het gemiddelde aantal dagen tussen twee aankoop- of " +"verkoopcycli voor deze segmentering. \n" +"Het wordt doorgaans gebruikt om na te gaan of een relatie al lange tijd niks " +"meer heeft gekocht of verkocht, waarbij we ervan uitgaan dat zijn humeur " +"is gedaald omdat hij wellicht goederen bij een andere leverancier heeft " +"gekocht. \n" +"Gebruik deze functionaliteit voor terugkerende zaken." #. module: crm #: field:crm.meeting,vtimezone:0 msgid "Timezone" -msgstr "" +msgstr "Tijdzone" #. module: crm #: field:crm.meeting,sa:0 msgid "Sat" -msgstr "" +msgstr "Zat" #. module: crm #: view:crm.lead:0 field:crm.lead,user_id:0 view:crm.lead.report:0 #: view:crm.phonecall.report:0 msgid "Salesman" -msgstr "" +msgstr "Verkoper" #. module: crm #: view:crm.lead:0 field:crm.lead,date_deadline:0 msgid "Expected Closing" -msgstr "" +msgstr "Verwachte afsluitdatum" #. module: crm #: model:ir.model,name:crm.model_crm_opportunity2phonecall msgid "Opportunity to Phonecall" -msgstr "" +msgstr "Opportuniteit naar telefoongesprek" #. module: crm #: help:crm.case.section,allow_unlink:0 msgid "Allows to delete non draft cases" -msgstr "" +msgstr "Hiermee kunt u zaken niet in status Nieuw verwijderen" #. module: crm #: field:crm.meeting,count:0 msgid "Repeat" -msgstr "" +msgstr "Herhalen" #. module: crm #: field:crm.lead.report,deadline_year:0 msgid "Ex. Closing Year" -msgstr "" +msgstr "Verw. sluitingsjaar" #. module: crm #: view:crm.lead:0 msgid "Partner Name" -msgstr "" +msgstr "Relatienaam" #. module: crm #: model:crm.case.categ,name:crm.categ_phone2 msgid "Outbound" -msgstr "" +msgstr "Uitgaand" #. module: crm #: field:crm.lead,date_open:0 field:crm.phonecall,date_open:0 msgid "Opened" -msgstr "" +msgstr "Geopend" #. module: crm #: view:crm.case.section:0 field:crm.case.section,member_ids:0 msgid "Team Members" -msgstr "" +msgstr "Teamleden" #. module: crm #: view:crm.lead:0 view:crm.meeting:0 view:crm.phonecall:0 msgid "Contacts" -msgstr "" +msgstr "Contactpersonen" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor1 msgid "Interest in Computer" -msgstr "" +msgstr "Interesse in computers" #. module: crm #: view:crm.meeting:0 msgid "Invitation Detail" -msgstr "" +msgstr "Details uitnodiging" #. module: crm #: field:crm.segmentation,som_interval_default:0 msgid "Default (0=None)" -msgstr "" +msgstr "Standaard (0=Geen)" #. module: crm #: help:crm.lead,email_cc:0 @@ -3098,35 +3244,38 @@ msgid "" "outbound emails for this record before being sent. Separate multiple email " "addresses with a comma" msgstr "" +"Deze e-mailadressen worden toegevoegd aan het CC-veld van alle inkomende en " +"uitgaande mails voor dit record. Verschillende adressen kunnen worden " +"gescheiden door een komma." #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_incoming0 #: model:ir.ui.menu,name:crm.menu_crm_case_phone_inbound msgid "Logged Calls" -msgstr "" +msgstr "Genoteerde gesprekken" #. module: crm #: field:crm.partner2opportunity,probability:0 #: field:crm.phonecall2opportunity,probability:0 msgid "Success Probability" -msgstr "" +msgstr "Succesratio" #. module: crm #: code:addons/crm/crm.py:466 selection:crm.lead.report,state:0 #: selection:crm.phonecall,state:0 selection:crm.phonecall.report,state:0 #, python-format msgid "Draft" -msgstr "" +msgstr "Nieuw" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_section_act_tree msgid "Cases by Sales Team" -msgstr "" +msgstr "Zaken per verkoopteam" #. module: crm #: field:crm.meeting,attendee_ids:0 msgid "Attendees" -msgstr "" +msgstr "Deelnemers" #. module: crm #: view:crm.meeting:0 view:crm.phonecall:0 @@ -3134,306 +3283,307 @@ msgstr "" #: model:process.node,name:crm.process_node_meeting0 #: model:res.request.link,name:crm.request_link_meeting msgid "Meeting" -msgstr "" +msgstr "Vergadering" #. module: crm #: model:ir.model,name:crm.model_crm_case_categ msgid "Category of Case" -msgstr "" +msgstr "Zaakcategorie" #. module: crm #: view:crm.lead:0 view:crm.phonecall:0 msgid "7 Days" -msgstr "" +msgstr "7 dagen" #. module: crm #: view:board.board:0 msgid "Planned Revenue by Stage and User" -msgstr "" +msgstr "Geplande opbrengsten per fase en gebruiker" #. module: crm #: view:crm.lead:0 msgid "Communication & History" -msgstr "" +msgstr "Communicatie & historiek" #. module: crm #: selection:crm.lead,priority:0 selection:crm.lead.report,priority:0 #: selection:crm.phonecall,priority:0 #: selection:crm.phonecall.report,priority:0 msgid "Normal" -msgstr "" +msgstr "Normaal" #. module: crm #: code:addons/crm/wizard/crm_lead_to_opportunity.py:104 #, python-format msgid "Closed/Cancelled Leads can not be converted into Opportunity" msgstr "" +"Gesloten/geannuleerd leads kunnen niet in een opportuniteit worden omgezet" #. module: crm #: model:ir.actions.act_window,name:crm.crm_meeting_categ_action #: model:ir.ui.menu,name:crm.menu_crm_case_meeting-act msgid "Meeting Categories" -msgstr "" +msgstr "Vergadercategorieën" #. module: crm #: view:crm.phonecall2partner:0 msgid "You may have to verify that this partner does not exist already." -msgstr "" +msgstr "U dient wellicht na te gaan of de relatie nog niet bestaat." #. module: crm #: field:crm.lead.report,delay_open:0 msgid "Delay to Open" -msgstr "" +msgstr "Tijd tot openen" #. module: crm #: field:crm.lead.report,user_id:0 field:crm.phonecall.report,user_id:0 msgid "User" -msgstr "" +msgstr "Gebruiker" #. module: crm #: code:addons/crm/crm.py:446 #, python-format msgid "The case '%s' has been cancelled." -msgstr "" +msgstr "Zaak '%s' is geannuleerd." #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "November" -msgstr "" +msgstr "November" #. module: crm #: view:crm.lead.report:0 #: model:ir.actions.act_window,name:crm.act_opportunity_stage msgid "Opportunities By Stage" -msgstr "" +msgstr "Opportuniteiten per fase" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "January" -msgstr "" +msgstr "Januari" #. module: crm #: model:process.process,name:crm.process_process_contractprocess0 msgid "Contract" -msgstr "" +msgstr "Contract" #. module: crm #: model:crm.case.resource.type,name:crm.type_lead4 msgid "Twitter Ads" -msgstr "" +msgstr "Twitter Ads" #. module: crm #: code:addons/crm/crm_lead.py:336 #, python-format msgid "The opportunity '%s' has been been won." -msgstr "" +msgstr "Opportuniteit '%s' is gewonnen." #. module: crm #: field:crm.case.stage,case_default:0 msgid "Common to All Teams" -msgstr "" +msgstr "Voor alle teams" #. module: crm #: code:addons/crm/crm_lead.py:831 code:addons/crm/wizard/crm_add_note.py:28 #, python-format msgid "Error" -msgstr "" +msgstr "Fout" #. module: crm #: view:crm.lead.report:0 msgid "Planned Revenues" -msgstr "" +msgstr "Geplande opbrengsten" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor7 msgid "Need Consulting" -msgstr "" +msgstr "Heeft consulting nodig" #. module: crm #: constraint:crm.segmentation:0 msgid "Error ! You can not create recursive profiles." -msgstr "" +msgstr "U kunt niet dezelfde profielen maken." #. module: crm #: help:crm.lead.report,deadline_year:0 msgid "Expected closing year" -msgstr "" +msgstr "Verwacht afsluitjaar" #. module: crm #: field:crm.lead,partner_address_id:0 field:crm.meeting,partner_address_id:0 #: field:crm.phonecall,partner_address_id:0 msgid "Partner Contact" -msgstr "" +msgstr "Contactpersoon relatie" #. module: crm #: field:crm.meeting,recurrent_id:0 msgid "Recurrent ID date" -msgstr "" +msgstr "Datum recurrente ID" #. module: crm #: sql_constraint:res.users:0 msgid "You can not have two users with the same login !" -msgstr "" +msgstr "U kunt geen twee gebruikers met dezelfde login maken." #. module: crm #: code:addons/crm/crm.py:409 view:crm.lead:0 view:res.partner:0 #, python-format msgid "Close" -msgstr "" +msgstr "Sluiten" #. module: crm #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Schedule a call" -msgstr "" +msgstr "Een gesprek plannen" #. module: crm #: view:crm.lead:0 view:crm.phonecall:0 msgid "Categorization" -msgstr "" +msgstr "Categorisering" #. module: crm #: view:crm.lead:0 msgid "Log Call" -msgstr "" +msgstr "Gesprek noteren" #. module: crm #: model:ir.model,name:crm.model_base_action_rule msgid "Action Rules" -msgstr "" +msgstr "Actieregels" #. module: crm #: field:crm.meeting,rrule_type:0 msgid "Recurrency" -msgstr "" +msgstr "Recurrentie" #. module: crm #: field:crm.meeting,phonecall_id:0 msgid "Phonecall" -msgstr "" +msgstr "Telefoongesprek" #. module: crm #: selection:crm.meeting,week_list:0 msgid "Thursday" -msgstr "" +msgstr "Donderdag" #. module: crm #: view:crm.meeting:0 msgid "To" -msgstr "" +msgstr "Aan" #. module: crm #: view:crm.lead:0 msgid "Create date" -msgstr "" +msgstr "Creatiedatum" #. module: crm #: selection:crm.meeting,class:0 msgid "Private" -msgstr "" +msgstr "Privé" #. module: crm #: selection:crm.meeting,class:0 msgid "Public for Employees" -msgstr "" +msgstr "Openbaar voor werknemers" #. module: crm #: field:crm.lead,function:0 msgid "Function" -msgstr "" +msgstr "Functie" #. module: crm #: view:crm.add.note:0 msgid "_Add" -msgstr "" +msgstr "_Toevoegen" #. module: crm #: field:crm.case.section,note:0 view:crm.meeting:0 #: field:crm.meeting,description:0 view:crm.phonecall:0 #: field:crm.phonecall,description:0 field:crm.segmentation,description:0 msgid "Description" -msgstr "" +msgstr "Omschrijving" #. module: crm #: view:crm.phonecall.report:0 msgid "Phone calls made in current month" -msgstr "" +msgstr "Telefoongesprekken van deze maand" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "May" -msgstr "" +msgstr "Mei" #. module: crm #: model:crm.case.categ,name:crm.categ_oppor2 msgid "Interest in Accessories" -msgstr "" +msgstr "Interesse in accessoires" #. module: crm #: view:crm.lead:0 msgid "New Opportunities" -msgstr "" +msgstr "Nieuwe opportuniteiten" #. module: crm #: code:addons/crm/crm_action_rule.py:61 #, python-format msgid "No E-Mail Found for your Company address!" -msgstr "" +msgstr "Geen e-mail gevonden voor uw bedrijf" #. module: crm #: field:crm.lead.report,email:0 msgid "# Emails" -msgstr "" +msgstr "# E-mails" #. module: crm #: field:crm.lead,street:0 msgid "Street" -msgstr "" +msgstr "Straat" #. module: crm #: view:crm.lead.report:0 msgid "Opportunities by User and Team" -msgstr "" +msgstr "Opportuniteiten per gebruiker en team" #. module: crm #: view:crm.phonecall:0 msgid "Reset to Todo" -msgstr "" +msgstr "Terug naar Uit te voeren" #. module: crm #: field:crm.case.section,working_hours:0 msgid "Working Hours" -msgstr "" +msgstr "Werkuren" #. module: crm #: field:res.partner,phonecall_ids:0 msgid "Phonecalls" -msgstr "" +msgstr "Telefoongesprekken" #. module: crm #: view:crm.lead:0 field:crm.lead,is_customer_add:0 msgid "Customer" -msgstr "" +msgstr "Klant" #. module: crm #: selection:crm.lead,priority:0 selection:crm.lead.report,priority:0 #: selection:crm.phonecall,priority:0 #: selection:crm.phonecall.report,priority:0 msgid "Lowest" -msgstr "" +msgstr "Laagste" #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "February" -msgstr "" +msgstr "Februari" #. module: crm #: field:base.action.rule,trg_section_id:0 field:crm.case.categ,section_id:0 @@ -3446,23 +3596,23 @@ msgstr "" #: view:crm.phonecall.report:0 field:crm.phonecall2phonecall,section_id:0 #: field:res.partner,section_id:0 field:res.users,context_section_id:0 msgid "Sales Team" -msgstr "" +msgstr "Verkoopteam" #. module: crm #: model:crm.case.stage,name:crm.stage_lead6 view:crm.lead:0 msgid "Lost" -msgstr "" +msgstr "Verloren" #. module: crm #: view:crm.lead:0 msgid "Edit" -msgstr "" +msgstr "Bewerken" #. module: crm #: field:crm.lead,country_id:0 view:crm.lead.report:0 #: field:crm.lead.report,country_id:0 msgid "Country" -msgstr "" +msgstr "Land" #. module: crm #: view:crm.lead:0 view:crm.lead2opportunity.partner:0 @@ -3471,12 +3621,12 @@ msgstr "" #: selection:crm.lead2opportunity.partner.mass,name:0 view:crm.phonecall:0 #: view:res.partner:0 msgid "Convert to Opportunity" -msgstr "" +msgstr "Omzetten naar opportuniteit" #. module: crm #: selection:crm.meeting,week_list:0 msgid "Wednesday" -msgstr "" +msgstr "Woensdag" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_categ_phone_incoming0 @@ -3486,28 +3636,32 @@ msgid "" "partner. From the phone call form, you can trigger a request for another " "call, a meeting or an opportunity." msgstr "" +"Hiermee kunt u inkomende gesprekken snel noteren. Elk gesprek komt in de " +"relatiefiche, zodat elk contact wordt bijgehouden. Via het telefoonformulier " +"kunt u een nieuw gesprek plannen, een vergadering beleggen of een " +"opportuniteit maken." #. module: crm #: selection:crm.lead.report,creation_month:0 #: selection:crm.lead.report,deadline_month:0 #: selection:crm.meeting,month_list:0 selection:crm.phonecall.report,month:0 msgid "April" -msgstr "" +msgstr "April" #. module: crm #: field:crm.case.resource.type,name:0 msgid "Campaign Name" -msgstr "" +msgstr "Campagnenaam" #. module: crm #: view:crm.segmentation:0 msgid "Profiling" -msgstr "" +msgstr "Profilering" #. module: crm #: model:ir.model,name:crm.model_crm_phonecall_report msgid "Phone calls by user and section" -msgstr "" +msgstr "Telefoongesprekken per gebruik en sectie" #. module: crm #: model:ir.actions.act_window,help:crm.crm_case_channel_action @@ -3516,79 +3670,81 @@ msgid "" "channels that will be maintained at the creation of a document in the " "system. Some examples of channels can be: Website, Phone Call, Reseller, etc." msgstr "" +"Via specifieke kanalen houdt u bij waar uw leads en opportuniteiten vandaan " +"komen. Enkele voorbeelden: website, telefoon, reseller, enz." #. module: crm #: selection:crm.lead2opportunity.partner,name:0 #: selection:crm.lead2opportunity.partner.mass,name:0 msgid "Merge with existing Opportunity" -msgstr "" +msgstr "Samenvoegen met bestaande opportuniteit" #. module: crm #: field:crm.meeting,select1:0 msgid "Option" -msgstr "" +msgstr "Optie" #. module: crm #: model:crm.case.stage,name:crm.stage_lead4 msgid "Negotiation" -msgstr "" +msgstr "Onderhandeling" #. module: crm #: view:crm.lead:0 msgid "Exp.Closing" -msgstr "" +msgstr "Verw. sluiting" #. module: crm #: field:crm.case.stage,sequence:0 field:crm.meeting,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Volgorde" #. module: crm #: model:ir.model,name:crm.model_mail_compose_message msgid "E-mail composition wizard" -msgstr "" +msgstr "E-mailcompositiewizard" #. module: crm #: view:crm.meeting:0 msgid "Accept" -msgstr "" +msgstr "Accepteren" #. module: crm #: field:crm.segmentation.line,expr_name:0 msgid "Control Variable" -msgstr "" +msgstr "Controlevariabele" #. module: crm #: selection:crm.meeting,byday:0 msgid "Second" -msgstr "" +msgstr "Tweede" #. module: crm #: model:crm.case.stage,name:crm.stage_lead3 msgid "Proposition" -msgstr "" +msgstr "Voorstel" #. module: crm #: field:crm.lead.report,date_closed:0 #: field:crm.phonecall.report,date_closed:0 msgid "Close Date" -msgstr "" +msgstr "Afsluitdatum" #. module: crm #: view:crm.lead.report:0 view:crm.phonecall.report:0 #: field:crm.phonecall.report,name:0 msgid "Year" -msgstr "" +msgstr "Jaar" #. module: crm #: constraint:res.partner:0 msgid "Error ! You cannot create recursive associated members." -msgstr "" +msgstr "U kunt niet dezelfde leden maken." #. module: crm #: model:crm.case.resource.type,name:crm.type_lead8 msgid "Newsletter" -msgstr "" +msgstr "Nieuwsbrief" #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" diff --git a/addons/crm/test/process/lead2opportunity2win.yml b/addons/crm/test/process/lead2opportunity2win.yml index eadb46f0f55..dc5aadbcf16 100644 --- a/addons/crm/test/process/lead2opportunity2win.yml +++ b/addons/crm/test/process/lead2opportunity2win.yml @@ -11,9 +11,11 @@ !assert {model: crm.lead, id: crm.crm_case_4, string: Lead in open state}: - state == "open" - - I create partner from lead. + I fill in a lead2partner wizard. - !record {model: crm.lead2partner, id: crm_lead2partner_id1, context: '{"active_model": "crm.lead", "active_ids": [ref("crm_case_4")]}'}: +- + I create a partner from the lead2partner wizard. - !python {model: crm.lead2partner}: | context.update({'active_model': 'crm.lead', 'active_ids': [ref('crm_case_4')], 'active_id': ref('crm_case_4')}) diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py index 535f6d20367..cbf3ec9f13a 100644 --- a/addons/crm_claim/crm_claim.py +++ b/addons/crm_claim/crm_claim.py @@ -35,7 +35,7 @@ CRM_CLAIM_PENDING_STATES = ( class crm_claim_stage(osv.osv): """ Model for claim stages. This models the main stages of a claim - management flow. Main CRM objects (leads, opportunities, project + management flow. Main CRM objects (leads, opportunities, project issues, ...) will now use only stages, instead of state and stages. Stages are for example used to display the kanban view of records. """ @@ -104,7 +104,7 @@ class crm_claim(base_stage, osv.osv): 'email_from': fields.char('Email', size=128, help="These people will receive email."), 'partner_phone': fields.char('Phone', size=32), 'stage_id': fields.many2one ('crm.claim.stage', 'Stage', - domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"), + domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"), 'cause': fields.text('Root Cause'), 'state': fields.related('stage_id', 'state', type="selection", store=True, selection=crm.AVAILABLE_STATES, string="State", readonly=True, diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index 9bd56cf3944..f36a3b72640 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -69,9 +69,9 @@ class crm_helpdesk(base_state, base_stage, osv.osv): 'probability': fields.float('Probability (%)'), 'categ_id': fields.many2one('crm.case.categ', 'Category', \ domain="['|',('section_id','=',False),('section_id','=',section_id),\ - ('object_id.model', '=', 'crm.helpdesk')]"), - 'duration': fields.float('Duration', states={'done': [('readonly', True)]}), - 'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True, + ('object_id.model', '=', 'crm.helpdesk')]"), + 'duration': fields.float('Duration', states={'done': [('readonly', True)]}), + 'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True, help='The state is set to \'Draft\', when a case is created.\ \nIf the case is in progress the state is set to \'Open\'.\ \nWhen the case is over, the state is set to \'Done\'.\ @@ -139,9 +139,9 @@ class crm_helpdesk(base_state, base_stage, osv.osv): return super(crm_helpdesk,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context) - # ****************************** + # --------------------------------------------------- # OpenChatter - # ****************************** + # --------------------------------------------------- def case_get_note_msg_prefix(self, cr, uid, id, context=None): """ override of default base_state method. """ @@ -152,5 +152,4 @@ class crm_helpdesk(base_state, base_stage, osv.osv): self.message_post(cr, uid, ids, body=msg, context=context) return True - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm_profiling/crm_profiling.py b/addons/crm_profiling/crm_profiling.py index 4cc54a8d3d4..8f07dfcbdda 100644 --- a/addons/crm_profiling/crm_profiling.py +++ b/addons/crm_profiling/crm_profiling.py @@ -77,7 +77,7 @@ def _get_parents(cr, uid, ids): return ids_to_check -def test_prof(cr, uid, seg_id, pid, answers_ids = []): +def test_prof(cr, uid, seg_id, pid, answers_ids=None): """ return True if the partner pid fetch the segmentation rule seg_id @param cr: the current row, from the database cursor, diff --git a/addons/document/content_index.py b/addons/document/content_index.py index 4cf3c8dfed2..399541e1f59 100644 --- a/addons/document/content_index.py +++ b/addons/document/content_index.py @@ -51,7 +51,7 @@ class indexer(object): return mts[0] return None - def indexContent(self, content, filename=None, realfile = None): + def indexContent(self, content, filename=None, realfile=None): """ Use either content or the real file, to index. Some parsers will work better with the actual content, others parse a file easier. Try the @@ -95,16 +95,15 @@ class indexer(object): raise NhException('No appropriate method to index file.') - def _doIndexContent(self,content): + def _doIndexContent(self, content): raise NhException("Content cannot be handled here.") - def _doIndexFile(self,fpath): + def _doIndexFile(self, fpath): raise NhException("Content cannot be handled here.") def __repr__(self): return "" %(self.__module__, self.__class__.__name__) - def mime_match(mime, mdict): if mdict.has_key(mime): return (mime, mdict[mime]) @@ -136,7 +135,7 @@ class contentIndex(object): if not f: raise Exception("Your indexer should at least support a mimetype or extension.") - def doIndex(self, content, filename=None, content_type=None, realfname = None, debug=False): + def doIndex(self, content, filename=None, content_type=None, realfname=None, debug=False): fobj = None fname = None mime = None diff --git a/addons/document/document.py b/addons/document/document.py index cb30e5f93c9..3ae783f49e7 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -149,7 +149,7 @@ class document_file(osv.osv): _sql_constraints = [ # filename_uniq is not possible in pure SQL ] - def _check_duplication(self, cr, uid, vals, ids=[], op='create'): + def _check_duplication(self, cr, uid, vals, ids=None, op='create'): name = vals.get('name', False) parent_id = vals.get('parent_id', False) res_model = vals.get('res_model', False) diff --git a/addons/document/document_directory.py b/addons/document/document_directory.py index ac0671d36d3..ec51d9bcc6c 100644 --- a/addons/document/document_directory.py +++ b/addons/document/document_directory.py @@ -221,7 +221,7 @@ class document_directory(osv.osv): pass return res - def _locate_child(self, cr, uid, root_id, uri,nparent, ncontext): + def _locate_child(self, cr, uid, root_id, uri, nparent, ncontext): """ try to locate the node in uri, Return a tuple (node_dir, remaining_path) """ @@ -234,7 +234,7 @@ class document_directory(osv.osv): default.update(name=_("%s (copy)") % (name)) return super(document_directory,self).copy(cr, uid, id, default, context=context) - def _check_duplication(self, cr, uid, vals, ids=[], op='create'): + def _check_duplication(self, cr, uid, vals, ids=None, op='create'): name=vals.get('name',False) parent_id=vals.get('parent_id',False) ressource_parent_type_id=vals.get('ressource_parent_type_id',False) diff --git a/addons/document/nodes.py b/addons/document/nodes.py index f1c3c71a8e6..6bcb2237a9e 100644 --- a/addons/document/nodes.py +++ b/addons/document/nodes.py @@ -103,7 +103,7 @@ class node_context(object): def get(self, name, default=None): return self.context.get(name, default) - def get_uri(self, cr, uri): + def get_uri(self, cr, uri): """ Although this fn passes back to doc.dir, it is needed since it is a potential caching point. """ @@ -252,7 +252,7 @@ class node_class(object): print "node_class.children()" return [] #stub - def child(self,cr, name, domain=None): + def child(self, cr, name, domain=None): print "node_class.child()" return None @@ -270,7 +270,7 @@ class node_class(object): print "node_class.path_get()" return False - def get_data(self,cr): + def get_data(self, cr): raise TypeError('No data for %s.'% self.type) def open_data(self, cr, mode): @@ -287,10 +287,10 @@ class node_class(object): """ raise TypeError('No data for %s.' % self.type) - def _get_storage(self,cr): + def _get_storage(self, cr): raise RuntimeError("No storage for base class.") - def get_etag(self,cr): + def get_etag(self, cr): """ Get a tag, unique per object + modification. see. http://tools.ietf.org/html/rfc2616#section-13.3.3 """ @@ -434,7 +434,9 @@ class node_database(node_class): """ our_type = 'database' - def __init__(self, path=[], parent=False, context=None): + def __init__(self, path=None, parent=False, context=None): + if path is None: + path = [] super(node_database,self).__init__(path, parent, context) self.unixperms = 040750 self.uidperms = 5 @@ -477,11 +479,11 @@ class node_database(node_class): return res - def _file_get(self,cr, nodename=False): + def _file_get(self, cr, nodename=False): res = [] return res - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'db-%s' % cr.dbname def mkdosname(company_name, default='noname'): @@ -666,7 +668,6 @@ class node_dir(node_database): return dirobj.create(cr, uid, val) - def create_child(self, cr, path, data=None): """ API function to create a child file object and node Return the node_* created @@ -693,7 +694,7 @@ class node_dir(node_database): fnode.set_data(cr, data, fil) return fnode - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'dir-%d' % self.dir_id def move_to(self, cr, ndir_node, new_name=False, fil_obj=None, ndir_obj=None, in_write=False): @@ -802,7 +803,7 @@ class node_res_dir(node_class): def children(self, cr, domain=None): return self._child_get(cr, domain=domain) - def child(self,cr, name, domain=None): + def child(self, cr, name, domain=None): res = self._child_get(cr, name, domain=domain) if res: return res[0] @@ -878,7 +879,7 @@ class node_res_dir(node_class): res.append(self.res_obj_class(res_name, self.dir_id, self, self.context, self.res_model, bo)) return res - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'rdir-%d' % self.dir_id class node_res_obj(node_class): @@ -889,7 +890,7 @@ class node_res_obj(node_class): node_dirs (with limited domain). """ our_type = 'collection' - def __init__(self, path, dir_id, parent, context, res_model, res_bo, res_id = None): + def __init__(self, path, dir_id, parent, context, res_model, res_bo, res_id=None): super(node_res_obj,self).__init__(path, parent,context) assert parent #todo: more info from dirr @@ -958,7 +959,7 @@ class node_res_obj(node_class): return res[0] return None - def _file_get(self,cr, nodename=False): + def _file_get(self, cr, nodename=False): res = [] is_allowed = self.check_perms((nodename and 1) or 5) if not is_allowed: @@ -1160,7 +1161,7 @@ class node_res_obj(node_class): fnode.set_data(cr, data, fil) return fnode - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'rodir-%d-%d' % (self.dir_id, self.res_id) node_res_dir.res_obj_class = node_res_obj @@ -1210,7 +1211,6 @@ class node_file(node_class): return False return self.file_id == other.file_id - def open_data(self, cr, mode): stor = self.storage_id assert stor, "No storage for file #%s." % self.file_id @@ -1262,7 +1262,7 @@ class node_file(node_class): else: self.path = dirpath[0] - def get_data(self, cr, fil_obj = None): + def get_data(self, cr, fil_obj=None): """ Retrieve the data for some file. fil_obj may optionally be specified, and should be a browse object for the file. This is useful when the caller has already initiated @@ -1278,14 +1278,14 @@ class node_file(node_class): stobj = self.context._dirobj.pool.get('document.storage') return stobj.get_data(cr, self.context.uid,stor, self,self.context.context, fil_obj) - def get_data_len(self, cr, fil_obj = None): + def get_data_len(self, cr, fil_obj=None): # TODO: verify with the storage object! bin_size = self.context.context.get('bin_size', False) if bin_size and not self.content_length: self.content_length = fil_obj.db_datas return self.content_length - def set_data(self, cr, data, fil_obj = None): + def set_data(self, cr, data, fil_obj=None): """ Store data at some file. fil_obj may optionally be specified, and should be a browse object for the file. This is useful when the caller has already initiated @@ -1299,7 +1299,7 @@ class node_file(node_class): stobj = self.context._dirobj.pool.get('document.storage') return stobj.set_data(cr, self.context.uid,stor, self, data, self.context.context, fil_obj) - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'file-%d' % self.file_id def move_to(self, cr, ndir_node, new_name=False, fil_obj=None, ndir_obj=None, in_write=False): @@ -1362,7 +1362,7 @@ class node_file(node_class): class node_content(node_class): our_type = 'content' - def __init__(self, path, parent, context, cnt, dctx = None, act_id=None): + def __init__(self, path, parent, context, cnt, dctx=None, act_id=None): super(node_content,self).__init__(path, parent,context) self.cnt_id = cnt.id self.create_date = False @@ -1382,7 +1382,7 @@ class node_content(node_class): self.dctx.update(dctx) self.act_id = act_id - def fill_fields(self, cr, dctx = None): + def fill_fields(self, cr, dctx=None): """ Try to read the object and fill missing fields, like mimetype, dates etc. This function must be different from the constructor, because @@ -1395,8 +1395,7 @@ class node_content(node_class): if res and res[0][0]: self.mimetype = str(res[0][0]) - - def get_data(self, cr, fil_obj = None): + def get_data(self, cr, fil_obj=None): cntobj = self.context._dirobj.pool.get('document.directory.content') if not self.check_perms(4): raise IOError(errno.EPERM, "Permission denied.") @@ -1426,7 +1425,7 @@ class node_content(node_class): return nodefd_content(self, cr, mode, ctx) - def get_data_len(self, cr, fil_obj = None): + def get_data_len(self, cr, fil_obj=None): # FIXME : here, we actually generate the content twice!! # we should have cached the generated content, but it is # not advisable to do keep it in memory, until we have a cache @@ -1435,7 +1434,7 @@ class node_content(node_class): self.get_data(cr,fil_obj) return self.content_length - def set_data(self, cr, data, fil_obj = None): + def set_data(self, cr, data, fil_obj=None): cntobj = self.context._dirobj.pool.get('document.directory.content') if not self.check_perms(2): raise IOError(errno.EPERM, "Permission denied.") @@ -1444,7 +1443,7 @@ class node_content(node_class): ctx.update(self.dctx) return cntobj.process_write(cr, self.context.uid, self, data, ctx) - def _get_ttag(self,cr): + def _get_ttag(self, cr): return 'cnt-%d%s' % (self.cnt_id,(self.act_id and ('-' + str(self.act_id))) or '') def get_dav_resourcetype(self, cr): @@ -1558,5 +1557,4 @@ class nodefd_static(StringIO, node_descriptor): cr.close() StringIO.close(self) -#eof # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document/odt2txt.py b/addons/document/odt2txt.py old mode 100755 new mode 100644 index 9ca9b6e596f..8a3dc59d9ed --- a/addons/document/odt2txt.py +++ b/addons/document/odt2txt.py @@ -24,11 +24,11 @@ import sys, zipfile, xml.dom.minidom import StringIO class OpenDocumentTextFile : - def __init__ (self, filepath) : + def __init__ (self, filepath): zip = zipfile.ZipFile(filepath) self.content = xml.dom.minidom.parseString(zip.read("content.xml")) - def toString (self) : + def toString (self): """ Converts the document to a string. """ buffer = u"" for val in ["text:p", "text:h", "text:list"]: @@ -36,7 +36,7 @@ class OpenDocumentTextFile : buffer += self.textToString(paragraph) + "\n" return buffer - def textToString(self, element) : + def textToString(self, element): buffer = u"" for node in element.childNodes : if node.nodeType == xml.dom.Node.TEXT_NODE : diff --git a/addons/document/std_index.py b/addons/document/std_index.py index 422590e127f..95c5e594c25 100644 --- a/addons/document/std_index.py +++ b/addons/document/std_index.py @@ -39,7 +39,7 @@ def _to_unicode(s): except UnicodeError: return s -def textToString(element) : +def textToString(element): buffer = u"" for node in element.childNodes : if node.nodeType == xml.dom.Node.TEXT_NODE : @@ -56,7 +56,7 @@ class TxtIndex(indexer): def _getExtensions(self): return ['.txt', '.py'] - def _doIndexContent(self,content): + def _doIndexContent(self, content): return content cntIndex.register(TxtIndex()) @@ -68,7 +68,7 @@ class PptxIndex(indexer): def _getExtensions(self): return ['.pptx'] - def _doIndexFile(self,fname): + def _doIndexFile(self, fname): def toString () : """ Converts the document to a string. """ buffer = u"" @@ -96,7 +96,7 @@ class DocIndex(indexer): def _getExtensions(self): return ['.doc'] - def _doIndexFile(self,fname): + def _doIndexFile(self, fname): try: pop = Popen(['antiword', fname], shell=False, stdout=PIPE) (data, _) = pop.communicate() @@ -116,7 +116,7 @@ class DocxIndex(indexer): def _getExtensions(self): return ['.docx'] - def _doIndexFile(self,fname): + def _doIndexFile(self, fname): zip = zipfile.ZipFile(fname) content = xml.dom.minidom.parseString(zip.read("word/document.xml")) def toString () : @@ -141,7 +141,7 @@ class XlsxIndex(indexer): def _getExtensions(self): return ['.xlsx'] - def _doIndexFile(self,fname): + def _doIndexFile(self, fname): zip = zipfile.ZipFile(fname) content = xml.dom.minidom.parseString(zip.read("xl/sharedStrings.xml")) def toString () : @@ -165,7 +165,7 @@ class PdfIndex(indexer): def _getExtensions(self): return ['.pdf'] - def _doIndexFile(self,fname): + def _doIndexFile(self, fname): pop = Popen(['pdftotext', '-enc', 'UTF-8', '-nopgbrk', fname, '-'], shell=False, stdout=PIPE) (data, _) = pop.communicate() return _to_unicode(data) @@ -181,7 +181,7 @@ class ImageNoIndex(indexer): return [] #return ['.png','.jpg','.gif','.jpeg','.bmp','.tiff'] - def _doIndexContent(self,content): + def _doIndexContent(self, content): return 'image' diff --git a/addons/document_webdav/document_webdav.py b/addons/document_webdav/document_webdav.py index f53353dd43c..3b604d6cffb 100644 --- a/addons/document_webdav/document_webdav.py +++ b/addons/document_webdav/document_webdav.py @@ -57,7 +57,7 @@ class document_davdir(osv.osv): # TODO group return - def _locate_child(self, cr, uid, root_id, uri,nparent, ncontext): + def _locate_child(self, cr, uid, root_id, uri, nparent, ncontext): """ try to locate the node in uri, Return a tuple (node_dir, remaining_path) """ diff --git a/addons/document_webdav/redirect.py b/addons/document_webdav/redirect.py index 31f462bcbbe..c3dd9248f45 100644 --- a/addons/document_webdav/redirect.py +++ b/addons/document_webdav/redirect.py @@ -30,7 +30,7 @@ class RedirectHTTPHandler(HttpLogHandler, FixSendError, HttpOptions, HTTPHandler _HTTP_OPTIONS = { 'Allow': ['OPTIONS', 'GET', 'HEAD', 'PROPFIND'] } redirect_paths = {} - def __init__(self,request, client_address, server): + def __init__(self, request, client_address, server): HTTPHandler.__init__(self,request,client_address,server) def send_head(self): diff --git a/addons/document_webdav/test_davclient.py b/addons/document_webdav/test_davclient.py old mode 100755 new mode 100644 index 0f66363c553..79ee471c69e --- a/addons/document_webdav/test_davclient.py +++ b/addons/document_webdav/test_davclient.py @@ -683,7 +683,7 @@ class DAVClient(object): assert d2 == d, "Data does not match" return ctype, rrange, d - def gd_put(self, path, body=None, srcpath=None, mime=None, noclobber=False, ): + def gd_put(self, path, body=None, srcpath=None, mime=None, noclobber=False): """ HTTP PUT @param noclobber will prevent overwritting a resource (If-None-Match) @param mime will set the content-type @@ -705,5 +705,4 @@ class DAVClient(object): etag = m.getheader('ETag') return etag or True -#eof # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document_webdav/webdav.py b/addons/document_webdav/webdav.py index 903dd6a16ba..f714ff51518 100644 --- a/addons/document_webdav/webdav.py +++ b/addons/document_webdav/webdav.py @@ -236,7 +236,7 @@ def mk_prop_response(self, uri, good_props, bad_props, doc): return re -def mk_propname_response(self,uri,propnames,doc): +def mk_propname_response(self, uri, propnames, doc): """ make a new result element for a PROPNAME request This will simply format the propnames list. diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py index 28909e61167..70ad4d2657f 100644 --- a/addons/document_webdav/webdav_server.py +++ b/addons/document_webdav/webdav_server.py @@ -81,7 +81,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): 'DELETE', 'TRACE', 'REPORT', ] } - def get_userinfo(self,user,pw): + def get_userinfo(self, user, pw): return False def _log(self, message): @@ -167,7 +167,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler): self.close_connection = 1 DAVRequestHandler.send_header(self, key, value) - def send_body(self, DATA, code = None, msg = None, desc = None, ctype='application/octet-stream', headers=None): + def send_body(self, DATA, code=None, msg=None, desc=None, ctype='application/octet-stream', headers=None): if headers and 'Connection' in headers: pass elif self.request_version in ('HTTP/1.0', 'HTTP/0.9'): @@ -441,10 +441,10 @@ class dummy_dav_interface(object): def __init__(self, parent): self.parent = parent - def get_propnames(self,uri): + def get_propnames(self, uri): return self.PROPS - def get_prop(self,uri,ns,propname): + def get_prop(self, uri, ns, propname): if self.M_NS.has_key(ns): prefix=self.M_NS[ns] else: @@ -460,10 +460,10 @@ class dummy_dav_interface(object): def get_data(self, uri, range=None): raise DAV_NotFound - def _get_dav_creationdate(self,uri): + def _get_dav_creationdate(self, uri): return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) - def _get_dav_getlastmodified(self,uri): + def _get_dav_getlastmodified(self, uri): return time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()) def _get_dav_displayname(self, uri): diff --git a/addons/email_template/html2text.py b/addons/email_template/html2text.py old mode 100755 new mode 100644 index 745381850e3..880a8bb43a8 --- a/addons/email_template/html2text.py +++ b/addons/email_template/html2text.py @@ -41,13 +41,13 @@ def name2cp(k): if k.startswith("&#") and k.endswith(";"): return int(k[2:-1]) # not in latin-1 return ord(codecs.latin_1_decode(k)[0]) -unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"', +unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"', 'copy':'(C)', 'mdash':'--', 'nbsp':' ', 'rarr':'->', 'larr':'<-', 'middot':'*', 'ndash':'-', 'oelig':'oe', 'aelig':'ae', -'agrave':'a', 'aacute':'a', 'acirc':'a', 'atilde':'a', 'auml':'a', 'aring':'a', -'egrave':'e', 'eacute':'e', 'ecirc':'e', 'euml':'e', +'agrave':'a', 'aacute':'a', 'acirc':'a', 'atilde':'a', 'auml':'a', 'aring':'a', +'egrave':'e', 'eacute':'e', 'ecirc':'e', 'euml':'e', 'igrave':'i', 'iacute':'i', 'icirc':'i', 'iuml':'i', -'ograve':'o', 'oacute':'o', 'ocirc':'o', 'otilde':'o', 'ouml':'o', +'ograve':'o', 'oacute':'o', 'ocirc':'o', 'otilde':'o', 'ouml':'o', 'ugrave':'u', 'uacute':'u', 'ucirc':'u', 'uuml':'u'} unifiable_n = {} @@ -60,7 +60,7 @@ def charref(name): c = int(name[1:], 16) else: c = int(name) - + if not UNICODE_SNOB and c in unifiable_n.keys(): return unifiable_n[c] else: @@ -76,14 +76,14 @@ def entityref(c): def replaceEntities(s): s = s.group(1) - if s[0] == "#": + if s[0] == "#": return charref(s[1:]) else: return entityref(s) r_unescape = re.compile(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));") def unescape(s): return r_unescape.sub(replaceEntities, s) - + def fixattrs(attrs): # Fix bug in sgmllib.py if not attrs: return attrs @@ -105,7 +105,7 @@ def optwrap(text): """Wrap all paragraphs in the provided text.""" if not BODY_WIDTH: return text - + assert wrap, "Requires Python 2.3." result = '' newlines = 0 @@ -136,7 +136,7 @@ def hn(tag): class _html2text(sgmllib.SGMLParser): def __init__(self, out=sys.stdout.write, baseurl=''): sgmllib.SGMLParser.__init__(self) - + if out is None: self.out = self.outtextf else: self.out = out self.outtext = u'' @@ -157,43 +157,43 @@ class _html2text(sgmllib.SGMLParser): self.abbr_data = None # last inner HTML (for abbr being defined) self.abbr_list = {} # stack of abbreviations to write later self.baseurl = baseurl - - def outtextf(self, s): + + def outtextf(self, s): self.outtext += s - + def close(self): sgmllib.SGMLParser.close(self) - + self.pbr() self.o('', 0, 'end') - + return self.outtext - + def handle_charref(self, c): self.o(charref(c)) def handle_entityref(self, c): self.o(entityref(c)) - + def unknown_starttag(self, tag, attrs): self.handle_tag(tag, attrs, 1) - + def unknown_endtag(self, tag): self.handle_tag(tag, None, 0) - + def previousIndex(self, attrs): """ returns the index of certain set of attributes (of a link) in the self.a list - + If the set of attributes is not found, returns None """ if not attrs.has_key('href'): return None - + i = -1 for a in self.a: i += 1 match = 0 - + if a.has_key('href') and a['href'] == attrs['href']: if a.has_key('title') or attrs.has_key('title'): if (a.has_key('title') and attrs.has_key('title') and @@ -206,13 +206,13 @@ class _html2text(sgmllib.SGMLParser): def handle_tag(self, tag, attrs, start): attrs = fixattrs(attrs) - + if hn(tag): self.p() if start: self.o(hn(tag)*"#" + ' ') if tag in ['p', 'div']: self.p() - + if tag == "br" and start: self.o(" \n") if tag == "hr" and start: @@ -220,21 +220,21 @@ class _html2text(sgmllib.SGMLParser): self.o("* * *") self.p() - if tag in ["head", "style", 'script']: + if tag in ["head", "style", 'script']: if start: self.quiet += 1 else: self.quiet -= 1 if tag in ["body"]: self.quiet = 0 # sites like 9rules.com never close - + if tag == "blockquote": - if start: + if start: self.p(); self.o('> ', 0, 1); self.start = 1 self.blockquote += 1 else: self.blockquote -= 1 self.p() - + if tag in ['em', 'i', 'u']: self.o("_") if tag in ['strong', 'b']: self.o("**") if tag == "code" and not self.pre: self.o('`') #TODO: `` `this` `` @@ -243,7 +243,7 @@ class _html2text(sgmllib.SGMLParser): attrsD = {} for (x, y) in attrs: attrsD[x] = y attrs = attrsD - + self.abbr_title = None self.abbr_data = '' if attrs.has_key('title'): @@ -253,13 +253,13 @@ class _html2text(sgmllib.SGMLParser): self.abbr_list[self.abbr_data] = self.abbr_title self.abbr_title = None self.abbr_data = '' - + if tag == "a": if start: attrsD = {} for (x, y) in attrs: attrsD[x] = y attrs = attrsD - if attrs.has_key('href') and not (SKIP_INTERNAL_LINKS and attrs['href'].startswith('#')): + if attrs.has_key('href') and not (SKIP_INTERNAL_LINKS and attrs['href'].startswith('#')): self.astack.append(attrs) self.o("[") else: @@ -277,7 +277,7 @@ class _html2text(sgmllib.SGMLParser): a['outcount'] = self.outcount self.a.append(a) self.o("][" + `a['count']` + "]") - + if tag == "img" and start: attrsD = {} for (x, y) in attrs: attrsD[x] = y @@ -296,20 +296,20 @@ class _html2text(sgmllib.SGMLParser): self.o("![") self.o(alt) self.o("]["+`attrs['count']`+"]") - + if tag == 'dl' and start: self.p() if tag == 'dt' and not start: self.pbr() if tag == 'dd' and start: self.o(' ') if tag == 'dd' and not start: self.pbr() - + if tag in ["ol", "ul"]: if start: self.list.append({'name':tag, 'num':0}) else: if self.list: self.list.pop() - + self.p() - + if tag == 'li': if start: self.pbr() @@ -323,10 +323,10 @@ class _html2text(sgmllib.SGMLParser): self.start = 1 else: self.pbr() - + if tag in ["table", "tr"] and start: self.p() if tag == 'td': self.pbr() - + if tag == "pre": if start: self.startpre = 1 @@ -334,34 +334,35 @@ class _html2text(sgmllib.SGMLParser): else: self.pre = 0 self.p() - + def pbr(self): if self.p_p == 0: self.p_p = 1 - def p(self): self.p_p = 2 - + def p(self): + self.p_p = 2 + def o(self, data, puredata=0, force=0): if self.abbr_data is not None: self.abbr_data += data - - if not self.quiet: + + if not self.quiet: if puredata and not self.pre: data = re.sub('\s+', ' ', data) if data and data[0] == ' ': self.space = 1 data = data[1:] if not data and not force: return - + if self.startpre: #self.out(" :") #TODO: not output when already one there self.startpre = 0 - + bq = (">" * self.blockquote) if not (force and data and data[0] == ">") and self.blockquote: bq += " " - + if self.pre: bq += " " data = data.replace("\n", "\n"+bq) - + if self.start: self.space = 0 self.p_p = 0 @@ -377,7 +378,7 @@ class _html2text(sgmllib.SGMLParser): if self.p_p: self.out(('\n'+bq)*self.p_p) self.space = 0 - + if self.space: if not self.lastWasNL: self.out(' ') self.space = 0 @@ -388,7 +389,7 @@ class _html2text(sgmllib.SGMLParser): newa = [] for link in self.a: if self.outcount > link['outcount']: - self.out(" ["+`link['count']`+"]: " + urlparse.urljoin(self.baseurl, link['href'])) + self.out(" ["+`link['count']`+"]: " + urlparse.urljoin(self.baseurl, link['href'])) if link.has_key('title'): self.out(" ("+link['title']+")") self.out("\n") else: @@ -397,7 +398,7 @@ class _html2text(sgmllib.SGMLParser): if self.a != newa: self.out("\n") # Don't need an extra line when nothing was done. self.a = newa - + if self.abbr_list and force == "end": for abbr, definition in self.abbr_list.items(): self.out(" *[" + abbr + "]: " + definition + "\n") @@ -410,8 +411,9 @@ class _html2text(sgmllib.SGMLParser): def handle_data(self, data): if r'\/script>' in data: self.quiet -= 1 self.o(data, 1) - - def unknown_decl(self, data): pass + + def unknown_decl(self, data): + pass def wrapwrite(text): sys.stdout.write(text.encode('utf8')) diff --git a/addons/event/event.py b/addons/event/event.py index 44def4f0c76..6512139faee 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -223,6 +223,7 @@ class event_event(osv.osv): 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'event.event', context=c), 'user_id': lambda obj, cr, uid, context: uid, } + def subscribe_to_event(self, cr, uid, ids, context=None): register_pool = self.pool.get('event.registration') user_pool = self.pool.get('res.users') @@ -252,6 +253,7 @@ class event_event(osv.osv): _constraints = [ (_check_closing_date, 'Error ! Closing Date cannot be set before Beginning Date.', ['date_end']), ] + def onchange_event_type(self, cr, uid, ids, type_event, context=None): if type_event: type_info = self.pool.get('event.type').browse(cr,uid,type_event,context) @@ -347,7 +349,6 @@ class event_registration(osv.osv): 'phone': fields.char('Phone', size=64), 'name': fields.char('Name', size=128, select=True), } - _defaults = { 'nb_register': 1, 'state': 'draft', diff --git a/addons/event/report/__init__.py b/addons/event/report/__init__.py index 1c60e2715df..4f2516e5615 100644 --- a/addons/event/report/__init__.py +++ b/addons/event/report/__init__.py @@ -21,4 +21,4 @@ import report_event_registration -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/event/wizard/event_confirm.py b/addons/event/wizard/event_confirm.py index e21d523bb12..e001aac9937 100644 --- a/addons/event/wizard/event_confirm.py +++ b/addons/event/wizard/event_confirm.py @@ -34,4 +34,4 @@ class event_confirm(osv.osv_memory): event_confirm() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/event_moodle/event_moodle.py b/addons/event_moodle/event_moodle.py index 0a565200f35..0bac50ca445 100644 --- a/addons/event_moodle/event_moodle.py +++ b/addons/event_moodle/event_moodle.py @@ -127,7 +127,7 @@ class event_moodle(osv.osv): passwd = passwd + '+' return passwd - def check_email(self,email): + def check_email(self, email): """ check if email is correct diff --git a/addons/event_project/event_project.py b/addons/event_project/event_project.py index 8590b84c4ad..34892b56f39 100644 --- a/addons/event_project/event_project.py +++ b/addons/event_project/event_project.py @@ -55,4 +55,4 @@ class event(osv.osv): event() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/event_project/wizard/event_project_retro.py b/addons/event_project/wizard/event_project_retro.py index c7eba5e0ec1..a794749701b 100644 --- a/addons/event_project/wizard/event_project_retro.py +++ b/addons/event_project/wizard/event_project_retro.py @@ -80,4 +80,4 @@ class event_project(osv.osv_memory): event_project() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr/hr_demo.xml b/addons/hr/hr_demo.xml index 8cb5ade52fe..914f373d02a 100644 --- a/addons/hr/hr_demo.xml +++ b/addons/hr/hr_demo.xml @@ -135,7 +135,7 @@ Grand-Rosière +3281813700 niv@openerp.com - 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
diff --git a/addons/hr_attendance/wizard/hr_attendance_bymonth.py b/addons/hr_attendance/wizard/hr_attendance_bymonth.py index 40dca536d7d..03e1db5dc3a 100644 --- a/addons/hr_attendance/wizard/hr_attendance_bymonth.py +++ b/addons/hr_attendance/wizard/hr_attendance_bymonth.py @@ -50,4 +50,4 @@ class hr_attendance_bymonth(osv.osv_memory): hr_attendance_bymonth() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_attendance/wizard/hr_attendance_byweek.py b/addons/hr_attendance/wizard/hr_attendance_byweek.py index 139ff94cd5a..9ee69a937d1 100644 --- a/addons/hr_attendance/wizard/hr_attendance_byweek.py +++ b/addons/hr_attendance/wizard/hr_attendance_byweek.py @@ -48,4 +48,4 @@ class hr_attendance_byweek(osv.osv_memory): hr_attendance_byweek() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_attendance/wizard/hr_attendance_error.py b/addons/hr_attendance/wizard/hr_attendance_error.py index e2f9dc94b3f..d489e699d89 100644 --- a/addons/hr_attendance/wizard/hr_attendance_error.py +++ b/addons/hr_attendance/wizard/hr_attendance_error.py @@ -66,4 +66,4 @@ class hr_attendance_error(osv.osv_memory): hr_attendance_error() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_evaluation/hr_evaluation.py b/addons/hr_evaluation/hr_evaluation.py index d0da22c5681..b13e90cd627 100644 --- a/addons/hr_evaluation/hr_evaluation.py +++ b/addons/hr_evaluation/hr_evaluation.py @@ -43,6 +43,7 @@ class hr_evaluation_plan(osv.osv): 'month_next': 12, 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c), } + hr_evaluation_plan() class hr_evaluation_plan_phase(osv.osv): @@ -95,6 +96,7 @@ Thanks, '''), } + hr_evaluation_plan_phase() class hr_employee(osv.osv): @@ -210,8 +212,6 @@ class hr_evaluation(osv.osv): elif phase.action == "self": children = [evaluation.employee_id] for child in children: -# if not child.user_id: -# continue int_id = hr_eval_inter_obj.create(cr, uid, { 'evaluation_id': evaluation.id, @@ -250,7 +250,7 @@ class hr_evaluation(osv.osv): raise osv.except_osv(_('Warning!'),_("You cannot change state, because some appraisal(s) are in waiting answer or draft state.")) return True - def button_done(self,cr, uid, ids, context=None): + def button_done(self, cr, uid, ids, context=None): self.write(cr, uid, ids,{'state':'done', 'date_close': time.strftime('%Y-%m-%d')}, context=context) return True diff --git a/addons/hr_payroll/report/report_contribution_register.py b/addons/hr_payroll/report/report_contribution_register.py index e32e93532b5..c0285f3de50 100644 --- a/addons/hr_payroll/report/report_contribution_register.py +++ b/addons/hr_payroll/report/report_contribution_register.py @@ -72,4 +72,4 @@ class contribution_register_report(report_sxw.rml_parse): report_sxw.report_sxw('report.contribution.register.lines', 'hr.contribution.register', 'hr_payroll/report/report_contribution_register.rml', parser=contribution_register_report) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_payroll/report/report_payslip.py b/addons/hr_payroll/report/report_payslip.py index e2ef7dab974..df4c729b298 100644 --- a/addons/hr_payroll/report/report_payslip.py +++ b/addons/hr_payroll/report/report_payslip.py @@ -46,4 +46,4 @@ class payslip_report(report_sxw.rml_parse): report_sxw.report_sxw('report.payslip', 'hr.payslip', 'hr_payroll/report/report_payslip.rml', parser=payslip_report) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_payroll/report/report_payslip_details.py b/addons/hr_payroll/report/report_payslip_details.py index 1e9839eaa6f..5a110cbfdcd 100644 --- a/addons/hr_payroll/report/report_payslip_details.py +++ b/addons/hr_payroll/report/report_payslip_details.py @@ -116,4 +116,4 @@ class payslip_details_report(report_sxw.rml_parse): report_sxw.report_sxw('report.paylip.details', 'hr.payslip', 'hr_payroll/report/report_payslip_details.rml', parser=payslip_details_report) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_payroll_account/__init__.py b/addons/hr_payroll_account/__init__.py index ffe4b707ac0..ceb8531473b 100644 --- a/addons/hr_payroll_account/__init__.py +++ b/addons/hr_payroll_account/__init__.py @@ -23,4 +23,4 @@ import hr_payroll_account import wizard -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_payroll_account/wizard/__init__.py b/addons/hr_payroll_account/wizard/__init__.py index 27128f05597..ee460faefb8 100644 --- a/addons/hr_payroll_account/wizard/__init__.py +++ b/addons/hr_payroll_account/wizard/__init__.py @@ -22,4 +22,4 @@ import hr_payroll_payslips_by_employees -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_payroll_account/wizard/hr_payroll_payslips_by_employees.py b/addons/hr_payroll_account/wizard/hr_payroll_payslips_by_employees.py index 7e3f4bbbe2b..af41b7b3b51 100644 --- a/addons/hr_payroll_account/wizard/hr_payroll_payslips_by_employees.py +++ b/addons/hr_payroll_account/wizard/hr_payroll_payslips_by_employees.py @@ -38,4 +38,4 @@ class hr_payslip_employees(osv.osv_memory): hr_payslip_employees() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 298e3e64195..902b436ed29 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -243,7 +243,7 @@ class hr_applicant(base_stage, osv.Model): 'stage_id': _read_group_stage_ids } - def onchange_job(self,cr, uid, ids, job, context=None): + def onchange_job(self, cr, uid, ids, job, context=None): result = {} if job: @@ -494,7 +494,6 @@ class hr_applicant(base_stage, osv.Model): message = _("Applicant has been created.") return self.message_post(cr, uid, ids, body=message, context=context) - class hr_job(osv.osv): _inherit = "hr.job" _name = "hr.job" @@ -505,7 +504,6 @@ class hr_job(osv.osv): help="Email alias for this job position. New emails will automatically " "create new applicants for this job position."), } - _defaults = { 'alias_domain': False, # always hide alias during creation } @@ -548,12 +546,12 @@ class hr_job(osv.osv): datas['model'] = 'survey.print' context.update({'response_id': [0], 'response_no': 0,}) return { - 'type': 'ir.actions.report.xml', - 'report_name': 'survey.form', - 'datas': datas, - 'context' : context, - 'nodestroy':True, - } + 'type': 'ir.actions.report.xml', + 'report_name': 'survey.form', + 'datas': datas, + 'context' : context, + 'nodestroy':True, + } class applicant_category(osv.osv): """ Category of applicant """ diff --git a/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py b/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py index 418a42bef93..f1fa6446588 100644 --- a/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py +++ b/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py @@ -29,7 +29,7 @@ class hr_recruitment_partner_create(osv.osv_memory): 'close': fields.boolean('Close job request'), } - def view_init(self, cr , uid , fields_list, context=None): + def view_init(self, cr, uid, fields_list, context=None): case_obj = self.pool.get('hr.applicant') if context is None: context = {} diff --git a/addons/hr_recruitment/wizard/hr_recruitment_employee_hired.py b/addons/hr_recruitment/wizard/hr_recruitment_employee_hired.py index 291c16a7644..0b57082c019 100644 --- a/addons/hr_recruitment/wizard/hr_recruitment_employee_hired.py +++ b/addons/hr_recruitment/wizard/hr_recruitment_employee_hired.py @@ -26,7 +26,7 @@ class hired_employee(osv.osv_memory): _name = 'hired.employee' _description = 'Create Employee' - def case_close(self, cr, uid,ids, context=None): + def case_close(self, cr, uid, ids, context=None): """ @param self: The object pointer @param cr: the current row, from the database cursor, @@ -39,7 +39,7 @@ class hired_employee(osv.osv_memory): self.pool.get('hr.applicant').case_close(cr, uid,context.get('active_ids',[])) return {} - def case_close_with_emp(self, cr, uid,ids, context=None): + def case_close_with_emp(self, cr, uid, ids, context=None): """ @param self: The object pointer @param cr: the current row, from the database cursor, diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index a1562d53a61..53a90aa26ed 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -84,7 +84,7 @@ class account_analytic_account(osv.osv): res['value']['to_invoice'] = ir_model_obj.get_object_reference(cr, uid, 'hr_timesheet_invoice', 'timesheet_invoice_factor1')[1] return res - def on_change_partner_id(self, cr, uid, ids,partner_id, name, context=None): + def on_change_partner_id(self, cr, uid, ids, partner_id, name, context=None): res = super(account_analytic_account,self).on_change_partner_id(cr, uid, ids,partner_id, name, context=context) part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) pricelist = part.property_product_pricelist and part.property_product_pricelist.id or False @@ -199,6 +199,7 @@ class hr_analytic_timesheet(osv.osv): hr_analytic_timesheet() + class account_invoice(osv.osv): _inherit = "account.invoice" @@ -218,6 +219,7 @@ class account_invoice(osv.osv): account_invoice() + class account_move_line(osv.osv): _inherit = "account.move.line" @@ -234,4 +236,3 @@ class account_move_line(osv.osv): account_move_line() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/hr_timesheet_invoice/report/account_analytic_profit.py b/addons/hr_timesheet_invoice/report/account_analytic_profit.py index 8b6cd7f9fbd..fc44089bf9e 100644 --- a/addons/hr_timesheet_invoice/report/account_analytic_profit.py +++ b/addons/hr_timesheet_invoice/report/account_analytic_profit.py @@ -120,4 +120,4 @@ class account_analytic_profit(report_sxw.rml_parse): report_sxw.report_sxw('report.account.analytic.profit', 'account.analytic.line', 'addons/hr_timesheet_invoice/report/account_analytic_profit.rml', parser=account_analytic_profit) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py index 0014ac685b2..2e220a9397b 100644 --- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py +++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py @@ -38,7 +38,7 @@ class account_analytic_line(osv.osv): # 'price': boolean # 'product': many2one id # } - def invoice_cost_create(self, cr, uid, ids, data={}, context=None): + def invoice_cost_create(self, cr, uid, ids, data=None, context=None): analytic_account_obj = self.pool.get('account.analytic.account') res_partner_obj = self.pool.get('res.partner') account_payment_term_obj = self.pool.get('account.payment.term') @@ -52,6 +52,8 @@ class account_analytic_line(osv.osv): invoices = [] if context is None: context = {} + if data is None: + data = {} account_ids = {} for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context): @@ -86,14 +88,14 @@ class account_analytic_line(osv.osv): 'date_due': date_due, 'fiscal_position': account.partner_id.property_account_position.id } - + context2 = context.copy() context2['lang'] = partner.lang - # set company_id in context, so the correct default journal will be selected + # set company_id in context, so the correct default journal will be selected context2['force_company'] = curr_invoice['company_id'] - # set force_company in context so the correct product properties are selected (eg. income account) + # set force_company in context so the correct product properties are selected (eg. income account) context2['company_id'] = curr_invoice['company_id'] - + last_invoice = invoice_obj.create(cr, uid, curr_invoice, context=context2) invoices.append(last_invoice) diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py index 4a715b620c6..e559727cd5e 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py @@ -219,7 +219,7 @@ class hr_timesheet_sheet(osv.osv): 'department_id':fields.many2one('hr.department','Department'), } - def _default_date_from(self,cr, uid, context=None): + def _default_date_from(self, cr, uid, context=None): user = self.pool.get('res.users').browse(cr, uid, uid, context=context) r = user.company_id and user.company_id.timesheet_range or 'month' if r=='month': @@ -230,7 +230,7 @@ class hr_timesheet_sheet(osv.osv): return time.strftime('%Y-01-01') return time.strftime('%Y-%m-%d') - def _default_date_to(self,cr, uid, context=None): + def _default_date_to(self, cr, uid, context=None): user = self.pool.get('res.users').browse(cr, uid, uid, context=context) r = user.company_id and user.company_id.timesheet_range or 'month' if r=='month': diff --git a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py index fdab774a250..a6974fc2ccf 100644 --- a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py +++ b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py @@ -61,4 +61,4 @@ class hr_timesheet_current_open(osv.osv_memory): hr_timesheet_current_open() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/idea/idea.py b/addons/idea/idea.py index e2e5ec50ddf..9b4a9c580a9 100644 --- a/addons/idea/idea.py +++ b/addons/idea/idea.py @@ -39,6 +39,7 @@ class idea_category(osv.osv): ('name', 'unique(name)', 'The name of the category must be unique' ) ] _order = 'name asc' + idea_category() class idea_idea(osv.osv): @@ -65,24 +66,24 @@ class idea_idea(osv.osv): } _order = 'name asc' - def idea_cancel(self, cr, uid, ids, context={}): + def idea_cancel(self, cr, uid, ids, context=None): self.write(cr, uid, ids, { 'state': 'cancel' }) self.message_post(cr, uid, ids, body=_('Idea canceled.'), context=context) return True - def idea_open(self, cr, uid, ids, context={}): + def idea_open(self, cr, uid, ids, context=None): self.write(cr, uid, ids, { 'state': 'open'}) self.message_post(cr, uid, ids, body=_('Idea accepted.'), context=context) return True - def idea_close(self, cr, uid, ids, context={}): + def idea_close(self, cr, uid, ids, context=None): self.message_post(cr, uid, ids, body=_('Idea done.'), context=context) self.write(cr, uid, ids, { 'state': 'close' }) return True - def idea_draft(self, cr, uid, ids, context={}): + def idea_draft(self, cr, uid, ids, context=None): self.message_post(cr, uid, ids, body=_('Idea reset to draft.'), context=context) self.write(cr, uid, ids, { 'state': 'draft' }) return True -idea_idea() +idea_idea() diff --git a/addons/import_base/import_framework.py b/addons/import_base/import_framework.py index 559f42c8974..95683129f35 100644 --- a/addons/import_base/import_framework.py +++ b/addons/import_base/import_framework.py @@ -227,7 +227,7 @@ class import_framework(Thread): return map - def _fields_mapp(self,dict_sugar, openerp_dict, table): + def _fields_mapp(self, dict_sugar, openerp_dict, table): """ call all the mapper and transform data to be compatible with import_data diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index 5ffa44cb9c5..0099fc8b9a7 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -253,7 +253,7 @@ class sugar_import(import_framework): val['datas_fname'] = Filename return val - def get_history_mapping(self): + def get_history_mapping(self): return { 'model' : 'ir.attachment', 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD, self.TABLE_OPPORTUNITY, self.TABLE_MEETING, self.TABLE_CALL, self.TABLE_EMAIL], @@ -301,7 +301,7 @@ class sugar_import(import_framework): val['email_from'] = partner_email return val - def get_crm_claim_mapping(self): + def get_crm_claim_mapping(self): return { 'model' : 'crm.claim', 'dependencies' : [self.TABLE_USER, self.TABLE_ACCOUNT, self.TABLE_CONTACT, self.TABLE_LEAD], @@ -602,7 +602,7 @@ class sugar_import(import_framework): partner_contact_email = address.email return partner_contact_id, partner_contact_email - def import_opp(self, val): + def import_opp(self, val): partner_contact_id, partner_contact_email = self.import_opportunity_contact(val) val['partner_address_id/id'] = partner_contact_id val['email_from'] = partner_contact_email diff --git a/addons/l10n_be/__init__.py b/addons/l10n_be/__init__.py index 7bdc1f61b1f..e994d524775 100644 --- a/addons/l10n_be/__init__.py +++ b/addons/l10n_be/__init__.py @@ -21,4 +21,4 @@ import wizard -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be/i18n/nl_BE.po b/addons/l10n_be/i18n/nl_BE.po index f8ca47590cc..a6d4bffeb8b 100644 --- a/addons/l10n_be/i18n/nl_BE.po +++ b/addons/l10n_be/i18n/nl_BE.po @@ -1,30 +1,33 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * l10n_be -# +# * l10n_be +# Els Van Vossel , 2012. msgid "" msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-12-23 09:56+0000\n" -"PO-Revision-Date: 2009-02-03 14:48+0000\n" -"Last-Translator: Niels Huylebroeck \n" -"Language-Team: \n" +"PO-Revision-Date: 2012-10-01 14:57+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" +"Language-Team: Els Van Vossel\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:22+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" +"Language: nl\n" #. module: l10n_be #: field:partner.vat.intra,test_xml:0 msgid "Test XML file" -msgstr "Test XML bestand" +msgstr "Test XML-bestand" #. module: l10n_be #: view:partner.vat.list_13:0 msgid "You can remove customers which you do not want in exported xml file" msgstr "" +"U kunt klanten die u niet wilt, verwijderen uit het geëxporteerde xml-" +"bestand." #. module: l10n_be #: view:partner.vat_13:0 @@ -32,34 +35,36 @@ msgid "" "This wizard will create an XML file for VAT details and total invoiced " "amounts per partner." msgstr "" +"Deze assistent zal een XML-bestand maken met de btw-gegevens en totaal " +"gefactureerde bedragen per relatie." #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tiers_receiv msgid "Tiers - Recevable" -msgstr "" +msgstr "Derden - te ontvangen" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:102 #, python-format msgid "Wrong Period Code" -msgstr "" +msgstr "Verkeerde periode" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_partner_vat_listing.py:52 #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:109 #, python-format msgid "No partner has a VAT Number asociated with him." -msgstr "" +msgstr "Er is geen relatie met een btw-nummer." #. module: l10n_be #: constraint:res.company:0 msgid "Error! You can not create recursive companies." -msgstr "" +msgstr "U kunt niet dezelfde bedrijven maken." #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tiers msgid "Tiers" -msgstr "" +msgstr "Derde" #. module: l10n_be #: field:l1on_be.vat.declaration,period_id:0 @@ -69,18 +74,18 @@ msgstr "Periode" #. module: l10n_be #: field:partner.vat.intra,period_ids:0 msgid "Period (s)" -msgstr "" +msgstr "Periode(n)" #. module: l10n_be #: view:l1on_be.vat.declaration:0 #: view:partner.vat.intra:0 msgid "Save the File with '.xml' extension." -msgstr "" +msgstr "Bestand opslaan met '.xml'-extensie" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_charge msgid "Charge" -msgstr "" +msgstr "Kosten" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_partner_vat_listing.py:47 @@ -89,13 +94,13 @@ msgstr "" #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:109 #, python-format msgid "Data Insufficient!" -msgstr "" +msgstr "Onvoldoende gegevens" #. module: l10n_be #: view:l1on_be.vat.declaration:0 #: view:partner.vat.list_13:0 msgid "Create XML" -msgstr "XML Aanmaken" +msgstr "XML maken" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_capitaux @@ -105,23 +110,23 @@ msgstr "Kapitaal" #. module: l10n_be #: view:partner.vat.list_13:0 msgid "Print" -msgstr "" +msgstr "Afdrukken" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Save XML" -msgstr "" +msgstr "XML opslaan" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:219 #, python-format msgid "Save" -msgstr "" +msgstr "Opslaan" #. module: l10n_be #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "" +msgstr "De firmanaam moet uniek zijn" #. module: l10n_be #: field:l1on_be.vat.declaration,msg:0 @@ -133,65 +138,65 @@ msgstr "Bestand aangemaakt" #. module: l10n_be #: view:partner.vat.intra:0 msgid "_Close" -msgstr "" +msgstr "_Sluiten" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_account_vat_declaration.py:131 #, python-format msgid "Save XML For Vat declaration" -msgstr "" +msgstr "XML voor btw-aangifte opslaan" #. module: l10n_be #: view:partner.vat.list_13:0 msgid "Customers" -msgstr "" +msgstr "Klanten" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tax_in msgid "Taxes à l'entrée" -msgstr "" +msgstr "Te ontvangen btw" #. module: l10n_be #: help:l1on_be.vat.declaration,ask_restitution:0 msgid "It indicates whether a resitution is to made or not?" -msgstr "" +msgstr "Het geeft aan of een teruggave nodig is of niet" #. module: l10n_be #: model:ir.actions.act_window,name:l10n_be.action_vat_declaration msgid "Vat Declaraion" -msgstr "" +msgstr "Btw-aangifte" #. module: l10n_be #: view:partner.vat.intra:0 #: field:partner.vat.intra,no_vat:0 msgid "Partner With No VAT" -msgstr "" +msgstr "Relatie zonder btw" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_immo msgid "Immobilisation" -msgstr "Onroerende goederen" +msgstr "Activa" #. module: l10n_be #: view:l1on_be.vat.declaration:0 #: view:partner.vat.intra:0 msgid "Company" -msgstr "" +msgstr "Bedrijf" #. module: l10n_be #: model:ir.model,name:l10n_be.model_partner_vat_13 msgid "partner.vat_13" -msgstr "" +msgstr "partner.vat_13" #. module: l10n_be #: model:ir.ui.menu,name:l10n_be.partner_vat_listing msgid "Annual Listing Of VAT-Subjected Customers" -msgstr "" +msgstr "Jaarlijke klantenlisting" #. module: l10n_be #: view:partner.vat.list_13:0 msgid "XML File has been Created." -msgstr "XML bestand is aangemaakt" +msgstr "XML-bestand is gemaakt." #. module: l10n_be #: help:l1on_be.vat.declaration,client_nihil:0 @@ -199,64 +204,66 @@ msgid "" "Tick this case only if it concerns only the last statement on the civil or " "cessation of activity" msgstr "" +"Dit vakje alleen inschakelen als het gaat om de laatste aangifte van het " +"boekjaar of om de stopzetting van een activiteit." #. module: l10n_be #: view:partner.vat.list_13:0 msgid "Select Fiscal Year" -msgstr "Selecteer Fiscaaljaar" +msgstr "Selecteer boekjaar" #. module: l10n_be #: field:l1on_be.vat.declaration,ask_restitution:0 msgid "Ask Restitution" -msgstr "" +msgstr "Teruggave" #. module: l10n_be #: model:ir.model,name:l10n_be.model_partner_vat_intra #: model:ir.ui.menu,name:l10n_be.l10_be_vat_intra msgid "Partner VAT Intra" -msgstr "" +msgstr "Intracommunautaire opgave" #. module: l10n_be #: model:ir.ui.menu,name:l10n_be.l10_be_vat_declaration #: view:l1on_be.vat.declaration:0 msgid "Periodical VAT Declaration" -msgstr "" +msgstr "Periodieke btw-aangifte" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Note: " -msgstr "" +msgstr "Opmerking: " #. module: l10n_be #: view:partner.vat.intra:0 msgid "_Preview" -msgstr "" +msgstr "_Voorbeeld" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tiers_payable msgid "Tiers - Payable" -msgstr "" +msgstr "Derden - te betalen" #. module: l10n_be #: field:l1on_be.vat.declaration,tax_code_id:0 #: field:partner.vat.intra,tax_code_id:0 msgid "Tax Code" -msgstr "" +msgstr "Btw-code" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Periods" -msgstr "" +msgstr "Perioden" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_produit msgid "Produit" -msgstr "Product" +msgstr "Opbrengsten" #. module: l10n_be #: help:partner.vat.intra,test_xml:0 msgid "Sets the XML output as test file" -msgstr "" +msgstr "Maakt een testbestand in xml" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_view @@ -266,18 +273,19 @@ msgstr "Weergave" #. module: l10n_be #: view:l1on_be.vat.declaration:0 msgid "Ok" -msgstr "Ok" +msgstr "OK" #. module: l10n_be #: field:l1on_be.vat.declaration,ask_payment:0 msgid "Ask Payment" -msgstr "" +msgstr "Betaling vragen" #. module: l10n_be #: help:partner.vat.intra,no_vat:0 msgid "" "The Partner whose VAT number is not defined they doesn't include in XML File." msgstr "" +"Een relatie zonder btw-nummer wordt niet opgenomen in het xml-bestand." #. module: l10n_be #: field:partner.vat_13,limit_amount:0 @@ -287,44 +295,44 @@ msgstr "Bestedingslimiet" #. module: l10n_be #: model:ir.model,name:l10n_be.model_res_company msgid "Companies" -msgstr "" +msgstr "Bedrijven" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Create _XML" -msgstr "" +msgstr "_XML maken" #. module: l10n_be #: help:partner.vat.intra,period_ids:0 msgid "" "Select here the period(s) you want to include in your intracom declaration" -msgstr "" +msgstr "Kies hier de periode(n) voor uw intracommunautaire opgave" #. module: l10n_be #: view:partner.vat_13:0 msgid "View Customers" -msgstr "" +msgstr "Klanten bekijken" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:102 #, python-format msgid "The period code you entered is not valid." -msgstr "" +msgstr "De periode die u heeft ingevoerd, is onjuist." #. module: l10n_be #: view:l1on_be.vat.declaration:0 msgid "Is Last Declaration" -msgstr "" +msgstr "Laatste aangifte" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_stock msgid "Stock et Encours" -msgstr "" +msgstr "Voorraden in bestelling" #. module: l10n_be #: field:l1on_be.vat.declaration,client_nihil:0 msgid "Last Declaration of Enterprise" -msgstr "" +msgstr "Laatste aangifte van bedrijf" #. module: l10n_be #: help:partner.vat.intra,mand_id:0 @@ -332,6 +340,8 @@ msgid "" "This identifies the representative of the sending company. This is a string " "of 14 characters" msgstr "" +"Identificatie van de vertegenwoordiger van de verzender. Dit is een reeks " +"van 14 tekens." #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_account_vat_declaration.py:75 @@ -339,37 +349,37 @@ msgstr "" #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:98 #, python-format msgid "Data Insufficient" -msgstr "" +msgstr "Onvoldoende gegevens" #. module: l10n_be #: model:ir.ui.menu,name:l10n_be.menu_finance_belgian_statement msgid "Belgium Statements" -msgstr "" +msgstr "Belgische aangiften" #. module: l10n_be #: model:ir.actions.act_window,name:l10n_be.action_vat_intra msgid "Partner Vat Intra" -msgstr "" +msgstr "Intracommunautaire opgave" #. module: l10n_be #: view:l1on_be.vat.declaration:0 msgid "Declare Periodical VAT" -msgstr "" +msgstr "Periodieke btw-aangifte" #. module: l10n_be #: model:ir.model,name:l10n_be.model_partner_vat_list_13 msgid "partner.vat.list_13" -msgstr "" +msgstr "partner.vat.list_13" #. module: l10n_be #: view:l1on_be.vat.declaration:0 msgid "Save xml" -msgstr "" +msgstr "Xml opslaan" #. module: l10n_be #: field:partner.vat.intra,mand_id:0 msgid "MandataireId" -msgstr "" +msgstr "MandataireId" #. module: l10n_be #: field:l1on_be.vat.declaration,file_save:0 @@ -391,23 +401,32 @@ msgid "" " YYYY stands for the year (4 positions).\n" " " msgstr "" +"Hier typt u de periode voor de intracommunautaire opgave in het formaat: " +"ppyyyy\n" +" PP betekent een maand: van '01' tot '12'.\n" +" PP kan ook een kwartaal beteken: '31','32','33','34'\n" +" Het eerste cijfer duidt aan dat het om een kwartaal gaat,\n" +" Het tweede cijfer geeft het specifieke kwartaal aan.\n" +" PP kan ook een volledig boekjaar betekenen: '00'.\n" +" YYYY duidt het jaar aan (4 posities).\n" +" " #. module: l10n_be #: field:l1on_be.vat.declaration,name:0 #: field:partner.vat.intra,name:0 #: field:partner.vat.list_13,name:0 msgid "File Name" -msgstr "" +msgstr "Bestandsnaam" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tax_out msgid "Taxes à la sortie" -msgstr "" +msgstr "Te betalen btw" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_tax msgid "Tax" -msgstr "Belasting" +msgstr "Btw" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_account_vat_declaration.py:75 @@ -415,83 +434,83 @@ msgstr "Belasting" #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:98 #, python-format msgid "No VAT Number Associated with Main Company!" -msgstr "" +msgstr "De firma heeft geen btw-nummer." #. module: l10n_be #: model:ir.model,name:l10n_be.model_l1on_be_vat_declaration msgid "Vat Declaration" -msgstr "" +msgstr "Btw-aangifte" #. module: l10n_be #: view:partner.vat.intra:0 #: field:partner.vat.intra,country_ids:0 msgid "European Countries" -msgstr "" +msgstr "Europese landen" #. module: l10n_be #: model:ir.actions.act_window,name:l10n_be.action_partner_vat_listing_13 #: view:partner.vat_13:0 msgid "Partner VAT Listing" -msgstr "" +msgstr "Intracommunautaire opgave" #. module: l10n_be #: view:partner.vat.intra:0 msgid "General Information" -msgstr "" +msgstr "Algemene informatie" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Create an XML file for Vat Intra" -msgstr "" +msgstr "Maak een xml-bestand voor de IC-opgave" #. module: l10n_be #: field:partner.vat.intra,period_code:0 msgid "Period Code" -msgstr "" +msgstr "Periodecode" #. module: l10n_be #: model:account.account.type,name:l10n_be.user_type_financiers msgid "Financier" -msgstr "" +msgstr "Financieel" #. module: l10n_be #: field:partner.vat_13,year:0 msgid "Year" -msgstr "" +msgstr "Jaar" #. module: l10n_be #: view:partner.vat_13:0 msgid "Cancel" -msgstr "Annuleer" +msgstr "Annuleren" #. module: l10n_be #: view:l1on_be.vat.declaration:0 #: view:partner.vat.intra:0 #: view:partner.vat.list_13:0 msgid "Close" -msgstr "" +msgstr "Sluiten" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_vat_intra.py:105 #, python-format msgid "Please select at least one Period." -msgstr "" +msgstr "Selecteer minimaal een periode." #. module: l10n_be #: help:l1on_be.vat.declaration,ask_payment:0 msgid "It indicates whether a payment is to made or not?" -msgstr "" +msgstr "Het geeft aan of een betaling nodig is of niet" #. module: l10n_be #: view:partner.vat.intra:0 msgid "Partner VAT intra" -msgstr "" +msgstr "Intracommunautaire opgave" #. module: l10n_be #: code:addons/l10n_be/wizard/l10n_be_partner_vat_listing.py:47 #, python-format msgid "No data for the selected Year." -msgstr "" +msgstr "Geen gegevens voor het geselecteerde jaar." #~ msgid "Notification" #~ msgstr "Mededeling" diff --git a/addons/l10n_be_coda/l10n_be_coda.py b/addons/l10n_be_coda/l10n_be_coda.py index 1aa6e84402a..1dab4ab1964 100644 --- a/addons/l10n_be_coda/l10n_be_coda.py +++ b/addons/l10n_be_coda/l10n_be_coda.py @@ -171,6 +171,7 @@ class account_coda_trans_type(osv.osv): 'parent_id': fields.many2one('account.coda.trans.type', 'Parent'), 'description': fields.text('Description', translate=True), } + account_coda_trans_type() class account_coda_trans_code(osv.osv): @@ -187,6 +188,7 @@ class account_coda_trans_code(osv.osv): 'description': fields.char('Description', size=128, translate=True, select=2), 'comment': fields.text('Comment', translate=True), } + account_coda_trans_code() class account_coda_trans_category(osv.osv): @@ -197,6 +199,7 @@ class account_coda_trans_category(osv.osv): 'category': fields.char('Transaction Category', size=3, required=True), 'description': fields.char('Description', size=256, translate=True), } + account_coda_trans_category() class account_coda_comm_type(osv.osv): @@ -209,14 +212,17 @@ class account_coda_comm_type(osv.osv): } _sql_constraints = [ ('code_uniq', 'unique (code)','The Structured Communication Code must be unique !') - ] + ] + account_coda_comm_type() class coda_bank_statement(osv.osv): _name = 'coda.bank.statement' _description = 'CODA Bank Statement' - def _default_journal_id(self, cr, uid, context={}): + def _default_journal_id(self, cr, uid, context=None): + if context is None: + context = {} if context.get('journal_id', False): return context['journal_id'] return False @@ -232,7 +238,7 @@ class coda_bank_statement(osv.osv): res[r] = round(res[r], 2) return res - def _get_period(self, cr, uid, context={}): + def _get_period(self, cr, uid, context=None): periods = self.pool.get('account.period').find(cr, uid) if periods: return periods[0] @@ -404,6 +410,7 @@ class account_bank_statement_line_global(osv.osv): _columns = { 'coda_statement_line_ids': fields.one2many('coda.bank.statement.line', 'globalisation_id', 'CODA Bank Statement Lines', readonly=True), } + account_bank_statement_line_global() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_be_invoice_bba/invoice.py b/addons/l10n_be_invoice_bba/invoice.py index bb03e4d6d02..188a8d896fd 100644 --- a/addons/l10n_be_invoice_bba/invoice.py +++ b/addons/l10n_be_invoice_bba/invoice.py @@ -2,9 +2,9 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# +# # Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. -# +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -36,23 +36,23 @@ class account_invoice(osv.osv): _inherit = 'account.invoice' def _get_reference_type(self, cursor, user, context=None): - """Add BBA Structured Communication Type and change labels from 'reference' into 'communication' """ + """Add BBA Structured Communication Type and change labels from 'reference' into 'communication' """ res = super(account_invoice, self)._get_reference_type(cursor, user, context=context) res[[i for i,x in enumerate(res) if x[0] == 'none'][0]] = ('none', 'Free Communication') res.append(('bba', 'BBA Structured Communication')) - #l_logger.warning('reference_type = %s' %res ) + #l_logger.warning('reference_type = %s' %res ) return res - def check_bbacomm(self, val): + def check_bbacomm(self, val): supported_chars = '0-9+*/ ' pattern = re.compile('[^' + supported_chars + ']') if pattern.findall(val or ''): - return False + return False bbacomm = re.sub('\D', '', val or '') if len(bbacomm) == 12: base = int(bbacomm[:10]) - mod = base % 97 or 97 + mod = base % 97 or 97 if mod == int(bbacomm[-2:]): return True return False @@ -64,29 +64,29 @@ class account_invoice(osv.osv): return True def onchange_partner_id(self, cr, uid, ids, type, partner_id, - date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False): + date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False): result = super(account_invoice, self).onchange_partner_id(cr, uid, ids, type, partner_id, date_invoice, payment_term, partner_bank_id, company_id) # reference_type = self.default_get(cr, uid, ['reference_type'])['reference_type'] # _logger.warning('partner_id %s' % partner_id) reference = False reference_type = 'none' - if partner_id: + if partner_id: if (type == 'out_invoice'): reference_type = self.pool.get('res.partner').browse(cr, uid, partner_id).out_inv_comm_type if reference_type: reference = self.generate_bbacomm(cr, uid, ids, type, reference_type, partner_id, '', context={})['value']['reference'] - res_update = { + res_update = { 'reference_type': reference_type or 'none', 'reference': reference, } result['value'].update(res_update) - return result + return result def generate_bbacomm(self, cr, uid, ids, type, reference_type, partner_id, reference, context=None): partner_obj = self.pool.get('res.partner') - reference = reference or '' - algorithm = False + reference = reference or '' + algorithm = False if partner_id: algorithm = partner_obj.browse(cr, uid, partner_id, context=context).out_inv_comm_algorithm algorithm = algorithm or 'random' @@ -97,7 +97,7 @@ class account_invoice(osv.osv): doy = time.strftime('%j') year = time.strftime('%Y') seq = '001' - seq_ids = self.search(cr, uid, + seq_ids = self.search(cr, uid, [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), ('reference', 'like', '+++%s/%s/%%' % (doy, year))], order='reference') if seq_ids: @@ -110,7 +110,7 @@ class account_invoice(osv.osv): '\nPlease create manually a unique BBA Structured Communication.')) bbacomm = doy + year + seq base = int(bbacomm) - mod = base % 97 or 97 + mod = base % 97 or 97 reference = '+++%s/%s/%s%02d+++' % (doy, year, seq, mod) elif algorithm == 'partner_ref': if not self.check_bbacomm(reference): @@ -119,13 +119,13 @@ class account_invoice(osv.osv): if (len(partner_ref_nr) < 3) or (len(partner_ref_nr) > 7): raise osv.except_osv(_('Warning!'), _('The Partner should have a 3-7 digit Reference Number for the generation of BBA Structured Communications!' \ - '\nPlease correct the Partner record.')) + '\nPlease correct the Partner record.')) else: partner_ref_nr = partner_ref_nr.ljust(7, '0') seq = '001' - seq_ids = self.search(cr, uid, + seq_ids = self.search(cr, uid, [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), - ('reference', 'like', '+++%s/%s/%%' % (partner_ref_nr[:3], partner_ref_nr[3:]))], order='reference') + ('reference', 'like', '+++%s/%s/%%' % (partner_ref_nr[:3], partner_ref_nr[3:]))], order='reference') if seq_ids: prev_seq = int(self.browse(cr, uid, seq_ids[-1]).reference[12:15]) if prev_seq < 999: @@ -133,10 +133,10 @@ class account_invoice(osv.osv): else: raise osv.except_osv(_('Warning!'), _('The daily maximum of outgoing invoices with an automatically generated BBA Structured Communications has been exceeded!' \ - '\nPlease create manually a unique BBA Structured Communication.')) + '\nPlease create manually a unique BBA Structured Communication.')) bbacomm = partner_ref_nr + seq base = int(bbacomm) - mod = base % 97 or 97 + mod = base % 97 or 97 reference = '+++%s/%s/%s%02d+++' % (partner_ref_nr[:3], partner_ref_nr[3:], seq, mod) elif algorithm == 'random': if not self.check_bbacomm(reference): @@ -144,67 +144,66 @@ class account_invoice(osv.osv): bbacomm = str(base).rjust(7, '0') base = int(bbacomm) mod = base % 97 or 97 - mod = str(mod).rjust(2, '0') + mod = str(mod).rjust(2, '0') reference = '+++%s/%s/%s%s+++' % (bbacomm[:3], bbacomm[3:7], bbacomm[7:], mod) else: raise osv.except_osv(_('Error!'), _("Unsupported Structured Communication Type Algorithm '%s' !" \ - "\nPlease contact your OpenERP support channel.") % algorithm) - return {'value': {'reference': reference}} - + "\nPlease contact your OpenERP support channel.") % algorithm) + return {'value': {'reference': reference}} + def create(self, cr, uid, vals, context=None): if vals.has_key('reference_type'): reference_type = vals['reference_type'] - if reference_type == 'bba': + if reference_type == 'bba': if vals.has_key('reference'): bbacomm = vals['reference'] else: raise osv.except_osv(_('Warning!'), _('Empty BBA Structured Communication!' \ - '\nPlease fill in a unique BBA Structured Communication.')) + '\nPlease fill in a unique BBA Structured Communication.')) if self.check_bbacomm(bbacomm): reference = re.sub('\D', '', bbacomm) - vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' - same_ids = self.search(cr, uid, + vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' + same_ids = self.search(cr, uid, [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), ('reference', '=', vals['reference'])]) if same_ids: raise osv.except_osv(_('Warning!'), _('The BBA Structured Communication has already been used!' \ - '\nPlease create manually a unique BBA Structured Communication.')) - return super(account_invoice, self).create(cr, uid, vals, context=context) + '\nPlease create manually a unique BBA Structured Communication.')) + return super(account_invoice, self).create(cr, uid, vals, context=context) - def write(self, cr, uid, ids, vals, context={}): + def write(self, cr, uid, ids, vals, context=None): if isinstance(ids, (int, long)): ids = [ids] - for inv in self.browse(cr, uid, ids, context): + for inv in self.browse(cr, uid, ids, context): if vals.has_key('reference_type'): reference_type = vals['reference_type'] - else: + else: reference_type = inv.reference_type or '' - if reference_type == 'bba': + if reference_type == 'bba': if vals.has_key('reference'): bbacomm = vals['reference'] else: bbacomm = inv.reference or '' if self.check_bbacomm(bbacomm): reference = re.sub('\D', '', bbacomm) - vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' - same_ids = self.search(cr, uid, - [('id', '!=', inv.id), ('type', '=', 'out_invoice'), + vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' + same_ids = self.search(cr, uid, + [('id', '!=', inv.id), ('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), ('reference', '=', vals['reference'])]) if same_ids: raise osv.except_osv(_('Warning!'), _('The BBA Structured Communication has already been used!' \ - '\nPlease create manually a unique BBA Structured Communication.')) - return super(account_invoice, self).write(cr, uid, ids, vals, context) + '\nPlease create manually a unique BBA Structured Communication.')) + return super(account_invoice, self).write(cr, uid, ids, vals, context) _columns = { 'reference': fields.char('Communication', size=64, help="The partner reference of this invoice."), 'reference_type': fields.selection(_get_reference_type, 'Communication Type', required=True), } - _constraints = [ (_check_communication, 'Invalid BBA Structured Communication !', ['Communication']), ] diff --git a/addons/l10n_br/l10n_br.py b/addons/l10n_br/l10n_br.py index af387334cd1..f35ced7ea09 100644 --- a/addons/l10n_br/l10n_br.py +++ b/addons/l10n_br/l10n_br.py @@ -81,4 +81,4 @@ class l10n_br_account_cst(osv.osv): l10n_br_account_cst() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_ch/partner.py b/addons/l10n_ch/partner.py index 9301c564227..aba9ea7b204 100644 --- a/addons/l10n_ch/partner.py +++ b/addons/l10n_ch/partner.py @@ -30,4 +30,4 @@ class res_partner(osv.osv): } res_partner() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_ch/payment.py b/addons/l10n_ch/payment.py index aba757502b0..a681daf569d 100644 --- a/addons/l10n_ch/payment.py +++ b/addons/l10n_ch/payment.py @@ -24,7 +24,7 @@ from osv import osv class payment_order(osv.osv): _inherit = 'payment.order' - def get_wizard(self,mode): + def get_wizard(self, mode): if mode == 'dta': return 'l10n_ch', 'action_dta_create' diff --git a/addons/l10n_ch/report/report_webkit_html.py b/addons/l10n_ch/report/report_webkit_html.py index 1699871dc26..6b6a84e0cf4 100644 --- a/addons/l10n_ch/report/report_webkit_html.py +++ b/addons/l10n_ch/report/report_webkit_html.py @@ -76,7 +76,7 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse): self._check(ids) return super(l10n_ch_report_webkit_html, self).set_context(objects, data, ids, report_type=report_type) - def police_absolute_path(self, inner_path) : + def police_absolute_path(self, inner_path): """Will get the ocrb police absolute path""" path = addons.get_module_resource(os.path.join('l10n_ch', 'report', inner_path)) return path diff --git a/addons/l10n_ch/wizard/create_dta.py b/addons/l10n_ch/wizard/create_dta.py index 695fe763aa9..f2d8f14b772 100644 --- a/addons/l10n_ch/wizard/create_dta.py +++ b/addons/l10n_ch/wizard/create_dta.py @@ -41,7 +41,7 @@ TRANS=[ (u'ä','a'), ] -def _u2a(text) : +def _u2a(text): """Tries to convert unicode charactere to asci equivalence""" if not text : return "" txt = "" diff --git a/addons/l10n_fr/l10n_fr.py b/addons/l10n_fr/l10n_fr.py index 5efb4244306..e1240ddd83a 100644 --- a/addons/l10n_fr/l10n_fr.py +++ b/addons/l10n_fr/l10n_fr.py @@ -29,7 +29,6 @@ class l10n_fr_report(osv.osv): 'name': fields.char('Name', size=128), 'line_ids': fields.one2many('l10n.fr.line', 'report_id', 'Lines'), } - _sql_constraints = [ ('code_uniq', 'unique (code)','The code report must be unique !') ] @@ -61,7 +60,4 @@ class res_company(osv.osv): res_company() - - - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_fr/report/base_report.py b/addons/l10n_fr/report/base_report.py index 2c44b062f45..c93d5308901 100644 --- a/addons/l10n_fr/report/base_report.py +++ b/addons/l10n_fr/report/base_report.py @@ -117,4 +117,4 @@ class base_report(report_sxw.rml_parse): break self._set_variable(code, sum) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_fr_rib/bank_view.xml b/addons/l10n_fr_rib/bank_view.xml index 5b750326601..414ad51954a 100644 --- a/addons/l10n_fr_rib/bank_view.xml +++ b/addons/l10n_fr_rib/bank_view.xml @@ -8,14 +8,6 @@ - - - - - - - - diff --git a/addons/l10n_lu/wizard/pdf_ext.py b/addons/l10n_lu/wizard/pdf_ext.py index 3b58fab5b68..e90cf0527d2 100644 --- a/addons/l10n_lu/wizard/pdf_ext.py +++ b/addons/l10n_lu/wizard/pdf_ext.py @@ -57,7 +57,7 @@ trailer %%EOF """ -def output_field( f ): +def output_field(f): return "\xfe\xff" + "".join( [ "\x00"+c for c in f ] ) def extract_keys(lines): diff --git a/addons/lunch/report/order.py b/addons/lunch/report/order.py index 11ca7f79dbc..b1745f7d5f5 100644 --- a/addons/lunch/report/order.py +++ b/addons/lunch/report/order.py @@ -26,14 +26,14 @@ from osv import osv class order(report_sxw.rml_parse): - def get_lines(self, user,objects): + def get_lines(self, user, objects): lines=[] for obj in objects: if user.id==obj.user_id.id: lines.append(obj) return lines - def get_total(self, user,objects): + def get_total(self, user, objects): lines=[] for obj in objects: if user.id==obj.user_id.id: diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index c671dd55ec4..061647c388a 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -590,7 +590,7 @@ class mail_thread(osv.AbstractModel): context = context or {} attachments = attachments or [] assert (not thread_id) or isinstance(thread_id, (int,long)) or \ - (isinstance(thread_id, (list, tuple)) and len(thread_id) == 1), "Invalid thread_id" + (isinstance(thread_id, (list, tuple)) and len(thread_id) == 1), "Invalid thread_id" if isinstance(thread_id, (list, tuple)): thread_id = thread_id and thread_id[0] @@ -618,7 +618,7 @@ class mail_thread(osv.AbstractModel): 'parent_id': parent_id, 'attachment_ids': attachment_ids, }) - for x in ('from', 'to', 'cc'): values.pop(x, None) # Avoid warnings + for x in ('from', 'to', 'cc'): values.pop(x, None) # Avoid warnings return self.pool.get('mail.message').create(cr, uid, values, context=context) #------------------------------------------------------ diff --git a/addons/mail/static/scripts/openerp_mailgate.py b/addons/mail/static/scripts/openerp_mailgate.py old mode 100755 new mode 100644 diff --git a/addons/membership/report/__init__.py b/addons/membership/report/__init__.py index 05c893ae400..84dc92c63f0 100644 --- a/addons/membership/report/__init__.py +++ b/addons/membership/report/__init__.py @@ -20,4 +20,4 @@ ############################################################################## import report_membership -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/membership/report/report_membership.py b/addons/membership/report/report_membership.py index 9090c752686..273ec0db74f 100644 --- a/addons/membership/report/report_membership.py +++ b/addons/membership/report/report_membership.py @@ -141,4 +141,4 @@ class report_membership(osv.osv): report_membership() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/membership/wizard/__init__.py b/addons/membership/wizard/__init__.py index 7ad7cc32008..a15a0a7329f 100644 --- a/addons/membership/wizard/__init__.py +++ b/addons/membership/wizard/__init__.py @@ -20,4 +20,4 @@ ############################################################################## import membership_invoice -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 00a5790b67e..cf203a60c7f 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -274,13 +274,15 @@ class mrp_bom(osv.osv): return {'value': {'name': prod.name, 'product_uom': prod.uom_id.id}} return {} - def _bom_find(self, cr, uid, product_id, product_uom, properties=[]): + def _bom_find(self, cr, uid, product_id, product_uom, properties=None): """ Finds BoM for particular product and product uom. @param product_id: Selected product. @param product_uom: Unit of measure of a product. @param properties: List of related properties. @return: False or BoM id. """ + if properties is None: + properties = [] cr.execute('select id from mrp_bom where product_id=%s and bom_id is null order by sequence', (product_id,)) ids = map(lambda x: x[0], cr.fetchall()) max_prop = 0 @@ -295,7 +297,7 @@ class mrp_bom(osv.osv): max_prop = prop return result - def _bom_explode(self, cr, uid, bom, factor, properties=[], addthis=False, level=0, routing_id=False): + def _bom_explode(self, cr, uid, bom, factor, properties=None, addthis=False, level=0, routing_id=False): """ Finds Products and Work Centers for related BoM for manufacturing order. @param bom: BoM of particular product. @param factor: Factor of product UoM. @@ -609,11 +611,13 @@ class mrp_production(osv.osv): self.write(cr, uid, ids, {'state': 'picking_except'}) return True - def action_compute(self, cr, uid, ids, properties=[], context=None): + def action_compute(self, cr, uid, ids, properties=None, context=None): """ Computes bills of material of a product. @param properties: List containing dictionaries of properties. @return: No. of products. """ + if properties is None: + properties = [] results = [] bom_obj = self.pool.get('mrp.bom') uom_obj = self.pool.get('product.uom') @@ -832,7 +836,7 @@ class mrp_production(osv.osv): 'product_id': wc.product_id.id, 'unit_amount': wc_line.hour, 'product_uom_id': wc.product_id.id and wc.product_id.uom_id.id or False - + } ) if wc.costs_journal_id and wc.costs_general_account_id: value = wc_line.cycle * wc.costs_cycle @@ -849,7 +853,7 @@ class mrp_production(osv.osv): 'product_id': wc.product_id.id, 'unit_amount': wc_line.cycle, 'product_uom_id': wc.product_id.id and wc.product_id.uom_id.id or False - + } ) return amount diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index 7f417dc18b1..795ac5453fb 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -33,7 +33,7 @@ class procurement_order(osv.osv): 'property_ids': fields.many2many('mrp.property', 'procurement_property_rel', 'procurement_id','property_id', 'Properties'), } - def check_produce_product(self, cr, uid, procurement, context=[]): + def check_produce_product(self, cr, uid, procurement, context=None): """ Finds the bill of material for the product from procurement order. @return: True or False """ diff --git a/addons/mrp/report/bom_structure.py b/addons/mrp/report/bom_structure.py index a5b43c19f01..458a0c19649 100644 --- a/addons/mrp/report/bom_structure.py +++ b/addons/mrp/report/bom_structure.py @@ -35,7 +35,7 @@ class bom_structure(report_sxw.rml_parse): def get_children(self, object, level=0): result = [] - def _get_rec(object,level): + def _get_rec(object, level): for l in object: res = {} res['name'] = l.name @@ -61,4 +61,4 @@ class bom_structure(report_sxw.rml_parse): report_sxw.report_sxw('report.bom.structure','mrp.bom','mrp/report/bom_structure.rml',parser=bom_structure,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index d5ddc7f0280..fdfe09f35b4 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -102,7 +102,7 @@ class StockMove(osv.osv): wf_service.trg_validate(uid, 'procurement.order', m, 'button_wait_done', cr) return processed_ids - def action_consume(self, cr, uid, ids, product_qty, location_id=False, context=None): + def action_consume(self, cr, uid, ids, product_qty, location_id=False, context=None): """ Consumed product with specific quatity from specific source location. @param product_qty: Consumed product quantity @param location_id: Source location diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py index ee2547bc7df..9f6671c3b2b 100644 --- a/addons/mrp_operations/mrp_operations.py +++ b/addons/mrp_operations/mrp_operations.py @@ -422,7 +422,7 @@ class mrp_production(osv.osv): pass return result - def action_compute(self, cr, uid, ids, properties=[], context=None): + def action_compute(self, cr, uid, ids, properties=None, context=None): """ Computes bills of material of a product and planned date of work order. @param properties: List containing dictionaries of properties. @return: No. of products. diff --git a/addons/plugin/plugin_handler.py b/addons/plugin/plugin_handler.py index 42754951317..95fe80f3b29 100644 --- a/addons/plugin/plugin_handler.py +++ b/addons/plugin/plugin_handler.py @@ -6,7 +6,6 @@ Created on 18 oct. 2011 from osv import osv, fields - class plugin_handler(osv.osv_memory): _name = 'plugin.handler' @@ -37,7 +36,7 @@ class plugin_handler(osv.osv_memory): @param email: email is a standard RFC2822 email message @return Dictionary which contain id and the model name of the document linked with the mail if no document is found the id = 0 - (model_name, res_id, url, name_get) + (model_name, res_id, url, name_get) """ mail_message_obj = self.pool.get('mail.message') model = "" @@ -52,7 +51,7 @@ class plugin_handler(osv.osv_memory): msg_ids = mail_message_obj.search(cr, uid, [('message_id','=', message_id)]) msg_id = len(msg_ids) and msg_ids[0] or False if not msg_id and parent_id: - msg_id = parent_id + msg_id = parent_id if msg_id: msg = mail_message_obj.browse(cr, uid, msg_id) res_id = msg.res_id @@ -61,7 +60,6 @@ class plugin_handler(osv.osv_memory): name = self.pool.get(model).name_get(cr, uid, [res_id])[0][1] return (model,res_id, url,name) - def document_type(self, cr, uid, context=None): """ Return the list of available model to push @@ -74,13 +72,13 @@ class plugin_handler(osv.osv_memory): doc_dict['res.partner'] = "Partner" return doc_dict.items() - # Can be used where search record was used + # Can be used where search record was used def list_document_get(self, cr, uid, model, name): """ This function return the result of name_search on the object model - @param model: the name of the model + @param model: the name of the model @param : the name of the document - @return : the result of name_search a list of tuple + @return : the result of name_search a list of tuple [(id, 'name')] """ return self.pool.get(model).name_search(cr, uid, name) @@ -89,7 +87,7 @@ class plugin_handler(osv.osv_memory): """ @param email: email is a standard RFC2822 email message @param model: On which model the message is pushed - @param thread_id: on which document the message is pushed, if thread_id = 0 a new document is created + @param thread_id: on which document the message is pushed, if thread_id = 0 a new document is created @return Dictionary which contain model , url and resource id. """ mail_message = self.pool.get('mail.message') @@ -97,7 +95,7 @@ class plugin_handler(osv.osv_memory): msg = self.pool.get('mail.thread').message_parse(cr, uid, email) message_id = msg.get('message-id') mail_ids = mail_message.search(cr, uid, [('message_id','=',message_id),('res_id','=',res_id),('model','=',model)]) - + if message_id and mail_ids : mail_record = mail_message.browse(cr, uid, mail_ids)[0] res_id = mail_record.res_id @@ -109,11 +107,11 @@ class plugin_handler(osv.osv_memory): res_id = model_obj.message_process(cr, uid, model, email) notify = "Mail successfully pushed, a new %s has been created " % model else: - model_obj.message_post(cr, uid, [res_id], - body= msg.get('body'), - subject= msg.get('subject'), - type= 'email', - parent_id= msg.get('parent_id'), + model_obj.message_post(cr, uid, [res_id], + body= msg.get('body'), + subject= msg.get('subject'), + type= 'email', + parent_id= msg.get('parent_id'), attachments= msg.get('attachments')) notify = "Mail successfully pushed" url = self._make_url(cr, uid, res_id, model) @@ -123,7 +121,7 @@ class plugin_handler(osv.osv_memory): """ @param data : the data use to create the res.partner [('field_name', value)], field name is required - @param partner_id : On which partner the address is attached + @param partner_id : On which partner the address is attached if partner_id = 0 then create a new partner with the same name that the address @return : the partner_id sended or created, this allow the plugin to open the right partner page """ @@ -138,7 +136,7 @@ class plugin_handler(osv.osv_memory): return ('res.partner', partner_id, url) # Specific to outlook rfc822 is not available so we split in arguments headerd,body,attachemnts - def push_message_outlook(self, cr, uid, model, headers,res_id=0 ,body=False, body_html=False, attachments=False): + def push_message_outlook(self, cr, uid, model, headers, res_id=0, body=False, body_html=False, attachments=False): # ---------------------------------------- # solution 1 # construct a fake rfc822 from the separated arguement @@ -149,14 +147,14 @@ class plugin_handler(osv.osv_memory): # solution 2 # use self.pushmessage only with header and body # add attachemnt yourself after - mail_message = self.pool.get('mail.message') + mail_message = self.pool.get('mail.message') ir_attachment_obj = self.pool.get('ir.attachment') attach_ids = [] msg = self.pool.get('mail.thread').message_parse(cr, uid, headers) - message_id = msg.get('message-id') + message_id = msg.get('message-id') push_mail = self.push_message(cr, uid, model, headers, res_id) res_id = push_mail[1] - model = push_mail[0] + model = push_mail[0] for name in attachments.keys(): attachment_ids = ir_attachment_obj.search(cr, uid, [('res_model', '=', model), ('res_id', '=', res_id), ('datas_fname', '=', name)]) if attachment_ids: diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index e6976dd319c..3d80fd53e24 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -119,21 +119,21 @@ class PointOfSaleController(openerpweb.Controller): return @openerpweb.jsonrequest - def payment_request(self, request, price, method, info): + def payment_request(self, request, price): """ The PoS will activate the method payment """ - print "payment_request: price:"+str(price)+" method:"+str(method)+" info:"+str(info) - return + print "payment_request: price:"+str(price) + return 'ok' @openerpweb.jsonrequest - def is_payment_accepted(self, request): - print "is_payment_accepted" - return 'waiting_for_payment' + def payment_status(self, request): + print "payment_status" + return { 'status':'waiting' } @openerpweb.jsonrequest - def payment_canceled(self, request): - print "payment_canceled" + def payment_cancel(self, request): + print "payment_cancel" return @openerpweb.jsonrequest diff --git a/addons/point_of_sale/report/account_statement.py b/addons/point_of_sale/report/account_statement.py index be5d4b3a330..c1fc73a35d7 100644 --- a/addons/point_of_sale/report/account_statement.py +++ b/addons/point_of_sale/report/account_statement.py @@ -48,4 +48,4 @@ class account_statement(report_sxw.rml_parse): report_sxw.report_sxw('report.account.statement', 'account.bank.statement', 'addons/statement/report/account_statement.rml', parser=account_statement,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py index 4f342099a59..0e75e7f7ae1 100644 --- a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py +++ b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py @@ -38,13 +38,13 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): 'get_net_total_starting':self._get_net_total_starting, }) - def _get_user(self,line_ids): + def _get_user(self, line_ids): sql = "select name from res_users where id = %d"%(line_ids['create_uid']) self.cr.execute(sql) user = self.cr.fetchone() return user[0] - def _get_data(self,user): + def _get_data(self, user): data = {} sql = """ SELECT abs.journal_id,abs.id,abs.date,abs.closing_date,abs.name as statement,aj.name as journal,ap.name as period,ru.name as user,rc.name as company, abs.state,abs.balance_end_real FROM account_bank_statement as abs @@ -57,7 +57,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): data = self.cr.dictfetchall() return data - def _get_lines(self,statement): + def _get_lines(self, statement): data = {} sql = """ select absl.* from account_bank_statement_line as absl, account_bank_statement as abs where absl.statement_id = abs.id and abs.id = %d"""%(statement['id']) @@ -65,7 +65,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): data = self.cr.dictfetchall() return data - def _get_bal(self,data): + def _get_bal(self, data): res = {} sql =""" select sum(pieces*number) as bal from account_cashbox_line where starting_id = %d """%(data['id']) self.cr.execute(sql) @@ -75,7 +75,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): else: return False - def _get_sub_total(self,user,data,date): + def _get_sub_total(self, user, data, date): res={} self.cr.execute(""" select sum(absl.amount) from account_bank_statement as abs LEFT JOIN account_bank_statement_line as absl ON abs.id = absl.statement_id @@ -90,7 +90,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): else: return False - def _get_partner(self,statement): + def _get_partner(self, statement): res = {} if statement['pos_statement_id']: sql =""" select rp.name from account_bank_statement_line as absl,res_partner as rp @@ -102,7 +102,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): else: return 0.00 - def _get_net_total_starting(self,user): + def _get_net_total_starting(self, user): lst = [] res={} total_ending_bal = 0.0 @@ -124,7 +124,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): lst.append(total_starting_bal) return lst - def _get_net_total(self,user): + def _get_net_total(self, user): res={} sql = """select sum(absl.amount) as net_total from account_bank_statement as abs LEFT JOIN account_bank_statement_line as absl ON abs.id = absl.statement_id @@ -137,4 +137,4 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): report_sxw.report_sxw('report.all.closed.cashbox.of.the.day', 'account.bank.statement', 'addons/point_of_sale/report/all_closed_cashbox_of_the_day.rml', parser=all_closed_cashbox_of_the_day,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_details.py b/addons/point_of_sale/report/pos_details.py index d13c127165e..f8565a8776a 100644 --- a/addons/point_of_sale/report/pos_details.py +++ b/addons/point_of_sale/report/pos_details.py @@ -24,7 +24,7 @@ from report import report_sxw class pos_details(report_sxw.rml_parse): - def _get_invoice(self,inv_id): + def _get_invoice(self, inv_id): res={} if inv_id: self.cr.execute("select number from account_invoice as ac where id = %s", (inv_id,)) @@ -37,7 +37,7 @@ class pos_details(report_sxw.rml_parse): user_obj = self.pool.get('res.users') return user_obj.search(self.cr, self.uid, []) - def _pos_sales_details(self,form): + def _pos_sales_details(self, form): pos_obj = self.pool.get('pos.order') user_obj = self.pool.get('res.users') data = [] @@ -74,7 +74,7 @@ class pos_details(report_sxw.rml_parse): def _get_sales_total_2(self): return self.total - def _get_sum_invoice_2(self,form): + def _get_sum_invoice_2(self, form): pos_obj = self.pool.get('pos.order') user_obj = self.pool.get('res.users') user_ids = form['user_ids'] or self._get_all_users() diff --git a/addons/point_of_sale/report/pos_details_summary.py b/addons/point_of_sale/report/pos_details_summary.py index a7009ea5972..a917ce99c06 100644 --- a/addons/point_of_sale/report/pos_details_summary.py +++ b/addons/point_of_sale/report/pos_details_summary.py @@ -42,7 +42,7 @@ class pos_details_summary(report_sxw.rml_parse): 'getcompany':self.get_company }) - def get_company(self,objects): + def get_company(self, objects): comp=[obj.company_id.name for obj in objects] return '%s' % (comp[0]) diff --git a/addons/point_of_sale/report/pos_lines.py b/addons/point_of_sale/report/pos_lines.py index 66b52d6ce01..6c48d9e9733 100644 --- a/addons/point_of_sale/report/pos_lines.py +++ b/addons/point_of_sale/report/pos_lines.py @@ -41,7 +41,7 @@ class pos_lines(report_sxw.rml_parse): self.total = tot return self.total - def __taxes__(self,obj): + def __taxes__(self, obj): self.cr.execute ( " Select acct.name from pos_order as po " \ " LEFT JOIN pos_order_line as pol ON po.id = pol.order_id " \ " LEFT JOIN product_taxes_rel as ptr ON pol.product_id = ptr.prod_id " \ @@ -52,4 +52,4 @@ class pos_lines(report_sxw.rml_parse): report_sxw.report_sxw('report.pos.lines', 'pos.order', 'addons/point_of_sale/report/pos_lines.rml', parser=pos_lines,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_payment_report.py b/addons/point_of_sale/report/pos_payment_report.py index beadd2d5cb6..1fed98a4852 100644 --- a/addons/point_of_sale/report/pos_payment_report.py +++ b/addons/point_of_sale/report/pos_payment_report.py @@ -33,7 +33,7 @@ class pos_payment_report(report_sxw.rml_parse): 'pos_payment_total':self._pos_payment_total, }) - def _pos_payment(self,obj): + def _pos_payment(self, obj): data={} sql = """ select id from pos_order where id = %d"""%(obj.id) self.cr.execute(sql) @@ -56,9 +56,9 @@ class pos_payment_report(report_sxw.rml_parse): self.total += d['price_unit'] * d['qty'] return data - def _pos_payment_total(self,o): + def _pos_payment_total(self, o): return self.total report_sxw.report_sxw('report.pos.payment.report', 'pos.order', 'addons/point_of_sale/report/pos_payment_report.rml', parser=pos_payment_report,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_payment_report_user.py b/addons/point_of_sale/report/pos_payment_report_user.py index c90387e4f7a..b347c86da2a 100644 --- a/addons/point_of_sale/report/pos_payment_report_user.py +++ b/addons/point_of_sale/report/pos_payment_report_user.py @@ -33,7 +33,7 @@ class pos_payment_report_user(report_sxw.rml_parse): 'pos_payment_user_total':self.__pos_payment_user__total__, }) - def __pos_payment_user__(self,form): + def __pos_payment_user__(self, form): data={} ids = form['user_id'] sql = "select pt.name,pp.default_code as code,pol.qty,pu.name as uom,pol.discount,pol.price_unit, " \ @@ -61,4 +61,4 @@ class pos_payment_report_user(report_sxw.rml_parse): report_sxw.report_sxw('report.pos.payment.report.user', 'pos.order', 'addons/point_of_sale/report/pos_payment_report_user.rml', parser=pos_payment_report_user,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_receipt.py b/addons/point_of_sale/report/pos_receipt.py index 93604e755e0..2ee6b2e3360 100644 --- a/addons/point_of_sale/report/pos_receipt.py +++ b/addons/point_of_sale/report/pos_receipt.py @@ -74,4 +74,4 @@ class order(report_sxw.rml_parse): report_sxw.report_sxw('report.pos.receipt', 'pos.order', 'addons/point_of_sale/report/pos_receipt.rml', parser=order, header=False) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_sales_user.py b/addons/point_of_sale/report/pos_sales_user.py index 6ac2e1892c1..aa43592363f 100644 --- a/addons/point_of_sale/report/pos_sales_user.py +++ b/addons/point_of_sale/report/pos_sales_user.py @@ -33,7 +33,7 @@ class pos_sales_user(report_sxw.rml_parse): }) - def _get_data(self,form): + def _get_data(self, form): dt1 = form['date_start'] + ' 00:00:00' dt2 = form['date_end'] + ' 23:59:59' data={} diff --git a/addons/point_of_sale/report/pos_sales_user_today.py b/addons/point_of_sale/report/pos_sales_user_today.py index 9696d036959..35bc61efea8 100644 --- a/addons/point_of_sale/report/pos_sales_user_today.py +++ b/addons/point_of_sale/report/pos_sales_user_today.py @@ -33,7 +33,7 @@ class pos_sales_user_today(report_sxw.rml_parse): }) - def _get_data(self,form): + def _get_data(self, form): data={} ids = form['user_id'] @@ -47,4 +47,4 @@ class pos_sales_user_today(report_sxw.rml_parse): report_sxw.report_sxw('report.pos.sales.user.today', 'pos.order', 'addons/point_of_sale/report/pos_sales_user_today.rml', parser=pos_sales_user_today,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/pos_users_product.py b/addons/point_of_sale/report/pos_users_product.py index 87cf306990a..032a25043e8 100644 --- a/addons/point_of_sale/report/pos_users_product.py +++ b/addons/point_of_sale/report/pos_users_product.py @@ -60,9 +60,9 @@ class pos_user_product(report_sxw.rml_parse): data = self.cr.fetchone() return data[0] - def _get_total(self,o): + def _get_total(self, o): return self.total report_sxw.report_sxw('report.pos.user.product', 'account.bank.statement', 'addons/statement/report/pos_users_product.rml', parser=pos_user_product,header='internal') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index 8213df7fc44..cbb625c02d7 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -111,12 +111,10 @@ left:0; top:0; width: 100%; - height: 33px; + height: 34px; margin:0; padding:0; color: gray; - border-top: solid 1px #d3d3d3; - border-bottom: solid 1px black; background: #393939; background: -moz-linear-gradient(#7b7979, #393939); background: -webkit-gradient(linear, left top, left bottom, from(#7b7979), to(#393939)); @@ -253,7 +251,7 @@ .point-of-sale #content { width: 100%; position: absolute; - top: 35px; + top: 34px; bottom: 0; background: #F0EEEE; } @@ -292,22 +290,29 @@ vertical-align: top; } .point-of-sale #paypad button { - height: 54px; + height: 50px; width: 208px; - margin: 0 -3px; + margin: 0px -6px 4px -2px; font-weight: bold; vertical-align: middle; color: #555555; border-top: 1px solid #efefef; font-size: 14px; } -.point-of-sale #paypad button:hover { +.point-of-sale #paypad button:hover, .point-of-sale #numpad button:hover, .point-of-sale #numpad .selected-mode, .point-of-sale .popup button:hover { + border: none; color: white; background: #7f82ac; background: -webkit-gradient(linear, left top, left bottom, from(#9d9fc5), to(#7f82ac)); background: -moz-linear-gradient(#9d9fc5, #7f82ac); background: -ms-linear-gradient(#9d9fc5, #7f82ac); background: linear-gradient(#9d9fc5, #7f82ac); + text-shadow: 0px 0px 5px rgba(255,255,255,0.21); + -webkit-box-shadow: 0px 0px 2px rgba(0,0,0,0.3) inset, 0px 1px 2px rgba(0,0,0,0.1); + -moz-box-shadow: 0px 0px 2px rgba(0,0,0,0.3) inset, 0px 1px 2px rgba(0,0,0,0.1); + -ms-box-shadow: 0px 0px 2px rgba(0,0,0,0.3) inset, 0px 1px 2px rgba(0,0,0,0.1); + -o-box-shadow: 0px 0px 2px rgba(0,0,0,0.3) inset, 0px 1px 2px rgba(0,0,0,0.1); + box-shadow: 0px 0px 2px rgba(0,0,0,0.3) inset, 0px 1px 2px rgba(0,0,0,0.1); } /* ********* The Numpad ********* */ @@ -318,30 +323,14 @@ text-align: center; } .point-of-sale #numpad button { - height: 54px; - width: 54px; - margin: 0 -3px; + height: 50px; + width: 50px; + margin: 0px 0px 4px 0px; font-weight: bold; vertical-align: middle; color: #555555; border-top: 1px solid #efefef; } -.point-of-sale #numpad button:hover { - color: white; - background: #7f82ac; - background: -webkit-gradient(linear, left top, left bottom, from(#9d9fc5), to(#7f82ac)); - background: -moz-linear-gradient(#9d9fc5, #7f82ac); - background: -ms-linear-gradient(#9d9fc5, #7f82ac); - background: linear-gradient(#9d9fc5, #7f82ac); -} -.point-of-sale #numpad .selected-mode { - color: white; - background: #7f82ac; - background: -webkit-gradient(linear, left top, left bottom, from(#9d9fc5), to(#7f82ac)); - background: -moz-linear-gradient(#9d9fc5, #7f82ac); - background: -ms-linear-gradient(#9d9fc5, #7f82ac); - background: linear-gradient(#9d9fc5, #7f82ac); -} .point-of-sale .input-button { font-size: 24px; } @@ -364,7 +353,7 @@ .point-of-sale #rightpane header { padding: 0; height: 32px; - border-bottom: 1px solid #cecbcb; + border-bottom: 1px solid #c7c7c7; background: #d3d3d3; background: -moz-linear-gradient(white, #d3d3d3); background: -webkit-gradient(linear, left top, left bottom, from(white), to(#d3d3d3)); @@ -391,7 +380,6 @@ bottom:0px; left:0px; right:0px; - background: #eeedff; } /* a) the product list navigation bar */ @@ -451,7 +439,7 @@ /*background:#f0f0f0;*/ position: relative; background-image: url('../img/bg.png'); - border-bottom: 1px solid #cecbcb; + border-bottom: 2px solid #e0e0e0; } .point-of-sale #categories .white-gradient{ position: absolute; @@ -485,9 +473,9 @@ background:#fff; border: 1px solid #fff; border-radius: 3px; - -webkit-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); - -moz-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); - box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + -webkit-box-shadow: 0px 2px 0px #E9E9E9, 0px 3px 8px rgba(0, 0, 0, 0.34); + -moz-box-shadow: 0px 2px 0px #E9E9E9, 0px 3px 8px rgba(0, 0, 0, 0.34); + box-shadow: 0px 2px 0px #E9E9E9, 0px 3px 8px rgba(0, 0, 0, 0.34); cursor: pointer; } @@ -546,16 +534,18 @@ -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; - top:auto; - left: 2px; - right: 2px; - bottom: 2px; - background: #8a89ba; /*-webkit-linear-gradient(-90deg,rgba(138,137,186,0),rgba(138,137,186,1), rgba(138,137,186,1));*/ + bottom: 0; + top: auto; + line-height: 14px; + width: 100%; + background: -webkit-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: -moz-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: -ms-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + /*background:#FFF;*/ padding: 3px; - /*color:#8a89ba;*/ - color: #FFF; - cursor: pointer; - border-radius: 3px; + padding-top: 15px; + color: #7C7BAD; } /* e) the product */ @@ -572,9 +562,9 @@ background:#fff; border: 1px solid #fff; border-radius: 3px; - -webkit-box-shadow: 0px 1px 8px rgba(127,130,172,0.4); - -moz-box-shadow: 0px 1px 8px rgba(127,130,172,0.4); - box-shadow: 0px 1px 8px rgba(127,130,172,0.4); + -webkit-box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480; + -moz-box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480; + box-shadow: 0px 2px 0px #dad8e4, 0px 1px 8px #636480; } .point-of-sale .product .product-img { @@ -596,10 +586,11 @@ right: 2px; vertical-align: top; color: white; - line-height: 14px; + line-height: 13px; background: #7f82ac; padding: 2px 5px; border-radius: 3px; + box-shadow: 0px 1px 0px #9A9CC5, 0px 3px 0px #7E86AC, 0px 3px 3px rgba(12, 14, 68, 0.67); } .point-of-sale .product .product-name { @@ -630,6 +621,8 @@ top:0px; bottom:0px; width:100%; + background-image: -webkit-radial-gradient(rgba(255, 255, 255, 0),rgba(51, 17, 124, 0.25)), url('../img/grid.png'); + box-shadow: 0px 36px 24px rgba(0, 0, 0, 0.14) inset; } .point-of-sale .screen header h2 { margin-top: 0px; @@ -638,6 +631,22 @@ .point-of-sale .screen p{ font-size: 18px; } +.point-of-sale .dialog{ + width: 500px; + margin-left: auto; + margin-right: auto; + margin-top: 50px; + padding: 40px; + background-color: #f8f8f8; + border-radius: 4px; + text-align: center; + box-shadow: 0px 1px 0px white,0px -1px 0px white, 0px 4px 0px #DFDFDF, 0px 10px 30px rgba(0, 0, 0, 0.21); +} +.point-of-sale .dialog p{ + font-size: 25px; + margin-top: 10px; + color: #5a5a5a; +} /* a) Layout for the Product Screen */ @@ -681,11 +690,32 @@ } .point-of-sale .pos-step-container input{ font-size: 1em; + outline: none; + border: none; + padding: 0px 8px; + padding-top: 8px; + margin-left: 16px; + border-radius: 5px; + background: white; + box-shadow: 0px -1px 0px #E2E2E2 inset,0px 1px 0px white inset, 0px 4px 0px #DDD inset, 0px 4px 8px rgba(0, 0, 0, 0.55) inset; + color: #4c4c4c; + -webkit-animation: all 250ms linear; +} + +.point-of-sale .pos-step-container input:focus{ + box-shadow: 0px -1px 0px #C9CFFD inset,0px 1px 0px #B8C8FC inset, 0px 4px 0px #9FD5FF inset, 0px 4px 9px rgba(0, 31, 255, 0.55) inset; + color: #5d7ad6; + -webkit-animation: all 250ms linear; } .point-of-sale .pos-payment-container { text-align: left; min-width: 500px; + margin-top: 50px; + padding: 40px; + background-color: #f8f8f8; + border-radius: 4px; + box-shadow: 0px 1px 0px white,0px -1px 0px white, 0px 4px 0px #DFDFDF, 0px 10px 30px rgba(0, 0, 0, 0.21); } .point-of-sale .pos-payment-container .left-block{ display: inline-block; @@ -695,7 +725,7 @@ text-align:left; } .point-of-sale .pos-payment-container .header{ - margin-top: 50px; + margin-top: 0px; margin-bottom:20px; font-weight: bold; } @@ -738,9 +768,8 @@ padding-bottom:30px; display: inline-block; font-family: "Inconsolata"; - -webkit-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); - -moz-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); - box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + border-radius: 2px; + box-shadow: 0px 1px 0px white, 0px 3px 0px #C1B9D6, 0px 8px 16px rgba(0, 0, 0, 0.3); } .point-of-sale .pos-sale-ticket .emph{ font-size: 20px; @@ -774,6 +803,9 @@ .pos-sale-ticket { margin: 0; } + .debug-widget{ + display: none !important; + } } /* d) The Scale screen */ @@ -785,9 +817,14 @@ margin-top: 100px; margin-left: auto; margin-right: auto; + padding: 40px; + background: #f1f1f1; + box-shadow: 0px 1px 0px white, 0px -1px 0px white, 0px 4px 0px #dfdfdf, 0px 10px 30px rgba(0,0,0,0.21); + border-radius: 4px; } .point-of-sale .scale-screen .product-picture { + position: relative; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; @@ -803,9 +840,7 @@ background:#fff; border: 1px solid #fff; border-radius: 3px; - -webkit-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); - -moz-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); - box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + box-shadow: 0px 2px 0px #e9e9e9, 0px 2px 8px rgba(0,0,0,0.2); } .point-of-sale .scale-screen .product-picture img{ @@ -832,30 +867,40 @@ .point-of-sale .scale-screen .product-name { position: absolute; left:0; - top:20px; + top:50px; height:50px; font-size:40px; line-height:50px; text-align:right; - right:225px; + right:275px; + color: #8d8d8d; } .point-of-sale .scale-screen .weight{ position: absolute; - left:0; - height:90px; - bottom:15px; - right:220px; - padding:5px; + left: 40px; + height: 90px; + bottom: 55px; + right: 260px; + padding: 6px; + padding-right: 33px; + padding-top: 11px; + background: white; + border-radius: 3px; + box-shadow: 0px -1px #E2E2E2 inset,0px 1px white inset, 0px 4px #E6E4E4 inset, 0px 4px 8px rgba(0, 0, 0, 0.4) inset; + } .point-of-sale .scale-screen .weight p{ display: inline-block; text-align:right; line-height: 90px; - font-size: 80px; - width:100%; - height:100%; - margin:0; + font-size: 70px; + width: 100%; + height: 100%; + margin: 0; + margin-right: 18px font-family: "Inconsolata"; + color: #6c6c6c; + text-shadow: 0px 3px 3px rgba(0,0,0, 0.2); } /* e) The Welcome Screen */ @@ -909,9 +954,10 @@ margin-top:16px; margin-bottom:16px; font-size:16px; - -webkit-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); - -moz-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); - box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + border-radius: 2px; + -webkit-box-shadow: 0px 1px 0px white, 0px 3px 0px #DFDFDF, 0px 7px 16px rgba(0, 0, 0, 0.20); + -moz-box-shadow: 0px 1px 0px white, 0px 3px 0px #DFDFDF, 0px 7px 16px rgba(0, 0, 0, 0.20); + box-shadow: 0px 1px 0px white, 0px 3px 0px #DFDFDF, 0px 7px 16px rgba(0, 0, 0, 0.20); } @@ -1201,10 +1247,8 @@ font-size:20px; font-weight:bold; background-color: #F0EEEE; - border: 1px solid #E0DDDD; - -webkit-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); - -moz-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); - -ms-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + border-radius: 4px; + box-shadow: 0px -1px white, 0px 1px white, 0px 4px #949494, 0px 10px 20px rgba(0, 0, 0, 0.3); z-index:1200; } .point-of-sale .popup .footer{ diff --git a/addons/point_of_sale/static/src/img/bancontact.png b/addons/point_of_sale/static/src/img/bancontact.png index 5c34fefb0f9..bd4f63dbb5a 100644 Binary files a/addons/point_of_sale/static/src/img/bancontact.png and b/addons/point_of_sale/static/src/img/bancontact.png differ diff --git a/addons/point_of_sale/static/src/img/grid-purple.png b/addons/point_of_sale/static/src/img/grid-purple.png new file mode 100644 index 00000000000..2f0f4331e34 Binary files /dev/null and b/addons/point_of_sale/static/src/img/grid-purple.png differ diff --git a/addons/point_of_sale/static/src/img/grid.png b/addons/point_of_sale/static/src/img/grid.png new file mode 100644 index 00000000000..35dbab00913 Binary files /dev/null and b/addons/point_of_sale/static/src/img/grid.png differ diff --git a/addons/point_of_sale/static/src/img/scan.png b/addons/point_of_sale/static/src/img/scan.png index e5eafbe821d..c0bc93d7ca1 100644 Binary files a/addons/point_of_sale/static/src/img/scan.png and b/addons/point_of_sale/static/src/img/scan.png differ diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js index a26d8ca7154..142d35bd340 100644 --- a/addons/point_of_sale/static/src/js/devices.js +++ b/addons/point_of_sale/static/src/js/devices.js @@ -14,7 +14,14 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.weighting = false; this.paying = false; - this.payment_status = 'waiting_for_payment'; + this.default_payment_status = { + status: 'waiting', + message: '', + payment_method: undefined, + receipt_client: undefined, + receipt_shop: undefined, + }; + this.custom_payment_status = this.default_payment_status; this.connection = new instance.web.JsonRPC(); this.connection.setup(url); @@ -23,16 +30,21 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.notifications = {}; }, - message : function(name,params,success_callback, error_callback){ - success_callback = success_callback || function(){}; - error_callback = error_callback || function(){}; - + message : function(name,params){ + var ret = new $.Deferred(); var callbacks = this.notifications[name] || []; for(var i = 0; i < callbacks.length; i++){ callbacks[i](params); } - this.connection.rpc('/pos/'+name, params || {}, success_callback, error_callback); + this.connection.rpc('/pos/'+name, params || {}, + function(result){ + ret.resolve(result); + }, + function(error){ + ret.reject(error); + }); + return ret; }, // this allows the client to be notified when a proxy call is made. The notification @@ -47,23 +59,23 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal //a product has been scanned and recognized with success // ean is a parsed ean object scan_item_success: function(ean){ - this.message('scan_item_success',{ean: ean}); + return this.message('scan_item_success',{ean: ean}); }, // a product has been scanned but not recognized // ean is a parsed ean object scan_item_error_unrecognized: function(ean){ - this.message('scan_item_error_unrecognized',{ean: ean}); + return this.message('scan_item_error_unrecognized',{ean: ean}); }, //the client is asking for help help_needed: function(){ - this.message('help_needed'); + return this.message('help_needed'); }, //the client does not need help anymore help_canceled: function(){ - this.message('help_canceled'); + return this.message('help_canceled'); }, //the client is starting to weight @@ -72,7 +84,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.weight = 0; this.weighting = true; this.bypass_proxy = false; - this.message('weighting_start'); + return this.message('weighting_start'); } }, @@ -84,11 +96,12 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal if(this.bypass_proxy){ return this.weight; }else{ - this.message('weighting_read_kg',{},function(weight){ - if(self.weighting && !self.bypass_proxy){ - self.weight = weight; - } - }); + this.message('weighting_read_kg',{}) + .then(function(weight){ + if(self.weighting && !self.bypass_proxy){ + self.weight = weight; + } + }); return this.weight; } }, @@ -104,77 +117,76 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.weight = 0; this.weighting = false; this.bypass_proxy = false; - this.message('weighting_end'); + return this.message('weighting_end'); }, // the pos asks the client to pay 'price' units - // method: 'mastercard' | 'cash' | ... ? TBD - // info: 'extra information to display on the payment terminal' ... ? TBD - payment_request: function(price, method, info){ + payment_request: function(price){ + var ret = new $.Deferred(); this.paying = true; - this.payment_status = 'waiting_for_payment'; - this.message('payment_request',{'price':price,'method':method,'info':info}); + this.custom_payment_status = this.default_payment_status; + return this.message('payment_request',{'price':price}); }, - // is called at regular interval after a payment request to see if the client - // has paid the required money - // returns 'waiting_for_payment' | 'payment_accepted' | 'payment_rejected' - is_payment_accepted: function(){ - var self = this; + payment_status: function(){ if(this.bypass_proxy){ this.bypass_proxy = false; - return this.payment_status; + return (new $.Deferred()).resolve(this.custom_payment_status); }else{ - this.message('is_payment_accepted', {}, function(payment_status){ - if(self.paying){ - self.payment_status = payment_status; - } - }); - return this.payment_status; + return this.message('payment_status'); } }, // override what the proxy says and accept the payment debug_accept_payment: function(){ this.bypass_proxy = true; - this.payment_status = 'payment_accepted'; + this.custom_payment_status = { + status: 'paid', + message: 'Successfull Payment, have a nice day', + payment_method: 'AMEX', + receipt_client: 'bla', + receipt_shop: 'bla', + }; }, // override what the proxy says and reject the payment debug_reject_payment: function(){ this.bypass_proxy = true; - this.payment_status = 'payment_rejected'; + this.custom_payment_status = { + status: 'error-rejected', + message: 'Sorry you don\'t have enough money :(', + }; }, // the client cancels his payment - payment_canceled: function(){ + payment_cancel: function(){ this.paying = false; - this.payment_status = 'waiting_for_payment'; - this.message('payment_canceled'); + this.custom_payment_status = 'waiting_for_payment'; + return this.message('payment_cancel'); }, // called when the client logs in or starts to scan product transaction_start: function(){ - this.message('transaction_start'); + return this.message('transaction_start'); }, // called when the clients has finished his interaction with the machine transaction_end: function(){ - this.message('transaction_end'); + return this.message('transaction_end'); }, // called when the POS turns to cashier mode cashier_mode_activated: function(){ - this.message('cashier_mode_activated'); + return this.message('cashier_mode_activated'); }, // called when the POS turns to client mode cashier_mode_deactivated: function(){ - this.message('cashier_mode_deactivated'); + return this.message('cashier_mode_deactivated'); }, // ask for the cashbox (the physical box where you store the cash) to be opened open_cashbox: function(){ - this.message('open_cashbox'); + return this.message('open_cashbox'); }, /* ask the printer to print a receipt @@ -216,12 +228,12 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal * } */ print_receipt: function(receipt){ - this.message('print_receipt',{receipt: receipt}); + return this.message('print_receipt',{receipt: receipt}); }, // asks the proxy to print an invoice in pdf form ( used to print invoices generated by the server ) print_pdf_invoice: function(pdfinvoice){ - this.message('print_pdf_invoice',{pdfinvoice: pdfinvoice}); + return this.message('print_pdf_invoice',{pdfinvoice: pdfinvoice}); }, }); diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index d2c79f19928..1ad03c5ead1 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -154,7 +154,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa }, barcode_product_screen: 'products', //if defined, this screen will be loaded when a product is scanned - barcode_product_error_popup: 'error', //if defined, this popup will be loaded when there's an error in the popup + barcode_product_error_popup: 'error-product', //if defined, this popup will be loaded when there's an error in the popup // what happens when a product is scanned : // it will add the product to the order and go to barcode_product_screen. Or show barcode_product_error_popup if @@ -411,6 +411,9 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa self.pos_widget.screen_selector.set_user_mode('cashier'); }, }); + this.$('.footer .button').off('click').click(function(){ + self.pos_widget.screen_selector.close_popup(); + }); }, close:function(){ this._super(); @@ -419,12 +422,12 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa }, }); - module.ErrorProductNotRecognizedPopupWidget = module.ErrorPopupWidget.extend({ - template:'ErrorProductNotRecognizedPopupWidget', + module.ProductErrorPopupWidget = module.ErrorPopupWidget.extend({ + template:'ProductErrorPopupWidget', }); - module.ErrorNoSessionPopupWidget = module.ErrorPopupWidget.extend({ - template:'ErrorNoSessionPopupWidget', + module.ErrorSessionPopupWidget = module.ErrorPopupWidget.extend({ + template:'ErrorSessionPopupWidget', }); module.ScaleInviteScreenWidget = module.ScreenWidget.extend({ @@ -539,6 +542,60 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa }, }); + // the JobQueue schedules a sequence of 'jobs'. each job is + // a function returning a deferred. the queue waits for each job to finish + // before launching the next. Each job can also be scheduled with a delay. + // the queue jobqueue is used to prevent parallel requests to the payment terminal. + + module.JobQueue = function(){ + var queue = []; + var running = false; + var run = function(){ + if(queue.length > 0){ + running = true; + var job = queue.shift(); + setTimeout(function(){ + var def = job.fun(); + if(def){ + def.then(run); + }else{ + run(); + } + },job.delay || 0); + }else{ + running = false; + } + }; + + // adds a job to the schedule. + this.schedule = function(fun, delay){ + queue.push({fun:fun, delay:delay}); + if(!running){ + run(); + } + } + + // remove all jobs from the schedule + this.clear = function(){ + queue = []; + }; + }; + + /* + module.BasicPaymentScreen = module.ScreenWidget.extend({ + queue: new JobQueue(), + start_payment_transaction: function(){ + }, + update_payment_transaction: function(){ + }, + cancel_payment_transaction: function(){ + }, + show: function(){ + this._super(); + }, + }); + */ + module.ClientPaymentScreenWidget = module.ScreenWidget.extend({ template:'ClientPaymentScreenWidget', @@ -548,50 +605,102 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa show: function(){ this._super(); var self = this; + + this.queue = new module.JobQueue(); + this.canceled = false; + this.paid = false; - this.pos.proxy.payment_request(this.pos.get('selectedOrder').getDueLeft(),'card','info'); //TODO TOTAL - - this.intervalID = setInterval(function(){ - var payment = self.pos.proxy.is_payment_accepted(); - if(payment === 'payment_accepted'){ - clearInterval(this.intervalID); - - var currentOrder = self.pos.get('selectedOrder'); - - //we get the first cashregister marked as self-checkout - var selfCheckoutRegisters = []; - for(var i = 0; i < self.pos.get('cashRegisters').models.length; i++){ - var cashregister = self.pos.get('cashRegisters').models[i]; - if(cashregister.self_checkout_payment_method){ - selfCheckoutRegisters.push(cashregister); + // initiates the connection to the payment terminal and starts the update requests + this.start = function(){ + var def = new $.Deferred(); + console.log("START"); + self.pos.proxy.payment_request(self.pos.get('selectedOrder').getDueLeft()) + .then(function(ack){ + if(ack === 'ok'){ + self.queue.schedule(self.update); + }else if(ack.indexOf('error') === 0){ + console.error('cannot make payment. TODO'); + }else{ + console.error('unknown payment request return value:',ack); } - } - - var cashregister = selfCheckoutRegisters[0] || self.pos.get('cashRegisters').models[0]; - currentOrder.addPaymentLine(cashregister); - self.pos.push_order(currentOrder.exportAsJSON()) - currentOrder.destroy(); - self.pos.proxy.transaction_end(); - self.pos_widget.screen_selector.set_current_screen(self.next_screen); - }else if(payment === 'payment_rejected'){ - clearInterval(self.intervalID); - //TODO show a tryagain thingie ? + console.log("START_END"); + def.resolve(); + }); + return def; + }; + + // gets updated status from the payment terminal and performs the appropriate consequences + this.update = function(){ + console.log("UPDATE"); + var def = new $.Deferred(); + if(self.canceled){ + console.log("UPDATE_END"); + return def.resolve(); } - },500); + self.pos.proxy.payment_status() + .then(function(status){ + if(status.status === 'paid'){ + + var currentOrder = self.pos.get('selectedOrder'); + + //we get the first cashregister marked as self-checkout + var selfCheckoutRegisters = []; + for(var i = 0; i < self.pos.get('cashRegisters').models.length; i++){ + var cashregister = self.pos.get('cashRegisters').models[i]; + if(cashregister.self_checkout_payment_method){ + selfCheckoutRegisters.push(cashregister); + } + } + + var cashregister = selfCheckoutRegisters[0] || self.pos.get('cashRegisters').models[0]; + currentOrder.addPaymentLine(cashregister); + self.pos.push_order(currentOrder.exportAsJSON()) + currentOrder.destroy(); + self.pos.proxy.transaction_end(); + self.pos_widget.screen_selector.set_current_screen(self.next_screen); + self.paid = true; + }else if(status.status.indexOf('error') === 0){ + console.error('error in payment request. TODO'); + }else if(status.status === 'waiting'){ + self.queue.schedule(self.update,200); + }else{ + console.error('unknown status value:',status.status); + } + console.log("UPDATE_END"); + def.resolve(); + }); + return def; + } + + // cancels a payment. + this.cancel = function(){ + console.log("CANCEL"); + if(!self.paid && !self.canceled){ + self.canceled = true; + self.pos.proxy.payment_cancel(); + self.pos_widget.screen_selector.set_current_screen(self.previous_screen); + self.queue.clear(); + } + console.log("CANCEL_END"); + return (new $.Deferred()).resolve(); + } + + this.queue.schedule(this.start); this.add_action_button({ label: 'back', icon: '/point_of_sale/static/src/img/icons/png48/go-previous.png', click: function(){ - clearInterval(this.intervalID); - self.pos.proxy.payment_canceled(); - self.pos_widget.screen_selector.set_current_screen(self.previous_screen); + self.queue.schedule(self.cancel); } }); }, close: function(){ + if(this.queue){ + this.queue.schedule(this.cancel); + } + //TODO CANCEL this._super(); - clearInterval(this.intervalID); }, }); diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index f4d16b527c8..47a527a010d 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -687,7 +687,7 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa 'print_receipt', 'print_pdf_invoice', 'weighting_read_kg', - 'is_payment_accepted', + 'payment_status', ], minimized: false, start: function(){ @@ -898,10 +898,10 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa this.error_popup = new module.ErrorPopupWidget(this, {}); this.error_popup.appendTo($('.point-of-sale')); - this.error_product_popup = new module.ErrorProductNotRecognizedPopupWidget(this, {}); + this.error_product_popup = new module.ProductErrorPopupWidget(this, {}); this.error_product_popup.appendTo($('.point-of-sale')); - this.error_session_popup = new module.ErrorNoSessionPopupWidget(this, {}); + this.error_session_popup = new module.ErrorSessionPopupWidget(this, {}); this.error_session_popup.appendTo($('.point-of-sale')); this.choose_receipt_popup = new module.ChooseReceiptPopupWidget(this, {}); diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index 7af3c2c2255..854dd61cc1b 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -261,8 +261,10 @@

Welcome

+

Please scan an item or your member card

+

Thank you for shopping with us.

@@ -280,9 +282,11 @@

Payment

- -

Please insert your card in the reader and follow the instructions to complete +

+ +

Please insert your card in the reader and follow the instructions to complete your purchase

+
@@ -327,15 +331,20 @@
- + + - + diff --git a/addons/portal/security/ir.model.access.csv b/addons/portal/security/ir.model.access.csv index 1c4ee5964bd..9202c7f4087 100644 --- a/addons/portal/security/ir.model.access.csv +++ b/addons/portal/security/ir.model.access.csv @@ -1,2 +1,6 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_mail_message_portal,mail.message.portal,mail.model_mail_message,group_portal,1,0,1,1 +access_res_partner,res.partner,base.model_res_partner,portal.group_portal,1,0,0,0 +access_res_partner_address,res.partner_address,base.model_res_partner_address,portal.group_portal,1,0,0,0 +access_res_partner_category,res.partner_category,base.model_res_partner_category,portal.group_portal,1,0,0,0 +access_res_partner_title,res.partner_title,base.model_res_partner_title,portal.group_portal,1,0,0,0 diff --git a/addons/portal_crm/__openerp__.py b/addons/portal_crm/__openerp__.py index 81b6815b942..1516ab13961 100644 --- a/addons/portal_crm/__openerp__.py +++ b/addons/portal_crm/__openerp__.py @@ -27,11 +27,14 @@ 'complexity': 'easy', 'description': """ This module adds a contact page (with a contact form creating a lead when submitted) to your portal if crm and portal are installed. -==================================================================================================================================== +==================================================================================================================================== """, 'author': 'OpenERP SA', 'depends': ['crm','portal'], 'data': ['wizard/contact_view.xml'], + 'test': [ + 'test/contact_form.yml', + ], 'installable': True, 'auto_install': True, 'category': 'Hidden', diff --git a/addons/portal_crm/test/contact_form.yml b/addons/portal_crm/test/contact_form.yml new file mode 100644 index 00000000000..7ba93a9e831 --- /dev/null +++ b/addons/portal_crm/test/contact_form.yml @@ -0,0 +1,38 @@ +- + Set the current user as portal user. +- + !context + 'uid': 'portal.demo_user0' +- + As a portal user, I fill in the contact form and submit it. +- + !record {model: portal_crm.crm_contact_us, id: contact_us_01}: + name: 'Need information about your contact form module' + partner_name: 'Mr. John Doe' + email_from: 'mister@john.doe' + phone: '+32 444 11 22 33' + description: 'Dear Sir or Madam, could you get back to me asap ? Regards.' +- + For security reasons, the wizard values is empty. +- + !python {model: portal_crm.crm_contact_us}: | + obj = self.browse(cr, uid, ref("contact_us_01")) + assert not(obj.name or obj.partner_name or obj.email_from or obj.phone or obj.description), 'All the wizard\'s values are not empty' +- + And a lead is created with the proper values. +- + !python {model: crm.lead}: | + from openerp import SUPERUSER_ID + + ids = self.search(cr, SUPERUSER_ID, [('name', '=', 'Need information about your contact form module')]) + assert len(ids) == 1, 'There are more than one matching lead, while only one was expected' + + obj = self.browse(cr, SUPERUSER_ID, ids[0]) + expected_values = dict( + name='Need information about your contact form module', + partner_name='Mr. John Doe', + email_from='mister@john.doe', + phone='+32 444 11 22 33', + description='Dear Sir or Madam, could you get back to me asap ? Regards.') + for k, v in expected_values.iteritems(): + assert obj[k] == expected_values[k], 'Lead data mismatch: expected %s, got %s' % (expected_values[k], obj[k]) diff --git a/addons/portal_crm/wizard/contact.py b/addons/portal_crm/wizard/contact.py index b671ced2275..a0f0d952a66 100644 --- a/addons/portal_crm/wizard/contact.py +++ b/addons/portal_crm/wizard/contact.py @@ -81,8 +81,8 @@ class crm_contact_us(osv.TransientModel): def create(self, cr, uid, values, context=None): """ Since they are potentially sensitive, we don't want any user to be able - to read datas generated through this module. That's why we'll write - those information directly in the crm.lead table and leave blank + to read datas generated through this module. Therefore we'll write + these information directly in the crm.lead table and leave blank entries in the portal_crm.crm_contact_us table. This is why the create() method is overwritten. """ @@ -93,8 +93,7 @@ class crm_contact_us(osv.TransientModel): models implied (like mail.thread, among others, that performs a read when its create() method is called (in method message_get_subscribers()), it is quite complicated to set proper rights for this object. - Therefore, user SUPERUSER_ID will perform the creation until a better - workaround is figured out. + Therefore, user SUPERUSER_ID will perform the creation. """ values['contact_name'] = values['name'] crm_lead.create(cr, SUPERUSER_ID, dict(values,user_id=False), context) @@ -103,7 +102,8 @@ class crm_contact_us(osv.TransientModel): Create an empty record in the portal_crm.crm_contact_us table. Since the 'name' field is mandatory, give an empty string to avoid an integrity error. """ - return super(crm_contact_us, self).create(cr, uid, {'name': ' '}) + empty_values = dict((k, False) if k != 'name' else (k, '') for k, v in values.iteritems()) + return super(crm_contact_us, self).create(cr, uid, empty_values) def submit(self, cr, uid, ids, context=None): """ When the form is submitted, redirect the user to a "Thanks" message """ diff --git a/addons/portal_hr_employees/security/ir.model.access.csv b/addons/portal_hr_employees/security/ir.model.access.csv index d18aeb90e1c..de204d43a09 100644 --- a/addons/portal_hr_employees/security/ir.model.access.csv +++ b/addons/portal_hr_employees/security/ir.model.access.csv @@ -1,6 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_hr_employee_user,hr.employee user,hr.model_hr_employee,portal.group_portal,1,0,0,0 -access_res_partner,res.partner,base.model_res_partner,portal.group_portal,1,0,0,0 -access_res_partner_address,res.partner_address,base.model_res_partner_address,portal.group_portal,1,0,0,0 -access_res_partner_category,res.partner_category,base.model_res_partner_category,portal.group_portal,1,0,0,0 -access_res_partner_title,res.partner_title,base.model_res_partner_title,portal.group_portal,1,0,0,0 diff --git a/addons/product/product.py b/addons/product/product.py index d04f308bc4b..d5acee0333b 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -335,7 +335,7 @@ class product_template(osv.osv): res = False return res - def onchange_uom(self, cursor, user, ids, uom_id,uom_po_id): + def onchange_uom(self, cursor, user, ids, uom_id, uom_po_id): if uom_id: return {'value': {'uom_po_id': uom_id}} return {} @@ -594,7 +594,7 @@ class product_product(osv.osv): self.pool.get('product.template').unlink(cr, uid, unlink_product_tmpl_ids, context=context) return super(product_product, self).unlink(cr, uid, unlink_ids, context=context) - def onchange_uom(self, cursor, user, ids, uom_id,uom_po_id): + def onchange_uom(self, cursor, user, ids, uom_id, uom_po_id): if uom_id and uom_po_id: uom_obj=self.pool.get('product.uom') uom=uom_obj.browse(cursor,user,[uom_id])[0] diff --git a/addons/product/report/product_pricelist.py b/addons/product/report/product_pricelist.py index c19c12c06d7..1f72dcd04b2 100644 --- a/addons/product/report/product_pricelist.py +++ b/addons/product/report/product_pricelist.py @@ -24,6 +24,7 @@ from report import report_sxw from osv import osv import pooler from tools.translate import _ + class product_pricelist(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(product_pricelist, self).__init__(cr, uid, name, context=context) @@ -39,7 +40,7 @@ class product_pricelist(report_sxw.rml_parse): 'get_titles': self._get_titles, }) - def _get_titles(self,form): + def _get_titles(self, form): lst = [] vals = {} qtys = 1 @@ -51,7 +52,7 @@ class product_pricelist(report_sxw.rml_parse): lst.append(vals) return lst - def _set_quantity(self,form): + def _set_quantity(self, form): for i in range(1,6): q = 'qty%d'%i if form[q] >0 and form[q] not in self.quantity: @@ -76,7 +77,7 @@ class product_pricelist(report_sxw.rml_parse): symbol = pool.get('res.currency').read(self.cr, self.uid, [pricelist['currency_id'][0]], ['symbol'], context=self.localcontext)[0] return symbol['symbol'] or '' - def _get_categories(self, products,form): + def _get_categories(self, products, form): cat_ids=[] res=[] self.pricelist = form['price_list'] @@ -111,7 +112,7 @@ class product_pricelist(report_sxw.rml_parse): res.append({'name':cat[1],'products': products}) return res - def _get_price(self,pricelist_id, product_id,qty): + def _get_price(self, pricelist_id, product_id, qty): sale_price_digits = self.get_digits(dp='Product Price') pool = pooler.get_pool(self.cr.dbname) price_dict = pool.get('product.pricelist').price_get(self.cr, self.uid, [pricelist_id], product_id, qty, context=self.localcontext) @@ -123,5 +124,5 @@ class product_pricelist(report_sxw.rml_parse): return price report_sxw.report_sxw('report.product.pricelist','product.product','addons/product/report/product_pricelist.rml',parser=product_pricelist) -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/product_manufacturer/product_manufacturer.py b/addons/product_manufacturer/product_manufacturer.py index 93f4a6f1a8e..1aeff8d4f78 100644 --- a/addons/product_manufacturer/product_manufacturer.py +++ b/addons/product_manufacturer/product_manufacturer.py @@ -40,4 +40,4 @@ class product_attribute(osv.osv): } product_attribute() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/product_visible_discount/__init__.py b/addons/product_visible_discount/__init__.py index 4abaf54aa85..b1dda0c009e 100644 --- a/addons/product_visible_discount/__init__.py +++ b/addons/product_visible_discount/__init__.py @@ -20,4 +20,4 @@ import product_visible_discount -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/project.py b/addons/project/project.py index 0d92d71a45f..dd4bbdcab21 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -55,7 +55,6 @@ class project_task_type(osv.osv): } _order = 'sequence' - def short_name(name): """Keep first word(s) of name to make it small enough but distinctive""" @@ -191,7 +190,6 @@ class project(osv.osv): # Lambda indirection method to avoid passing a copy of the overridable method when declaring the field _alias_models = lambda self, *args, **kwargs: self._get_alias_models(*args, **kwargs) - _columns = { 'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250), 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."), @@ -311,11 +309,12 @@ class project(osv.osv): task_obj.duplicate_task(cr, uid, map_task_id, context=context) return True - def copy(self, cr, uid, id, default={}, context=None): + def copy(self, cr, uid, id, default=None, context=None): if context is None: context = {} + if default is None: + default = {} - default = default or {} context['active_test'] = False default['state'] = 'open' default['tasks'] = [] @@ -650,12 +649,12 @@ class task(base_stage, osv.osv): res[task.id]['progress'] = 100.0 return res - def onchange_remaining(self, cr, uid, ids, remaining=0.0, planned = 0.0): + def onchange_remaining(self, cr, uid, ids, remaining=0.0, planned=0.0): if remaining and not planned: return {'value':{'planned_hours': remaining}} return {} - def onchange_planned(self, cr, uid, ids, planned = 0.0, effective = 0.0): + def onchange_planned(self, cr, uid, ids, planned=0.0, effective=0.0): return {'value':{'remaining_hours': planned - effective}} def onchange_project(self, cr, uid, id, project_id): @@ -686,7 +685,9 @@ class task(base_stage, osv.osv): #FIXME why there is already the copy and the old one self.write(cr, uid, new, {'parent_ids':[(6,0,set(parent_ids))], 'child_ids':[(6,0, set(child_ids))]}) - def copy_data(self, cr, uid, id, default={}, context=None): + def copy_data(self, cr, uid, id, default=None, context=None): + if default is None: + default = {} default = default or {} default.update({'work_ids':[], 'date_start': False, 'date_end': False, 'date_deadline': False}) if not default.get('remaining_hours', False): @@ -699,7 +700,6 @@ class task(base_stage, osv.osv): default.update({'name':new_name}) return super(task, self).copy_data(cr, uid, id, default, context) - def _is_template(self, cr, uid, ids, field_name, arg, context=None): res = {} for task in self.browse(cr, uid, ids, context=context): @@ -777,7 +777,6 @@ class task(base_stage, osv.osv): 'color': fields.integer('Color Index'), 'user_email': fields.related('user_id', 'email', type='char', string='User Email', readonly=True), } - _defaults = { 'stage_id': _get_default_stage_id, 'project_id': _get_default_project_id, @@ -790,7 +789,6 @@ class task(base_stage, osv.osv): 'user_id': lambda obj, cr, uid, context: uid, 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c), } - _order = "priority, sequence, date_start, name, id" def set_priority(self, cr, uid, ids, priority, *args): @@ -853,9 +851,8 @@ class task(base_stage, osv.osv): (_check_recursion, 'Error ! You cannot create recursive tasks.', ['parent_ids']), (_check_dates, 'Error ! Task end-date must be greater then task start-date', ['date_start','date_end']) ] - # + # Override view according to the company definition - # def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): users_obj = self.pool.get('res.users') if context is None: context = {} @@ -887,9 +884,9 @@ class task(base_stage, osv.osv): res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm) return res - # **************************************** + # ---------------------------------------- # Case management - # **************************************** + # ---------------------------------------- def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None): """ Override of the base.stage method @@ -1021,10 +1018,12 @@ class task(base_stage, osv.osv): new_attachment_ids.append(attachment.copy(cr, uid, attachment_id, default={'res_id': delegated_task_id}, context=context)) return new_attachment_ids - def do_delegate(self, cr, uid, ids, delegate_data={}, context=None): + def do_delegate(self, cr, uid, ids, delegate_data=None, context=None): """ Delegate Task to another users. """ + if delegate_data is None: + delegate_data = {} assert delegate_data['user_id'], _("Delegated User should be specified") delegated_tasks = {} for task in self.browse(cr, uid, ids, context=context): @@ -1170,7 +1169,7 @@ class task(base_stage, osv.osv): return result # --------------------------------------------------- - # mail gateway + # Mail gateway # --------------------------------------------------- def message_new(self, cr, uid, msg, custom_values=None, context=None): diff --git a/addons/project/wizard/project_task_reevaluate.py b/addons/project/wizard/project_task_reevaluate.py index 382c9d64361..b00c531717f 100644 --- a/addons/project/wizard/project_task_reevaluate.py +++ b/addons/project/wizard/project_task_reevaluate.py @@ -26,7 +26,7 @@ from tools.translate import _ class project_task_reevaluate(osv.osv_memory): _name = 'project.task.reevaluate' - def _get_remaining(self,cr, uid, context=None): + def _get_remaining(self, cr, uid, context=None): if context is None: context = {} active_id = context.get('active_id', False) diff --git a/addons/project_gtd/project_gtd.py b/addons/project_gtd/project_gtd.py index c4e485876d8..4c48ae3db1f 100644 --- a/addons/project_gtd/project_gtd.py +++ b/addons/project_gtd/project_gtd.py @@ -67,7 +67,7 @@ class project_task(osv.osv): default['context_id'] = False return super(project_task,self).copy_data(cr, uid, id, default, context) - def _get_context(self,cr, uid, context=None): + def _get_context(self, cr, uid, context=None): ids = self.pool.get('project.gtd.context').search(cr, uid, [], context=context) return ids and ids[0] or False diff --git a/addons/project_gtd/wizard/project_gtd_empty.py b/addons/project_gtd/wizard/project_gtd_empty.py index 04c9689cc27..fe40db06f5f 100644 --- a/addons/project_gtd/wizard/project_gtd_empty.py +++ b/addons/project_gtd/wizard/project_gtd_empty.py @@ -30,7 +30,7 @@ class project_timebox_empty(osv.osv_memory): 'name': fields.char('Name', size=32) } - def view_init(self, cr , uid , fields_list, context=None): + def view_init(self, cr, uid, fields_list, context=None): if context is None: context = {} self._empty(cr, uid, context=context) diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py index 1c347c8ae02..ae5e1ccbf15 100644 --- a/addons/project_mrp/project_procurement.py +++ b/addons/project_mrp/project_procurement.py @@ -42,7 +42,7 @@ class procurement_order(osv.osv): return False return True - def check_produce_service(self, cr, uid, procurement, context=None): + def check_produce_service(self, cr, uid, procurement, context=None): return True def _convert_qty_company_hours(self, cr, uid, procurement, context=None): diff --git a/addons/project_timesheet/project_timesheet.py b/addons/project_timesheet/project_timesheet.py index 488c780b988..4036217b886 100644 --- a/addons/project_timesheet/project_timesheet.py +++ b/addons/project_timesheet/project_timesheet.py @@ -225,7 +225,7 @@ class task(osv.osv): return super(task,self).unlink(cr, uid, ids, *args, **kwargs) - def write(self, cr, uid, ids,vals,context=None): + def write(self, cr, uid, ids, vals, context=None): if context is None: context = {} if vals.get('project_id',False) or vals.get('name',False): diff --git a/addons/project_timesheet/report/task_report.py b/addons/project_timesheet/report/task_report.py index b32d852bc5f..89476b991b1 100644 --- a/addons/project_timesheet/report/task_report.py +++ b/addons/project_timesheet/report/task_report.py @@ -29,7 +29,7 @@ class report_timesheet_task_user(osv.osv): _auto = False _order = "name" - def get_hrs_timesheet(self, cr, uid, ids, name,args,context): + def get_hrs_timesheet(self, cr, uid, ids, name, args, context): result = {} for record in self.browse(cr, uid, ids, context): last_date = datetime.strptime(record.name, '%Y-%m-%d') + relativedelta(months=1) - relativedelta(days=1) diff --git a/addons/purchase/i18n/nl_BE.po b/addons/purchase/i18n/nl_BE.po index c86766b63de..c2d0d608e10 100644 --- a/addons/purchase/i18n/nl_BE.po +++ b/addons/purchase/i18n/nl_BE.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2009-04-10 09:33+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2012-10-01 11:28+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-09-07 04:57+0000\n" -"X-Generator: Launchpad (build 15914)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" #. module: purchase #: model:process.transition,note:purchase.process_transition_confirmingpurchaseorder0 @@ -111,7 +111,7 @@ msgstr "Te factureren" #. module: purchase #: view:purchase.order.line_invoice:0 msgid "Do you want to generate the supplier invoices?" -msgstr "" +msgstr "Wilt u de aankoopfacturen maken?" #. module: purchase #: model:ir.actions.act_window,help:purchase.purchase_form_action @@ -1831,7 +1831,7 @@ msgstr "" #. module: purchase #: view:purchase.order.group:0 msgid "Are you sure you want to merge these orders?" -msgstr "" +msgstr "Weet u zeker dat u deze orders wilt samenvoegen?" #. module: purchase #: model:process.transition,name:purchase.process_transition_purchaseinvoice0 diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 8502fd7ee3f..d654078a055 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -31,9 +31,6 @@ import decimal_precision as dp from osv.orm import browse_record, browse_null from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP -# -# Model definition -# class purchase_order(osv.osv): def _amount_all(self, cr, uid, ids, field_name, arg, context=None): @@ -239,7 +236,6 @@ class purchase_order(osv.osv): else: raise osv.except_osv(_('Invalid Action!'), _('In order to delete a purchase order, you must cancel it first.')) - # TODO: temporary fix in 5.0, to remove in 5.2 when subflows support # automatically sending subflow.delete upon deletion wf_service = netsvc.LocalService("workflow") for id in unlink_ids: @@ -333,7 +329,7 @@ class purchase_order(osv.osv): 'view_id': view_id, 'res_id': pick_ids[0] }) - + action.update({ 'context': ctx, }) @@ -380,7 +376,7 @@ class purchase_order(osv.osv): for line in po.order_line: if line.state=='draft': todo.append(line.id) -# current_name = self.name_get(cr, uid, ids)[0][1] + self.pool.get('purchase.order.line').action_confirm(cr, uid, todo, context) for id in ids: self.write(cr, uid, [id], {'state' : 'confirmed', 'validator' : uid}) @@ -491,7 +487,7 @@ class purchase_order(osv.osv): self.invoice_done_send_note(cr, uid, ids, context=context) return True - def has_stockable_product(self,cr, uid, ids, *args): + def has_stockable_product(self, cr, uid, ids, *args): for order in self.browse(cr, uid, ids): for order_line in order.order_line: if order_line.product_id and order_line.product_id.product_tmpl_id.type in ('product', 'consu'): @@ -596,7 +592,7 @@ class purchase_order(osv.osv): wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr) return [picking_id] - def action_picking_create(self,cr, uid, ids, context=None): + def action_picking_create(self, cr, uid, ids, context=None): picking_ids = [] for order in self.browse(cr, uid, ids): picking_ids.extend(self._create_pickings(cr, uid, order, order.order_line, None, context=context)) @@ -665,7 +661,7 @@ class purchase_order(osv.osv): list_key.sort() return tuple(list_key) - # compute what the new orders should contain + # Compute what the new orders should contain new_orders = {} @@ -1098,4 +1094,5 @@ class mail_mail(osv.osv): return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context) mail_mail() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/purchase/wizard/purchase_order_group.py b/addons/purchase/wizard/purchase_order_group.py index 99ae11a7ba8..13bfb539861 100644 --- a/addons/purchase/wizard/purchase_order_group.py +++ b/addons/purchase/wizard/purchase_order_group.py @@ -88,4 +88,4 @@ class purchase_order_group(osv.osv_memory): purchase_order_group() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index 5ab19390656..c21a9ee8955 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -207,7 +207,7 @@ class purchase_requisition_line(osv.osv): 'company_id': fields.related('requisition_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True), } - def onchange_product_id(self, cr, uid, ids, product_id,product_uom_id, context=None): + def onchange_product_id(self, cr, uid, ids, product_id, product_uom_id, context=None): """ Changes UoM and name if product_id changes. @param name: Name of the field @param product_id: Changed product_id diff --git a/addons/report_webkit/ir_report.py b/addons/report_webkit/ir_report.py index d2709ea6fc2..68e129d021d 100644 --- a/addons/report_webkit/ir_report.py +++ b/addons/report_webkit/ir_report.py @@ -35,7 +35,7 @@ from webkit_report import WebKitParser from report.report_sxw import rml_parse def register_report(name, model, tmpl_path, parser=rml_parse): - "Register the report into the services" + """Register the report into the services""" name = 'report.%s' % name if netsvc.Service._services.get(name, False): service = netsvc.Service._services[name] diff --git a/addons/report_webkit/report_helper.py b/addons/report_webkit/report_helper.py index 12651f308dc..8d0a27998b0 100644 --- a/addons/report_webkit/report_helper.py +++ b/addons/report_webkit/report_helper.py @@ -75,7 +75,7 @@ class WebKitHelper(object): head = header_obj.browse(self.cursor, self.uid, header_img_id) return (head.img, head.type) - def embed_logo_by_name(self, name, width=0, height=0) : + def embed_logo_by_name(self, name, width=0, height=0): """Return HTML embedded logo by name""" img, type = self.get_logo_by_name(name) return self.embed_image(type, img, width, height) diff --git a/addons/resource/faces/task.py b/addons/resource/faces/task.py index 81379c67240..7516f41db2a 100644 --- a/addons/resource/faces/task.py +++ b/addons/resource/faces/task.py @@ -567,7 +567,8 @@ class _ValueWrapper(object): return result #@-node:_cmp #@+node:__getattr__ - def __getattr__(self, name): return getattr(self._value, name) + def __getattr__(self, name): + return getattr(self._value, name) #@-node:__getattr__ #@+node:__getitem__ def __getitem__(self, slice): diff --git a/addons/resource/resource.py b/addons/resource/resource.py index ed21eea85cc..45fd9c20bc9 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -438,7 +438,7 @@ class resource_calendar_leaves(osv.osv): (check_dates, 'Error! leave start-date must be lower then leave end-date.', ['date_from', 'date_to']) ] - def onchange_resource(self,cr, uid, ids, resource, context=None): + def onchange_resource(self, cr, uid, ids, resource, context=None): result = {} if resource: resource_pool = self.pool.get('resource.resource') diff --git a/addons/sale/i18n/nl_BE.po b/addons/sale/i18n/nl_BE.po index 3e8c86aea7c..513e7cef0c6 100644 --- a/addons/sale/i18n/nl_BE.po +++ b/addons/sale/i18n/nl_BE.po @@ -2,20 +2,21 @@ # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the openobject-addons package. # FIRST AUTHOR , 2012. -# +# Els Van Vossel , 2012. msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-09-20 07:29+0000\n" -"PO-Revision-Date: 2012-03-20 15:57+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Dutch (Belgium) \n" +"PO-Revision-Date: 2012-10-01 17:10+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" +"Language-Team: Els Van Vossel\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-09-22 04:56+0000\n" -"X-Generator: Launchpad (build 15985)\n" +"X-Launchpad-Export-Date: 2012-10-02 05:20+0000\n" +"X-Generator: Launchpad (build 16061)\n" +"Language: nl\n" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:215 @@ -151,12 +152,127 @@ msgid "" "\n" " " msgstr "" +"\n" +"
\n" +"\n" +"

Hallo${object.partner_id.name and ' ' or ''}${object.partner_id.name " +"or ''},

\n" +" \n" +"

Hier is uw ${object.state in ('draft', 'sent') and 'offerte' or " +"'orderbevestiging'} van ${object.company_id.name}:

\n" +"\n" +"

\n" +"   REFERENTIE
\n" +"   Nummer: ${object.name}
\n" +"   Totaal: ${object.amount_total} " +"${object.pricelist_id.currency_id.name}
\n" +"   Datum: ${object.date_order}
\n" +" % if object.origin:\n" +"   Referentie: ${object.origin}
\n" +" % endif\n" +" % if object.client_order_ref:\n" +"   Uw referentie: ${object.client_order_ref}
\n" +" % endif\n" +"   Uw contactpersoon: ${object.user_id.name}\n" +"

\n" +"\n" +"

\n" +" U kunt de ${object.state in ('draft', 'sent') and 'offerte' or " +"'orderbevestiging'} bekijken, downloaden en on line betalen met de link:\n" +"

\n" +" Document " +"bekijken\n" +"\n" +" % if object.order_policy in ('prepaid','manual') and " +"object.company_id.paypal_account and object.state not in ('draft', 'sent'):\n" +" <%\n" +" comp_name = quote(object.company_id.name)\n" +" order_name = quote(object.name)\n" +" paypal_account = quote(object.company_id.paypal_account)\n" +" order_amount = quote(str(object.amount_total))\n" +" cur_name = quote(object.pricelist_id.currency_id.name)\n" +" paypal_url = \"https://www.paypal.com/cgi-" +"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Order%%20%s\" \\\n" +" " +"\"&invoice=%s&amount=%s&currency_code=%s&button_subtype=servi" +"ces&no_note=1\" \\\n" +" \"&bn=OpenERP_Order_PayNow_%s\" % \\\n" +" " +"(paypal_account,comp_name,order_name,order_name,order_amount,cur_name,cur_nam" +"e)\n" +" %>\n" +"
\n" +"

U kunt ook via Paypal betalen:

\n" +" \n" +" \n" +" \n" +" % endif\n" +"\n" +"
\n" +"

Neem gerust contact met ons op als u vragen heeft.

\n" +"

Bedankt dat u kiest voor ${object.company_id.name or 'us'}!

\n" +"
\n" +"
\n" +"
\n" +"

\n" +" ${object.company_id.name}

\n" +"
\n" +"
\n" +" \n" +" % if object.company_id.street:\n" +" ${object.company_id.street}
\n" +" % endif\n" +" % if object.company_id.street2:\n" +" ${object.company_id.street2}
\n" +" % endif\n" +" % if object.company_id.city or object.company_id.zip:\n" +" ${object.company_id.zip} ${object.company_id.city}
\n" +" % endif\n" +" % if object.company_id.country_id:\n" +" ${object.company_id.state_id and ('%s, ' % " +"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name " +"or ''}
\n" +" % endif\n" +"
\n" +" % if object.company_id.phone:\n" +"
\n" +" Tel.:  ${object.company_id.phone}\n" +"
\n" +" % endif\n" +" % if object.company_id.website:\n" +"
\n" +" Web : ${object.company_id.website}\n" +"
\n" +" %endif\n" +"

\n" +"
\n" +"
\n" +" " #. module: sale #: model:ir.actions.act_window,name:sale.action_order_line_tree2 #: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines msgid "Order Lines to Invoice" -msgstr "" +msgstr "Te factureren lijnen" #. module: sale #: field:sale.order,date_confirm:0 @@ -176,8 +292,8 @@ msgid "" "Sale Order Lines that are confirmed, done or in exception state and haven't " "yet been invoiced" msgstr "" -"Verkooporderlijn in status bevestigd, gereed of uitzondering en die nog niet " -"zijn gefactureerd" +"Verkooporderlijnen in status bevestigd, gereed of uitzondering en die nog " +"niet zijn gefactureerd" #. module: sale #: field:sale.order.line,address_allotment_id:0 @@ -187,7 +303,7 @@ msgstr "Relatie rechtstr. levering" #. module: sale #: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv msgid "Invoice Order" -msgstr "" +msgstr "Order factureren" #. module: sale #: help:sale.config.settings,group_sale_delivery_address:0 @@ -195,18 +311,20 @@ msgid "" "Allows you to specify different delivery and invoice addresses on a sale " "order." msgstr "" +"Hiermee kunt u aparte leverings- en factuuradressen ingeven op een " +"verkooporder." #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:160 #: code:addons/sale/wizard/sale_make_invoice_advance.py:162 #, python-format msgid "Advance of %s %s" -msgstr "" +msgstr "Voorschot van %s %s" #. module: sale #: view:sale.config.settings:0 msgid "Contract Feature" -msgstr "" +msgstr "Contractoptie" #. module: sale #: field:sale.report,state:0 @@ -225,6 +343,15 @@ msgid "" "invoice automatically.\n" " It installs the account_analytic_analysis module." msgstr "" +"Hiermee kunt u de contractvoorwaarden van een klant instellen: " +"factuurmethode\n" +" (vaste prijs, volgesn uurrooster, voorschotfactuur), de juiste " +"prijs\n" +" (650€/dag voor een ontwikkelaar), de duur (supportcontract van " +"een jaar).\n" +" U kunt de vooruitgang van het contract opvolgen en automatisch " +"factureren.\n" +" Hiermee wordt de module account_analytic_analysis geïnstalleerd." #. module: sale #: view:sale.order:0 @@ -236,7 +363,7 @@ msgstr "Te factureren" #: view:sale.order.line:0 #: field:sale.report,product_uom:0 msgid "Unit of Measure" -msgstr "" +msgstr "Meeteenheid" #. module: sale #: help:sale.order,date_confirm:0 @@ -260,12 +387,12 @@ msgstr "Maart" #: code:addons/sale/sale.py:558 #, python-format msgid "First cancel all invoices attached to this sales order." -msgstr "" +msgstr "U moet eerst alle facturen voor deze verkooporder annuleren." #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Invoice the whole sale order" -msgstr "" +msgstr "Factureer de volledige verkooporder" #. module: sale #: field:sale.order,project_id:0 @@ -305,12 +432,12 @@ msgstr "Factuuruitzondering" #. module: sale #: view:account.config.settings:0 msgid "0" -msgstr "" +msgstr "0" #. module: sale #: selection:sale.order,state:0 msgid "Draft Quotation" -msgstr "" +msgstr "Voorlopige offerte" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:124 @@ -319,6 +446,8 @@ msgid "" "You cannot make an advance on a sales order that is " "defined as 'Automatic Invoice after delivery'." msgstr "" +"U kunt geen vooruitbetaling doen voor een verkooporder die is ingesteld als " +"'Factuur na levering'." #. module: sale #: help:sale.order,amount_total:0 @@ -335,7 +464,7 @@ msgstr "Analytische rekening" #. module: sale #: field:sale.config.settings,module_sale_journal:0 msgid "Allow batch invoicing of delivery orders through journals" -msgstr "" +msgstr "Facturatie in batch toelaten voor leveringsorders volgens journalen" #. module: sale #: field:sale.order.line,price_subtotal:0 @@ -345,7 +474,7 @@ msgstr "Subtotaal" #. module: sale #: field:sale.config.settings,group_discount_per_so_line:0 msgid "Allow setting a discount on the sale order lines" -msgstr "" +msgstr "Mogelijkheid bieden om korting op verkooporderlijn in te stellen" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancelorder0 @@ -360,29 +489,29 @@ msgstr "Gewicht" #. module: sale #: view:sale.config.settings:0 msgid "Warehouse Features" -msgstr "" +msgstr "Magazijnopties" #. module: sale #: view:sale.order:0 msgid "Quotation " -msgstr "" +msgstr "Offerte " #. module: sale #: field:sale.order.line,product_uom:0 msgid "Unit of Measure " -msgstr "" +msgstr "Meeteenheid " #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:148 #, python-format msgid "Incorrect Data" -msgstr "" +msgstr "Ongeldige gegevens" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:149 #, python-format msgid "The value of Advance Amount must be positive." -msgstr "" +msgstr "De waarde van het voorschotbedrag moet positief zijn." #. module: sale #: help:sale.advance.payment.inv,advance_payment_method:0 @@ -393,16 +522,23 @@ msgid "" " Use Some Order Lines to invoice a selection of the sale " "order lines." msgstr "" +"Kies Alle om de eindfactuur te maken.\n" +" Kies Percentage als u een percentage van het totale bedrag " +"wilt factureren.\n" +" Kies Vaste prijs als u een bepaald bedrag vooraf wilt " +"factureren.\n" +" Kies Bepaalde orderlijnen als u een selectie van " +"verkooporderlijnen wilt factureren." #. module: sale #: selection:sale.order,state:0 msgid "Sale Order" -msgstr "" +msgstr "Verkooporder" #. module: sale #: field:sale.order,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Berichten" #. module: sale #: selection:sale.report,month:0 @@ -423,7 +559,7 @@ msgstr "Bedrag excl. btw" #. module: sale #: field:sale.config.settings,module_project:0 msgid "Project" -msgstr "" +msgstr "Project" #. module: sale #: code:addons/sale/sale.py:319 @@ -434,7 +570,7 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:123 #, python-format msgid "Error!" -msgstr "" +msgstr "Fout" #. module: sale #: report:sale.order:0 @@ -452,6 +588,12 @@ msgid "" "available.\n" " This installs the module analytic_user_function." msgstr "" +"Hiermee stelt u in wat de standaardfunctie van een gebruiker is voor een " +"bepaalde rekening.\n" +" Doorgaans wordt dit toegepast bij het invoeren van " +"uurroosters. De waarden worden automatisch in de juiste velden gezet.\n" +" Natuurlijk kunnen deze waarden nog worden aangepast.\n" +" Hiermee wordt de module analytic_user_function geïnstalleerd." #. module: sale #: selection:sale.order,state:0 @@ -468,12 +610,13 @@ msgstr "Verkooporderlijnen gekoppeld aan een van mijn verkooporders" #. module: sale #: selection:sale.order,state:0 msgid "Quotation Sent" -msgstr "" +msgstr "Verstuurde offerte" #. module: sale #: help:sale.order,message_unread:0 msgid "If checked new messages require your attention." msgstr "" +"Als dit is ingeschakeld, zijn er nieuwe berichten die uw aandacht vragen." #. module: sale #: field:sale.order,amount_total:0 @@ -492,7 +635,7 @@ msgstr "Verkooppunt" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_tree2 msgid "Sales in Exception" -msgstr "Verkooporders met uitgestelde levering" +msgstr "Verkooporders in uitzonderingsstatus" #. module: sale #: field:sale.order,partner_invoice_id:0 @@ -507,7 +650,7 @@ msgstr "Datum waarop verkooporder is gemaakt." #. module: sale #: view:res.partner:0 msgid "False" -msgstr "" +msgstr "Onwaar" #. module: sale #: view:sale.order:0 @@ -523,18 +666,18 @@ msgstr "Facturen maken" #. module: sale #: report:sale.order:0 msgid "Tax" -msgstr "" +msgstr "Btw" #. module: sale #: code:addons/sale/sale.py:986 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Ongeldige actie" #. module: sale #: view:sale.report:0 msgid "Reference Unit of Measure" -msgstr "" +msgstr "Referentiemeeteenheid" #. module: sale #: field:sale.report,date_confirm:0 @@ -553,11 +696,13 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Bevat de Chatsamenvatting (aantal berichten, ...). Deze samenvatting is in " +"html-formaat, zodat ze in de kanbanweergave kan worden gebruikt." #. module: sale #: field:sale.config.settings,group_sale_delivery_address:0 msgid "Allow a different address for delivery and invoicing " -msgstr "" +msgstr "Een apart adres voor levering en facturatie toelaten " #. module: sale #: view:sale.report:0 @@ -573,12 +718,12 @@ msgstr "Fax:" #. module: sale #: view:sale.order:0 msgid "(update)" -msgstr "" +msgstr "(bijwerken)" #. module: sale #: help:sale.config.settings,group_discount_per_so_line:0 msgid "Allows you to apply some discount per sale order line." -msgstr "" +msgstr "Hiermee kunt u een korting per verkooporderlijn toepassen" #. module: sale #: code:addons/sale/sale.py:578 @@ -615,12 +760,12 @@ msgstr "Bevestigd" #. module: sale #: field:sale.config.settings,module_analytic_user_function:0 msgid "One employee can have different roles per contract" -msgstr "" +msgstr "Een werknemer kan verschillende rollen per contract hebben." #. module: sale #: field:sale.order,note:0 msgid "Terms and conditions" -msgstr "" +msgstr "Verkoopvoorwaarden" #. module: sale #: field:sale.shop,payment_default_id:0 @@ -636,7 +781,7 @@ msgstr "Bevestigen" #. module: sale #: view:sale.order:0 msgid "Unread messages" -msgstr "" +msgstr "Ongelezen berichten" #. module: sale #: field:sale.order,partner_shipping_id:0 @@ -664,7 +809,7 @@ msgstr "Jaar" #. module: sale #: field:sale.config.settings,group_uom:0 msgid "Allow using different units of measures" -msgstr "" +msgstr "Verschillende meeteenheden toelaten" #. module: sale #: view:sale.order:0 @@ -674,12 +819,12 @@ msgstr "Onbevestigde verkooporders" #. module: sale #: field:sale.order,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Ongelezen berichten" #. module: sale #: view:sale.order:0 msgid "Print" -msgstr "" +msgstr "Afdrukken" #. module: sale #: report:sale.order:0 @@ -727,6 +872,10 @@ msgid "" " and perform batch operations on journals.\n" " This installs the module sale_journal." msgstr "" +"Hiermee kunt u verkopen en leveringen (ontvangsten) in verschillende " +"journalen plaatsen,\n" +" en batchbewerkingen uitvoeren per journaal.\n" +" Hiermee wordt de module sale_journal geïnstalleerd." #. module: sale #: help:sale.make.invoice,grouped:0 @@ -742,7 +891,7 @@ msgstr "Facturen maken" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_read msgid "Mark read" -msgstr "" +msgstr "Als gelezen markeren" #. module: sale #: code:addons/sale/res_config.py:89 @@ -753,7 +902,7 @@ msgstr "Uur" #. module: sale #: field:res.partner,sale_order_count:0 msgid "# of Sales Order" -msgstr "" +msgstr "# verkooporders" #. module: sale #: help:sale.config.settings,timesheet:0 @@ -764,6 +913,12 @@ msgid "" "user-wise as well as month wise.\n" " This installs the module account_analytic_analysis." msgstr "" +"Hiermee past u de analytische weergave aan zodat belangrijke gegevens worden " +"getoond voor projectleiders van dienstverlenende bedrijven.\n" +" U kunt ook het rapport van de analytische rekening per " +"gebruiker of per maand bekijken.\n" +" Hiermee wordt de module account_analytic_analysis " +"geïnstalleerd." #. module: sale #: field:sale.order,create_date:0 @@ -774,7 +929,7 @@ msgstr "Creatiedatum" #: selection:sale.order,state:0 #: selection:sale.report,state:0 msgid "Waiting Schedule" -msgstr "Volgende planning" +msgstr "Wacht op planner" #. module: sale #: help:sale.order,partner_invoice_id:0 @@ -794,12 +949,12 @@ msgstr "Besteljaar van de verkooporder" #. module: sale #: field:sale.config.settings,module_sale_stock:0 msgid "Sale and Warehouse Management" -msgstr "" +msgstr "Beheer verkopen en magazijn" #. module: sale #: model:ir.model,name:sale.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: sale #: field:sale.advance.payment.inv,qtty:0 @@ -838,12 +993,12 @@ msgstr "Juli" #. module: sale #: field:account.config.settings,module_sale_analytic_plans:0 msgid "Several analytic accounts on sales" -msgstr "" +msgstr "Meerdere analytische rekeningen voor verkopen" #. module: sale #: view:sale.config.settings:0 msgid "Default Options" -msgstr "" +msgstr "Standaardopties" #. module: sale #: code:addons/sale/sale.py:963 @@ -851,12 +1006,12 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:142 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Configuratiefout" #. module: sale #: field:account.config.settings,group_analytic_account_for_sales:0 msgid "Analytic accounting for sales" -msgstr "" +msgstr "Verkopen analytisch boeken" #. module: sale #: view:sale.order:0 @@ -869,6 +1024,8 @@ msgid "" "After clicking 'Show Lines to Invoice', select lines to invoice and create " "the invoice from the 'More' dropdown menu." msgstr "" +"Klik op 'Te factureren lijnen weergeven' en selecteer vervolgens de lijnen " +"die u wilt factureren. Maak de factuur via het menu 'Extra'." #. module: sale #: code:addons/sale/edi/sale_order.py:151 @@ -896,11 +1053,25 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klik als u een offerte of verkooporder voor deze klant wilt " +"maken.\n" +"

\n" +" Met OpenERP handelt u de volledige verkoopflow efficiënt " +"af:\n" +" offerte, order, levering, facturatie en\n" +" betaling.\n" +"

\n" +" Met de sociale opties kunt u discussies voeren op een order\n" +" en zo uw klant een zicht geven op de evolutie van de " +"verkooporder.\n" +"

\n" +" " #. module: sale #: view:sale.config.settings:0 msgid "Invoicing Process" -msgstr "" +msgstr "Facturatiewijze" #. module: sale #: report:sale.order:0 @@ -919,17 +1090,21 @@ msgid "" " - With 'Before Delivery', a draft invoice is created, and it must be paid " "before delivery." msgstr "" +"Dit veld bepaalt hoe de factuur- en leveringsoperaties worden " +"gesynchroniseerd.\n" +" - Met 'Voor levering' wordt een voorlopige factuur gemaakt die moet worden " +"betaald voordat kan worden geleverd." #. module: sale #: view:sale.order:0 msgid "Sales Order done" -msgstr "" +msgstr "Verkooporder afgewerkt." #. module: sale #: code:addons/sale/sale.py:320 #, python-format msgid "Please define sales journal for this company: \"%s\" (id:%d)." -msgstr "" +msgstr "Stel een verkoopdagboek in voor dit bedrijf: \"%s\" (id:%d)." #. module: sale #: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order @@ -942,6 +1117,7 @@ msgstr "Offertes en verkopen" msgid "" "Allows you to select and maintain different units of measure for products." msgstr "" +"Hiermee kunt u verschillende meeteenheden kiezen en instellen voor producten." #. module: sale #: model:ir.model,name:sale.model_res_partner @@ -953,13 +1129,13 @@ msgstr "Relatie" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Create and View Invoice" -msgstr "" +msgstr "Factuur maken en bekijken" #. module: sale #: code:addons/sale/sale.py:655 #, python-format msgid "Sale Order for %s has been done" -msgstr "" +msgstr "Verkooporder voor %s is afgewerkt" #. module: sale #: model:ir.actions.act_window,help:sale.action_shop_form @@ -974,6 +1150,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klik als u een nieuw verkooppunt wilt instellen.\n" +"

\n" +" Elke offerte of verkooporder moet aan een verkooppunt worden " +"gekoppeld. Het\n" +" verkooppunt bepaalt ook het magazijn van waaruit de " +"producten worden geleverd.\n" +"

\n" +" " #. module: sale #: model:ir.model,name:sale.model_sale_make_invoice @@ -999,6 +1184,20 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klik om een offerte te maken, de eerste stap naar een nieuwe " +"verkoop.\n" +"

\n" +" Met OpenERP handelt u de volledige verkoopflow efficiënt " +"af:\n" +" offerte, order, levering, facturatie en\n" +" betaling.\n" +"

\n" +" Met de sociale opties kunt u discussies voeren op een order\n" +" en zo uw klant een zicht geven op de evolutie van de " +"verkooporder.\n" +"

\n" +" " #. module: sale #: field:sale.order.line,discount:0 @@ -1017,7 +1216,7 @@ msgstr "" "Factuur kan niet worden gemaakt voor deze verkooporderregel omdat:\\n\n" "1. de status van deze verkooporder \\\"concept\\\" is of \\\"geannuleerd\\" "\"\\n\n" -"2. de verkooporderregel al is gefactureerd." +"2. de verkooporderlijn al is gefactureerd." #. module: sale #: code:addons/sale/sale.py:783 @@ -1026,6 +1225,8 @@ msgid "" "There is no Fiscal Position defined or Income category account defined for " "default properties of Product categories." msgstr "" +"Er is geen fiscale positie ingesteld of er is geen opbrengstenrekening " +"ingesteld voor de productcategorie." #. module: sale #: view:sale.order.line:0 @@ -1041,7 +1242,7 @@ msgstr "Mijn offertes" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Invoice Sale Order" -msgstr "" +msgstr "Verkooporder factureren" #. module: sale #: selection:sale.report,month:0 @@ -1051,7 +1252,7 @@ msgstr "December" #. module: sale #: view:sale.config.settings:0 msgid "Contracts Management" -msgstr "" +msgstr "Contractbeheer" #. module: sale #: view:sale.order.line:0 @@ -1072,7 +1273,7 @@ msgstr "${object.company_id.name} Order (Ref. ${object.name or 'nvt' })" #. module: sale #: field:sale.order.line,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Volgorde" #. module: sale #: code:addons/sale/sale.py:591 @@ -1095,22 +1296,22 @@ msgstr "Productcategorie" #: code:addons/sale/sale.py:557 #, python-format msgid "Cannot cancel this sales order!" -msgstr "" +msgstr "Kan verkooporder niet annuleren" #. module: sale #: help:sale.order,invoice_exists:0 msgid "It indicates that sale order has at least one invoice." -msgstr "" +msgstr "Geeft aan dat er voor de verkooporder tenminste een factuur bestaat." #. module: sale #: model:ir.model,name:sale.model_mail_message msgid "Message" -msgstr "" +msgstr "Bericht" #. module: sale #: field:sale.config.settings,module_warning:0 msgid "Allow configuring alerts by customer or products" -msgstr "" +msgstr "Waarschuwingen instellen per klant of product" #. module: sale #: field:sale.shop,name:0 @@ -1123,6 +1324,8 @@ msgstr "Naam verkooppunt" msgid "" "In order to delete a confirmed sale order, you must cancel it before !" msgstr "" +"U kunt een bevestigde verkooporder pas verwijderen als u deze eerst " +"annuleert." #. module: sale #: report:sale.order:0 @@ -1133,12 +1336,12 @@ msgstr "Btw:" #: code:addons/sale/sale.py:658 #, python-format msgid "Invoice has been paid." -msgstr "" +msgstr "Factuur is betaald." #. module: sale #: model:res.groups,name:sale.group_analytic_accounting msgid "Analytic Accounting for Sales" -msgstr "" +msgstr "Verkopen analytisch boeken" #. module: sale #: model:ir.model,name:sale.model_sale_advance_payment_inv @@ -1148,7 +1351,7 @@ msgstr "Voorschotfactuur" #. module: sale #: model:ir.actions.client,name:sale.action_client_sale_menu msgid "Open Sale Menu" -msgstr "" +msgstr "Het verkoopmenu openen" #. module: sale #: selection:sale.report,state:0 @@ -1186,7 +1389,7 @@ msgstr "" #: code:addons/sale/wizard/sale_make_invoice_advance.py:153 #, python-format msgid "Advance of %s %%" -msgstr "" +msgstr "Voorschot van %s %%" #. module: sale #: model:ir.model,name:sale.model_sale_order_line_make_invoice @@ -1207,6 +1410,7 @@ msgstr "Betaald" #: help:sale.order.line,sequence:0 msgid "Gives the sequence order when displaying a list of sales order lines." msgstr "" +"Toont de volgorde bij het weergeven van een lijst van verkooporderlijnen." #. module: sale #: help:sale.order.line,state:0 @@ -1255,12 +1459,12 @@ msgstr "Btw-bedrag" #: field:sale.order.line,state:0 #: view:sale.report:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: sale #: selection:sale.order,order_policy:0 msgid "On Demand" -msgstr "" +msgstr "Op verzoek" #. module: sale #: selection:sale.report,month:0 @@ -1270,7 +1474,7 @@ msgstr "Augustus" #. module: sale #: view:sale.order:0 msgid "Sale Order " -msgstr "" +msgstr "Verkooporder " #. module: sale #: model:process.node,note:sale.process_node_saleorder0 @@ -1291,6 +1495,15 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Klik om een offerte te maken die kan worden omgezet in een " +"verkooporder.\n" +"

\n" +" Met OpenERP handelt u de volledige verkoopflow efficiënt " +"af:\n" +" offerte, order, levering, facturatie en betaling.\n" +"

\n" +" " #. module: sale #: selection:sale.report,month:0 @@ -1311,17 +1524,17 @@ msgstr "Order" #: code:addons/sale/sale.py:647 #, python-format msgid "Quotation for %s converted to Sale Order of %s %s." -msgstr "" +msgstr "Offerte voor %s omgezet naar verkooporder van %s %s." #. module: sale #: view:sale.order:0 msgid "we should put a config wizard for these two fields" -msgstr "" +msgstr "We moeten een configuratiewizard maken voor deze twee velden" #. module: sale #: field:sale.order,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Is een volger" #. module: sale #: code:addons/sale/sale.py:261 @@ -1365,13 +1578,13 @@ msgstr "Uitgebreide filters..." #: code:addons/sale/wizard/sale_make_invoice.py:42 #, python-format msgid "Warning!" -msgstr "" +msgstr "Waarschuwing" #. module: sale #: field:sale.order,message_comment_ids:0 #: help:sale.order,message_comment_ids:0 msgid "Comments and emails" -msgstr "" +msgstr "Commentaar en e-mails" #. module: sale #: field:sale.advance.payment.inv,product_id:0 @@ -1406,6 +1619,9 @@ msgid "" "Manage Related Stock.\n" " This installs the module sale_stock." msgstr "" +"Hiermee maakt u een offerte, een verkooporder met verschillende bestelwijzen " +"en voorraadopvolging.\n" +" Hiermee wordt de module sale_stock geïnstalleerd." #. module: sale #: help:sale.advance.payment.inv,product_id:0 @@ -1414,6 +1630,9 @@ msgid "" " You may have to create it and set it as a default value on " "this field." msgstr "" +"Selecteer een product van het type Dienst dat 'Voorschotproduct' heet.\n" +"\t\t\t U moet dit product wellicht eerst maken en instellen als " +"standaardwaarde voor dit veld." #. module: sale #: selection:sale.report,month:0 @@ -1428,28 +1647,28 @@ msgstr "Lopende verkooporders" #. module: sale #: field:sale.order,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Samenvatting" #. module: sale #: field:sale.config.settings,timesheet:0 msgid "Prepare invoices based on timesheets" -msgstr "" +msgstr "Facturen voorbereiden op basis van uurroosters" #. module: sale #: code:addons/sale/sale.py:651 #, python-format msgid "Sale Order for %s cancelled." -msgstr "" +msgstr "Verkooporder voor %s geannuleerd." #. module: sale #: field:sale.advance.payment.inv,advance_payment_method:0 msgid "What do you want to invoice?" -msgstr "" +msgstr "Wat wilt u factureren?" #. module: sale #: field:sale.config.settings,group_sale_pricelist:0 msgid "Use pricelists to adapt your price per customers" -msgstr "" +msgstr "Gebruik prijslijsten als u specifieke prijzen per klant wilt" #. module: sale #: model:process.transition,note:sale.process_transition_confirmquotation0 @@ -1481,6 +1700,11 @@ msgid "" "more than 5.\n" " Supplier: don't forget to ask for an express delivery." msgstr "" +"Hiermee kunt u waarschuwingen instellen voor producten en deze weergeven als " +"een gebruiker een bepaald product aan een klant wilt verkopen.\n" +" Voorbeeld: Product: dit product is verouderd, gelieve er maximum " +"5 te kopen.\n" +" Leverancier: vraag om een snelle levering." #. module: sale #: view:sale.report:0 @@ -1501,7 +1725,7 @@ msgstr "Historiek" #. module: sale #: field:sale.config.settings,module_sale_margin:0 msgid "Display margins on sales orders" -msgstr "" +msgstr "Marges in verkooporder weergeven" #. module: sale #: help:sale.order,invoice_ids:0 @@ -1522,7 +1746,7 @@ msgstr "Uw referentie" #. module: sale #: view:sale.advance.payment.inv:0 msgid "Show Lines to Invoice" -msgstr "" +msgstr "Te factureren lijnen weergeven" #. module: sale #: field:sale.report,date:0 @@ -1635,7 +1859,7 @@ msgstr "Annuleren" #. module: sale #: field:sale.order,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Volgers" #. module: sale #: code:addons/sale/sale.py:947 @@ -1657,7 +1881,7 @@ msgstr "Niet-gefactureerde lijnen zoeken" #. module: sale #: model:ir.model,name:sale.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "account.config.settings" #. module: sale #: sql_constraint:sale.order:0 @@ -1678,11 +1902,20 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Hier is een lijst van alle te factureren verkooporderlijnen. " +"U kunt\n" +" verkooporders gedeeltelijk factureren, per lijn. U heeft " +"deze\n" +" lijst niet nodig als u factureert van zendnota of als u " +"alles factureert.\n" +"

\n" +" " #. module: sale #: view:sale.config.settings:0 msgid "Product Features" -msgstr "" +msgstr "Productopties" #. module: sale #: view:sale.order.line:0 @@ -1706,12 +1939,12 @@ msgstr "" #: code:addons/sale/sale.py:663 #, python-format msgid "Draft Invoice of %s %s waiting for validation." -msgstr "" +msgstr "Voorlopige factuur van %s %s wacht op goedkeuring." #. module: sale #: field:sale.config.settings,module_account_analytic_analysis:0 msgid "Use contracts management" -msgstr "" +msgstr "Gebruik contractbeheer" #. module: sale #: code:addons/sale/sale.py:955 @@ -1720,6 +1953,8 @@ msgid "" "Cannot find a pricelist line matching this product and quantity.\n" "You have to change either the product, the quantity or the pricelist." msgstr "" +"Geen prijslijstlijn gevonden voor dit product en deze hoeveelheid.\n" +"U moet het product, de hoeveelheid of de prijslijst veranderen." #. module: sale #: model:ir.actions.act_window,name:sale.action_order_report_all @@ -1767,7 +2002,7 @@ msgstr "U kunt geen verkooporderlijn annuleren die al is gefactureerd." #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Percentage" -msgstr "" +msgstr "Percentage" #. module: sale #: report:sale.order:0 @@ -1778,7 +2013,7 @@ msgstr "" #: view:sale.report:0 #: field:sale.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Verkoper" #. module: sale #: view:sale.order.line:0 @@ -1792,7 +2027,7 @@ msgstr "Product" #: view:sale.advance.payment.inv:0 #: view:sale.order:0 msgid "%" -msgstr "" +msgstr "%" #. module: sale #: report:sale.order:0 @@ -1804,6 +2039,7 @@ msgstr "Omschrijving" #, python-format msgid "There is no income account defined for this product: \"%s\" (id:%d)." msgstr "" +"Er is geen opbrengstenrekening gedefinieerd voor dit product: \"%s\" (id:%d)" #. module: sale #: selection:sale.report,month:0 @@ -1815,6 +2051,8 @@ msgstr "Mei" #, python-format msgid "Please define income account for this product: \"%s\" (id:%d)." msgstr "" +"Gelieve een opbrengstenrekening in te stellen voor dit product: \"%s\" " +"(id:%d)." #. module: sale #: report:sale.order:0 @@ -1845,6 +2083,11 @@ msgid "" "The 'Waiting Schedule' state is set when the invoice is confirmed but " "waiting for the scheduler to run on the order date." msgstr "" +"Geeft de status van de offerte of verkooporder. \\n\n" +"Status Uitzondering wordt automatisch ingesteld als er een fout optreedt " +"voor een factuur (Factuuruitzondering).\n" +"De 'Wacht op Planner' status wordt ingesteld als de factuur is bevestigd, " +"maar wacht op de planner die op de 'Bestelde datum' zal lopen." #. module: sale #: report:sale.order:0 @@ -1855,7 +2098,7 @@ msgstr "Tel.:" #: view:sale.make.invoice:0 #: view:sale.order.line.make.invoice:0 msgid "Do you really want to create the invoice(s)?" -msgstr "" +msgstr "Wilt u de factuur (facturen) maken?" #. module: sale #: view:sale.order:0 @@ -1865,7 +2108,7 @@ msgstr "Overige informatie" #. module: sale #: view:res.partner:0 msgid "sale.group_delivery_invoice_address" -msgstr "" +msgstr "sale.group_delivery_invoice_address" #. module: sale #: view:sale.order.line:0 @@ -1880,12 +2123,12 @@ msgstr "Door de boekhouder te controleren." #. module: sale #: view:sale.order:0 msgid "Send by Mail" -msgstr "" +msgstr "Via e-mail versturen" #. module: sale #: model:res.groups,name:sale.group_mrp_properties msgid "Properties on lines" -msgstr "" +msgstr "Eigenschappen per lijn" #. module: sale #: help:sale.order,partner_shipping_id:0 @@ -1895,7 +2138,7 @@ msgstr "Leveringsadres voor de huidige verkooporder." #. module: sale #: selection:sale.order,state:0 msgid "Sale to Invoice" -msgstr "" +msgstr "Te factureren verkopen" #. module: sale #: model:ir.actions.report.xml,name:sale.report_sale_order @@ -1905,7 +2148,7 @@ msgstr "Offerte / Order" #. module: sale #: view:sale.order:0 msgid "Inbox" -msgstr "" +msgstr "Postvak IN" #. module: sale #: view:sale.order:0 @@ -1932,13 +2175,13 @@ msgstr "Factureer op" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Fixed price (deposit)" -msgstr "" +msgstr "Vaste prijs (aanbetaling)" #. module: sale #: code:addons/sale/wizard/sale_make_invoice_advance.py:139 #, python-format msgid "There is no income account defined as global property." -msgstr "" +msgstr "Er is geen opbrengstenrekening ingesteld als een globaal kenmerk." #. module: sale #: report:sale.order:0 @@ -1954,6 +2197,7 @@ msgstr "Productverkoopeenheid" #: help:account.config.settings,group_analytic_account_for_sales:0 msgid "Allows you to specify an analytic account on sale orders." msgstr "" +"Hiermee kunt u een analytische rekening meegeven op een verkooporder." #. module: sale #: model:process.node,note:sale.process_node_quotation0 @@ -1978,23 +2222,23 @@ msgstr "Handmatig" #. module: sale #: model:ir.actions.server,name:sale.actions_server_sale_order_unread msgid "Mark unread" -msgstr "" +msgstr "Als ongelezen markeren" #. module: sale #: code:addons/sale/sale.py:643 #, python-format msgid "Quotation for %s created." -msgstr "" +msgstr "Offerte voor %s is gemaakt." #. module: sale #: model:res.groups,name:sale.group_delivery_invoice_address msgid "Addresses in Sale Orders" -msgstr "" +msgstr "Adressen in verkooporders" #. module: sale #: field:sale.config.settings,time_unit:0 msgid "The default working time unit for services is" -msgstr "" +msgstr "De standaardwerkeenheid voor diensten is" #. module: sale #: view:sale.order:0 @@ -2004,12 +2248,12 @@ msgstr "Mijn verkooporders" #. module: sale #: model:res.groups,name:sale.group_invoice_so_lines msgid "Enable Invoicing Sale order lines" -msgstr "" +msgstr "Factuur volgens verkooporderlijnen instellen" #. module: sale #: help:sale.order,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Berichten en communicatiehistoriek" #. module: sale #: view:sale.order:0 @@ -2025,6 +2269,9 @@ msgid "" "with\n" " your customer." msgstr "" +"Gebruik contracten als u uw dienstverlening wilt opvolgen met\n" +" meerdere facturen op hetzelfde contract met\n" +" uw klant." #. module: sale #: view:sale.report:0 @@ -2067,13 +2314,13 @@ msgstr "" #. module: sale #: selection:sale.advance.payment.inv,advance_payment_method:0 msgid "Some order lines" -msgstr "" +msgstr "Enkele orderlijnen" #. module: sale #: code:addons/sale/sale.py:986 #, python-format msgid "Cannot delete a sales order line which is in state '%s'." -msgstr "" +msgstr "Een verkooporderlijn die %s is, kan niet worden verwijderd." #. module: sale #: help:sale.order,project_id:0 @@ -2094,7 +2341,7 @@ msgstr "Te factureren verkooporders" #. module: sale #: help:account.config.settings,module_sale_analytic_plans:0 msgid "This allows install module sale_analytic_plans." -msgstr "" +msgstr "Hiermee wordt de module sale_analytic_plans geïnstalleerd." #. module: sale #: view:sale.advance.payment.inv:0 @@ -2106,7 +2353,7 @@ msgstr "" #. module: sale #: field:sale.order.line,name:0 msgid "Product Description" -msgstr "" +msgstr "Productomschrijving" #. module: sale #: help:sale.config.settings,group_sale_pricelist:0 @@ -2115,6 +2362,10 @@ msgid "" " Example: 10% for retailers, promotion of 5 EUR on this " "product, etc." msgstr "" +"Hiermee kunt u verschillende % fprijzen toepassen volgens regels per " +"klantencategorie.\n" +" Voorbeeld: 10% voor kleinhandelaars, promotie van 5 EUR voor " +"een product, enz." #. module: sale #: report:sale.order:0 @@ -2124,7 +2375,7 @@ msgstr "Offertenr." #. module: sale #: model:res.groups,name:sale.group_discount_per_so_line msgid "Discount on lines" -msgstr "" +msgstr "Korting per lijn" #. module: sale #: field:sale.order,client_order_ref:0 @@ -2144,6 +2395,10 @@ msgid "" "between the Unit Price and Cost Price.\n" " This installs the module sale_margin." msgstr "" +"Hiermee wordt de 'Marge' toegevoegd per verkooporder.\n" +" Dit toont de winst op basis van het verschil tussen " +"eenheidsprijs en kostprijs.\n" +" Hiermee wordt de module sale_margin geïnstalleerd." #. module: sale #: code:addons/sale/sale.py:867 @@ -2152,6 +2407,8 @@ msgid "" "Before choosing a product,\n" " select a customer in the sales form." msgstr "" +"Kies eerst een klant in het verkoopformulier,\n" +" en dan pas een product." #. module: sale #: view:sale.order:0 @@ -2172,6 +2429,10 @@ msgid "" " will create a draft invoice that can be modified\n" " before validation." msgstr "" +"Kies hoe u deze order wilt factureren. Er\n" +" wordt een voorlopige factuur gemaakt die nog kan " +"worden aangepast\n" +" voor goedkeuring." #. module: sale #: view:sale.report:0 diff --git a/addons/sale/report/__init__.py b/addons/sale/report/__init__.py index 0248595f4da..6986639d942 100644 --- a/addons/sale/report/__init__.py +++ b/addons/sale/report/__init__.py @@ -22,4 +22,4 @@ import sale_order import sale_report -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 96f44d353d6..c47bf1357c8 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -253,7 +253,7 @@ class sale_order(osv.osv): return osv.osv.unlink(self, cr, uid, unlink_ids, context=context) - def onchange_pricelist_id(self, cr, uid, ids, pricelist_id, order_lines, context={}): + def onchange_pricelist_id(self, cr, uid, ids, pricelist_id, order_lines, context=None): if (not pricelist_id) or (not order_lines): return {} warning = { @@ -262,7 +262,6 @@ class sale_order(osv.osv): } return {'warning': warning} - def onchange_partner_id(self, cr, uid, ids, part): if not part: return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}} @@ -437,7 +436,9 @@ class sale_order(osv.osv): return False return True - def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None): + def action_invoice_create(self, cr, uid, ids, grouped=False, states=None, date_inv = False, context=None): + if states is None: + states = ['confirmed', 'done', 'exception'] res = False invoices = {} invoice_ids = [] @@ -648,7 +649,7 @@ class sale_order(osv.osv): def cancel_send_note(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_post(cr, uid, [obj.id], body=_("Sale Order for %s cancelled.") % (obj.partner_id.name), context=context) - + def done_send_note(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_post(cr, uid, [obj.id], body=_("Sale Order for %s set to Done") % (obj.partner_id.name), context=context) @@ -874,12 +875,12 @@ class sale_order_line(osv.osv): context_partner = {'lang': lang, 'partner_id': partner_id} if not product: - return {'value': {'th_weight': 0, + return {'value': {'th_weight': 0, 'product_uos_qty': qty}, 'domain': {'product_uom': [], 'product_uos': []}} if not date_order: date_order = time.strftime(DEFAULT_SERVER_DATE_FORMAT) -# + result = {} warning_msgs = {} product_obj = product_obj.browse(cr, uid, product, context=context) @@ -995,6 +996,7 @@ class mail_compose_message(osv.osv): wf_service = netsvc.LocalService("workflow") wf_service.trg_validate(uid, 'sale.order', context.get('default_res_id', False), 'quotation_sent', cr) return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context) + mail_compose_message() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/wizard/__init__.py b/addons/sale/wizard/__init__.py index 6cf076164d8..bfc8679de16 100644 --- a/addons/sale/wizard/__init__.py +++ b/addons/sale/wizard/__init__.py @@ -23,4 +23,4 @@ import sale_make_invoice import sale_line_invoice import sale_make_invoice_advance -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/__init__.py b/addons/sale_crm/__init__.py index f5db3f4333b..ac44586e7db 100644 --- a/addons/sale_crm/__init__.py +++ b/addons/sale_crm/__init__.py @@ -22,4 +22,4 @@ import wizard import sale_crm -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_order_dates/sale_order_dates.py b/addons/sale_order_dates/sale_order_dates.py index ceb6d48755c..1b069cb2bed 100644 --- a/addons/sale_order_dates/sale_order_dates.py +++ b/addons/sale_order_dates/sale_order_dates.py @@ -61,4 +61,4 @@ class sale_order_dates(osv.osv): sale_order_dates() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock/report/lot_overview.py b/addons/stock/report/lot_overview.py index 89974fa122b..bf2fd32e32c 100644 --- a/addons/stock/report/lot_overview.py +++ b/addons/stock/report/lot_overview.py @@ -34,7 +34,7 @@ class lot_overview(report_sxw.rml_parse): 'grand_total_price':self._grand_total, }) - def process(self,location_id): + def process(self, location_id): location_obj = pooler.get_pool(self.cr.dbname).get('stock.location') data = location_obj._product_get_report(self.cr,self.uid, [location_id]) diff --git a/addons/stock/report/lot_overview_all.py b/addons/stock/report/lot_overview_all.py index 0b4edcaecf4..552949ec4b2 100644 --- a/addons/stock/report/lot_overview_all.py +++ b/addons/stock/report/lot_overview_all.py @@ -34,7 +34,7 @@ class lot_overview_all(report_sxw.rml_parse): 'grand_total_price':self._grand_total, }) - def process(self,location_id): + def process(self, location_id): location_obj = pooler.get_pool(self.cr.dbname).get('stock.location') data = location_obj._product_get_all_report(self.cr,self.uid, [location_id]) data['location_name'] = location_obj.read(self.cr, self.uid, [location_id],['complete_name'])[0]['complete_name'] diff --git a/addons/stock/report/product_stock.py b/addons/stock/report/product_stock.py index b7dd254234c..1d882ad632b 100644 --- a/addons/stock/report/product_stock.py +++ b/addons/stock/report/product_stock.py @@ -42,7 +42,9 @@ class external_pdf(render): class report_stock(report_int): - def create(self, cr, uid, ids, datas, context={}): + def create(self, cr, uid, ids, datas, context=None): + if context is None: + context = {} product_ids = ids if 'location_id' in context: location_id = context['location_id'] diff --git a/addons/stock/report/report_stock.py b/addons/stock/report/report_stock.py index a711cdf23ee..19fae806fc0 100644 --- a/addons/stock/report/report_stock.py +++ b/addons/stock/report/report_stock.py @@ -74,10 +74,9 @@ class stock_report_prodlots(osv.osv): group by location_id, product_id, prodlot_id )""") - def unlink(self, cr, uid, ids, context={}): + def unlink(self, cr, uid, ids, context=None): raise osv.except_osv(_('Error!'), _('You cannot delete any record!')) - stock_report_prodlots() class stock_report_tracklots(osv.osv): @@ -130,8 +129,8 @@ class stock_report_tracklots(osv.osv): ) as report group by location_id, product_id, tracking_id )""") - - def unlink(self, cr, uid, ids, context={}): + + def unlink(self, cr, uid, ids, context=None): raise osv.except_osv(_('Error!'), _('You cannot delete any record!')) stock_report_tracklots() @@ -162,6 +161,7 @@ class report_stock_lines_date(osv.osv): where p.active='true' group by p.id )""") + report_stock_lines_date() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock/report/stock_by_location.py b/addons/stock/report/stock_by_location.py index 2dbe03a347e..8ed8800fb29 100644 --- a/addons/stock/report/stock_by_location.py +++ b/addons/stock/report/stock_by_location.py @@ -26,7 +26,7 @@ from report.interface import toxml #FIXME: we should use toxml class report_custom(report_rml): - def create_xml(self, cr, uid, ids, datas, context={}): + def create_xml(self, cr, uid, ids, datas, context=None): config = """ 09/09/2005 diff --git a/addons/stock/report/stock_inventory_move_report.py b/addons/stock/report/stock_inventory_move_report.py index e8c0d44bcc1..762373f1250 100644 --- a/addons/stock/report/stock_inventory_move_report.py +++ b/addons/stock/report/stock_inventory_move_report.py @@ -30,7 +30,7 @@ class stock_inventory_move(report_sxw.rml_parse): 'qty_total':self._qty_total }) - def _qty_total(self,objects): + def _qty_total(self, objects): total = 0.0 uom = objects[0].product_uom.name for obj in objects: diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 8e1180352c2..322acb15716 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -346,22 +346,28 @@ class stock_location(osv.osv): }) return product_obj.get_product_available(cr, uid, product_ids, context=context) - def _product_get(self, cr, uid, id, product_ids=False, context=None, states=['done']): + def _product_get(self, cr, uid, id, product_ids=False, context=None, states=None): """ @param product_ids: @param states: @return: """ + if states is None: + states = ['done'] ids = id and [id] or [] return self._product_get_multi_location(cr, uid, ids, product_ids, context=context, states=states) - def _product_all_get(self, cr, uid, id, product_ids=False, context=None, states=['done']): + def _product_all_get(self, cr, uid, id, product_ids=False, context=None, states=None): + if states is None: + states = ['done'] # build the list of ids of children of the location given by id ids = id and [id] or [] location_ids = self.search(cr, uid, [('location_id', 'child_of', ids)]) return self._product_get_multi_location(cr, uid, location_ids, product_ids, context, states) - def _product_virtual_get(self, cr, uid, id, product_ids=False, context=None, states=['done']): + def _product_virtual_get(self, cr, uid, id, product_ids=False, context=None, states=None): + if states is None: + states = ['done'] return self._product_all_get(cr, uid, id, product_ids, context, ['confirmed', 'waiting', 'assigned', 'done']) def _product_reserve(self, cr, uid, ids, product_id, product_qty, context=None, lock=False): @@ -522,7 +528,7 @@ class stock_tracking(osv.osv): def unlink(self, cr, uid, ids, context=None): raise osv.except_osv(_('Error!'), _('You cannot remove a lot line.')) - def action_traceability(self, cr, uid, ids, context={}): + def action_traceability(self, cr, uid, ids, context=None): """ It traces the information of a product @param self: The object pointer. @param cr: A database cursor diff --git a/addons/stock_invoice_directly/wizard/stock_invoice.py b/addons/stock_invoice_directly/wizard/stock_invoice.py index 3725d9b6d7f..4bb0ab41d88 100644 --- a/addons/stock_invoice_directly/wizard/stock_invoice.py +++ b/addons/stock_invoice_directly/wizard/stock_invoice.py @@ -47,4 +47,4 @@ class invoice_directly(osv.osv_memory): invoice_directly() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py index 5482669f543..840e6c854c7 100644 --- a/addons/stock_location/procurement_pull.py +++ b/addons/stock_location/procurement_pull.py @@ -45,7 +45,7 @@ class procurement_order(osv.osv): return (line.type_proc=='move') and (line.location_src_id) return False - def action_move_create(self, cr, uid, ids,context=None): + def action_move_create(self, cr, uid, ids, context=None): proc_obj = self.pool.get('procurement.order') move_obj = self.pool.get('stock.move') picking_obj=self.pool.get('stock.picking') diff --git a/addons/stock_planning/stock_planning.py b/addons/stock_planning/stock_planning.py index 7fcaf23045e..e2c723fa4e2 100644 --- a/addons/stock_planning/stock_planning.py +++ b/addons/stock_planning/stock_planning.py @@ -406,7 +406,7 @@ class stock_planning(osv.osv): res[val.id] = 'Future' return res - def _get_op(self, cr, uid, ids, field_names, arg, context=None): # op = OrderPoint + def _get_op(self, cr, uid, ids, field_names, arg, context=None): res = {} for val in self.browse(cr, uid, ids, context=context): res[val.id]={} diff --git a/addons/stock_planning/wizard/stock_planning_createlines.py b/addons/stock_planning/wizard/stock_planning_createlines.py index 394606ebb4d..ba882d59cf3 100644 --- a/addons/stock_planning/wizard/stock_planning_createlines.py +++ b/addons/stock_planning/wizard/stock_planning_createlines.py @@ -49,7 +49,7 @@ class stock_planning_createlines(osv.osv_memory): 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.planning', context=c), } - def create_planning(self,cr, uid, ids, context=None): + def create_planning(self, cr, uid, ids, context=None): if context is None: context = {} product_obj = self.pool.get('product.product') diff --git a/addons/survey/survey.py b/addons/survey/survey.py index f618a95cccf..d01140092d4 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -548,7 +548,7 @@ class survey_question_column_heading(osv.osv): _description = 'Survey Question Column Heading' _rec_name = 'title' - def _get_in_visible_rating_weight(self,cr, uid, context=None): + def _get_in_visible_rating_weight(self, cr, uid, context=None): if context is None: context = {} if context.get('in_visible_rating_weight', False): @@ -601,7 +601,7 @@ class survey_answer(osv.osv): } return val - def _get_in_visible_answer_type(self,cr, uid, context=None): + def _get_in_visible_answer_type(self, cr, uid, context=None): if context is None: context = {} return context.get('in_visible_answer_type', False) diff --git a/addons/survey/wizard/__init__.py b/addons/survey/wizard/__init__.py index aa1270da751..0ea0e5cd424 100644 --- a/addons/survey/wizard/__init__.py +++ b/addons/survey/wizard/__init__.py @@ -27,4 +27,4 @@ import survey_selection import survey_answer import survey_print -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/survey/wizard/survey_answer.py b/addons/survey/wizard/survey_answer.py index 2b774a22feb..8ece1e184cf 100644 --- a/addons/survey/wizard/survey_answer.py +++ b/addons/survey/wizard/survey_answer.py @@ -1008,7 +1008,7 @@ class survey_question_wiz(osv.osv_memory): return survey_question_wiz_id - def action_new_question(self,cr, uid, ids, context=None): + def action_new_question(self, cr, uid, ids, context=None): """ New survey.Question form. """ @@ -1050,7 +1050,7 @@ class survey_question_wiz(osv.osv_memory): 'context': context } - def action_edit_page(self,cr, uid, ids, context=None): + def action_edit_page(self, cr, uid, ids, context=None): """ Edit survey.page. """ @@ -1072,7 +1072,7 @@ class survey_question_wiz(osv.osv_memory): 'context': context } - def action_delete_page(self,cr, uid, ids, context=None): + def action_delete_page(self, cr, uid, ids, context=None): """ Delete survey.page. """ @@ -1098,7 +1098,7 @@ class survey_question_wiz(osv.osv_memory): 'context': context } - def action_edit_question(self,cr, uid, ids, context=None): + def action_edit_question(self, cr, uid, ids, context=None): """ Edit survey.question. """ @@ -1120,7 +1120,7 @@ class survey_question_wiz(osv.osv_memory): 'context': context } - def action_delete_question(self,cr, uid, ids, context=None): + def action_delete_question(self, cr, uid, ids, context=None): """ Delete survey.question. """