
    1r+hf                         d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZd dlZd dlZd dlZd dlmZ  G d d      Zy)    )Session)DteModelCustomerModelBranchOfficeModel	UserModelExpenseTypeModelSupplierModel)CustomerClass)HelperClass)	FileClass)desc)mysql)or_)datetime)HTTPExceptionN)funcc                   j    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y)CustomerTicketBillClassdbc                 2    || _         t        |      | _        y )N)r   r   
file_class)selfr   s     cC:\Users\jesus\OneDrive\Desktop\escritorio\newerp\app\backend\classes\customer_ticket_bill_class.py__init__z CustomerTicketBillClass.__init__   s    #B-    c                 :   	 g }|j                  t        j                  dk(         |j                  t        j                  dkD         |j                  t        j                  d k7         |j                  t        j                  dk7         |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                   t"        j$                  j'                  d            j)                  t        t        j                  t        j                  k(        j)                  t"        t"        j                  t        j                  k(        j*                  | j-                  t        j                        }|dkD  r|j/                         }||z   dz
  |z  }|dk  s||kD  rdd	d
S |j1                  |dz
  |z        j3                  |      j5                         }|sddd
S |D cg c]  }|j                  |j                  |j                  |j                  |j$                  |j                  |j                  |j                  |j                  |j                  r|j                  j7                  d      nd |j                   d }	}|||||	dS |j5                         }|D cg c]  }|j                  |j                  |j                  |j$                  |j                  |j                  |j                  |j                  r|j                  j7                  d      nd |j                   |j                  d
 }	}|	S c c}w c c}w # t8        $ r}
t;        |
      }d|d
cY d }
~
S d }
~
ww xY w)N      
66666666-6!   '   customerr   errorInvalid page numberstatusmessageNo data foundz%Y-%m-%d)idrutbranch_office_iddte_type_idr"   chip_idfoliototal	status_id
added_datebranch_officetotal_itemstotal_pagescurrent_pageitems_per_pagedata)
r)   r*   r+   r"   r-   r.   r/   r1   r2   r0   )appendr   dte_version_idr0   r*   r   r,   r   queryr)   r+   r.   r/   r1   r-   r   r2   r   r"   label	outerjoinfilterorder_bycountoffsetlimitallstrftime	Exceptionstr)r   pager7   filtersr;   r4   r5   r8   dteserialized_dataeerror_messages               r   get_allzCustomerTicketBillClass.get_all   s]   ]	A GNN822a78NN8--12NN8<<4/0NN8<<<78NN3x33r98;O;OSU;UVWDGGMMKK--((NNNN''LL&&$$%33!**00< i!#4#7#78;T;T#Ti}00HLL@f#$ h""% . ax#kkm*^;a?NR!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!$$ ## ## '&Q##6##  	AFM%-@@	AsP   IO7 :O7 O7 B O-6	O7  O7 BO2)O7 -
O7 7	P PPPNc                 T   	 g }|d k7  r"|j                  t        j                  |k(         |d k7  r'|dk7  r"|j                  t        j                  |k(         |d k7  r"|j                  t        j                  |k(         |d k7  r"|j                  t
        j                  |k(         |j                  t        j                  dk(         |j                  t        j                  dkD         |j                  t        j                  d k7         |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*                  | j-                  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"        j$                  
      j'                  t"        t"        j                  t        j                  k(        j'                  t        t        j                  t        j                  k(        j*                  | j-                  t/        t        j                              }|dkD  rM|j1                         }	t3        |j4                  j7                  t9        j:                         ddi             |	|z   dz
  |z  }
t3        |
       |dk  s||
kD  rd	d
dS |j=                  |dz
  |z        j?                  |      jA                         }|sd	ddS |D cg c]  }|j                  |j                  |j                  |j                   |j                  |j                  |j                  |j                  |j                  r|j                  jC                  d      nd |j$                  d
 }}|	|
