71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class HrPayslipRun(models.Model):
|
|
_name = "hr.payslip.run"
|
|
_inherit = ["mail.thread", "mail.activity.mixin"]
|
|
_description = "Payslip Batches"
|
|
_order = "id desc"
|
|
|
|
name = fields.Char(required=True, readonly=True)
|
|
slip_ids = fields.One2many(
|
|
"hr.payslip",
|
|
"payslip_run_id",
|
|
string="Payslips",
|
|
readonly=True,
|
|
)
|
|
state = fields.Selection(
|
|
[("draft", "Draft"), ("close", "Close")],
|
|
string="Status",
|
|
index=True,
|
|
readonly=True,
|
|
copy=False,
|
|
tracking=1,
|
|
default="draft",
|
|
)
|
|
company_id = fields.Many2one(
|
|
"res.company",
|
|
string="Company",
|
|
required=True,
|
|
copy=False,
|
|
default=lambda self: self.env.company,
|
|
)
|
|
date_start = fields.Date(
|
|
string="Date From",
|
|
required=True,
|
|
readonly=True,
|
|
default=lambda self: fields.Date.today().replace(day=1),
|
|
)
|
|
date_end = fields.Date(
|
|
string="Date To",
|
|
required=True,
|
|
readonly=True,
|
|
default=lambda self: fields.Date.today().replace(day=1)
|
|
+ relativedelta(months=+1, day=1, days=-1),
|
|
)
|
|
credit_note = fields.Boolean(
|
|
readonly=True,
|
|
help="If its checked, indicates that all payslips generated from here "
|
|
"are refund payslips.",
|
|
)
|
|
struct_id = fields.Many2one(
|
|
"hr.payroll.structure",
|
|
string="Structure",
|
|
readonly=True,
|
|
help="Defines the rules that have to be applied to this payslip batch, "
|
|
"accordingly to the contract chosen. If you let empty the field "
|
|
"contract, this field isn't mandatory anymore and thus the rules "
|
|
"applied will be all the rules set on the structure of all contracts "
|
|
"of the employee valid for the chosen period",
|
|
)
|
|
|
|
def draft_payslip_run(self):
|
|
return self.write({"state": "draft"})
|
|
|
|
def close_payslip_run(self):
|
|
return self.write({"state": "close"})
|