
    9cWj+                     B    d dl mZmZmZ  G d dej                        Zy)    )apifieldsmodelsc            	          e Zd ZdZdZdZ ej                  dddd      Z ej                  d      Z
 ej                  d      Z ej                  d	d
d      Z ej                  g ddd      Z ej                  d	d      Z ej"                  d      Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej.                  ddd      Z ej2                  ddd      Z ej                  dddd !      Z ej"                  ddd"d#!      Z ej:                  ddd$d%!      Z ej@                  d&d'd(d)d*d+d,      d-        Z!y.)/XenoLeaveApprovalStepzxeno.leave.approval.stepz;Per-leave approval chain step (snapshot at submission time)zleave_id, step_orderzhr.leaveTcascade)requiredondeleteindex)r	   z	res.usersApproverz^Specific approver for this step. Blank means any Time Off Officer/Administrator may act on it.)stringhelp))pendingPending)approvedApproved)rejectedRejectedr   )defaultr	   )readonlyzleave_id.employee_idEmployee)relatedr   storez"leave_id.employee_id.department_id
Departmentzleave_id.holiday_status_idz
Leave Typezleave_id.statezLeave Statuszleave_id.request_date_fromz
Start Datezleave_id.number_of_daysDays_compute_xeno_chain_metazTotal StepszvHow many steps this leave's whole chain has, so the pending one can show '2 of 3' rather than just its own step_order.)computer   r   r   zWaiting SincezWhen this step actually became the current one: the leave's own submission time for step 1, or whenever the previous step was decided for any later step.zStuck (self-approval)zThis step's specific approver is the same person who requested the leave -- xeno_leave's own self-approval guard will never let them clear it, so it needs an HR Force Approve/Reject or a different approver configured.z%leave_id.xeno_approval_step_ids.statez*leave_id.xeno_approval_step_ids.step_orderz*leave_id.xeno_approval_step_ids.decided_atzleave_id.create_date
step_orderapprover_user_idzleave_id.employee_id.user_idc                 &   | D ]
  j                   j                  }t        |      _        j                  dk  rj                   j
                  _        nK|j                  fd      j                  d      }|rt        |      nj                   j
                  _        t        j                  xrO j                   j                  j                  xr- j                  j                   j                  j                  k(        _         y )N   c                 R    | j                   j                   k  xr | j                  S )N)r   
decided_at)ssteps    models/leave_approval_step.py<lambda>z@XenoLeaveApprovalStep._compute_xeno_chain_meta.<locals>.<lambda>I   s    allT__<M     r#   )leave_idxeno_approval_step_idslenxeno_total_stepsr   create_datexeno_waiting_sincefilteredmappedmaxboolr   employee_iduser_idxeno_is_self_block)selfsiblingsprior_decidedr%   s      @r&   r   z.XenoLeaveApprovalStep._compute_xeno_chain_meta:   s      	D}};;H$'MD!!#*.--*C*C' ( 1 1M!&&  AN#m*<22 '&*%% OMM--55O))T]]-F-F-N-NN'D#	r(   N)"__name__
__module____qualname___name_description_orderr   Many2oner)   Integerr   Charlabelr   	Selectionstate
decided_byDatetimer#   leave_employee_idleave_department_idleave_type_idleave_stateDateleave_request_date_fromFloatleave_number_of_daysr,   r.   Booleanr5   r   dependsr    r(   r&   r   r      s   &EPL#FvTITCH.JFKK&E&vJ45 FTD*E !t<J $/J (&zG)&//4\QUW#FOO,\OM"&"" tEK)fkk,\O'6<<)&F &v~~*$JK
 )*$45 (*$&B S[[/44(*Hr(   r   N)odoor   r   r   Modelr   rQ   r(   r&   <module>rT      s    $ $MFLL Mr(   