|||dS |jA                         }|D cg c]  }|j                  |j                  |j                  |j                   |j                  |j                  |j                  |j                  r|j                  jC                  d      nd |j$                  |j                  d
 }}|S c c}w c c}w # tD        $ r}tG        |      }d	|dcY d }~S d }~ww xY w)N r   r   r   r   literal_bindsT)dialectcompile_kwargsr#   r$   r%   r(   %d-%m-%Y)
r)   r*   r+   r"   r-   r.   r/   r0   r1   r2   r3   )
r)   r*   r+   r"   r.   r-   r/   r1   r2   r0   )$r9   r   r+   r*   r0   r   supervisor_idr:   r   r;   r)   r.   r/   r1   r-   r   r"   r   r2   r=   principal_supervisorr>   r?   r   r@   print	statementcompiler   rQ   rA   rB   rC   rD   rE   rF   )r   r+   r*   r0   rT   rG   r7   rH   r;   r4   r5   r8   rI   rJ   rK   rL   s                   r   searchzCustomerTicketBillClass.searchv   s   ~	AG4'x88<LLMd{sbyx||s23D x11Y>?$y66-GHNN822a78NN8--12NN8<<4/0NN8<<<78$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   Q,X /:X *X .BW:	X X !BW?6X :
X 	X'X"X'"X'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   i  
ףp=
?r      N)r   r;   r   r>   r)   firstr   r+   r*   r-   amountcash_amountroundsubtotaltaxdiscountr/   r0   commitrefresh)r   	form_datarI   s      r   updatezCustomerTicketBillClass.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)	r[   r\   r]   r^   -r   r      N)r   r;   r   r>   r)   rc   r   expense_type_idpayment_type_idpayment_datesplitperiodcommentr0   rj   rk   create_account_asset)r   rl   rI   ru   s       r   change_statusz%CustomerTicketBillClass.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                 4   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        | j                   j                          | j                   j                  |       y )Nr\   r]   r^   r   
r   r;   r   r>   r)   rc   r   r0   rj   rk   r   r)   rI   s      r   rejectzCustomerTicketBillClass.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(                  t*        j,                        j/                  t*        t*        j                  t        j                  k(        j/                  t        t        j
                  t        j
                  k(        j1                  t        j                  |k(        j3                         }|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                  d|j(                  r|j(                  j5                  d      nd d|j,                  }d|i}t7        j8                  |      }|S y# t:        $ r}t=        |      }d| cY d }~S d }~ww xY w)Nr)   r*   r+   r"   emailphoner-   r.   activity	region_id
commune_idaddressr/   r0   ru   r1   rS   r2   customer_ticket_bill_dataz3No se encontraron datos para el campo especificado.zError: )r   r;   r   r)   ru   r*   r+   r/   r   r   re   r"   r   r   r   r~   r   r-   r.   r0   r1   r   r2   r=   r>   rc   rD   jsondumpsrE   rF   )r   r)   
data_querycustomer_ticket_dataresultserialized_resultrK   rL   s           r   getzCustomerTicketBillClass.get-  sF   ,	-x{{HOOX\\S[SlSlnvn|n|  L  T  T  V^  Vj  Vj  ly  lB  lB  DQ  D[  D[  ]j  ]u  ]u  wD  wM  wM  O\  Ob  Ob  dq  dw  dw  yA  yI  yI  KS  KY  KY  [c  [m  [m  ow  oB  oB  DU  Dc  Dc  d!	"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( j//(  !PZPePe*"7"7"@"@"Lko!(" $Z%=%=#($, 01E
 %)JJv$6!(( M 	-FM]O,,	-s   KK 	K<"K71K<7K<c                    d}|j                   dz   }t        j                  |      }d}| j                  j	                  t
              j                  t
        j                  |j                  k(        j                         }|j                  dz   |z   dz   |z   dz   t        |j                        z   dz   t        |j                        z   }|j                  }|||t        t        |      dz        dt        t        |      t        |      dz  z
        idt        |      id	d
d|j                   |j                  dgid}	ddz   }
t#        j$                  |
|	d| dd      }|j&                  dk(  ryy)N JXou3uyrc7sNnP2ewOCX38tWZ6BTm4D1z-01	441000102__NotaCredito_ra   	221000226	111000102)debehaberIemitidos)rI   r.   )fechaglosadetalle	operacion
documentosz/https://libredte.cl/api/lce/lce_asientos/crear/76063822Bearer application/jsonAuthorizationzContent-Typer   headers   z%Accounting entry created successfullyz!Accounting entry creation failed.)ru   r   convert_to_utf8r   r;   r   r>   r)   r+   rc   r2   rF   r.   r/   rf   intr,   requestspostr_   )r   rl   TOKENamerican_date	utf8_dateexpense_typer2   glossrd   r8   urlresponses               r   rw   z,CustomerTicketBillClass.create_account_asset\  s   2!((50//>	"&78??  I$>$>>

