半天离开工资单

时间:2019-07-24 08:27:04

标签: python-3.5 odoo-11

当离开请求设置为0.5天时,我使用了Odoo 11,当我生成工资单时将其视为1天

我想,当我将请求的休假设置为半天时,工资单上的工作日将不会是圆整的

@api.model
def get_worked_day_lines(self, contracts, date_from, date_to):
    """
    @param contract: Browse record of contracts
    @return: returns a list of dict containing the input that should be applied for the given contract between date_from and date_to
    """
    res = []
    # fill only if the contract as a working schedule linked
    for contract in contracts.filtered(lambda contract: contract.resource_calendar_id):
        day_from = datetime.combine(fields.Date.from_string(date_from), datetime_time.min)
        day_to = datetime.combine(fields.Date.from_string(date_to), datetime_time.max)
        # compute leave days
        leaves = {}
        day_leave_intervals = contract.employee_id.iter_leaves(day_from, day_to, calendar=contract.resource_calendar_id)
        for day_intervals in day_leave_intervals:
            for interval in day_intervals:
                holiday = interval[2]['leaves'].holiday_id
                code = holiday.holiday_status_id.name
                if holiday.holiday_status_id.impayed:
                    code = "Unpaid"
                current_leave_struct = leaves.setdefault(holiday.holiday_status_id, {
                    'name': holiday.holiday_status_id.name,
                    'sequence': 5,
                    'code': code,
                    'number_of_days': 0.0,
                    'number_of_hours': 0.0,
                    'contract_id': contract.id,
                })
                leave_time = (interval[1] - interval[0]).seconds / 3600
                current_leave_struct['number_of_hours'] += leave_time
                work_hours = contract.employee_id.get_day_work_hours_count(interval[0].date(), calendar=contract.resource_calendar_id)
                if work_hours:
                    current_leave_struct['number_of_days'] += leave_time / work_hours

        # compute worked days
        work_data = contract.employee_id.get_work_days_data(day_from, day_to, calendar=contract.resource_calendar_id)
        attendances = {
            'name': _("Normal Working Days paid at 100%"),
            'sequence': 1,
            'code': 'WORK100',
            'number_of_days': work_data['days'],
            'number_of_hours': work_data['hours'],
            'contract_id': contract.id,
        }

        res.append(attendances)
        res.extend(leaves.values())
    return res

0 个答案:

没有答案