
    }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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)WhatsappClass)HelperClass)	FileClass)DteClassN)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d Zd Zd Zd Zy)CustomerBillClassdbc                 2    || _         t        |      | _        y )N)r   r   
file_class)selfr   s     S/var/www/intrajisbackend.com/public_html/app/backend/classes/customer_bill_class.py__init__zCustomerBillClass.__init__   s    #B-    Nc                 ~   	 t        |       |dk(  s|dk(  rg }|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.                  
      j1                  t,        t,        j                  t        j                  k(        j1                  t(        t(        j
                  t        j
                  k(        j2                  | j5                  t7        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.                  
      j1                  t,        t,        j                  t        j                  k(        j1                  t(        t(        j
                  t        j
                  k(        j2                  | j5                  t7        t        j                               }|dkD  rM|j9                         }	t        |j:                  j=                  t?        j@                         d	d
i             |	|z   dz
  |z  }
t        |
       |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 |dk(  r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.                  
      j1                  t,        t,        j                  t        j                  k(        j1                  t(        t(        j
                  t        j
                  k(        j3                  t,        jH                  |k(        j2                  | j5                  t7        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.                  
      j1                  t,        t,        j                  t        j                  k(        j1                  t(        t(        j
                  t        j
                  k(        j3                  t,        jH                  |k(        j2                  | j5                  t7        t        j                               }|dkD  rM|j9                         }	t        |j:                  j=                  t?        j@                         d	d
i             |	|z   dz
  |z  }
t        |
       |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 y c c}w c c}w c c}w c c}w # tJ        $ r}tM        |      }d|dcY d }~S d }~ww xY w)N      !      %Y-%m      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
r0   r1   r2   r3   r5   r4   r6   r8   r9   r7   )'printappendr   dte_version_iddte_type_idr1   r   r7   r   nowstrftimeperiodr   queryr0   r2   r5   r6   r8   r4   r   r3   r   r9   	outerjoinfilterorder_byr   count	statementcompiler   r&   offsetlimitallprincipal_supervisor	Exceptionstr)r   rol_idr1   grouppager>   filterscurrent_periodrH   r;   r<   r?   dteserialized_dataeerror_messages                   r   get_allzCustomerBillClass.get_all   s^	   u	A&M{fkx66!;<x33r9:x||t34A:NN3x'9'9Q'>@R@RVW@WYaYkYkopYp#qr%-\\^%<%<W%ENNN8??n#DEDGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf !" hX//0# * NN3x'9'9Q'>@R@RVW@W#XYDGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf !" hX^^,# , !8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN "&''  "ff"ww,/,@,@$'LL#&;;!$!$%(]]MP^^cnn&=&=j&Iae),):):( ''O '' (3'2(,*8 /  !99;D "&''  "ff"ww,/,@,@$'LL!$#&;;!$MP^^cnn&=&=j&Iae),):):%(]]( ''O '' +*1x66!;<x33r9:x||t34A:NN3x'9'9Q'>@R@RVW@WYaYkYkopYp#qr%-\\^%<%<W%ENNN8??n#DEDGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf)>>#Ef %& hX//0' . NN3x'9'9Q'>@R@RVW@W#XYDGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf)>>#Ef %& hX^^,' 0 !8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN "&''  "ff"ww,/,@,@$'LL#&;;!$!$%(]]MP^^cnn&=&=j&Iae),):):( ''O '' (3'2(,*8 /  !99;D "&''  "ff"ww,/,@,@$'LL!$#&;;!$MP^^cnn&=&=j&Iae),):):%(]]( ''O '' +*s Q''4''@''4''  	AFM%-@@	As   Qp  :p p Bp4	p >p Bp
'p +Rp 9:p 4p 8Bp	p p +Bp p p 	p<"p71p<7p<c
                 
   	 |dk(  s|dk(  rg }
|d k7  r'|dk7  r"|
j                  t        j                  |k(         |d k7  r,|dk7  r'|dk7  r"|
j                  t        j                  |k(         |7|dk7  r2|
j                  t        j
                  j                  d| d             |d k7  r'|dk7  r"|
j                  t        j                  |k(         |d k7  r'|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         |
j                  t        j                  t        j                         j                  d      k(         |d k7  r~ | j                   j#                  t        j$                  t        j                  t        j&                  t        j(                  t        j*                  t        j                  t        j                  t        j,                  t        j
                  t.        j0                  
      j3                  t.        t.        j$                  t        j                  k(        j3                  t        t        j                  t.        j4                  k(        j3                  t        t        j                  t        j                  k(        j6                  |
 j9                  t;        t        j&                              }nI | j                   j#                  t        j$                  t        j                  t        j&                  t        j(                  t        j*                  t        j                  t        j                  t        j,                  t        j
                  t.        j0                  
      j3                  t.        t.        j$                  t        j                  k(        j3                  t        t        j                  t        j                  k(        j6                  |
 j9                  t;        t        j&                              }|dkD  rM|j=                         }t?        |j@                  jC                  tE        jF                         d	d
i             ||	z   dz
  |	z  }t?        |       |dk  s||kD  rdddS |jI                  |dz
  |	z        jK                  |	      jM                         }|sdddS |D cg c]  }|j$                  |j                  |j                  |j
                  |j,                  |j&                  |j(                  |j                  |j*                  r|j*                  j                  d      nd |j0                  d
 }}||||	|dS |jM                         }|D cg c]  }|j$                  |j                  |j                  |j
                  |j&                  |j,                  |j(                  |j*                  r|j*                  j                  d      nd |j0                  |j                  d
 }}|S |dk(  rg }
|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         |
j                  t        j                  t        j                         j                  d      k(         |d k7  r | j                   j#                  t        j$                  t        j                  t        j&                  t        j(                  t        j*                  t        j                  t        j                  t        j,                  t        j
                  t.        j0                  
      j3                  t.        t.        j$                  t        j                  k(        j3                  t        t        j                  t.        j4                  k(        j3                  t        t        j                  t        j                  k(        j7                  t.        j4                  |k(        j6                  |
 j9                  t;        t        j&                              }ni | j                   j#                  t        j$                  t        j                  t        j&                  t        j(                  t        j*                  t        j                  t        j                  t        j,                  t        j
                  t.        j0                  
      j3                  t.        t.        j$                  t        j                  k(        j3                  t        t        j                  t        j                  k(        j7                  t.        j4                  |k(        j6                  |
 j9                  t;        t        j&                              }|dkD  rM|j=                         }t?        |j@                  jC                  tE        jF                         d	d
i             ||	z   dz
  |	z  }t?        |       |dk  s||kD  rdddS |jI                  |dz
  |	z        jK                  |	      jM                         }|sdddS |D cg c]  }|j$                  |j                  |j                  |j
                  |j,                  |j&                  |j(                  |j                  |j*                  r|j*                  j                  d      nd |j0                  d
 }}||||	|dS |jM                         }|D cg c]  }|j$                  |j                  |j                  |j
                  |j&                  |j,                  |j(                  |j*                  r|j*                  j                  d      nd |j0                  |j                  d
 }}|S y c c}w c c}w c c}w c c}w # tN        $ r}tQ        |      }d|dcY d }~S d }~ww xY w)Nr   r    %r"   r   r!   r   r$   Tr%   r(   r)   r*   r-   r.   r/   r:   r@   ))rB   r   r2   r1   r   r3   liker7   r   supervisor_idrC   rD   rG   r   rE   rF   r   rH   r0   r5   r6   r8   r4   r   r9   rI   rR   rJ   rK   r   rL   rA   rM   rN   r   r&   rO   rP   rQ   rS   rT   )r   rU   supervisor_rutr2   r1   r3   r7   rc   rW   r>   rX   rH   r;   r<   r?   rZ   r[   r\   r]   s                      r   searchzCustomerBillClass.search  sd
   C	A{fk#t+0@B0FNN8#<#<@P#PQ$;3"9NN8<<3#67'HNNN=#9#9#>#>8*A#OP$bNN8#5#5#BC D(]b-@NN9#:#:m#KLx66!;<x11A56x33r9:x||t34x(,,.2I2I'2RRS D(DGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i!9==4E4Z4Z#Zi%}'8'8HLL'Hf %& hX^^,' 0DGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf !" hX^^,# , !8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN "&''  "ff"ww,/,@,@$'LL#&;;!$!$%(]]MP^^cnn&=&=j&Iae),):):( ''O '' (3'2(,*8 /  !99;D "&''  "ff"ww,/,@,@$'LL!$#&;;!$MP^^cnn&=&=j&Iae),):):%(]]( ''O '' +*1#t+NN8#<#<@P#PQ$;3"9NN8<<3#67'NN=#9#9#>#>8*A#OP$NN8#5#5#BC D(NN9#:#:m#KLx66!;<x11A56x33r9:x||t34x(,,.2I2I'2RRS D(DGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i!9==4E4Z4Z#Zi%}'8'8HLL'Hf)>>.Pf )* hX^^,+ 4DGGMM  11   ++  ** ((%..)77  i)+<+?+?8C\C\+\i%}'8'8HLL'Hf)>>.Pf %& hX^^,' 0 !8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN "&''  "ff"ww,/,@,@$'LL#&;;!$!$%(]]MP^^cnn&=&=j&Iae),):):( ''O '' (3'2(,*8 /  !99;D "&''  "ff"ww,/,@,@$'LL!$#&;;!$MP^^cnn&=&=j&Iae),):):%(]]( ''O '' +*C Q''4''P''4''  	AFM%-@@	As   Tu 
:u u 	Bu	u (u <Buu T)u ?:u :u >Bu	u u 1Buu u 	v(u=7v=v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   rH   r   rJ   r0   firstr   r2   r1   r4   amountcash_amountroundsubtotaltaxdiscountr6   r7   commitrefresh)r   	form_datarZ   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)	rg   rh   ri   rj   -r   r   r#   N)r   rH   r   rJ   r0   ro   r   expense_type_idpayment_type_idpayment_datesplitrG   commentr7   rv   rw   create_account_asset)r   rx   rZ   rG   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_	111000102rn   	221000226)debehaberIemitidos)rZ   r5   )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:)rD   rG   r   convert_to_utf8r   rH   r   rJ   r0   r|   ro   r   r2   r9   accounting_accountrT   r5   r6   striprr   requestspostrk   rS   rA   )r   rx   TOKENamerican_date	utf8_dateexpense_typer9   glossrp   r?   urlresponser\   s                r   r   z&CustomerBillClass.create_account_assetA  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 )Nrh   ri   rj   r    
r   rH   r   rJ   r0   ro   r   r7   rv   rw   r   r0   rZ   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)Nr0   r1   r2   r3   emailphoner4   r5   activity	region_id
commune_idaddressr6   r7   r8   r.   r9   customer_bill_dataz3No se encontraron datos para el campo especificado.Error: )r   rH   r   r0   r1   r2   r6   r   r   rq   r3   r   r   r   r   r   r4   r5   r7   r8   r   r9   rI   rJ   ro   rF   r   dumpsrS   rT   )r   r0   
data_queryr   resultserialized_resultr\   r]   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                 r   |}d}d}d}d| d| d| d}dd| d	}t        j                  ||
      }|j                  dk7  r&t        d|j                   d|j                          y t        d| dd      5 }|j                  |j                         d d d        t        d| d       y # 1 sw Y   xY w)N'   r   r   z-https://libredte.cl/api/dte/dte_emitidos/pdf//ze?formato=general&papelContinuo=0&copias_tributarias=1&copias_cedibles=1&cedible=0&compress=0&base64=0r   r   )Acceptr   r   r   zError z: zfiles/.pdfwbzPDF guardado como )r   r   rk   rA   textopenwritecontent)	r   r5   tipo_dte