%' 	
 ++  	
 "" ill#$  ioo&' 	  ' %eCK,<&=#U3v;#f+d:J+K%L
 $S[ !#,#8#8%.__!. @:M=='.ug%6$6 3&:7r   c                    | j                   j                  t              j                  t        j                  |j                  k(        j                         }t        | j                         j                  |j                        }t        j                  |      }| j                  |j                  |j                        }| j                  ||j                  |j                  |j                  |      }d }|)|dk(  ry| j!                  |d   d   ||j                        }|d k7  rd|_        |j$                  |_        dt'        |      z   |_        | j                   j+                  |       | j                   j-                          |}|j/                  d      }	|	d   j/                  d	      }	|	d   d	z   |	d
   z   }	t               }
|j0                  |
_        d|
_        d|
_        d
|
_        d|
_        d|
_        |d   d   |
_        ||
_        t9        t;        |j                               |
_        d|
_        t9        t?        t;        |j                        dz               |
_         t9        t;        |j                        t?        t;        |j                        dz        z
         |
_!        d|
_"        t9        t;        |j                               |
_#        |	|
_$        |jJ                  |
_%        | j                   j+                  |
       | j                   j-                          | jM                  |
       | j                   j                  t              j                  t        j                  |j                  k(        j                         }d|_        | j                   j+                  |       | j                   j-                          y y)Ni  zLibreDTE payment requiredcustomer_datar*   rp   u+   Código de autorización: Nota de Crédito  r   ro   r   =   ra   zCreditnote was not created)'r   r;   r   r>   r)   rc   r
   
