
    `Xjd                     d    d dl mZmZmZmZ d dlmZ dZdddddZ G d d	ej                        Z
y
)    )_apifieldsmodels)	UserErrorz"hr_holidays.group_hr_holidays_userdayhourhalf_day)full_day	part_time
first_halfsecond_halfc                       e Zd ZdZdZ ej                  dd      Z ej                  dd      Z ej                  dd	d
      Z	 ej                  dd
      Z ej                  dd
      Z ej                  d      Z ej                  d      Z ej                   ddd      Z ej$                  dd      Z ej(                  g ddd      Z ej                  dd      Z ej                  dd      Z ej                  dd      Z ej                  dd      Z ej6                  dd      d        Z ej:                  d      d        Zej>                   fd       Z d  Z! xZ"S )!XenoLeaveHrUpdatezxeno.leave.hr.updatez-HR Update: edit a submitted leave applicationhr.leaveT)requiredzleave_id.employee_id)relatedreadonlyzhr.leave.typezTime Off Type)stringr   z
Start DatezEnd DateFrom)r   TozReason for changez3Recorded on the leave's chatter for audit purposes.)r   r   helpz(holiday_status_id.xeno_flexible_duration))r   zFull-day Leave)r   zPart-time Leave)r   zFirst-half Day Leave)r   zSecond-half Day LeavezLeave Type Basisr   )r   default_compute_xeno_balance)      )computedigitsemployee_idholiday_status_idc                    | j                   d   j                         }| j                   d   j                         }| D ]  }|j                  j                  }|j                  j                  }|r|sd|_        d|_        d|_        d|_        Qt        |j                  dd|fdd|fdg      j                  d            }t        |j                  dd|fdd|fdg      j                  d            }t        |j                  dd|fdd|fd	d
ddgfg      j                  d            }||_        ||_        ||_        ||z
  |z
  |_         y )Nr   zhr.leave.allocationg        r   =r    )stater"   validatenumber_of_daysr#   inconfirm	validate1)envsudor   idr    xeno_balance_totalxeno_balance_usedxeno_balance_pendingxeno_balance_remainingsumsearchmapped)	selfLeaveAllocwizardemp_idlt_idtotalusedpendings	            wizard/leave_hr_update.pyr   z'XenoLeaveHrUpdate._compute_xeno_balance1   s   $))+./446 	CF''**F,,//E,/)+.(.1+03-V,$c51*&  v&'	)E
 u||V,$c51*%  v&'	)D
 %,,V,$c51$K 89(  v&'	)G
 ).F%'+F$*1F',1DL7,BF)7	C    c                 Z    | j                   j                  r| j                  sd| _        y y y )Nr   )r    xeno_flexible_durationxeno_request_unit)r3   s    r<    _onchange_xeno_holiday_status_idz2XenoLeaveHrUpdate._onchange_xeno_holiday_status_idR   s+    !!88AWAW%/D" BX8r=   c           	      t   t         |   |      }| j                  j                  j	                  d      }|r| j                  d   j                  |      }|j                  |j                  j                  |j                  |j                  |j                  |j                  |j                  xs dd       |S )Ndefault_leave_idr   r   )r    request_date_fromrequest_date_torequest_hour_fromrequest_hour_tor@   )superdefault_getr)   contextgetbrowseupdater    r+   rD   rE   rF   rG   r@   )r3   fields_listresleave_idleave	__class__s        r<   rI   zXenoLeaveHrUpdate.default_getW   s    g!+.88##''(:;HHZ(//9EJJ%*%<%<%?%?%*%<%<#(#8#8%*%<%<#(#8#8%*%<%<%J
  
r=   c           	         | j                          | j                  j                  j                  t              st        t        d            | j                  }t        d|j                  j                  |j                  |j                        }| j                  j                  | j                  | j                  d}| j                  rp| j                  |d<   | j                  dk(  rd|d<   d|d	<   nG| j                  d
k(  rd|d<   d|d	<   n-| j                  dk(  r| j                  |d<   | j                   |d<   |j#                         j%                  |       t        d| j                  j                  | j                  | j                        }|j'                  t        d| j                  j                  j(                  ||| j*                               ddiS )Nz>Only Time Off Officers can edit a submitted leave application.u   %(type)s, %(f)s → %(t)s)typeft)r    rD   rE   r@   r   amrequest_date_from_periodrequest_date_to_periodr   pmr   rF   rG   zJHR Update by %(user)s: %(before)s changed to %(after)s. Reason: %(reason)s)userbeforeafterreason)bodyrT   zir.actions.act_window_close)
ensure_oner)   r[   	has_groupHR_OFFICER_GROUPr   r   rP   r    display_namerD   rE   r+   r?   r@   rF   rG   r*   writemessage_postnamer^   )r3   rQ   r\   valsr]   s        r<   action_applyzXenoLeaveHrUpdate.action_applyg   s   xx}}&&'78A 4 5 6 6'((55%%)>)>@
 "&!7!7!:!:!%!7!7#33

 &&(,(>(>D$%%%537/015-.''=837/015-.'';6,0,B,B()*.*>*>&'

4 '''44$$(<(<> 	!##F%;;	!  	!
 566r=   )#__name__
__module____qualname___name_descriptionr   Many2onerP   r   r    DaterD   rE   FloatrF   rG   Textr^   Booleanr?   	Selectionr@   r,   r-   r.   r/   r   dependsr   onchangerA   modelrI   rh   __classcell__)rR   s   @r<   r   r      s   "EBLvzD9H!&//*@4PK'Z^_#<$G!fkkdCO$F3"fll$/OV[["TBDF ,V^^:TK(((	
 ":7 &.EgV$-DWU'6<<0GPWX)V\\2IRYZS[[ 34C 5C@ S\\%&0 '0 	YY $7r=   r   N)odoor   r   r   r   odoo.exceptionsr   rb   _XENO_UNIT_MAPTransientModelr    r=   r<   <module>r}      s=    ' ' %7  	}7-- }7r=   