
    mh%O                         d dl Z d dlmZmZmZ d dl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d dlmZ  G d d	      Zy)
    N)BranchOfficeModelExpenseTypeModelCollectionModel)
monthrange)HelperClass)HTTPException)BytesIO)textc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)AccountabilityClassc                     || _         y )N)db)selfr   s     T/var/www/intrajisbackend.com/public_html/app/backend/classes/accountability_class.py__init__zAccountabilityClass.__init__   s	        c                    d}| j                   j                  t              j                  t        j                  |k(        j                         }| j                   j                  t              j                  t        j                  |k(        j                         }|j                  d      }	d|	d   z   dz   |	d   z   }
|j                  dz   |j                  z   dz   |
z   dz   }|j                  dk7  rz|dk(  r,|d	z   |t        |j                        |id
|iddddddgid}n|d	z   |d|it        |j                        t        |dz        dt        ||dz  z
        iddddddgid}nH|d	z   |t        |j                        |dt        |dz  |z
        idt        |dz        iddddddgid}ddz   }t        j                  ||d| dd      }t        |j                         y )N JXou3uyrc7sNnP2ewOCX38tWZ6BTm4D1-01-   r   __AsientoLibreg-01	111000101debehaberIemitidos dtefoliofechaglosadetalle	operacion
documentos	111000102
ףp=
?	221000226	221000223ףp=
?/https://libredte.cl/api/lce/lce_asientos/crear/76063822Bearer application/jsonAuthorizationContent-Typejsonheaders)r   queryr   filteridfirstr   splitbranch_officeaccounting_accountstrroundrequestspostprintr
   )r   branch_office_idexpense_type_idtax_status_idperiodamounttokenr@   expense_typesplitted_period	utf8_dateglossdataurlresponses                  r   storezAccountabilityClass.store   sv   2&78??@Q@T@TXh@hiooqww}}%56==>N>Q>QUd>dekkm ,,s+OA..4q7II	 ++112  	
 "" 	 ++y8!!'%!& !$L$C$C Df% !,V&	$ &)&+--.!")'. $e^" (!   ? ?@%tBT'v/E)F"	  "%"'))*%#0  % L;;<f#UF6MV+C%D
 $U6&=%9 !#%%&!D. @:M==#*5'!2 2
 	hmmr   c                    d}| j                   j                  t              j                  t        j                  |k(        j                         }|d k7  rX|dk7  rS|dk7  rN| j                   j                  t              j                  t        j                  |k(        j                         }nd}|dk(  r|j                  }n{| j                   j                  t              j                  t        j                  |k(        j                         }t        |j                        dz   t        |j                        z   }d}	| d}
|j                  d      d   }t        t        |j                  d            \  }}t        ||      d   }| d|d	}||
||d |j                  d d d d d d d
}t        |       dd| d}t!        j"                  |	|t%        j&                  |            }	 |j%                         }|D ]%  }|j-                  d      }|j                  d      d   }|j-                  d      }|j-                  d      }|j-                  di       }t/        |t0              r|j-                  dg       }nt/        |t2              r|}ng }|r|d   j-                  d      nd }|r|d   j-                  d      nd }|j-                  dg       }|D ]J  }d| d| d}t        |       dd| d} t!        j,                  ||       }!t        |!j*                         L ( y # t$        j(                  $ r# t        d       t        |j*                         Y y w xY w)Nr   r"   r   r   8https://libredte.cl/api/lce/lce_asientos/buscar/76063822r   r   r   02dperiodofecha_desdefecha_hastar(   r*   cuentar   
debe_desde
debe_hastar   haber_desdehaber_hastar4   r3   r7   r6   r:   rQ   .   ⚠ Error al decodificar JSON de la respuesta:r=   r'   r(   r+   r!   r$   r%   r)   2https://libredte.cl/api/lce/lce_asientos/eliminar//	/76063822Acceptr6   r:   )r   r;   r   r<   r=   r>   r   countrA   rB   r@   r?   mapintr   rF   rD   rE   r9   dumpsJSONDecodeErrorr
   get
isinstancedictlist)"r   rG   rJ   rH   rL   rM   branch_office_qtyrP   r@   rR   
since_dateperiod_yearyearmonthlast_day
until_datepayloadr:   rS   entriesentryentry_idasset_numberdatedescriptiondocuments_data	documentsr$   r%   detailsitem
delete_urldelete_headersdelete_responses"                                     r   deletezAccountabilityClass.deleter   s>   2ww}}%56==>N>Q>QUd>dekkmt#(8B(>CSWXCX $.? @ G GHYH\H\`pHp q w w y !! 33E GGMM*;<CCDUDXDX\lDlmssuM334s:SA`A`=aaEHxs^
ll3'*#v||C01edE*1-xq#/
 #%%"55
 	g /&ug.

 ==gDJJw<OP	mmoG  	,EyyH#>>#.q1L99W%D))G,K #YY|R8N.$/*..z2>	ND1*		-6)A,""5)DC1:IaL$$W-Eii	2.G ,QR]Q^^_`l_mmvw
