
    fH3                         d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lZ G d d      Zy
)    )ProgressiveVacationModelDocumentEmployeeModelEmployeeModelEmployeeLaborDatumModelBranchOfficeModel)EmployeeLaborDatumClass)EmployeeExtraDatumClass)HelperClass)date)datetime)desc)or_)DropboxClassNc                   R    e Zd Zd Zd ZddZddZd Zd Zd Z	d Z
d	 Zd
 Zd Zy)ProgressiveVacationClassc                     || _         y )N)db)selfr   s     cC:\Users\jesus\OneDrive\Desktop\escritorio\newerp\app\backend\classes\progressive_vacation_class.py__init__z!ProgressiveVacationClass.__init__   s	        c                    	 | j                   j                  t        j                  t        j                  t
        j                  t        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t        j                  t        j                   t        j"                  t        j$                  t&        j(                  t*        j,                        j/                  t        t        j                  t
        j                  k(        j1                  t        t        j                  t        j                  k(        j1                  t&        t&        j                  t        j                  k(        j1                  t*        t*        j                  t&        j(                  k(        j3                  t
        j                  |k(        j3                  t        j                  dk(        j5                  t7        t
        j                              j9                         }|syg }|D ]`  }|d   |d   |d   |d   |d   |d   |d   |d	   |d
   |d   |d   |d   dz   |d   z   dz   |d   z   |d   |d   d}|j;                  |       b |S # t<        $ r}t?        |      }d| cY d }~S d }~ww xY w)N   No data foundr                        	   
                   )	status_iddocument_type_iddocument_employee_idsupportrutidsinceuntildaysno_valid_days
visual_rutemployee_namebranch_office_idbranch_office_nameError: ) r   queryr   r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   namesfather_lastnamemother_lastnamer   r6   r   branch_office	outerjoinjoinfilterorder_byr   allappend	Exceptionstr)r   r.   dataresultrowrow_dicteerror_messages           r   get_all_with_no_paginationz3ProgressiveVacationClass.get_all_with_no_pagination   sU   7	-GGMM-77->>0EE-550440330660660550>>%00%++%55%55/@@)77!$ Y46K6N6NRjRR6  AT-):):>S>W>W)WXT13J3N3NR_RcRc3cdT+->-A-AE\EmEm-mnV488C?@V1BBaGHXd#;#A#ABCSU3 6 & F (!$Q(+A,/F"1vq6a& V VF%(V"%b'%(Ws]SW%<s%BSW%L(+B*-b'  h'#(& M 	-FM]O,,	-s%   IJ8 A(J8 8	KKKKc                 R   	 | j                   j                  t        j                  t        j                  t
        j                  t        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  
      j                  t        t        j                  t
        j                  k(        j                  t
        j                  |k(        j                  t        j                  dk(        j!                  t#        t
        j                              }|j%                         }||z   dz
  |z  }|dk  s||kD  ry|j'                  |dz
  |z        j)                  |      j+                         }|sy|||||D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j-                  d      nd |j                  r|j                  j-                  d      nd |j                  |j                  d
 c}d}	t/        j0                  |	      }
|
S c c}w # t2        $ r}t5        |      }d| cY d }~S d }~ww xY w	N$   r   zInvalid page numberr   z%Y-%m-%d)
r+   r*   r,   r-   r.   r/   r0   r1   r2   r3   )total_itemstotal_pagescurrent_pageitems_per_pagerF   r8   r   r9   r   r+   r*   r   r,   r-   r.   r/   r0   r1   r2   r3   r>   r@   rA   r   countoffsetlimitrB   strftimejsondumpsrD   rE   r   r.   pagerS   
data_queryrP   rQ   rF   itemserialized_dataserialized_resultrJ   rK   s                r   get_allz ProgressiveVacationClass.get_allK      6	-%66%//(==%--(,,(++(..(..(--(66 i-/D/G/GKcKxKx/xy  {A  {A  BZ  B^  B^  be  Be  {f  gm  gm  nC  nT  nT  XZ  nZ  g[  \d  \d  ei  jB  jH  jH  eI  \J  %**,K&7!;NKax4+-,$$dQh.%@AGGW[[]D&  +* $"0 !%  -1,A,A%)^^040I0I#'<<#xx"ggDHJJ!4!4Z!@TXDHJJ!4!4Z!@TX $		)-););O. !%

? ;$$)*  	-FM]O,,	-=   E.J 16J (J 0B2I>"J >J 	J&J!J&!J&c                 R   	 | j                   j                  t        j                  t        j                  t
        j                  t        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  
      j                  t        t        j                  t
        j                  k(        j                  t
        j                  |k(        j                  t        j                  dk(        j!                  t#        t
        j                              }|j%                         }||z   dz
  |z  }|dk  s||kD  ry|j'                  |dz
  |z        j)                  |      j+                         }|sy|||||D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j-                  d      nd |j                  r|j                  j-                  d      nd |j                  |j                  d
 c}d}	t/        j0                  |	      }
|
S c c}w # t2        $ r}t5        |      }d| cY d }~S d }~ww xY wrN   rT   r[   s                r   pdf_get_allz$ProgressiveVacationClass.pdf_get_all   rb   rc   c                     	 | j                   j                  t              j                  t	        t        |      |k(        j                         }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr8   )r   r9   r   r@   getattrfirstrD   rE   )r   fieldvaluerF   rJ   rK   s         r   getzProgressiveVacationClass.get   sh    	-77==!9:AA'JbdiBjnsBstzz|DK 	-FM]O,,	-s   AA 	A4A/)A4/A4c                    t               j                  |d   |d   |d         }t               }|d   |_        |d   |_        |d   |_        |d   |_        ||_        |d   |_        d|_        t        j                         |_        t        j                         |_        | j                  j                  |       	 | j                  j                          y# t         $ r
}Y d }~yd }~ww xY w)	Nr0   r1   r3   r,   r.    r   r   )r
   r2   r   r,   r.   r0   r1   r3   r-   r   now
added_dateupdated_dater   addcommitrD   )r   vacation_inputsr2   progressive_vacationrJ   s        r   storezProgressiveVacationClass.store   s    }!!/'":OG<TVefuVvw794CDZ4[1#25#9 %4W%="%4W%="$(!-<_-M*')$*2,,.',4LLN)()	GGNN 		s   =C 	C+&C+c                 L   	 | j                   j                  t              j                  t        j                  |k(        j                         }t        | j                         j                  d|j                        }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nz/employee_documents/r8   )r   r9   r   r@   r/   rh   r   rk   r-   rD   rE   )r   r/   rF   filerJ   rK   s         r   downloadz!ProgressiveVacationClass.download   s    	-77==!67>>?T?W?W[]?]^ddfD(,,-CT\\RDK 	-FM]O,,	-s   A=B   	B#	BB#B#c                 \   	 | j                   j                  t              j                  t        j                  |k(        j                         }|r6| j                   j                  |       | j                   j                          yy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr      No se encontró el registror8   )
r   r9   r   r@   r,   rh   deleterr   rD   rE   )r   r/   rF   rJ   rK   s        r   r{   zProgressiveVacationClass.delete   s    
	-77==!9:AABZBoBosuBuv||~Dt$ 4 	-FM]O,,	-s   BB 	B+B& B+&B+c                 F   | j                   j                  t              j                  t        j                  |k(        j                         }|sy|j                  d      }|j                         D ]  \  }}t        |||        | j                   j                          y)Nrz   T)exclude_unsetzRegistro actualizado)
r   r9   VacationModelr@   r/   one_or_nonedictitemssetattrrr   )r   r/   vacationexisting_vacationexisting_vacation_datakeyrj   s          r   updatezProgressiveVacationClass.update   s     GGMM-8??@P@PTV@VWcce 0!)T!B0668 	3JC%sE2	3 	%r   c                    t        | j                        j                  d|      }t        j                  |      }|d   d   }t        | j                        j                  d|      }t               j                  |t        j                               }t               j                  |      }|j                  d k7  r"t        |      t        |j                        z   }n|}t               j                  ||j                        }|S )Nr.   r   entrance_company)r   r   rk   rY   loadsr	   r
   monthsr   todaymonths_to_yearsrecognized_yearsintprogressive_vacation_daysprogressive_vacation_level_id)	r   r.   employee_labor_dataemployee_labor_data_decodedemployee_extra_datar   yearstotal_yearsr   s	            r   legalzProgressiveVacationClass.legal  s    5dgg>BB5#N"jj)<=&9:S&TUg&h#5dgg>BB5#N%%&A4::<P--f5//47u:,?,P,P(QQKK$/M$K$KKYl  ZK  ZK  %L!((r   c                    | j                   j                  t              j                  t        t        j
                  t        j                  k(        j                  t        j                  |k(  t        j                  dk(        j                  t        t        j                              j                         }d}|D ]/  }|j                  d}n|j                  }||j                  z   |z
  }1 |S )NrO   r   )r   r9   r   r>   r   r/   r,   r@   r.   r+   rA   r   ro   rB   r3   r2   )r   r.   progressive_vacations
taken_daysrt   r3   s         r   takenzProgressiveVacationClass.taken  s     $.F G	/1F1I1IMeMzMz1z{)--4)::b@ (4 5 @ @AB335 	 
$9 	P #119 ! 4 B B#&:&?&??-OJ	P r   N)r   r#   )__name__
__module____qualname__r   rL   ra   re   rk   ru   rx   r{   r   r   r    r   r   r   r      s<    8-t7-r7-r-,	--&)$r   r   )app.backend.db.modelsr   r   r   r   r   .app.backend.classes.employee_labor_datum_classr   .app.backend.classes.employee_extra_datum_classr	    app.backend.classes.helper_classr
   r   r   
sqlalchemyr   r   !app.backend.classes.dropbox_classr   rY   r   r   r   r   <module>r      s8    M  M R R 8     : Y Yr   