跳至內容
選單
此問題已被標幟
1 回覆
2174 瀏覽次數
Trying to create leave allocation based on a field in hr.employee model.
    @api.onchange('confirm_date')
    def _onchange_confirm_date(self):
        if self.confirm_date:
         
            # Create sick leave allocation
            self.env['hr.leave.allocation'].create({
                'name': 'Automatic Sick Leave Allocation',
                # 'holiday_status_id':
self.env.ref('hr_holidays.holiday_status_sl').id,
                'holiday_status_id': 1,
                'holiday_type': 'employee',
                # 'employee_ids': [(4, self.id)],
                'employee_ids': 20,
                'employee_company_id': 1,
                'department_id': 3,
​'number_of_days': 15.0,
                'state': 'draft',
                'allocation_type': 'regular',
                'date_from': '2024-01-21',
                'date_to': '2024-12-21',
            }) it's giving me the validation error: The employee, department, company or employee category of this request is missing. Please make sure that your user login is linked to an employee.
Here is the sql constraints causing the error:

    _sql_constraints = [
        ('type_value',
         "CHECK( (holiday_type='employee' AND (employee_id IS NOT NULL OR multi_employee IS TRUE)) or "
         "(holiday_type='category' AND category_id IS NOT NULL) or "
         "(holiday_type='department' AND department_id IS NOT NULL) or "         "(holiday_type='company' AND mode_company_id IS NOT NULL))",
         "The employee, department, company or employee category of this request is missing. Please make sure that your user login is linked to an employee."),
        ('duration_check', "CHECK( ( number_of_days > 0 AND allocation_type='regular') or (allocation_type != 'regular'))", "The duration must be greater than 0."),
    ] what am i doing wrong here?
頭像
捨棄
最佳答案

Hi,

The error message indicates that the employee, department, company, or employee category is missing from your leave allocation record. This is due to the SQL constraint in the hr. leave. allocation model.

@api.onchange('confirm_date')
def _onchange_confirm_date(self):
if self.confirm_date:
    # Create sick leave allocation
    leave_allocation_data = {
        'name': 'Automatic Sick Leave Allocation',
        'holiday_status_id': 1, 
        'holiday_type': 'employee',
        'employee_ids': [(4, self.id)], 
        'employee_company_id': self.company_id.id
        'department_id': self.department_id.id
        'number_of_days': 15.0,
        'state': 'draft',
        'allocation_type': 'regular',
        'date_from': '2024-01-21',
        'date_to': '2024-12-21',
    }

    self.env['hr.leave.allocation'].create(leave_allocation_data)



Following my assumptions about your HR model structure, I've added the employee, company, and department information in this example. Based on your real model structure and requirements, modify the fields as necessary. To meet the SQL requirements, make sure the values you're entering for each field are legitimate.


Hope it helps

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
2
1月 23
10158
2
8月 25
31596
0
12月 19
4088
1
8月 19
4657
1
10月 18
8651