j! 1'.ug%6"
 #+,,z>"Ro**+,'	, ## 	BC(-- 	s   (L$ $3MMc           
      
   d}|dk(  r| j                   j                  t              j                         }|D ]M  }| j                   j                  t              j                  t        j                  |j                  k(        j                  t        j                  |dz   k(        j                  t        j                  dkD        j                         }|dkD  s| j                   j                  t              j                  t        j                  |j                  k(        j                  t        j                  |dz   k(        j                  t        j                  dkD        j                         }|r|j                  nd}| j                   j                  t              j                  t        j                  dk(        j                         }	|j                  d      }
d|
d   z   dz   |
d   z   }|j                  dz   |	j                  z   dz   |z   d	z   }|dz   |d
|it!        |dz        t!        ||dz  z
        dddddddgid}ddz   }t#        j$                  ||d| dd      }t'        |j(                         P y | j                   j                  t              j                  t        j                  |k(        j                         }| j                   j                  t              j                  t        j                  |k(        j                  t        j                  |dz   k(        j                  t        j                  dkD        j                         }| j                   j                  t              j                  t        j                  |j                  k(        j                  t        j                  |dz   k(        j                  t        j                  dkD        j                         }|dkD  r| j                   j                  t              j                  t        j                  dk(        j                         }	|j                  d      }
d|
d   z   dz   |
d   z   }|j                  dz   |	j                  z   dz   |z   d	z   }|dz   |d
it!        |dz        t!        ||dz  z
        dddddddgid}ddz   }t#        j$                  ||d| dd      }t'        |j(                         y y )Nr   r   r      r   r   r   r   	_Abonadosr,   r-   )	441000102r.   r   r    r!   r"   r#   r&   r1   r2   r3   r4   r5   r8   )r   r;   r   allr   r<   rG   r=   
added_datesubscribersrj   r>   r   r?   r@   rA   rC   rD   rE   rF   r
   )r   rG   rJ   rL   branch_officesr@   collection_qty
collectionrK   rM   rN   rO   rP   rQ   rR   rS   s                   r   store_subscriber_assetsz+AccountabilityClass.store_subscriber_assets   s   2q !WW]]+<=AACN!/ 8)!%!?!F!FGgGgkxk{k{G{!|  "D  "D  ET  E_  E_  ci  lq  cq  Eq  "r  "y  "y  zI  zU  zU  XY  zY  "Z  "`  "`  "b!A%!%!?!F!FGgGgkxk{k{G{!|  "D  "D  ET  E_  E_  ci  lq  cq  Eq  "r  "y  "y  zI  zU  zU  XY  zY  "Z  "`  "`  "bJ7AZ33qF#'77==1A#B#I#IJZJ]J]acJc#d#j#j#lL&,ll3&7O %(: :S @?STCU UI *77!"*==> "" (	(
 **  &,e^%* %0)" 27vd{1C16v7M1N*"	( *- */112%&-"+D0 LzYC'}}!/6ug->,>! H (--(q8)t !GGMM*;<CCDUDXDX\lDlmssuM7>>?_?_cs?st{{  }L  }W  }W  [a  di  [i  }i  j  q  q  rA  rM  rM  PQ  rQ  R  X  X  ZJ!WW]]?;BB?CcCcgtgwgwCwx  AP  A[  A[  _e  hm  _m  Am  n  u  u  vE  vQ  vQ  TU  vU  V  \  \  ^N!#ww}}-=>EEFVFYFY]_F_`ffh"(,,s"3!OA$66<q?QQ	 &33&99:  $	$
 &&  "(%!& !,V% .36$;-?-26VD[3I-J&	$ &)&+--.!")'0 H:U#==+25'):(: hmm$c "r   c                    d}|d k7  rp|dk7  rk|dk7  rf| j                   j                  t              j                  t        j                  |k(        j                         }t        |j                        dz   }nd}d}| d}|j                  d      d   }t        t        |j                  d            \  }	}
t        |	|
      d	   }| d|d
}||||d d d d d d d d d}t        |       dd| d}t        j                  ||t        j                   |            }	 |j                         }|D ]  }|j'                  d      }|j                  d      d	   }|j'                  d      }|j'                  d      }|j'                  di       }t)        |t*              r|j'                  dg       }nt)        |t,              r|}ng }|j'                  dg       }|D ]J  }d| d| d}t        |       dd| d}t        j&                  ||      }t        |j$                         L  y # t        j"                  $ r# t        d       t        |j$                         Y y w xY w)Nr   r"   r   r   AbonadosrV   r   r   r   rW   rX   r4   r3   ra   rb   rc   r=   r'   r(   r+   r!   r)   rd   re   rf   rg   ri   )r   r;   r   r<   r=   r>   rB   r@   r?   rk   rl   r   rF   rD   rE   r9   rm   rn   r
   ro   rp   rq   rr   )r   rG   rJ   rL   r@   rP   rR   rt   ru   rv   rw   rx   ry   rz   r:   rS   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   s                                r   delete_subscriber_assetsz,AccountabilityClass.delete_subscriber_assetsB  s{   2t#(8B(>CSWXCX GGMM*;<CCDUDXDX\lDlmssuM334{BEEHxs^
ll3'*#v||C01edE*1-xq#/
 #%%
 	g /&ug.

 ==gDJJw<OP	mmoG  	,EyyH#>>#.q1L99W%D))G,K #YY|R8N.$/*..z2>	ND1*		ii	2.G ,QR]Q^^_`l_mmvw
j! 1'.ug%6"
 #+,,z>"Ro**+,!	, ## 	BC(-- 	s   H& &3IIc           	      b   	 d}t        j                  |      }|j                          t        |j                        }t        j                  |d      }|j                  }|st        dd      t        j                  ||d   d      }|j                  d	      }|j                         D ]'  \  }}		 |	d
   }
