mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-19 00:52:00 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1,94 @@
|
|||
# Copyright 2019 - Eficent http://www.eficent.com/
|
||||
# Copyright 2019 Serpent Consulting Services Pvt. Ltd.
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import fields, models
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools.translate import _
|
||||
|
||||
|
||||
class HrPayslipChangeState(models.TransientModel):
|
||||
|
||||
_name = "hr.payslip.change.state"
|
||||
_description = "Change state of a payslip"
|
||||
|
||||
state = fields.Selection(
|
||||
selection=[
|
||||
("draft", "Set to Draft"),
|
||||
("verify", "Compute Sheet"),
|
||||
("done", "Confirm"),
|
||||
("cancel", "Cancel Payslip"),
|
||||
("cdraft", "Cancel then Draft"),
|
||||
],
|
||||
string="Action",
|
||||
help="* When the payslip is created the status is 'Draft'.\
|
||||
\n* If the payslip is under verification, the status is "
|
||||
"'Compute Sheet'. \
|
||||
\n* If the payslip is confirmed then status is set to 'Done'.\
|
||||
\n* When user cancel payslip the status is 'Rejected'.",
|
||||
)
|
||||
|
||||
def change_state_confirm(self):
|
||||
record_ids = self.env.context.get("active_ids", False)
|
||||
payslip_obj = self.env["hr.payslip"]
|
||||
new_state = self.state
|
||||
records = payslip_obj.browse(record_ids)
|
||||
|
||||
for rec in records:
|
||||
if new_state == "draft":
|
||||
if rec.state == "cancel":
|
||||
rec.action_payslip_draft()
|
||||
else:
|
||||
raise UserError(
|
||||
_(
|
||||
"Only rejected payslips can be reset to "
|
||||
"draft, the payslip %s is in "
|
||||
"%s state" % (rec.name, rec.state)
|
||||
)
|
||||
)
|
||||
elif new_state == "verify":
|
||||
if rec.state in ["draft", "verify"]:
|
||||
rec.compute_sheet()
|
||||
else:
|
||||
raise UserError(
|
||||
_(
|
||||
"Only draft payslips can be verified,"
|
||||
"the payslip %s is in "
|
||||
"%s state" % (rec.name, rec.state)
|
||||
)
|
||||
)
|
||||
elif new_state == "done":
|
||||
if rec.state in ("verify", "draft"):
|
||||
rec.action_payslip_done()
|
||||
else:
|
||||
raise UserError(
|
||||
_(
|
||||
"Only payslips in states verify or draft"
|
||||
" can be confirmed, the payslip %s is in "
|
||||
"%s state" % (rec.name, rec.state)
|
||||
)
|
||||
)
|
||||
elif new_state == "cancel":
|
||||
if rec.state != "cancel":
|
||||
rec.action_payslip_cancel()
|
||||
else:
|
||||
raise UserError(
|
||||
_(
|
||||
"The payslip %s is already canceled "
|
||||
"please deselect it" % rec.name
|
||||
)
|
||||
)
|
||||
elif new_state == "cdraft":
|
||||
if rec.state != "cancel":
|
||||
rec.action_payslip_cancel()
|
||||
rec.action_payslip_draft()
|
||||
|
||||
|
||||
return {
|
||||
"domain": "[('id','in', [" + ",".join(map(str, record_ids)) + "])]",
|
||||
"name": _("Payslips"),
|
||||
"view_mode": "tree,form",
|
||||
"res_model": "hr.payslip",
|
||||
"view_id": False,
|
||||
"context": False,
|
||||
"type": "ir.actions.act_window",
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue