account_usability: reversal wizard: check the move hasn't already been reversed
This commit is contained in:
@@ -2,21 +2,28 @@
|
|||||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import api, fields, models
|
from odoo import api, models, _
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
class AccountMoveReversal(models.TransientModel):
|
class AccountMoveReversal(models.TransientModel):
|
||||||
_inherit = 'account.move.reversal'
|
_inherit = 'account.move.reversal'
|
||||||
|
|
||||||
|
# Set default reversal date to original move + 1 day
|
||||||
|
# and raise error if original move has already been reversed
|
||||||
@api.model
|
@api.model
|
||||||
def _default_date(self):
|
def default_get(self, fields_list):
|
||||||
date_dt = None
|
res = super().default_get(fields_list)
|
||||||
if (
|
assert self._context.get('active_model') == 'account.move'
|
||||||
self._context.get('active_model') == 'account.move' and
|
amo = self.env['account.move']
|
||||||
self._context.get('active_id')):
|
moves = amo.browse(self._context['active_ids'])
|
||||||
move = self.env['account.move'].browse(self._context['active_id'])
|
if len(moves) == 1:
|
||||||
date_dt = move.date + relativedelta(days=1)
|
res['date'] = moves.date + relativedelta(days=1)
|
||||||
return date_dt
|
reversed_move = amo.search([('reversed_entry_id', 'in', moves.ids)], limit=1)
|
||||||
|
if reversed_move:
|
||||||
date = fields.Date(default=_default_date)
|
raise UserError(_(
|
||||||
|
"Move '%s' has already been reversed by move '%s'.") % (
|
||||||
|
reversed_move.reversed_entry_id.display_name,
|
||||||
|
reversed_move.display_name))
|
||||||
|
return res
|
||||||
|
|||||||
Reference in New Issue
Block a user