|	d   }|	d   }|	d   }d}| j                  j                  t              j                  t        j                   |
k(        j#                         }|st%        d|dz    d       | j                  j                  t&              j                  t&        j(                  |k(        j#                         }|st%        d|dz    d       |j+                  d      }d|d   z   dz   |d   z   }|j,                  dz   |j(                  z   dz   |z   dz   }|j(                  dk7  r{|dk(  r,|dz   |t/        |j(                        |id|idddd	ddgid}nt1        |dz        }t1        ||z
        }|dz   |d |it/        |j(                        |d!|idd"dd	ddgid}n@t1        |d#z        }||z
  }|dz   |t/        |j(                        |d$|id |idddd	ddgid}d%}t        j2                  ||d&| d'd()      }t%        |j4                         * d+d,d-S # t6        $ r}t%        d|dz    d*|        Y d }~Sd }~ww xY w# t6        $ r}t        dd.t/        |             d }~ww xY w)/Nr   openpyxl)enginei  z El archivo Excel no tiene hojas.)status_codedetailr   )
sheet_namer   r"   rG   rA   rK   rJ   z[Fila    z] Sucursal no encontradaz] Tipo de gasto no encontrador   r   r   r   r   r   r   r   r   r    r!   r#   r&   r-   r,   r.   Er0   r/   z7https://libredte.cl/api/lce/lce_asientos/crear/76063822r3   r4   r5   r8   z] Error procesando fila: successzProceso completado)statusmessagezError al procesar: )rD   ro   raise_for_statusr	   contentpd	ExcelFilesheet_namesr   
read_excelfillnaiterrowsr   r;   r   r<   r=   r>   rF   r   rA   r?   r@   rB   rC   rE   r
   	Exception)r   file_urlrL   rS   
excel_filexlsr   dfindexrowrG   rA   rK   rJ   rI   r@   rM   rN   rO   rP   rQ   netoivabaserR   	row_errores                              r   !read_store_massive_accountabilityz5AccountabilityClass.read_store_massive_accountability  s   j	X6E||H-H%%' !1!12J,,z*=C//K#<^__s{1~jQB2B kkm VT
sUT'*+='>$),-A)B& ]F ]F$%M$(GGMM2C$D$K$KL]L`L`brLr$s$y$y${M(uqyk1IJK #'77==1A#B#I#IJZJmJm  pB  KB  $C  $I  $I  $KL'uqyk1NOP &,ll3&7O %(: :S @?STCU UI &33c9$778:=>!"$34  $66)C(A-)/%).-01P1P-QSY,Z.96-B," .1/9BQR<S;T.U	$D $)$#7D"'"6C)/%).-8&,A(+L,K,K(Ld(3S.&," .1/9BQR<S;T.U$D  %Vd]3"Vm%+e^%* %((G(G$H&$/)" +6t)<( *-+5Q8O7P*Q  TC'}}!/6ug->,>! H (--(gVTp (4HII ! TF519+-FykRSST
  	XC:McRSfX8VWW	Xs]   B1L 4A7K+L ,A!KL EKL 	L%K?9L ?LL 	L.L))L.N)	__name__
__module____qualname__r   rT   r   r   r   r    r   r   r   r      s*    aFW,ru%nM,^kXr   r   )rD   app.backend.db.modelsr   r   r   r9   calendarr    app.backend.classes.helper_classr   fastapir   ior	   pandasr   
sqlalchemyr
   r   r   r   r   <module>r      s1     V V   8 !   qX qXr   