
    Xj
                     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      Z ej                  dd      Z	 ej                  dd	dd
      Z ej                  ddd      Z ej                  d      Z ej                  ddd      Z ej"                  dd      Z ej"                  dd      Z ej"                  dd      Z ej,                  ddd      d        Zd Zd Zy )!XenoEmployeeTypezxeno.employee.typeai  Employee type, mirrors XENHR's Employee Types settings page: each type has a prefix used to auto-generate xeno_employee_code for new employees created directly in Odoo (e.g. 'FT' -> FT0001, FT0002, ...). Only fires when an employee is created with a type set and no code already given, so it never touches the real HRSystem-imported codes on existing employees.nameT)requiredz`Prefix used to auto-generate this type's employee codes, e.g. 'FT' with 4 code digits -> FT0001.)r	   helpzCode Digits   z7Number of digits the sequence number is zero-padded to.)stringdefaultr	   r
      z]Next sequence number to assign for this type. Auto-increments every time a code is generated.)r   r	   r
   )r   zCode Format_compute_code_format_previewz7Preview of the next two codes this type would generate.)r   computer
   zUNIQUE(prefix)z,Prefix must be unique across employee types.zCHECK(code_digits > 0)zCode digits must be at least 1.zCHECK(next_number > 0)zNext number must be at least 1.prefixcode_digitsnext_numberc                 
   | D ]~  }|j                   r|j                  sd|_        #d|j                   |j                  |j                  fz  }d|j                   |j                  |j                  dz   fz  }|d|d|_         y )N %s%0*dr   z, z, ...)r   r   code_format_previewr   )selfrecfirstseconds       D/home/susu/odoo-hr-migration/xeno_attendance/models/employee_type.pyr   z-XenoEmployeeType._compute_code_format_preview(   sx     	FC::S__*,'

COOS__MMES__cooPQ>Q RRF7<f&EC#	F    c                 T    | D ]#  }|j                   d|j                  d|_        % y )Nz ())r   r   display_name)r   r   s     r   _compute_display_namez&XenoEmployeeType._compute_display_name2   s(     	BC,/HHcjjAC	Br   c                     | j                          d| j                  | j                  | j                  fz  }| xj                  dz  c_        |S )a   Assign and consume the next code for this type. Not
        re-entrant-safe across concurrent transactions (no row lock) --
        acceptable here since new-employee creation is a rare, HR-driven,
        one-at-a-time action, not a high-concurrency path.r   r   )
ensure_oner   r   r   )r   codes     r   _xeno_next_codez XenoEmployeeType._xeno_next_code6   sE    
 	4;;(8(8$:J:JKKAr   N)__name__
__module____qualname___name_description_orderr   Charr   r   Integerr   r   Booleanactiver   r   
Constraint_prefix_unique_code_digits_positive_next_number_positiver   dependsr   r!   r%    r   r   r   r      s'    E	B  F6;;%DV[[78F !&..a$FHK !&..D?@K V^^D)F%&++&DFH 'V&&HJN-F-- "CE-F-- "CE S[[=-8F 9FBr   r   N)odoor   r   r   Modelr   r5   r   r   <module>r8      s    $ $:v|| :r   