Permalink
Browse files

[IMP] point_of_sale: forbid locking the fiscal year or period in case…

… there is an open POS session into it

Without that, it is impossible to close these sessions, as the lock date forbids posting accounting entries for them.
  • Loading branch information...
oco-odoo committed Oct 29, 2018
1 parent 49fa997 commit df52f7e41a916773141ab81cbc96cd5e14671934
Showing with 22 additions and 0 deletions.
  1. +1 −0 addons/point_of_sale/models/__init__.py
  2. +21 −0 addons/point_of_sale/models/res_company.py
@@ -13,4 +13,5 @@
from . import product
from . import res_partner
from . import res_users
from . import res_company
from . import res_config_settings
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-

from odoo import api, models, fields, _
from odoo.exceptions import ValidationError

class ResCompany(models.Model):
_inherit = 'res.company'

@api.constrains('period_lock_date')
def validate_period_lock_date(self):
""" This constrains makes it impossible to change the period lock date if
some open POS session exists into it. Without that, these POS sessions
would trigger an error message saying that the period has been locked when
trying to close them.
"""
pos_session_model = self.env['pos.session']
for record in self:
sessions_in_period = pos_session_model.search([('state', '!=', 'closed'), '|', ('start_at', '<=', record.period_lock_date), ('start_at', '<=', record.fiscalyear_lock_date)])
if sessions_in_period:
sessions_str = ', '.join(sessions_in_period.mapped('name'))
raise ValidationError(_("Please close all the point of sale sessions in this period before closing it. Open sessions are: %s ") % (sessions_str))

0 comments on commit df52f7e

Please sign in to comment.