oca-ocb-accounting/odoo-bringout-oca-ocb-stock_account/stock_account/models/stock_picking.py
Ernad Husremovic 768b70e05e 19.0 vanilla
2026-03-09 09:30:07 +01:00

34 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models, fields
from odoo.exceptions import ValidationError
class StockPicking(models.Model):
_inherit = 'stock.picking'
country_code = fields.Char(related="company_id.account_fiscal_country_id.code")
@api.constrains("scheduled_date", "date_done")
def _check_backdate_allowed(self):
if self.env['ir.config_parameter'].sudo().get_param('stock_account.skip_lock_date_check'):
return
for picking in self:
if picking._is_date_in_lock_period():
raise ValidationError(self.env._("You cannot modify the scheduled date of operation %s because it falls within a locked fiscal period.", picking.display_name))
def _compute_is_date_editable(self):
super()._compute_is_date_editable()
for picking in self:
if picking.is_date_editable and picking.state in ['done', 'cancel'] and picking.ids:
picking.is_date_editable = not picking._is_date_in_lock_period()
def _is_date_in_lock_period(self):
self.ensure_one()
lock = []
if self.state == "done":
lock += self.company_id._get_lock_date_violations(self.scheduled_date.date(), fiscalyear=True, sale=False, purchase=False, tax=False, hard=True)
if self.date_done:
lock += self.company_id._get_lock_date_violations(self.date_done.date(), fiscalyear=True, sale=False, purchase=False, tax=False, hard=True)
return bool(lock)