Multi is the default api for methods, it is not necessary to explicitly decorate methods with it, adds clutter and most people use it because they see that the rest of the code uses it. Done with `find . -type f -name '*.py' | xargs sed -i '/@api.multi/d'`
48 lines
2.2 KiB
Python
48 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class AccountCommonReport(models.TransientModel):
|
|
_name = "account.common.report"
|
|
_description = "Account Common Report"
|
|
|
|
company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.company)
|
|
journal_ids = fields.Many2many('account.journal', string='Journals', required=True, default=lambda self: self.env['account.journal'].search([('company_id', '=', self.company_id.id)]))
|
|
date_from = fields.Date(string='Start Date')
|
|
date_to = fields.Date(string='End Date')
|
|
target_move = fields.Selection([('posted', 'All Posted Entries'),
|
|
('all', 'All Entries'),
|
|
], string='Target Moves', required=True, default='posted')
|
|
|
|
@api.onchange('company_id')
|
|
def _onchange_company_id(self):
|
|
if self.company_id:
|
|
self.journal_ids = self.env['account.journal'].search(
|
|
[('company_id', '=', self.company_id.id)])
|
|
else:
|
|
self.journal_ids = self.env['account.journal'].search([])
|
|
|
|
def _build_contexts(self, data):
|
|
result = {}
|
|
result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False
|
|
result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or ''
|
|
result['date_from'] = data['form']['date_from'] or False
|
|
result['date_to'] = data['form']['date_to'] or False
|
|
result['strict_range'] = True if result['date_from'] else False
|
|
result['company_id'] = data['form']['company_id'][0] or False
|
|
return result
|
|
|
|
def _print_report(self, data):
|
|
raise NotImplementedError()
|
|
|
|
def check_report(self):
|
|
self.ensure_one()
|
|
data = {}
|
|
data['ids'] = self.env.context.get('active_ids', [])
|
|
data['model'] = self.env.context.get('active_model', 'ir.ui.menu')
|
|
data['form'] = self.read(['date_from', 'date_to', 'journal_ids', 'target_move', 'company_id'])[0]
|
|
used_context = self._build_contexts(data)
|
|
data['form']['used_context'] = dict(used_context, lang=self.env.context.get('lang') or 'en_US')
|
|
return self.with_context(discard_logo_check=True)._print_report(data)
|