
    ~h                         d dl mZ 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Zd dlmZ d dlZd dlmZ d d	lmZ d dlZd dlZd d
lmZ d dlmZ  G d d      Zy)    )Session)DteModelCustomerModelBranchOfficeModel	UserModelExpenseTypeModel)CustomerClass)HelperClass)	FileClassN)datetime)desc)mysql)or_)HTTPExceptionc                   |    e Zd ZdefdZddZddZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)CustomerBillClassdbc                 2    || _         t        |      | _        y )N)r   r   
file_class)selfr   s     \C:\Users\jesus\OneDrive\Desktop\escritorio\newerp\app\backend\classes\customer_bill_class.py__init__zCustomerBillClass.__init__   s    #B-    Nc                 
   	 g }|j                  t        j                  dk(         |j                  t        j                  dk(         |j                  t        j                  d k7         |dk(  r|j                  t        t        j                  dk(  t        j                  dk(  t        j                  dk(               t        j                         j                  d      }|j                  t        j                  |k(          | 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&        t&        j                  t        j                  k(        j0                  | j3                  t5        t        j                              }n|j                  t        t        j                  dk(  t        j                  dk(                | 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&        t&        j                  t        j                  k(        j0                  | j3                  t5        t        j                              }|dkD  rM|j7                         }t9        |j:                  j=                  t?        j@                         d	d
i             ||z   dz
  |z  }	t9        |	       |dk  s||	kD  rdddS |jC                  |dz
  |z        jE                  |      jG                         }
|
sdddS |
D cg c]  }|j                  |j                  |j                  |j(                  |j$                  |j                  |j                   |j                  |j"                  r|j"                  j                  d      nd |j,                  d
 }}||	|||dS |jG                         }
|
D cg c]  }|j                  |j                  |j                  |j(                  |j                  |j$                  |j                   |j"                  r|j"                  j                  d      nd |j,                  |j                  d
 }}|S c c}w c c}w # tH        $ r}tK        |      }d|dcY d }~S d }~ww xY w)N   !         %m-%Y      r   literal_bindsTdialectcompile_kwargserrorInvalid page numberstatusmessageNo data found%d-%m-%Y
idrutbranch_office_idcustomerchip_idfoliototal	status_id
added_datebranch_officetotal_itemstotal_pagescurrent_pageitems_per_pagedata
r.   r/   r0   r1   r3   r2   r4   r6   r7   r5   )&appendr   dte_version_iddte_type_idr/   r   r5   r   nowstrftimeperiodr   queryr.   r0   r3   r4   r6   r2   r   r1   r   r7   	outerjoinfilterorder_byr   countprint	statementcompiler   r$   offsetlimitall	Exceptionstr)r   rol_idgrouppager<   filterscurrent_periodrE   r9   r:   r=   dteserialized_dataeerror_messages                  r   get_allzCustomerBillClass.get_all   s   y	AGNN822a78NN8//256NN8<<4/0zs8#5#5#:H<N<NRS<SU]UgUgklUlmn!)!8!8!Ax.@AKK--NNNN''LL&&$$!**%33 )%'8';';x?X?X'X)!=#4#4#D&!" (++,# * s8#5#5#:H<N<NRS<STUKK--NNNN''LL&&$$!**%33 )%'8';';x?X?X'X)!=#4#4#D&!" ((# , ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ "##  &&77(+(<(< #"{{ YY YY!$IL#.."9"9*"E]a%(%6%6$ ## ## $/#.$(&4+  yy{ "##  &&77(+(<(< # YY"{{ YYIL#.."9"9*"E]a%(%6%6!$$ ## ## '&O##4##  	AFM%-@@	AsP   QW 
:W W 	BW	W (W <BWW 
W 	X(W=7X=Xc                    	 g }|d k7  r"|j                  t        j                  |k(         |d k7  r'|dk7  r"|j                  t        j                  |k(         |2|j                  t        j
                  j                  d| d             |d k7  r"|j                  t        j                  |k(         |d k7  r"|j                  t        j                  |k(         |j                  t        j                  dk(         |j                  t        j                  dk         |j                  t        j                  dk(         |j                  t        j                  d k7         |d k7  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        t        j                  t&        j,                  k(        j+                  t        t        j                  t        j                  k(        j.                  | j1                  t3        t        j                              }	nI | 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        t        j                  t        j                  k(        j.                  | j1                  t3        t        j                              }	|dkD  rM|	j5                         }
t7        |	j8                  j;                  t=        j>                         ddi	             |
|z   dz
  |z  }t7        |       |dk  s||kD  rd
ddS |	jA                  |dz
  |z        jC                  |      jE                         }|sd
ddS |D cg c]  }|j                  |j                  |j                  |j
                  |j$                  |j                  |j                   |j                  |j"                  r|j"                  jG                  d      nd |j(                  d
 }}|
