
    #^hw/                     |    d dl Z d dl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)
monthrange)HelperClass)HTTPException)BytesIO)textc                   $    e Zd Zd Zd Zd Zd Zy)AccountabilityClassc                     || _         y )N)db)selfr   s     O/var/www/jisbackend.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=
?z/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   z8https://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_hastar2   r1   )r5   r4   )r8   rO   u.   ⚠ Error al decodificar JSON de la respuesta:r;   r&   r'   r*   r    r#   r$   r(   z2https://libredte.cl/api/lce/lce_asientos/eliminar//z	/76063822)Acceptr4   )r8   )r   r9   r   r:   r;   r<   r   countr?   r@   r>   r=   mapintr   rD   rB   rC   r7   dumpsJSONDecodeErrorr	   get
isinstancedictlist)"r   rE   rH   rF   rJ   rK   branch_office_qtyrN   r>   rP   
since_dateperiod_yearyearmonthlast_day
until_datepayloadr8   rQ   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           	      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!   rE   r?   rI   rH   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-   Er/   r.   z7https://libredte.cl/api/lce/lce_asientos/crear/76063822r1   r2   r3   r6   z] Error procesando fila: successzProceso completado)statusmessagezError al procesar: )rB   rd   raise_for_statusr   contentpd	ExcelFilesheet_namesr   
read_excelfillnaiterrowsr   r9   r   r:   r;   r<   rD   r   r?   r=   r>   r@   rA   rC   r	   	Exception)r   file_urlrJ   rQ   
excel_filexlsr   dfindexrowrE   r?   rI   rH   rG   r>   rK   rL   rM   rN   rO   netoivabaserP   	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   rR   r}   r    r   r   r   r      s    aFW,rkXr   r   )rB   app.backend.db.modelsr   r   r7   calendarr    app.backend.classes.helper_classr   fastapir   ior   pandasr   
sqlalchemyr	   r   r   r   r   <module>r      s.     E   8 !   kX kXr   