get_by_rutr*   r   loadsget_dte_dater,   r.   pre_generate_credit_note_ticketre   generate_credit_note_ticketr0   	reason_idrF   rv   addrj   rt   r+   
cashier_idr:   r-   absr   card_amountrf   rg   rh   ri   r/   ru   r1   rw   )r   rl   rI   r"   r   dte_datecoder.   r1   ru   credit_note_dte
update_dtes               r   store_credit_notez)CustomerTicketBillClass.store_credit_note  s   ggmmH%,,X[[ILL-HIOOQ )44SWW=

8,$$S__cii@33M3??TWT]T]_b_n_npxys{244]?5STY5Z\`bebqbqrED=CM%//CMG#d)SCKGGKKGGNN!J%%c*FAY__S)FAY_vay0F&jO 03/C/CO,)*O&*,O'-.O*()O%&'O#"/"@"GO$)O!+.s3??/C+D*DO'*+O'(+E#coo2Ft2K,L(M'MO$#&s3??';eCDXY]D]>^'^#_"_O'(O$%(S__)=%>$>O!%+O"),O&GGKK(GGNN%%o6x077#))8STZZ\J#$J GGKK
#GGNN/r   c                     d}dt        |      z   dz   t        |      z   dz   }t        j                  |d| dd      }|j                         }|d	   S )
Nr   z.https://libredte.cl/api/dte/dte_emitidos/info//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   )rF   r   r   r   )r   r,   r.   r   r   r   response_datas          r   r   z$CustomerTicketBillClass.get_dte_date  st    2 ?[AQQSVVY\]bYcc  gv  v <<#*5'!2 2
 !W%%r   c                    d}t        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}	 d}	t        j                  |	|d| dd      }
|
j                  dk(  r#|
j                         }|j                  d      }|S |
j                  S # t        $ r}t        d|       Y d }~y d }~ww xY w) Nr   ra   r   r   r   1)TipoDTEFolioFchEmisTpoTranVentaFmaPago	RUTEmisor
76063822-6r   r*   r"   r   regioncommune)RUTRecepRznSocRecep	GiroRecepDirRecep	CmnaRecep)IdDocEmisorReceptoru   Nota de Crédito de Venta)NmbItemQtyItemPrcItem	MontoItemr!   zAnula factura o boleta)	TpoDocRefFolioRefFchRefCodRefRazonRef)
EncabezadoDetalle
ReferenciazWhttps://libredte.cl/api/dte/documentos/emitir?normalizar=1&formato=json&links=0&email=0r   r   r   r   r   codigoError al conectarse a la API:)	rf   r   r   r   r_   r   r   rE   rV   )r   r   r,   r.   re   r1   r   rd   r8   r   r   dte_datar   rK   s                 r   r   z7CustomerTicketBillClass.pre_generate_credit_note_ticket  sO   2s;',-
 $&!"#-()#& $\ %2/$B5$I'4_'Ej'Q%2?%CJ%O$1/$B8$L%2?%CI%N!* $?#$#)%+	 "$ %( 8! 9#J	kC  }}'.ug%6$6H ##s*#==?||H-+++ 	115	s   AB< 0B< <	CCCc                 ^   d}d|d|d}	 d}t        j                  ||d| dd	      }|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receptorrI   r   zVhttps://libredte.cl/api/dte/documentos/generar?getXML=0&links=0&email=1&retry=1&gzip=0r   r   r   r   r   r.   zError al generar el DTE:r   )r   r   r_   r   r   rV   rE   )r   customer_rutr   r,   r   r8   r   r   r   r.   rK   s              r   r   z3CustomerTicketBillClass.generate_credit_note_ticket/  s    2 #$	
	jC  }}'.ug%6$6H ##s*#==? W-01h**HMMO< 	115	s   AB /B 	B,B''B,c                    | j                   j                  t              j                  t        j                  |k(        j                         }|r d}dt        |j                        z   dz   }t        j                  |d| dd      }|j                  dk(  r|j                  }t        j                         j                  d	      }t        j                          j"                  d d
 }| d| d}	|	 }
| j$                  j'                  ||
       | j$                  j)                  |
      }t+        j,                  |      j/                  d      }| j$                  j1                  |
       |	|dS y y )Nr   z0https://libredte.cl/api/dte/dte_emitidos/pdf/39/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   r;   r   r>   r)   rc   rF   r.   r   r   r_   contentr   nowrD   uuiduuid4hexr   temporal_uploaddownloadbase64	b64encodedecodedelete)r   r)   rI   r   r   r   pdf_content	timestamp	unique_idunique_filenameremote_pathfile_contentsencoded_files                r   r   z CustomerTicketBillClass.downloadU  s\   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!- 
 S r   c                 4   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        | j                   j                          | j                   j                  |       y)r[   r\   r]   r^   rb   Nrz   r{   s      r   verifyzCustomerTicketBillClass.verify  sk     ggmmH%,,X[[B->?EEGC8KLL r   )r   
   )NNNNr   r  )__name__
__module____qualname__r   r   rM   rY   rm   rx   r|   r   rw   r   r   r   r   r   r   r   r   r   r      s\    (7 (^A@AB,',--^<8|;0z&&CJ$L,\r   r   )sqlalchemy.ormr   app.backend.db.modelsr   r   r   r   r   r	   "app.backend.classes.customer_classr
    app.backend.classes.helper_classr   app.backend.classes.file_classr   
sqlalchemyr   sqlalchemy.dialectsr   r   r   fastapir   r   r   r   r   sqlalchemy.sqlr   r   r  r   r   <module>r     sA    " x x < 8 4  %   !     }	 }	r   