||||dS |	jE                         }|D cg c]  }|j                  |j                  |j                  |j
                  |j                  |j$                  |j                   |j"                  r|j"                  jG                  d      nd |j(                  |j                  d
 }}|S c c}w c c}w # tH        $ r}tK        |      }d
|dcY d }~S d }~ww xY w)N %r   r    r   r   r"   Tr#   r&   r'   r(   r+   r,   r-   r8   r>   )&r?   r   r0   r/   r   r1   liker5   r   supervisor_idr@   rA   r   rE   r.   r3   r4   r6   r2   r   r7   rF   principal_supervisorrG   rH   r   rI   rJ   rK   rL   r   r$   rM   rN   rO   rC   rP   rQ   )r   r0   r/   r1   r5   r`   rT   r<   rU   rE   r9   r:   r=   rW   rX   rY   rZ   s                    r   searchzCustomerBillClass.search   s   @	AG4'x88<LLMd{sbyx||s23#}55::Qxj?KLD x11Y>?$y66-GHNN822a78NN8--12NN8//256NN8<<4/0$KK--NNNN''LL&&$$!**%33 )%'8';';x?X?X'X)y}}0A0V0VV)!=#4#4#D&%& ((' 0KK--NNNN''LL&&$$!**%33 )%'8';';x?X?X'X)!=#4#4#D&!" ((# , ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ "##  &&77(+(<(< #"{{ YY YY!$IL#.."9"9*"E]a%(%6%6$ ## ## $/#.$(&4+  yy{ "##  &&77(+(<(< # YY"{{ YYIL#.."9"9*"E]a%(%6%6!$$ ## ## '&O##4##  	AFM%-@@	AsP   R X8 #:X8 X8 "BX.7	X8 X8 BX3*X8 .
X8 8	YYYYc                    | j                   j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |j                  |_        |j                  |_        |j                  dk(  r|j                  dz   n|j                  |_        |j                  dk(  rt        |j                  dz   dz        nt        |j                  dz        |_        |j                  dk(  r+|j                  dz   t        |j                  dz   dz        z
  n$|j                  t        |j                  dz        z
  |_        d|_        |j                  dk(  r|j                  dz   n|j                  |_        |j                  |_	        d|_        | j                   j%                          | j                   j'                  |       y	)
H
        Actualiza los datos de la patente en la base de datos.
          Dte no encontradostatus_codedetailr     
ףp=
?r   r   N)r   rE   r   rG   r.   firstr   r0   r/   r2   amountcash_amountroundsubtotaltaxdiscountr4   r5   commitrefresh)r   	form_datarW   s      r   updatezCustomerBillClass.update  s    ggmmH%,,X[[ILL-HIOOQC8KLL  )99--5>5F5F!5K)**T1QZQaQa@I@Q@QUV@Vui..5t;<\aclcscsuyby\zW`WhWhlmWm9##d*eY5E5E5Ld4R.SSs|  tD  tD  GL  NW  N^  N^  `d  Md  Ge  te/8/@/@A/EI$$t+9K[K[	''r   c                 N   | j                   j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |j                  |_        |j                  |_        |j                  |_	        |j                  j                  d      }|d   dz   |d   z   |_        |j                  |_        d|_        | j                   j                          | j                   j                  |       | j!                  |       y)	rd   re   rf   rg   -r   r   r!   N)r   rE   r   rG   r.   rl   r   expense_type_idpayment_type_idpayment_datesplitrD   commentr5   rs   rt   create_account_asset)r   ru   rW   rD   s       r   change_statuszCustomerBillClass.change_status*  s     ggmmH%,,X[[ILL-HIOOQC8KLL (77'77$11''--c2AY_vay0
''!!#&r   c                    d}|j                   dk(  r|j                  dz   }t        j                  |      }| j                  j                  t              j                  t        j                  |j                  k(        j                         }| j                  j                  t              j                  t        j                  |j                  k(        j                         }|j                  dz   |j                  z   dz   |z   dz   t        |j                        z   dz   t        |j                         z   }|j"                  }||d|i|j                  j%                         t'        |dz        dt'        ||dz  z
        id	d
d|j                   |j                   dgid}	n|j                  dz   }t        j                  |      }| j                  j                  t              j                  t        j                  |j                  k(        j                         }| j                  j                  t              j                  t        j                  |j                  k(        j                         }|j                  dz   |j                  z   dz   |z   dz   t        |j                        z   dz   t        |j                         z   }|j"                  }|||j                  j%                         t'        |dz        dt'        ||dz  z
        id|id	d
d|j                   |j                   dgid}		 ddz   }
t)        j*                  |
|	d| dd      }|j,                  dk(  rydS # t.        $ r}t1        d|       Y d }~y d }~ww xY w)N JXou3uyrc7sNnP2ewOCX38tWZ6BTm4D1r   z-01_	_Factura_	111000102rk   	221000226)debehaberIemitidos)rW   r3   )fechaglosadetalle	operacion
documentos_NotaCredito_z/https://libredte.cl/api/lce/lce_asientos/crear/76063822Bearer application/jsonAuthorizationzContent-Typejsonheaders   z%Accounting entry created successfullyz!Accounting entry creation failed.Error al conectarse a la API:)rA   rD   r
   convert_to_utf8r   rE   r   rG   r.   ry   rl   r   r0   r7   accounting_accountrQ   r3   r4   stripro   requestspostrh   rP   rJ   )r   ru   TOKENamerican_date	utf8_dateexpense_typer7   glossrm   r=   urlresponserY   s                r   r~   z&CustomerBillClass.create_account_asset@  s   2  B&%,,u4M#33MBI77==)9:AA ##y'@'@@eg  !GGMM*;<CC!$$	(B(BBeg 
 ++112  	
  ill#$  ioo&'  __F ' $V %77==?vPT}AU#U6Vd]+C%D	 !#,#8#8%.__!D. &,,u4M#33MBI77==)9:AA ##y'@'@@eg  !GGMM*;<CC!$$	(B(BBeg 
 ++112  	
 "" ill#$  ioo&'  __F ' %77==?vPT}AU#U6Vd]+C%D
 $V !#,#8#8%.__!D.	CzQC}}'.ug%6$6H ##s*>:; 	115	s   62M+ )M+ +	N
