diff --git a/addons/account/account.py b/addons/account/account.py index aa0a27ad76d..8d7912356a6 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -19,7 +19,7 @@ # ############################################################################## import time -from datetime import datetime +from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta from operator import itemgetter @@ -79,9 +79,19 @@ class account_payment_term(osv.osv): elif line.value == 'balance': amt = round(amount, prec) if amt: - next_date = datetime.strptime(date_ref, '%Y-%m-%d') + relativedelta(days=line.days) + next_date = (datetime.strptime(date_ref, '%Y-%m-%d') + relativedelta(days=line.days)) if line.days2 < 0: - next_date += relativedelta(day=line.days2) + nyear = next_date.strftime("%Y") + nmonth = str(int(next_date.strftime("%m"))% 12+1) + nday = "1" + + ndate = "%s-%s-%s" % (nyear, nmonth, nday) + nseconds = time.mktime(time.strptime(ndate, '%Y-%m-%d')) + next_month = datetime.fromtimestamp(nseconds) + + delta = timedelta(seconds=1) + next_date = next_month - delta + next_date = next_date + relativedelta(days=line.days2) if line.days2 > 0: next_date += relativedelta(day=line.days2, months=1) result.append( (next_date.strftime('%Y-%m-%d'), amt) ) @@ -1236,7 +1246,7 @@ class account_move(osv.osv): return amount def _centralise(self, cr, uid, move, mode, context=None): - assert(mode in ('debit', 'credit'), 'Invalid Mode') #to prevent sql injection + assert mode in ('debit', 'credit'), 'Invalid Mode' #to prevent sql injection if context is None: context = {} diff --git a/addons/account/account_menuitem.xml b/addons/account/account_menuitem.xml index 58cc997a111..e5912a8b763 100644 --- a/addons/account/account_menuitem.xml +++ b/addons/account/account_menuitem.xml @@ -3,22 +3,22 @@ - - + + - + - - + + - + @@ -35,7 +35,7 @@ + groups="group_account_user,group_account_manager,base.group_system"/> @@ -43,15 +43,15 @@ - + - - diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 0f64ef5c734..3bf8fe47238 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -665,7 +665,7 @@ form tree,form - + diff --git a/addons/account/invoice.py b/addons/account/invoice.py index d40d4037c97..35437fa019a 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -462,7 +462,7 @@ class account_invoice(osv.osv): date_invoice = time.strftime('%Y-%m-%d') pterm_list = pt_obj.compute(cr, uid, payment_term_id, value=1, date_ref=date_invoice) - + if pterm_list: pterm_list = [line[0] for line in pterm_list] pterm_list.sort() diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 65223706f40..3fe3e34cfe7 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -307,7 +307,13 @@ account.analytic.journal search - + + + + + + + @@ -334,6 +340,7 @@ account.analytic.journal form tree,form,search + diff --git a/addons/account/report/account_aged_partner_balance.py b/addons/account/report/account_aged_partner_balance.py index 515c9edf8c0..a70d79cdd40 100644 --- a/addons/account/report/account_aged_partner_balance.py +++ b/addons/account/report/account_aged_partner_balance.py @@ -49,18 +49,17 @@ class aged_trial_report(rml_parse.rml_parse, common_report_header): self.query = data['form'].get('query_line', '') self.direction_selection = data['form'].get('direction_selection', 'past') self.date_from = data['form'].get('date_from', time.strftime('%Y-%m-%d')) + if (data['form']['result_selection'] == 'customer' ): + self.ACCOUNT_TYPE = ['receivable'] + elif (data['form']['result_selection'] == 'supplier'): + self.ACCOUNT_TYPE = ['payable'] + else: + self.ACCOUNT_TYPE = ['payable','receivable'] return super(aged_trial_report, self).set_context(objects, data, ids, report_type=report_type) def _get_lines(self, form): res = [] account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - if (form['result_selection'] == 'customer' ): - self.ACCOUNT_TYPE = ['receivable'] - elif (form['result_selection'] == 'supplier'): - self.ACCOUNT_TYPE = ['payable'] - else: - self.ACCOUNT_TYPE = ['payable','receivable'] - self.cr.execute('SELECT DISTINCT res_partner.id AS id,\ res_partner.name AS name \ FROM res_partner,account_move_line AS l, account_account\ @@ -129,8 +128,8 @@ class aged_trial_report(rml_parse.rml_parse, common_report_header): # Use one query per period and store results in history (a list variable) # Each history will contain : history[1] = {'': } - history = [] - for i in range(5): + history = [] + for i in range(5): self.cr.execute('SELECT partner_id, SUM(debit-credit)\ FROM account_move_line AS l, account_account\ WHERE (l.account_id = account_account.id)\ diff --git a/addons/account/report/account_balance.py b/addons/account/report/account_balance.py index bcc9c75be57..076369f7e10 100644 --- a/addons/account/report/account_balance.py +++ b/addons/account/report/account_balance.py @@ -67,7 +67,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=[], done=None):#, level=1): obj_account = self.pool.get('account.account') if not ids: ids = self.ids @@ -94,7 +94,7 @@ class account_balance(report_sxw.rml_parse, common_report_header): child_ids = obj_account._get_children_and_consol(self.cr, self.uid, ids, ctx) if child_ids: ids = child_ids - accounts = obj_account.read(self.cr, self.uid, ids, ['type','code','name','debit','credit','balance','parent_id'], ctx) + accounts = obj_account.read(self.cr, self.uid, ids, ['type','code','name','debit','credit','balance','parent_id','level'], ctx) for account in accounts: if account['id'] in done: continue @@ -104,7 +104,7 @@ class account_balance(report_sxw.rml_parse, common_report_header): 'type': account['type'], 'code': account['code'], 'name': account['name'], - 'level': level, + 'level': account['level'], 'debit': account['debit'], 'credit': account['credit'], 'balance': account['balance'], @@ -124,12 +124,12 @@ class account_balance(report_sxw.rml_parse, common_report_header): # return False # if not _check_rec(account) : # continue - if account['parent_id']: +# if account['parent_id']: # acc = obj_account.read(self.cr, self.uid, [ account['parent_id'][0] ] ,['name'], ctx) - for r in result_acc: - if r['id'] == account['parent_id'][0]: - res['level'] = r['level'] + 1 - break +# for r in result_acc: +# if r['id'] == account['parent_id'][0]: +# res['level'] = r['level'] + 1 +# break if form['display_account'] == 'bal_movement': if res['credit'] > 0 or res['debit'] > 0 or res['balance'] > 0 : result_acc.append(res) diff --git a/addons/account/report/voucher_print.rml b/addons/account/report/voucher_print.rml index 795fd678645..028575c81f2 100644 --- a/addons/account/report/voucher_print.rml +++ b/addons/account/report/voucher_print.rml @@ -170,7 +170,7 @@ Dated : - [[ time.strftime('%d %B,%Y', time.strptime(voucher.date , '%Y-%m-%d')) or '' ]] + [[ formatLang(voucher.date, date=True) or '' ]] diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml index 391d7371bbe..f580bdbc92f 100644 --- a/addons/account/security/account_security.xml +++ b/addons/account/security/account_security.xml @@ -2,20 +2,20 @@ - Finance / Invoice + Accounting / Invoice - Finance / Accountant + Accounting / Accountant - Finance / Manager + Accounting / Manager - - - + + + diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv index b9d2f8377c0..c43a1edebeb 100644 --- a/addons/account/security/ir.model.access.csv +++ b/addons/account/security/ir.model.access.csv @@ -24,13 +24,13 @@ "access_account_subscription_line","account.subscription.line","model_account_subscription_line","account.group_account_user",1,1,1,1 "access_account_tax_template","account.tax.template","model_account_tax_template","account.group_account_manager",1,1,1,1 "access_account_account_template","account.account.template","model_account_account_template","account.group_account_manager",1,1,1,1 -"access_account_tax_code_template","account.tax.code.template","model_account_tax_code_template","account.group_account_manager",1,1,1,1 +"access_account_tax_code_template","account.tax.code.template","model_account_tax_code_template","account.group_account_manager",1,0,0,0 "access_account_chart_template","account.chart.template","model_account_chart_template","account.group_account_manager",1,1,1,1 "access_account_tax_template","account.tax.template","model_account_tax_template","account.group_account_manager",1,1,1,1 -"access_account_bank_statement","account.bank.statement","model_account_bank_statement","account.group_account_user",1,1,1,1 +"access_account_bank_statement","account.bank.statement","model_account_bank_statement","account.group_account_user",1,0,0,0 "access_account_bank_statement_reconcile","account.bank.statement.reconcile","model_account_bank_statement_reconcile","account.group_account_user",1,1,1,1 "access_account_bank_statement_reconcile_line","account.bank.statement.reconcile.line","model_account_bank_statement_reconcile_line","account.group_account_user",1,1,1,1 -"access_account_bank_statement_line","account.bank.statement.line","model_account_bank_statement_line","account.group_account_user",1,1,1,1 +"access_account_bank_statement_line","account.bank.statement.line","model_account_bank_statement_line","account.group_account_user",1,0,0,0 "access_account_analytic_line","account.analytic.line","model_account_analytic_line","account.group_account_user",1,1,1,1 "access_report_hr_timesheet_invoice_journal","report.hr.timesheet.invoice.journal","model_report_hr_timesheet_invoice_journal","account.group_account_manager",1,0,0,0 "access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","base.group_user",1,0,0,0 @@ -38,8 +38,8 @@ "access_account_invoice_uinvoice","account.invoice","model_account_invoice","account.group_account_invoice",1,1,1,1 "access_account_invoice_line_uinvoice","account.invoice.line","model_account_invoice_line","account.group_account_invoice",1,1,1,1 "access_account_invoice_tax_uinvoice","account.invoice.tax","model_account_invoice_tax","account.group_account_invoice",1,1,1,1 -"access_account_analytic_line_uinvoice","account.analytic.line","model_account_analytic_line","account.group_account_user",1,1,1,1 -"access_account_move_uinvoice","account.move","model_account_move","account.group_account_invoice",1,1,1,1 +"access_account_analytic_line_uinvoice","account.analytic.line","model_account_analytic_line","account.group_account_manager",1,0,0,0 +"access_account_move_uinvoice","account.move","model_account_move","account.group_account_invoice",1,0,0,0 "access_account_move_line_uinvoice","account.move.line invoice","model_account_move_line","account.group_account_invoice",1,1,1,1 "access_account_move_reconcile_uinvoice","account.move.reconcile","model_account_move_reconcile","account.group_account_invoice",1,1,1,1 "access_account_journal_period_uinvoice","account.journal.period","model_account_journal_period","account.group_account_invoice",1,1,1,1 @@ -52,9 +52,9 @@ "access_account_journal_column_manager","account.journal.column","model_account_journal_column","account.group_account_manager",1,1,1,1 "access_account_journal_manager","account.journal","model_account_journal","account.group_account_manager",1,1,1,1 "access_account_journal_invoice","account.journal invoice","model_account_journal","account.group_account_invoice",1,0,0,0 -"access_account_period_manager","account.period","model_account_period","account.group_account_manager",1,1,1,1 +"access_account_period_manager","account.period","model_account_period","account.group_account_manager",1,0,0,0 "access_account_period_invoice","account.period invoice","model_account_period","account.group_account_invoice",1,0,0,0 -"access_account_tax_code_manager","account.tax.code","model_account_tax_code","account.group_account_manager",1,1,1,1 +"access_account_tax_code_manager","account.tax.code","model_account_tax_code","account.group_account_manager",1,0,0,0 "access_account_tax_manager","account.tax","model_account_tax","account.group_account_manager",1,1,1,1 "access_account_invoice_group_invoice","account.invoice group invoice","model_account_invoice","account.group_account_invoice",1,1,1,1 "access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","account.group_account_manager",1,1,1,1 @@ -82,15 +82,76 @@ "access_account_fiscal_position_account_template","account.fiscal.position.account.template","model_account_fiscal_position_account_template","account.group_account_manager",1,1,1,1 "access_account_sequence_fiscal_year","account.sequence.fiscalyear","model_account_sequence_fiscalyear","account.group_account_user",1,1,1,1 "access_account_sequence_fiscal_year_user","account.sequence.fiscalyear user","model_account_sequence_fiscalyear","base.group_user",1,0,0,0 -"access_report_account_receivable","report.account.receivable","model_report_account_receivable","account.group_account_manager",1,0,0,0 +"access_report_account_receivable","report.account.receivable","model_report_account_receivable","account.group_account_manager",1,1,1,1 "access_temp_range","temp.range","model_temp_range","account.group_account_manager",1,0,0,0 "access_report_aged_receivable","report.aged.receivable","model_report_aged_receivable","account.group_account_manager",1,0,0,0 "access_report_invoice_created","report.invoice.created","model_report_invoice_created","account.group_account_manager",1,0,0,0 "access_report_account_type_sales","report.account_type.sales","model_report_account_type_sales","account.group_account_manager",1,0,0,0 "access_report_account_sales","report.account.sales","model_report_account_sales","account.group_account_manager",1,0,0,0 -"access_account_invoice_report","account.invoice.report","model_account_invoice_report","account.group_account_manager",1,0,0,0 +"access_account_invoice_report","account.invoice.report","model_account_invoice_report","account.group_account_manager",1,1,1,1 "access_account_account_report_manager","account.account.report","model_account_account_report","account.group_account_manager",1,0,0,0 -"access_account_entries_report_manager","account.entries.report","model_account_entries_report","account.group_account_manager",1,0,0,0 +"access_res_partner_group_account_manager","res_partner group_account_manager","model_res_partner","account.group_account_manager",1,1,1,1 +"access_account_invoice_accountant","account.invoice accountant","model_account_invoice","account.group_account_user",1,0,0,0 +"access_account_tax_code_accountant","account.tax.code accountant","model_account_tax_code","account.group_account_user",1,1,1,1 +"access_account_analytic_chart","account.analytic.chart","model_account_analytic_chart","account.group_account_user",1,1,1,1 +"access_account_move_line_manager","account.move.line manager","model_account_move_line","account.group_account_manager",1,1,1,1 +"access_account_move_manager","account.move manager","model_account_move","account.group_account_manager",1,0,0,0 +"access_account_invoice_manager","account.invoice manager","model_account_invoice","account.group_account_manager",1,0,0,0 +"access_account_bank_statement_manager","account.bank.statement manager","model_account_bank_statement","account.group_account_manager",1,0,0,0 +"access_account_analytic_chart_manager","account.analytic.chart manager","model_account_analytic_chart","account.group_account_manager",1,0,0,0 +"access_account_entries_report_manager","account.entries.report","model_account_entries_report","account.group_account_manager",1,1,1,1 "access_analytic_entries_report_manager","analytic.entries.report","model_analytic_entries_report","account.group_account_manager",1,0,0,0 "access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_manager",1,1,1,1 "access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_user",1,0,0,0 +"access_account_move_line_system","account.move.line system","model_account_move_line","base.group_system",1,0,0,0 +"access_account_invoice_system","account.invoice system","model_account_invoice","base.group_system",1,0,0,0 +"access_account_bank_statement_system","account.bank.statement system","model_account_bank_statement","base.group_system",1,0,0,0 +"access_account_move_system","account.move system","model_account_move","base.group_system",1,0,0,0 +"access_account_analytic_line_system","account.analytic.line system","model_account_analytic_line","base.group_system",1,0,0,0 +"access_account_analytic_system","account.analytic.chart system","model_account_analytic_chart","base.group_system",1,0,0,0 +"access_account_tax_code_system","account.tax.code system","model_account_tax_code","base.group_system",1,1,1,1 +"access_account_journal_system","account.journal system","model_account_journal","base.group_system",1,1,1,1 +"access_account_chart_system","account.chart system","model_account_chart","base.group_system",1,0,0,0 +"access_account_period_system","account.period system","model_account_period","base.group_system",1,1,1,1 +"access_account_chart_accountant","account.chart accountant","model_account_chart","group_account_user",1,0,0,0 +"access_account_journal_view_system","account.journal.view system","model_account_journal_view","base.group_system",1,1,1,1 +"access_account_account_type_system","account.account.type system","model_account_account_type","base.group_system",1,1,1,1 +"access_account_analytic_journal_system","account.analytic.journal system","model_account_analytic_journal","base.group_system",1,1,1,1 +"access_account_fiscalyear_system","account.fiscalyear system","model_account_fiscalyear","base.group_system",1,1,1,1 +"access_account_tax_system","account.tax system","model_account_tax","base.group_system",1,1,1,1 +"access_account_model_system","account.model system","model_account_model","base.group_system",1,1,1,1 +"access_account_subscription_system","account.subscription system","model_account_subscription","base.group_system",1,1,1,1 +"access_account_journal_column_system","account.journal.column system","model_account_journal_column","base.group_system",1,1,1,1 +"access_account_invoice_report_system","account.invoice.report system","model_account_invoice_report","base.group_system",1,0,0,0 +"access_account_entries_report_system","account.entries.report system","model_account_entries_report","base.group_system",1,0,0,0 +"access_analytic_entries_report_system","analytic.entries.report system","model_analytic_entries_report","base.group_system",1,0,0,0 +"access_account_journal_period_system","account.journal.period system","model_account_journal_period","base.group_system",1,0,0,0 +"access_account_invoice_tax_system","account.invoice.tax system","model_account_invoice_tax","base.group_system",1,0,0,0 +"access_account_tax_code_template_system","account.tax.code.template system","model_account_tax_code_template","base.group_system",1,1,1,1 +"access_account_sequence_fiscal_year_system","account.sequence.fiscalyear system","model_account_sequence_fiscalyear","base.group_system",1,1,1,1 +"access_account_fiscal_position_system","account.fiscal.position system","model_account_fiscal_position","base.group_system",1,1,1,1 +"access_account_move_reconcile_system","account.move.reconcile system","model_account_move_reconcile","base.group_system",1,0,0,0 +"access_account_account_system","account.account system","model_account_account","base.group_system",1,1,1,1 +"access_account_analytic_system","account.analytic.account system","analytic.model_account_analytic_account","base.group_system",1,1,1,1 +"access_account_model_line_system","account.model.line system","model_account_model_line","base.group_system",1,1,1,1 +"access_account_subscription_line_system","account.subscription.line system","model_account_subscription_line","base.group_system",1,1,1,1 +"access_account_payment_term_system","account.payment.term system","model_account_payment_term","base.group_system",1,1,1,1 +"access_account_payment_term_line_system","account.payment.term.line system","model_account_payment_term_line","base.group_system",1,1,1,1 +"access_report_account_receivable_system","report.account.receivable system","model_report_account_receivable","base.group_system",1,1,1,1 +"access_account_fiscal_position_tax_system","account.fiscal.position.tax system","model_account_fiscal_position_tax","base.group_system",1,1,1,1 +"access_account_fiscal_position_account_template_system","account.fiscal.position.account.template system","model_account_fiscal_position_account_template","base.group_system",1,1,1,1 +"access_account_journal_view_invoice","account.journal.view invoice","model_account_journal_view","account.group_account_invoice",1,1,1,1 +"access_account_fiscal_position_account_system","account.fiscal.position.account system","model_account_fiscal_position_account","base.group_system",1,1,1,1 +"access_account_journal_column_invoice","account.journal.column invoice","model_account_journal_column","account.group_account_invoice",1,1,1,1 +"access_account_invoice_tax_manager","account.invoice.tax manager","model_account_invoice_tax","account.group_account_manager",1,0,0,0 +"access_account_invoice_tax_accountant","account.invoice.tax accountant","model_account_invoice_tax","account.group_account_user",1,0,0,0 +"access_account_move_reconcile_manager","account.move.reconcile manager","model_account_move_reconcile","account.group_account_manager",1,0,0,0 +"access_account_analytic_line_invoice","account.analytic.line invoice","model_account_analytic_line","account.group_account_invoice",1,1,1,1 +"access_account_invoice_line_accountant","account.invoice.line accountant","model_account_invoice_line","account.group_account_user",1,0,0,0 +"access_res_partner_address_accountant","res.partner.address accountant","base.model_res_partner_address","account.group_account_user",1,0,0,0 +"access_account_invoice_line_manager","account.invoice.line manager","model_account_invoice_line","account.group_account_manager",1,0,0,0 +"access_analytic_report_manager","analytic.report manager","model_analytic_report","account.group_account_manager",1,1,1,1 +"access_account_account_invoice","account.account invoice","model_account_account","account.group_account_invoice",1,1,1,1 +"access_res_partner_address_invoice","res.partner.address invoice","base.model_res_partner_address","account.group_account_invoice",1,1,1,1 +"access_account_invoice_line_system","account.invoice.line system","model_account_invoice_line","base.group_system",1,0,0,0 +"access_account_analytic_accountant","account.analytic.account accountant","analytic.model_account_analytic_account","account.group_account_user",1,1,1,1 diff --git a/addons/account/wizard/account_statement_from_invoice.py b/addons/account/wizard/account_statement_from_invoice.py index 0523b5f60ca..a409bb77f89 100644 --- a/addons/account/wizard/account_statement_from_invoice.py +++ b/addons/account/wizard/account_statement_from_invoice.py @@ -92,7 +92,7 @@ class account_statement_from_invoice_lines(osv.osv_memory): 'ref': line.ref, 'reconcile_id': reconcile_id, 'date': time.strftime('%Y-%m-%d'), #time.strftime('%Y-%m-%d'), #line.date_maturity or, - }, context=context) + }, context=context) return {} account_statement_from_invoice_lines() @@ -107,10 +107,10 @@ class account_statement_from_invoice(osv.osv_memory): 'date': fields.date('Date payment',required=True), 'journal_ids': fields.many2many('account.journal', 'account_journal_relation', 'account_id', 'journal_id', 'Journal'), 'line_ids': fields.many2many('account.move.line', 'account_move_line_relation', 'move_id', 'line_id', 'Invoices'), - } + } _defaults = { 'date':lambda *a: time.strftime('%Y-%m-%d'), - } + } def search_invoices(self, cr, uid, ids, context=None): @@ -167,4 +167,4 @@ class account_statement_from_invoice(osv.osv_memory): } account_statement_from_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/wizard/account_statement_from_invoice_view.xml b/addons/account/wizard/account_statement_from_invoice_view.xml index b1c0e68534e..c5f42851e69 100644 --- a/addons/account/wizard/account_statement_from_invoice_view.xml +++ b/addons/account/wizard/account_statement_from_invoice_view.xml @@ -1,33 +1,33 @@ - + account.statement.from.invoice.form account.statement.from.invoice form
- - - - - + + + + + -