rut_emisorr   r   r   r   fs	            r   save_pdf_billzCustomerBillClass.save_pdf_bill  s    
2 >hZqqQ[P\  ]B  C )&ug.
 <<W5 3&F8//08==/BC ugT*D1 *Q(()*&ugT23* *s   9B--B6c                     | j                   j                  t              j                  t        j                  |j                  k(  t        j
                  |j
                  k(  t        j                  |j                  dk(  r|j                  dz   n|j                  k(  t        j                  dk(  t        j                  dk(  t        j                  dk(  t        j                  t        j                         j                  d      k(        j!                         }|dk(  r-t#        | j                         j%                  |j
                        }t'        j(                  |      }| j+                  ||      }|/|dk(  ry| j-                  |d	   d
   |      }| j/                  |       d k7  r| j                   j                  t              j                  t        j                  |j                  k(  t        j
                  |j
                  k(  t        j                  |j                  dk(  r|j                  dz   n|j                  k(  t        j                  dk(  t        j                  dk(  t        j                  dk(  t        j                  t        j                         j                  d      k(        j1                         }|r||_        d|_        	 | j                   j5                          | j                   j7                  |       t9        d       t;        | j                         j=                  ||j
                         dddS dddS ydddS # t>        $ r5}| j                   jA                          ddtC        |       dcY d }~S d }~ww xY w)Nr   rm   r   r"   r!   r     LibreDTE payment requiredcustomer_datar1   r   zEmpieza envio de whatsappsuccessDte saved successfullyr*   r(   r   zDte not found after generation.z7Dte already exists for this branch office and customer.)"r   rH   r   rJ   r2   r1   r6   r4   rp   rD   rC   r7   rG   r   rE   rF   rL   r	   
get_by_rutr   loadspre_generate_billgenerate_billr   ro   r5   rv   rw   rA   r
   sendrS   rollbackrT   )	r   rx   check_dte_existencer3   r   coder5   rZ   r\   s	            r   generatezCustomerBillClass.generate  s   "ggmmH5<<%%)C)CCLLIMM)NN):K:Kq:Py//$6V_VfVfg  B&##q(!#OOx||~66w??
 %' 	 !#$TWW-88GH JJx0M))-CD3;6**=+I%+PRVW""5)}ggmmH-44$559S9SS$LLIMM9$NN)J[J[_`J`y/?/?$/Ffofvfvw$00B6$33q8$..!3$OOx||~/F/Fw/OO eg   %CI$%CMR(,9:%dgg.33CG*3@XYY
 '.:[\\%2kll % R((**1Ax>PQQRs   A3M 	N*NNNc                    |j                   dk(  rt               }t        j                         j	                  d      }|dk(  s|dk(  rd}n|dk(  rd}|j
                  |_        d|_        d|_        d|_        |_	        |j                  |_
        |j                  |_        d|_        |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	      |_        | j0                  j3                  |       	 | j0                  j5                          d
ddS y# t6        $ r5}| j0                  j9                          ddt;        |       dcY d }~S d }~ww xY w)Nr   r!   r   r"   r   r   rm   rn   hourminutesecondmicrosecondr   r   r*   r(   r   )	will_saver   r   rE   rF   r2   
cashier_idrD   rC   r7   r4   r1   r5   rp   rq   card_amountrr   rs   rt   ru   r6   rG   replacer8   r   addrv   rS   r   rT   )r   rx   rU   rZ   rG   r7   r\   s          r   storezCustomerBillClass.storeB  sS   !#*C\\^,,W5F{fk	1 !I $-#=#=C CN CO!"C%CM#++CKmmCGCI9B9J9Ja9Oi..5U^UeUeCOCODMDUDUYZDZ5)"2"2T"94!?@`egpgwgwy}f}`~CL[d[l[lpq[qy''$.%9I9ID9PRV8V2WW  xA  xH  xH  KP  R[  Rb  Rb  dh  Qh  Ki  xiCGCL3<3D3D3I	((4/yO_O_CICJ%\\^331Q\]3^CNGGKKJ "+8PQQ
 	  J  "")Ax6HIIJs   H. .	I,7*I'!I,'I,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   r1   r#   u+   Código de autorización: Nota de Crédito r   =   r   rn   r   r   zCredit Note saved successfullyr*   r(   r   zCreditnote was not created))r   rH   r   rJ   r0   ro   r	   r   r1   r   r   get_dte_dater5   pre_generate_credit_note_ticketrq   generate_credit_note_ticketrA   r7   	reason_idrT   r   r   rv   r2   r   rD   rC   r4   r   rr   rs   rt   ru   r6   r   rE   r   r8   r   rS   r   )
r   rx   rZ   r3   r   dte_dater   r5   credit_note_dter\   s
             r   store_credit_notez#CustomerBillClass.store_credit_notej  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                         }| 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t        j                         j                  d      z   d|dddddgd}n~dddd|j                  d	|d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   |d
   d   dddt        j                         j                  d      z   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`   rm   r   )TipoDTEMntBruto
76063822-6)	RUTEmisorCdgSIISucurr   r1   r3   r   regioncommuner   )RUTRecepRznSocRecep	GiroRecepDirRecep	CmnaRecepContactoCorreoRecepIdDocEmisorReceptoru(    Prestación de estacionamientos. Fecha:r.   )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   rH   r   rJ   r0   r2   ro   r   r4   r   rp   dte_coder   rE   rF   r   r   rk   r   r   rS   rA   )r   r   rx   branch_office_datarZ   r   rp   r?   r   r   dte_datar   r\   s                r   r   z#CustomerBillClass.pre_generate_bill  s   !WW]]+<=DDEVEYEY]f]w]wEwx~~  AggmmH%,,X[[ILL-HIOOQ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!* $NPXP\P\P^PgPghrPs#s#$#) $*#$#') 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!* $NPXP\P\P^PgPghrPs#s#$#,#3#3)D:	kC  }}'.ug%6$6H ##s*#==?||H- 	115	s   AI 	I4I//I4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   rn   61r   r   1)r   FolioFchEmisTpoTranVentaFmaPagor   r   r   r1   r3   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   )	rr   rA   r   r   r   rk   r   r   rS   )r   r   r5   rq   r8   r   rp   r?   r   r   r  r   r\   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receptorrZ   r  Vhttps://libredte.cl/api/dte/documentos/generar?getXML=0&links=0&email=1&retry=1&gzip=0r   r   r   r   r   r5   Error al generar el DTE:r   )r   r   rA   rk   r   r   rS   
r   customer_rutr   r   r?   r   r   r  r5   r\   s
             r   r   z-CustomerBillClass.generate_credit_note_ticketS  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   )rT   r   r   r   rA   )r   r5   r   r   r   response_datas         r   r   zCustomerBillClass.get_dte_date|  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   r5   r  r   )r   r   rk   r   r   rA   rS   r   s
             r   r   zCustomerBillClass.generate_bill  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   r   zutf-8)	file_name	file_data)r   rH   r   rJ   r0   ro   rT   r5   r   r   rA   rk   r   r   rE   rF   uuiduuid4hexr   temporal_uploaddownloadbase64	b64encodedecodedelete)r   r0   rZ   r   r   r   pdf_content	timestamp	unique_idunique_filenameremote_pathfile_contentsencoded_files                r   r-  zCustomerBillClass.download  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)rg   rh   ri   rj   r   Nr   r   s      r   verifyzCustomerBillClass.verify  sk     ggmmH%,,X[[B->?EEGC8KLL r   c                 4   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        | j                   j                          | j                   j                  |       y )Nrh   ri   rj   r   r   r   s      r   
pre_acceptzCustomerBillClass.pre_accept  si    ggmmH%,,X[[B->?EEGC8KLL r   c                    | j                   j                  t              j                  t        j                  dk(        j                  t        j
                  dk(        j                  t        j                  dk(        j                         }d}|D ]`  }t        |j                         d|j                  i}d}t        j                  ||d| dd	
      }t        |j                         |j                  dk(  slt        j                  |j                        }|D ]  }|j!                  d      }|j!                  d      }	|j!                  d      }
