diff --git a/account_move_line_filter_wizard/__manifest__.py b/account_move_line_filter_wizard/__manifest__.py index ba47cef..9f774f3 100644 --- a/account_move_line_filter_wizard/__manifest__.py +++ b/account_move_line_filter_wizard/__manifest__.py @@ -19,7 +19,11 @@ This module has been written by Alexis de Lattre from Akretion # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import models, fields, api +from odoo import models, fields, api, _ +from odoo.exceptions import UserError class AccountMoveLineFilterWizard(models.TransientModel): _name = 'account.move.line.filter.wizard' _description = 'Wizard for easy and fast access to account move lines' + date_range_id = fields.Many2one( + 'date.range', string='Date Range (only for General Ledger)') partner_id = fields.Many2one( 'res.partner', string='Partner', domain=[('parent_id', '=', False)]) account_id = fields.Many2one( @@ -23,6 +26,27 @@ class AccountMoveLineFilterWizard(models.TransientModel): # ('partial_reconciled', 'Partially Reconciled'), ], string='Reconciliation Filter') + @api.model + def default_get(self, fields_list): + res = super(AccountMoveLineFilterWizard, self).default_get(fields_list) + today = fields.Date.context_today(self) + fy_type_id = self.env.ref('account_fiscal_year.fiscalyear').id + dro = self.env['date.range'] + date_range = dro.search([ + ('type_id', '=', fy_type_id), + ('company_id', '=', self.env.user.company_id.id), + ('date_start', '<=', today), + ('date_end', '>=', today) + ], limit=1) + if not date_range: + date_range = dro.search([ + ('type_id', '=', fy_type_id), + ('company_id', '=', self.env.user.company_id.id), + ], order='date_start desc', limit=1) + if date_range: + res['date_range_id'] = date_range.id + return res + @api.onchange('partner_id') def partner_id_change(self): if self.partner_id: @@ -44,3 +68,33 @@ class AccountMoveLineFilterWizard(models.TransientModel): if self.reconcile: action['context']['search_default_%s' % self.reconcile] = True return action + + def show_report_general_ledger(self): + self.ensure_one() + if self.account_reconcile: + assert self.reconcile != 'unreconciled' + if not self.date_range_id: + raise UserError(_( + "Select a date range to show the General Ledger report.")) + wvals = { + 'account_ids': [(6, 0, [self.account_id.id])], + 'date_from': self.date_range_id.date_start, + 'date_to': self.date_range_id.date_end, + } + if self.partner_id: + wvals['partner_ids'] = [(6, 0, [self.partner_id.id])] + wiz = self.env['general.ledger.report.wizard'].create(wvals) + action = wiz.button_export_html() + return action + + def show_report_open_items(self): + self.ensure_one() + assert self.account_reconcile and self.reconcile == 'unreconciled' + wvals = { + 'account_ids': [(6, 0, [self.account_id.id])], + } + if self.partner_id: + wvals['partner_ids'] = [(6, 0, [self.partner_id.id])] + wiz = self.env['open.items.report.wizard'].create(wvals) + action = wiz.button_export_html() + return action diff --git a/account_move_line_filter_wizard/wizard/account_move_line_filter_view.xml b/account_move_line_filter_wizard/wizard/account_move_line_filter_view.xml index 45c6003..0256fbe 100644 --- a/account_move_line_filter_wizard/wizard/account_move_line_filter_view.xml +++ b/account_move_line_filter_wizard/wizard/account_move_line_filter_view.xml @@ -1,7 +1,7 @@ @@ -19,9 +19,12 @@ +
-
@@ -29,7 +32,7 @@ - Journal Items of Account + Show Account account.move.line.filter.wizard form new