1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/hr_payroll/wizard/hr_payroll_index_wizard.py
2024-12-10 09:04:09 +07:00

55 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools import format_date
class HrPayrollIndex(models.TransientModel):
_name = 'hr.payroll.index'
_description = 'Index contracts'
def _get_default_contract_ids(self):
if self.env.context.get("active_ids"):
return self.env.context.get("active_ids")
return self.env['hr.contract'].search([('state', '=', 'open')])
percentage = fields.Float("Percentage")
description = fields.Char(
"Description", compute='_compute_description', store=True, readonly=False,
help="Will be used as the message specifying why the wage on the contract has been modified")
contract_ids = fields.Many2many(
'hr.contract', string="Contracts",
default=_get_default_contract_ids,
)
display_warning = fields.Boolean("Error", compute='_compute_display_warning')
@api.depends('contract_ids')
def _compute_display_warning(self):
for index in self:
contracts = index.contract_ids
index.display_warning = any(contract.state != 'open' for contract in contracts)
@api.depends('percentage')
def _compute_description(self):
for record in self:
record.description = _('Wage indexed by %.2f%% on %s', self.percentage * 100, format_date(self.env, fields.Date.today()))
@api.model
def _index_wage(self, contract):
wage_field = contract._get_contract_wage_field()
wage = contract[wage_field]
contract.write({wage_field: wage * (1 + self.percentage)})
def action_confirm(self):
self.ensure_one()
if self.display_warning:
raise UserError(_('You have selected non running contracts, if you really need to index them, please do it by hand'))
if self.percentage:
for contract in self.contract_ids:
self._index_wage(contract)
contract.with_context(mail_create_nosubscribe=True).message_post(body=self.description, message_type="comment", subtype_xmlid="mail.mt_note")