mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[FIX] account_lock_to_date. No crash on error.
Use ValidationError instead of UserError to prevent unfriendly message; Prevent crash when a lock to date not yet set in company.
This commit is contained in:
committed by
Simone Rubino
parent
bb6e329fe6
commit
e4878bfae4
@@ -1,25 +1,33 @@
|
|||||||
# Copyright 2019 ForgeFlow S.L.
|
# Copyright 2019 ForgeFlow S.L.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
from odoo import _, models
|
from odoo import _, models
|
||||||
from odoo.exceptions import UserError
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
|
||||||
class AccountMove(models.Model):
|
class AccountMove(models.Model):
|
||||||
_inherit = "account.move"
|
_inherit = "account.move"
|
||||||
|
|
||||||
def _check_lock_to_dates(self):
|
def _check_lock_to_dates(self):
|
||||||
|
"""Prevent moves that are on or after lock to date.
|
||||||
|
|
||||||
|
Advisors have more freedom then other users and are only constrained
|
||||||
|
by the ficalyear_lock_to_date.
|
||||||
|
Other users will also be restricted by the period_lock_to_date.
|
||||||
|
"""
|
||||||
|
is_advisor = self.user_has_groups("account.group_account_manager")
|
||||||
for move in self:
|
for move in self:
|
||||||
lock_to_date = (
|
advisor_lock_to_date = move.company_id.fiscalyear_lock_to_date
|
||||||
min(
|
user_lock_to_date = move.company_id.period_lock_to_date
|
||||||
move.company_id.period_lock_to_date,
|
if is_advisor:
|
||||||
move.company_id.fiscalyear_lock_to_date,
|
lock_to_date = advisor_lock_to_date or False
|
||||||
|
else:
|
||||||
|
lock_to_date = (
|
||||||
|
min(user_lock_to_date, advisor_lock_to_date)
|
||||||
|
if user_lock_to_date and advisor_lock_to_date
|
||||||
|
else user_lock_to_date or advisor_lock_to_date or False
|
||||||
)
|
)
|
||||||
or False
|
|
||||||
)
|
|
||||||
if self.user_has_groups("account.group_account_manager"):
|
|
||||||
lock_to_date = move.company_id.fiscalyear_lock_to_date or False
|
|
||||||
if lock_to_date and move.date >= lock_to_date:
|
if lock_to_date and move.date >= lock_to_date:
|
||||||
if self.user_has_groups("account.group_account_manager"):
|
if is_advisor:
|
||||||
message = _(
|
message = _(
|
||||||
"You cannot add/modify entries after and "
|
"You cannot add/modify entries after and "
|
||||||
"inclusive of the lock to date %s"
|
"inclusive of the lock to date %s"
|
||||||
@@ -31,7 +39,7 @@ class AccountMove(models.Model):
|
|||||||
"Check the company settings or ask someone "
|
"Check the company settings or ask someone "
|
||||||
"with the 'Adviser' role"
|
"with the 'Adviser' role"
|
||||||
) % (lock_to_date)
|
) % (lock_to_date)
|
||||||
raise UserError(message)
|
raise ValidationError(message)
|
||||||
|
|
||||||
def action_post(self):
|
def action_post(self):
|
||||||
self._check_lock_to_dates()
|
self._check_lock_to_dates()
|
||||||
|
|||||||
Reference in New Issue
Block a user