Files
account-financial-tools/account_reversal/wizard/account_move_reverse.py
Cédric Pigeon (ACSONE) a605243de3 [10.0][MIG] account_reversal migration (#445)
* OCA Transbot updated translations from Transifex
* Add option to reconcile the reversal move with the original move (#387)
* [IMP] account_reversal: Several improvements
* Default date for reverse move is not start_date of the period following the period of the original move (and not the period following today's period)
* Return form view of account.move if only 1 move is reversed
* Add option to reconcile with the reversal entry.
* [10.0][MIG] account_reversal migration
* [CHG] skid Odoo method to allow better performance on huge volume
2017-05-05 17:57:47 -05:00

76 lines
3.1 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2011 Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2012-2013 Guewen Baconnier (Camptocamp)
# Copyright 2016 Antonio Espinosa <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models, _
class AccountMoveReverse(models.TransientModel):
_name = "account.move.reverse"
_description = "Create reversal of account moves"
def _default_date(self):
active_id = (self.env.context.get('active_id') or
self.env.context.get('active_ids', [None])[0])
move = self.env['account.move'].browse(active_id)
return move.date or fields.Date.today()
def _default_journal_id(self):
active_id = (self.env.context.get('active_id') or
self.env.context.get('active_ids', [None])[0])
move = self.env['account.move'].browse(active_id)
return move.journal_id.id
date = fields.Date(
string="Reversal Date", required=True, default=_default_date,
help="Enter the date of the reversal account entries. "
"By default, Odoo proposes the same date of the move to reverse.")
journal_id = fields.Many2one(
comodel_name='account.journal', string="Reversal Journal",
default=_default_journal_id,
help="Enter the date of the reversal account entries. "
"If empty, Odoo uses the same journal of the move to reverse.")
move_prefix = fields.Char(
string="Entries Ref. Prefix",
help="Prefix that will be added to the 'Ref' of the reversal account "
"entries. If empty, Odoo uses the Ref of the move to reverse. "
"(NOTE: A space is added after the prefix).")
line_prefix = fields.Char(
string="Items Name Prefix",
help="Prefix that will be added to the 'Name' of the reversal account "
"entrie items. If empty, Odoo uses the same name of the move "
"line to reverse. (NOTE: A space is added after the prefix).")
reconcile = fields.Boolean(
string="Reconcile", default=True,
help="Mark this if you want to reconcile items of both moves.")
@api.multi
def action_reverse(self):
moves = self.env['account.move']
for wizard in self:
orig = moves.browse(self.env.context.get('active_ids'))
moves |= orig.create_reversals(
date=wizard.date, journal=wizard.journal_id,
move_prefix=wizard.move_prefix, line_prefix=wizard.line_prefix,
reconcile=wizard.reconcile)
action = {
'name': _('Reverse moves'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'res_model': 'account.move',
'context': {'search_default_to_be_reversed': 0},
}
if len(moves) == 1:
action.update({
'view_mode': 'form,tree',
'res_id': moves.id,
})
else:
action.update({
'view_mode': 'tree,form',
'domain': [('id', 'in', moves.ids)],
})
return action