
    EXj                     V    d dl mZmZmZmZ d dlmZ dZ G d dej                        Z	y)    )_apifieldsmodels)	UserErrorz"hr_holidays.group_hr_holidays_userc                      e Zd ZdZdZ ej                  ddd      Z ej                  ddd      Z	 ej                  d	d
      Z ej                  g dddd      Z ej                  d      Z ej                  d      Z ej"                  dd      Z ej"                  dd      Z ej(                  d      Z ej.                  d      d        Zd Zy)XenoLeaveHrCreatezxeno.leave.hr.createa$  HR: create a leave request directly on behalf of one or more employees -- no approval chain, immediately approved, past dates allowed. Mirrors XENHR's storeForEmployee (HR/admin creating on someone else's behalf skips both the approval workflow and the advance-notice/backdate timing limits).zhr.employeeEmployeeT)stringrequiredzhr.leave.typez
Leave Typez(holiday_status_id.xeno_flexible_duration)relatedreadonly))full_dayzFull-day Leave)	part_timezPart-time Leave)
first_halfzFirst-half Day Leave)second_halfzSecond-half Day LeavezLeave Type Basisr   )r   defaultr   z
Start Time)r   zEnd Timez
Start DatezEnd DateReasonholiday_status_idc                 ,    | j                   sd| _        y y )Nr   )xeno_flexible_durationxeno_request_unit)selfs    A/home/susu/odoo-hr-migration/xeno_leave/wizard/leave_hr_create.py_onchange_holiday_status_idz-XenoLeaveHrCreate._onchange_holiday_status_id$   s    **%/D" +    c                 4   | j                          | j                  j                  j                  t              st        t        d            | j                  | j                  k  rt        t        d            | j                  dk(  r-| j                  | j                  k  rt        t        d            | j                  d   }| j                  d   }| j                  D ]  }|j                  | j                  j                  | j                  | j                  | j                  | j                  d}| j                  dk(  r| j                  |d<   | j                  |d<   ||j!                  d	
      j#                  |      z  } |j%                          ddiS )NzCOnly Time Off Officers can create a leave on behalf of an employee.z(End date must be on or after start date.r   z"End time must be after start time.zhr.leave)employee_idr   r   request_date_fromrequest_date_tonamerequest_hour_fromrequest_hour_toT)xeno_hr_direct_createtypezir.actions.act_window_close)
ensure_oneenvuser	has_groupHR_OFFICER_GROUPr   r   r    r   r   r#   r"   employee_idsidr   r!   with_contextcreate_xeno_hr_created_approve)r   Leavecreatedemployeevalss        r   action_applyzXenoLeaveHrCreate.action_apply)   sv   xx}}&&'78A  ! ! $"8"88AHIJJ!![0T5I5ITMcMc5cABCDD$((:&)) 	SH'{{%)%;%;%>%>%)%;%;%)%;%;#'#7#7		D %%4,0,B,B()*.*>*>&'u)))ELLTRRG	S 	((*566r   N)__name__
__module____qualname___name_descriptionr   	Many2manyr+   Many2oner   Booleanr   	Selectionr   Floatr"   r#   Dater   r    Textr!   r   onchanger   r4    r   r   r	   r	      s    "E	2  $6##M*tTL'W[\+V^^:TK(((	
 ": %L9"fll*5O#<$G!fkkdCO6;;h'DS\\%&0 '07r   r	   N)
odoor   r   r   r   odoo.exceptionsr   r*   TransientModelr	   rB   r   r   <module>rF      s&    ' ' %7 =7-- =7r   