Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,60 @@
from odoo import _, fields, models
from odoo.exceptions import UserError
# batch payslip processing
class HrPayslipEmployees(models.TransientModel):
_name = "hr.payslip.employees"
_description = "Generate payslips for all selected employees"
employee_ids = fields.Many2many(
"hr.employee", "hr_employee_group_rel", "payslip_id", "employee_id", "Employees"
)
def compute_sheet(self):
payslips = self.env["hr.payslip"]
[data] = self.read()
active_id = self.env.context.get("active_id")
if active_id:
[run_data] = (
self.env["hr.payslip.run"]
.browse(active_id)
.read(["date_start",
"date_end",
"credit_note"
#, "struct_id"
])
)
from_date = run_data.get("date_start")
to_date = run_data.get("date_end")
#struct_id = run_data.get("struct_id")
if not data["employee_ids"]:
raise UserError(_("You must select employee(s) to generate payslip(s)."))
for employee in self.env["hr.employee"].browse(data["employee_ids"]):
slip_data = self.env["hr.payslip"].get_payslip_vals(
from_date, to_date, employee.id #, contract_ids=False, struct_id=struct_id
)
res = {
"employee_id": employee.id,
"name": slip_data["value"].get("name"),
#"struct_id": slip_data["value"].get("struct_id"),
#"contract_ids": slip_data["value"].get("contract_ids"),
#"struct_id": False, # hernad: izbaciti ovo?
#"contract_id": False, # hernad: izbaciti ovo?
"payslip_run_id": active_id,
"input_line_ids": [
(0, 0, x) for x in slip_data["value"].get("input_line_ids")
],
"worked_days_line_ids": [
(0, 0, x) for x in slip_data["value"].get("worked_days_line_ids")
],
"date_from": from_date,
"date_to": to_date,
"credit_note": run_data.get("credit_note"),
"company_id": employee.company_id.id,
}
payslips += self.env["hr.payslip"].create(res)
payslips._compute_name()
for payslip in payslips:
payslip.onchange_dates()
payslips.compute_sheet()
return {"type": "ir.actions.act_window_close"}