open-synergy/opnsynid-hr

View on GitHub
hr_career_transition_timesheet_computation/models/hr_career_transition.py

Summary

Maintainability
D
2 days
Test Coverage
# -*- coding: utf-8 -*-
# Copyright 2018 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from openerp import api, fields, models


class HrCareerTransition(models.Model):
    _inherit = "hr.career_transition"

    # New Data
    new_timesheet_computation_ids = fields.One2many(
        string="New Timesheet Computations",
        comodel_name="hr.career_transition_new_timesheet_computation",
        inverse_name="career_transition_id",
        readonly=True,
        states={
            "draft": [
                ("readonly", False),
            ],
        },
    )
    previous_timesheet_computation_ids = fields.One2many(
        string="Previous Timesheet Computations",
        comodel_name="hr.career_transition_previous_timesheet_computation",
        inverse_name="career_transition_id",
    )
    change_timesheet_computation = fields.Boolean(
        string="Change Timesheet Computation?",
        related="type_id.change_timesheet_computation",
    )

    @api.multi
    def _get_value_before_onchange_previous_contract(self):
        _super = super(HrCareerTransition, self)
        result = _super._get_value_before_onchange_previous_contract()
        result.update(
            {
                "new_timesheet_computation_ids": [],
                "previous_timesheet_computation_ids": [],
            }
        )
        return result

    @api.multi
    def _get_value_after_onchange_previous_contract(self, previous_contract):
        _super = super(HrCareerTransition, self)
        result = _super._get_value_after_onchange_previous_contract(previous_contract)
        result.update(
            {
                "new_timesheet_computation_ids": previous_contract._get_timesheet_computation_item_dict(),  # noqa: B950
                "previous_timesheet_computation_ids": previous_contract._get_timesheet_computation_item_dict(),  # noqa: B950
            }
        )
        return result

    @api.multi
    def _prepare_new_contract(self):
        _super = super(HrCareerTransition, self)
        result = _super._prepare_new_contract()
        computations = []
        for computation in self.new_timesheet_computation_ids:
            computations.append(
                (
                    0,
                    0,
                    {
                        "item_id": computation.item_id.id,
                    },
                )
            )
        result.update(
            {
                "computation_ids": computations,
            }
        )
        return result

    @api.multi
    def _prepare_contract_revert(self):
        _super = super(HrCareerTransition, self)
        result = _super._prepare_contract_revert()
        self.previous_contract_id.computation_ids.unlink()
        computations = []
        for computation in self.previous_timesheet_computation_ids:
            computations.append(
                (
                    0,
                    0,
                    {
                        "item_id": computation.item_id.id,
                    },
                )
            )
        result.update(
            {
                "computation_ids": computations,
            }
        )
        return result

    @api.multi
    def _prepare_contract_update(self):
        _super = super(HrCareerTransition, self)
        result = _super._prepare_contract_update()
        self.previous_contract_id.computation_ids.unlink()
        computations = []
        for computation in self.new_timesheet_computation_ids:
            computations.append(
                (
                    0,
                    0,
                    {
                        "item_id": computation.item_id.id,
                    },
                )
            )
        result.update(
            {
                "computation_ids": computations,
            }
        )
        return result


class HrCareerTransitionNewTimesheetComputation(models.Model):
    _name = "hr.career_transition_new_timesheet_computation"
    _description = "Career Transition New Timesheet Computation"

    career_transition_id = fields.Many2one(
        string="Career Transition",
        comodel_name="hr.career_transition",
    )
    item_id = fields.Many2one(
        string="Computation Item",
        comodel_name="hr.timesheet_computation_item",
        required=True,
    )


class HrCareerTransitionPreviousTimesheetComputation(models.Model):
    _name = "hr.career_transition_previous_timesheet_computation"
    _description = "Career Transition Previous Timesheet Computation"

    career_transition_id = fields.Many2one(
        string="Career Transition",
        comodel_name="hr.career_transition",
    )
    item_id = fields.Many2one(
        string="Computation Item",
        comodel_name="hr.timesheet_computation_item",
        required=True,
    )