4NN
c                 4   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        | j                   j                          | j                   j                  |       y )Nre   rf   rg   r   
r   rE   r   rG   r.   rl   r   r5   rs   rt   r   r.   rW   s      r   rejectzCustomerBillClass.reject  sg    ggmmH%,,X[[B->?EEGC8KLLr   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&                  t(        j*                        j-                  t(        t(        j                  t        j
                  k(        j-                  t        t        j                  t        j                  k(        j/                  t        j                  |k(        j1                         }|r
i d|j                  d|j                  d|j
                  d|j                  d|j                  d|j                  d|j                   d|j"                  d	|j                  d
|j                  d|j                  d|j                  d|j                  d|j$                  d|j&                  r|j&                  j3                  d      nd d|j*                  }d|i}t5        j6                  |      }|S y# t8        $ r}t;        |      }d| cY d }~S d }~ww xY w)Nr.   r/   r0   r1   emailphoner2   r3   activity	region_id
commune_idaddressr4   r5   r6   r,   r7   customer_bill_dataz3No se encontraron datos para el campo especificado.Error: )r   rE   r   r.   r/   r0   r4   r   r   rn   r1   r   r   r   r   r   r2   r3   r5   r6   r   r7   rF   rG   rl   rC   r   dumpsrP   rQ   )r   r.   
data_queryr   resultserialized_resultrY   rZ   s           r   getzCustomerBillClass.get  s)   +	-x{{HLL(B[B[]e]k]kmz  nC  nC  EM  EY  EY  [h  [q  [q  s@  sJ  sJ  LY  Ld  Ld  fs  f|  f|  ~K  ~Q  ~Q  S`  Sf  Sf  hp  hx  hx  zB  zH  zH  JR  J\  J\  ^f  ^q  ^q  sD  sR  sR  S!	"35F5I5IXMfMf5fg!	-1B1Bhll1RSx{{b01	  &*--&:>>& '
(C(C& 
 3 3	&
 Z--& Z--& z11& Z--& 
 3 3&  !5!5& !*"7"7& z11& Z--&  !5!5& !PZPePe*"7"7"@"@"Lko&  $Z%=%=!&"* )*<
 %)JJv$6!(( M 	-FM]O,,	-s   J9J= =	K KK K c                    t        | j                        j                  |j                        }t	        j
                  |      }| j                  ||      }||dk(  ry| j                  |d   d   |      }|j                  dk(  rd k7  rt               }t        j                         j                  d      }|j                  |_        |j                  |_        d|_        d|_        d|_        |j$                  |_        |j                  |_        ||_        |j$                  dk(  r|j(                  d	z   n|j(                  |_        d
|_        |j$                  dk(  rt/        |j(                  d	z   dz        nt/        |j(                  dz        |_        |j$                  dk(  r+|j(                  d	z   t/        |j(                  d	z   dz        z
  n$|j(                  t/        |j(                  dz        z
  |_        d
|_        |j$                  dk(  r|j(                  d	z   n|j(                  |_        ||_        t        j                         j;                  d
d
d
d
      |_        | j                  j?                  |       	 | j                  jA                          dddS yd k7  r| j                  jI                  t              jK                  t        jL                  |jL                  k(        jO                         }||_        d|_        | j                  j?                  |       	 | j                  jA                          dddS y# tB        $ r5}| j                  jE                          ddtG        |       dcY d }~S d }~ww xY w# tB        $ r5}| j                  jE                          ddtG        |       dcY d }~S d }~ww xY w)N  LibreDTE payment requiredcustomer_datar/   r   r   r   r    rj   r   rk   hourminutesecondmicrosecondsuccesszDte saved successfullyr(   r&   r   )(r	   r   
get_by_rutr/   r   loadspre_generate_billgenerate_bill	will_saver   r   rB   rC   r0   
cashier_idrA   r@   r5   r2   r3   rm   rn   card_amountro   rp   rq   rr   r4   rD   replacer6   addrs   rP   rollbackrQ   rE   rG   r.   rl   )	r   ru   r1   r   coder3   rW   rD   rY   s	            r   storezCustomerBillClass.store  sq    )44Y]]C

8,%%mY?s{2&&}_'Ee'LdSE!#}j!009 (1'A'A$!*!5!5"$%&" !'//#--!	=F=N=NRS=S)"2"2T"9YbYiYi"#HQHYHY]^H^ui&6&6&=t%CDdiktk{k{  ~B  kB  eC_h_p_ptu_u9++d2eY=M=MPT=TVZ<Z6[[  |E  |L  |L  OT  V_  Vf  Vf  hl  Ul  Om  |m 7@7H7HA7MI,,t3S\ScSc	#
!)!7!7QqQR`a!7!bC NGGNN$&/<TUU
 }ggmmH-44X[[ILL5PQWWY!	 !C NGGNN$&/<TUU
 ' ! NGG$$&&-GCF8:LMMN ! NGG$$&&-GCF8:LMMNs<   ?M %N 	N*M>8N>N	O*N?9O?Oc                    | j                   j                  t              j                  t        j                  |j                  k(        j                         }t        | j                         j                  |j                        }t        j                  |      }| j                  |j                        }| j                  ||j                  |j                  |      }d }|)|dk(  ry| j                  |d   d   |      }t!        |       |d k7  rd|_        |j$                  |_        dt'        |      z   |_        | j                   j+                  |       | j                   j-                          t               }|j.                  |_        d|_        d|_        d	|_        d|_        d|_        |d   d   |_        ||_        |j                  |_        d|_        t;        |j                  d
z        |_        |j                  t;        |j                  d
z        z
  |_        d|_         |j                  |_!        tE        jF                         jI                  dddd      |_%        | j                   j+                  |       	 | j                   j-                          | jM                  |       dddS y# tN        $ r5}	| j                   jQ                          ddt'        |	       dcY d }	~	S d }	~	ww xY w)Nr   r   r   r/   r!   u+   Código de autorización: Nota de Crédito r   =   r   rk   r   r   zCredit Note saved successfullyr(   r&   r   zCreditnote was not created))r   rE   r   rG   r.   rl   r	   r   r/   r   r   get_dte_dater3   pre_generate_credit_note_ticketrn   generate_credit_note_ticketrJ   r5   	reason_idrQ   r}   r   rs   r0   r   rA   r@   r2   r   ro   rp   rq   rr   r4   r   rB   r   r6   r~   rP   r   )
r   ru   rW   r1   r   dte_dater   r3   credit_note_dterY   s
             r   store_credit_notez#CustomerBillClass.store_credit_note(  sm   ggmmH%,,X[[ILL-HIOOQ )44SWW=

8,$$SYY/33M399coo_ghs{244]?5STY5Z\`aE%LD=CM%//CMG#d)SCKGGKKGGNN&jO 03/C/CO,)*O&*,O'-.O*()O%&'O#"/"@"GO$)O!*-//O'*+O'',S__T-A'BO$#&??eS__d<R6S"SO'(O$$'OOO!)1)?)?QqYZhi)?)jO&GGKK(J ))/:"+8XYY
 0	  J  "")Ax6HIIJs   /J3 3	K1<*K,&K1,K1c           
         | j                   j                  t              j                  t        j                  |j
                  k(        j                         }d}|j                  dk(  r|j                  dk(  s|j                  d k(  s|j                  dk(  r|j                  dz
  }n|j                  }dddd|j                  d	|d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   dddd|dddddgd}nZdddd|j                  d	|d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   dddd|j                  dgd}	 d}t        j                  ||d| dd      }|j                  dk(  r#|j                         }	|	j                  d      }
|
S y # t         $ r}t#        d|       Y d }~y d }~ww xY w)Nr   r   r   r]   rj   r   )TipoDTEMntBruto
76063822-6)	RUTEmisorCdgSIISucurr   r/   r1   r   regioncommuner   )RUTRecepRznSocRecep	GiroRecepDirRecep	CmnaRecepContactoCorreoRecepIdDocEmisorReceptorVenta)NmbItemQtyItemPrcItemChip)
EncabezadoDetalleWhttps://libredte.cl/api/dte/documentos/emitir?normalizar=1&formato=json&links=0&email=0r   r   r   r   r   codigor   )r   rE   r   rG   r.   r0   rl   r2   r   rm   dte_coder   r   rh   r   r   rP   rJ   )r   r   ru   branch_office_datar   rm   r=   r   r   dte_datar   rY   s               r   r   z#CustomerBillClass.pre_generate_billc  su   !WW]]+<=DDEVEYEY]f]w]wEwx~~  A2!""a'9+>+>$+F)J]J]acJc"))D0"))
 $&$%
 &2'9'B'B
 %2/$B5$I'4_'Ej'Q%2?%CJ%O$1/$B8$L%2?%CI%N$1/$B7$K'4_'Eg'N!* $+#$#) $*#$#') DJ $&$%
 &2'9'B'B
 %2/$B5$I'4_'Ej'Q%2?%CJ%O$1/$B8$L%2?%CI%N$1/$B7$K'4_'Eg'N!* $+#$#,#3#3)D:	kC  }}'.ug%6$6H ##s*#==?||H- 	115	s   #AF6 6	G?GGc                     d}t        |dz        }dd|ddddd	i|d
   d   |d
   d   |d
   d   |d
   d   |d
   d   dddd||dgd||dddgd}t        |       	 d}t        j                  ||d| dd      }	t        |	j                         |	j
                  dk(  r.|	j                         }
t        |
       |
j                  d      }|S |	j
                  S # t        $ r}t        d|       Y d }~y d }~ww xY w) Nr   rk   61r   r   1)r   FolioFchEmisTpoTranVentaFmaPagor   r   r   r/   r1   r   r   r   )r   r   r   r   r   r   u   Nota de Crédito de Venta)r   r   r   	MontoItemr   zAnula factura o boleta)	TpoDocRefFolioRefFchRefCodRefRazonRef)r   r   
Referenciar   r   r   r   r   r   r   r   )	ro   rJ   r   r   textrh   r   r   rP   )r   r   r3   rn   r6   r   rm   r=   r   r   r   r   rY   s                r   r   z1CustomerBillClass.pre_generate_credit_note_ticket  sf   2{4'(
 $(!"#-()#& $\ %2/$B5$I'4_'Ej'Q%2?%CJ%O$1/$B8$L%2?%CI%N!* $?#$#)%+	 "$ %( 8! 9#H 	d	kC  }}'.ug%6$6H (-- ##s*#==?h||H-+++ 	115	s    A1C C 	C='C88C=c                 t   d}d|d|d}	 d}t        j                  ||d| dd	      }t        |       |j                  d
k(  r#|j	                         }|j                  d      }|S t        d       t        |j                  |j	                                y # t        $ r}	t        d|	       Y d }	~	y d }	~	ww xY w)Nr   r   r   emisorreceptorrW   r   Vhttps://libredte.cl/api/dte/documentos/generar?getXML=0&links=0&email=1&retry=1&gzip=0r   r   r   r   r   r3   Error al generar el DTE:r   )r   r   rJ   rh   r   r   rP   
r   customer_rutr   r   r=   r   r   r   r3   rY   s
             r   r   z-CustomerBillClass.generate_credit_note_ticket  s    2 #$	
	jC  }}'.ug%6$6H (O##s*#==? W-01h**HMMO< 	115	s   AB (/B 	B7!B22B7c                     d}dt        |      z   dz   }t        j                  |d| dd      }|j                         }t	        |       |d   S )	Nr   z1https://libredte.cl/api/dte/dte_emitidos/info/33/z/76063822?getXML=0&getDetalle=0&getDatosDte=0&getTed=0&getResolucion=0&getEmailEnviados=0&getLinks=0&getReceptor=0&getSucursal=0&getUsuario=0r   r   r   r   r   )rQ   r   r   r   rJ   )r   r3   r   r   r   response_datas         r   r   zCustomerBillClass.get_dte_date8  sj    2 BSZO  Sb  b <<#*5'!2 2
 !mW%%r   c                 t   d}d|d|d}	 d}t        j                  ||d| dd	      }|j                  d
k(  r#|j                         }|j	                  d      }|S t        d       t        |j                  |j                                |j                  S # t        $ r}	t        d|	       Y d }	~	y d }	~	ww xY w)Nr   r   r   r  r	  r   r   r   r   r   r3   r
  r   )r   r   rh   r   r   rJ   rP   r  s
             r   r   zCustomerBillClass.generate_billL  s    2 #$	
	jC  }}'.ug%6$6H ##s*#==? W-01h**HMMO<+++ 	115	s   AB :B 	B7!B22B7c                    | j                   j                  t              j                  t        j                  |k(        j                         }|r5d}dt        |j                        z   dz   }t        j                  |d| dd      }t        |j                         |j                  dk(  r|j                  }t        j                         j                  d	      }t!        j"                         j$                  d d
 }| d| d}	|	 }
| j&                  j)                  ||
       | j&                  j+                  |
      }t-        j.                  |      j1                  d      }| j&                  j3                  |
       |	|dS y y )Nr   z0https://libredte.cl/api/dte/dte_emitidos/pdf/33/zp/76063822-6?formato=general&papelContinuo=0&copias_tributarias=1&copias_cedibles=1&cedible=0&compress=0&base64=0r   r   r   r  r   z%Y_%m_%d_%H_%M_%S   r   z.pdfzutf-8)	file_name	file_data)r   rE   r   rG   r.   rl   rQ   r3   r   r   rJ   rh   contentr   rB   rC   uuiduuid4hexr   temporal_uploaddownloadbase64	b64encodedecodedelete)r   r.   rW   r   r   r   pdf_content	timestamp	unique_idunique_filenameremote_pathfile_contentsencoded_files                r   r  zCustomerBillClass.downloads  sl   ggmmH%,,X[[B->?EEG6E Es399~U  XJ  JC  }}'.ug%6$6H (&&' ##s*&..$LLN334GH	 JJL,,Ra0	%.Kq4"@ "1 1//[I !% 8 8 E  &//>EEgN&&{3 "1!- 
 U r   c                 4   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        | j                   j                          | j                   j                  |       y)rd   re   rf   rg   r   Nr   r   s      r   verifyzCustomerBillClass.verify  sk     ggmmH%,,X[[B->?EEGC8KLL r   )Nr   r   
   )NNNNNr   r(  )__name__
__module____qualname__r   r   r[   rb   rv   r   r~   r   r   r   r   r   r   r   r   r   r  r'   r   r   r   r      sp    (7 (zAxAAF,',qf,-\;z90vcJEN'R&(%N-^r   r   )sqlalchemy.ormr   app.backend.db.modelsr   r   r   r   r   "app.backend.classes.customer_classr	    app.backend.classes.helper_classr
   app.backend.classes.file_classr   r   r   r   
sqlalchemyr   sqlalchemy.dialectsr   r  r  r   fastapir   r   r,  r   r   <module>r5     s>    " i i < 8 4     %    !] ]r   