|j!                  d      }|
d k7  sNt        d       | j                   j                  t              j                  t        j                  |k(        j#                         }|st%        dd      |j                  dk(  st        d       d|_        d|_        ||_        |	|_        d|_        t/        j0                         j3                  dddd      |_        | j                   j7                          | j                   j9                  |       t;        | j                         j=                  |j                        }t        dt?        |j                        z          tA        | j                         jC                  |j                          c y )Nr"   r   r   r   r5   z4https://libredte.cl/api/pagos/cobros/buscar/76063822r   r   r   r   r   r   pagadomontozEjecutando paso 1.rh   ri   rj   zEjecutando paso 2.   r   r#   r   r   zDte actualizado correctamente: )"r   rH   r   rJ   r7   rD   rC   rQ   rA   r5   r   r   r   rk   r   r   r   ro   r   r|   r}   r   r~   r   rE   r   updated_daterv   rw   r   get_dte_authorization_coderT   r
   notify_paymeent)r   dtesr   rZ   r?   r   r   itemr5   r~   payment_statusrp   authorization_code_responses                r   check_paymentsz CustomerBillClass.check_payments  sv   ww}}X&--h.@.@A.EFMMhNbNbgiNijqqrz  sJ  sJ  NO  sO  P  T  T  V2 1	NC#))D IC}}'.ug%6$6H (-- ##s*zz(--0  ND HHW-E#'88G#4L%)XXh%7N!XXg.F%-23"ggmmH5<<X^^u=TU[[]""/CH["\\==A-!"6724C/23C/.4CO/;C,,-CM/7||~/E/E1UV_`no/E/pC, GGNN, GGOOC0:B477:K:f:fgjgpgp:q7!"Cc#))n"TU)$''2BB399M9N+1	Nr   )NNr   r   
   )	NNNNNNNr   rI  )__name__
__module____qualname__r   r   r^   re   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r-  r:  r<  rH   r   r   r   r      s    (7 (vApDAL,',qf,-\469mv&P90veNEN'R&(%N-^6Nr   r   )sqlalchemy.ormr   app.backend.db.modelsr   r   r   r   r   "app.backend.classes.customer_classr	   "app.backend.classes.whatsapp_classr
    app.backend.classes.helper_classr   app.backend.classes.file_classr   app.backend.classes.dte_classr   r   r   r   
sqlalchemyr   sqlalchemy.dialectsr   r)  r.  r   fastapir   r   rM  r   r   <module>rX     sF    " i i < < 8 4 2     %    !aN aNr   