
    9g}                         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Zd d	lZd d	lZd d	lZd d
lmZ d dlmZmZ d dlmZ  G d d      Zy	)    )Session)DteModelCustomerModelBranchOfficeModel	UserModelSupplierModelExpenseTypeModel)CustomerClass)	FileClass)desc)mysql)or_)HTTPExceptionN)func)datetime	timedelta)HelperClassc                       e Zd Zdef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y)ReceivedTributaryDocumentClassdbc                 2    || _         t        |      | _        y )N)r   r   
file_class)selfr   s     jC:\Users\jesus\OneDrive\Desktop\escritorio\newerp\app\backend\classes\received_tributary_document_class.py__init__z'ReceivedTributaryDocumentClass.__init__   s    #B-    c                    	 g }|j                  t        j                  dk(         |j                  t        j                  dk(         |j                  t        j                  d k7          | 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        j                        }|dkD  rM|j+                         }t-        |j.                  j1                  t3        j4                         ddi             ||z   dz
  |z  }t-        |       |dk  s||kD  rdd	d
S |j7                  |dz
  |z        j9                  |      j;                         }|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 |j;                         }|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 # t>        $ r}
tA        |
      }d|d
cY d }
~
S d }
~
ww xY w)N   !   r   literal_bindsT)dialectcompile_kwargs   errorzInvalid page numberstatusmessagezNo data found%Y-%m-%d)
idrutbranch_office_idsupplier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_iddte_type_idr*   r   queryr)   r+   r.   r/   r1   r0   r-   r   r,   r   r2   	outerjoinfilterorder_bycountprint	statementcompiler   r!   offsetlimitallstrftime	Exceptionstr)r   pager6   filtersr;   r3   r4   r7   dteserialized_dataeerror_messages               r   get_allz&ReceivedTributaryDocumentClass.get_all   s2   [	AGNN822a78NN8//256NN8<<4/0DGGMM))##""  &&!// i!#4#7#78;T;T#Ti}00HLL@f!" h""# , 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   HN4 :N4 N4 BN*3	N4 =N4 BN/&N4 *
N4 4	O=OOOc                    	 g }|j                  t        j                  dk(         |j                  t        j                  dk(         |j                  t        j                  |k(         |j                  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)                  t$        t$        j                  t        j                  k(        j)                  t         t         j                  t        j                  k(        j)                  t        t        j                  t        j*                  k(        j,                  | j/                  t        j
                        }|j1                         }|D cg c]  }|j                  |j                  |j                  |j                  |j"                  |j                  |j                  |j                  |j                  r|j                  j3                  d      nd |j&                  |j
                  d }}d|iS c c}w # t4        $ r}t7        |      }d|dcY d }~S d }~ww xY w)	Nr   r      r(   )r)   r*   r+   expense_typer,   r-   r.   r/   r1   r2   r0   r7   r$   r%   )r8   r   r9   r:   r*   r0   r   r;   r)   r+   r.   r/   r1   r	   rR   r-   r   r,   r   r2   r<   expense_type_idr=   r>   rE   rF   rG   rH   )	r   r*   rJ   r;   r7   rK   rL   rM   rN   s	            r   get_all_supplier_billsz5ReceivedTributaryDocumentClass.get_all_supplier_billst   s4   9	AGNN822a78NN8//256NN8<<3./NN8--23DGGMM))## --""  &&!// i!#4#7#78;T;T#Ti}00HLL@i "2"5"59Q9Q"Qf'( h"") 0 99;D   &&77(+(<(<$'$4$4 #"{{ YY YYIL#.."9"9*"E]a%(%6%6!$  O  O $  	AFM%-@@	As1   H K "B KK K 	K0K+%K0+K0c                    	 g }|j                  t        j                  dk(         |j                  t        j                  dk(         |j                  t        j                  d k7         |j                  t        j
                  dk(          | j                  j                  t        j                  t        j                  t        j                  t        j                        j                  d            j                  t        t        j                  t        j                  k(        j                  | j!                  t        j                  t        j                        j#                  t        j                        }|j%                         }|D cg c]&  }|j                  |j                  |j                  d( }}d|iS c c}w # t&        $ r}t)        |      }d|dcY d }~S d }~ww xY w)	Nr   r   rQ   r/   )r*   r,   r/   r7   r$   r%   )r8   r   r9   r:   r*   r0   r   r;   r   r,   r   sumr/   labelr<   r=   group_byr>   rE   rG   rH   )r   rJ   r;   r7   rK   rL   rM   rN   s           r   getTotalPerSupplierz2ReceivedTributaryDocumentClass.getTotalPerSupplier   s   %	AGNN822a78NN8//256NN8<<4/0NN8--23DGGMM!!&&(..w7 i}00HLL@f h&&!! h&&  99;D "	#  77 # YY  #O #  #  	AFM%-@@	As0   FG +G=G G 	G+G& G+&G+c                 X   d}t        j                         j                  d      }t        j                         t        d      z
  j                  d      }g d||dd}	 dd	z   }t	        j
                  ||d
| dd      }t        j                  |j                        }|D ]  }t        j                  |d         }t        |d         dz   t        |      z   }	|d   d k7  r|d   }
nd}
t        j                  |
      }t               }d|_        d|_        |d   |_        d|_        d|_        d|_        |	|_        |d   |_        |
|_        d|_        ||_        t3        |
      t3        |      z
  |_        d|_        |
|_        t        |d         dz   |_        | j<                  j?                  |       | j<                  jA                          | j<                  jC                  tD              jG                  tD        j(                  |	k(        jI                         }|dk(  stE               }|	|_        |d   jK                         |_&        | j<                  j?                  |       | j<                  jA                           y # tN        $ r}tQ        d|       Y d }~y d }~ww xY w)N JXou3uyrc7sNnP2ewOCX38tWZ6BTm4D1r(   <   )days)3334395661
76063822-6)rK   fecha_desdefecha_hastaemisorz1https://libredte.cl/api/dte/dte_recibidos/buscar/76063822Bearer application/jsonAuthorizationzContent-Typejsonheadersrf   -r/   r   rK   r   r#   r.   fechaz	 00:00:00razon_socialError al conectarse a la API:))r   nowrF   r   requestsgetrm   loadstextr   verificator_digitrH   get_netr   r+   
cashier_idr:   r9   r0   r-   r*   r.   cash_amountcard_amountsubtotalinttaxdiscountr/   r1   r   addcommitr;   r   r=   r?   upperr,   rG   r@   )r   TOKENuntilsincer7   urlresponseitemrx   r*   r/   netrK   validate_supplier_existencer,   rM   s                   r   refreshz&ReceivedTributaryDocumentClass.refresh   s`   2 ''
3 )"44>>zJ 2  "	
:	ESC  ||'.ug%6$6H ::hmm,D (%$/$A$A$x.$Q!$x.)C/#6G2HH=D( MEE!))%0j'($!""&u+%&" ! M	"'"#"e*s3x/ !	!$T']!3k!AC  .2ggmmM.J.Q.QR_RcRcgjRj.k.q.q.s+.!3,H#&HL(,^(<(B(B(DH%GGKK)GGNN$Q(%R  	115	s     GJ
 (A!J
 
	J)J$$J)c                    |j                   }|D ]  }| j                  j                  t              j	                  t        j
                  |j
                  k(        j                         }|st        dd      |j                  |_        |j                  |_	        d|_
        |j                  |_        | j                  j                          | j                  j                  |        y )N  Dte no encontradostatus_codedetail   )selected_billsr   r;   r   r=   r)   firstr   payment_datepayment_type_idr0   commentpayment_commentr   r   )r   	form_datar   billrK   s        r   payz"ReceivedTributaryDocumentClass.pay$  s    "11" 	!D''--)001GHNNPC#<OPP(55C"+";";CCM"+"3"3CGGNNGGOOC 	!r   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 )	Nr   r   r   r#     
ףp=
?r   r   )r   r;   r   r=   r)   r   r   r+   r*   r-   amountr{   roundr}   r   r   r/   r0   r   r   )r   r   rK   s      r   updatez%ReceivedTributaryDocumentClass.update4  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           
         d}| j                   j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |j                  |_        |j                  |_        |j                  |_	        |j                  |_
        |j                  |_        | j                   j                          | j                   j                  |       |j                  |j                  k(  rW|j                  |j                  k(  r>|j                  |j                  k(  r%|j                  |j                  k(  rt        d       nt        d      |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   }|j0                  }	|||j*                  j3                         t5        |	d
z        dt5        |	|	d
z  z
        id|	iddd|j6                  |j.                  dgid}
	 ddz   }t9        j:                  ||
d| dd      }|j<                  dk(  rydS # t>        $ r}t        d|       Y d }~y d }~ww xY w)Nr[   r   r   r   z4Datos actualizados correctamente en la base de datosz1Error: Los datos no se actualizaron correctamentez-01__FacturaCompra_r   	111000122	111000102)debehaberE	recibidos)rK   r.   )rp   glosadetalle	operacion
documentosz/https://libredte.cl/api/lce/lce_asientos/crear/rg   rh   ri   rj   rl      z%Accounting entry created successfullyz!Accounting entry creation failed.rr   ) r   r;   r   r=   r)   r   r   r+   rS   periodr0   r   r   r   r@   
ValueErrorr   convert_to_utf8r	   r   r2   accounting_accountrH   r.   r/   stripr   r:   rt   postr   rG   )r   r   r   rK   american_date	utf8_daterR   r2   glossr   r7   r   r   rM   s                 r   change_statusz,ReceivedTributaryDocumentClass.change_statusG  s   2ggmmH%,,X[[ILL-HIOOQC8KLL(99'77%%
!++''   I$>$>>##y'@'@@

i...!4!44HIPQQ!((50//>	ww}}%56==9#<#<<

%' 	 &78??  I$>$>>

%' 	
 ''--.  	
    #&&k  #))n 	  # !3399;U6D==Qv$'?!@
   "!$
.	CzQC}}'.ug%6$6H ##s*>:; 	115	s   ?2L4 2L4 4	M=MM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   r   r0   r   r   r   r)   rK   s      r   rejectz%ReceivedTributaryDocumentClass.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                  
      j                  t        t        j                  t        j
                  k(        j                  t        t        j                  t        j                  k(        j!                  t        j                  |k(        j#                         }|r|j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  r|j                  j%                  d      nd |j                  d	}d|i}t'        j(                  |      }|S y# t*        $ r}t-        |      }d| cY d }~S d }~ww xY w)Nz%d-%m-%Y)	r)   r*   r+   r,   r.   r/   r0   r1   r2    received_tributary_document_dataz3No se encontraron datos para el campo especificado.Error: )r   r;   r   r)   r*   r+   r/   r{   r   r,   r.   r0   r1   r   r2   r<   r=   r   rF   rm   dumpsrG   rH   )r   r)   
data_queryreceived_tributary_documentresultserialized_resultrM   rN   s           r   ru   z"ReceivedTributaryDocumentClass.get  s   "	-x{{HLL(B[B[]e]k]kmu  nB  nB  DQ  DZ  DZ  \d  \j  \j  lt  l~  l~  @H  @S  @S  Uf  Ut  Ut  u!	"35F5I5IXMfMf5fg!	-1B1Bhll1RSx{{b01	   %--%>>(2(C(C * 3 3'--'--!+!5!5PZPePe*"7"7"@"@"Lko%/%=%=
/+ 78S %)JJv$6!(( M 	-FM]O,,	-s   G#G' '	H
0H?H
H
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   |      }|d k7  rd|_        |j"                  |_        dt%        |      z   |_        | j                   j)                  |       | j                   j+                          t               }|j,                  |_        d|_        d|_        d	|_        d|_        d|_        |d   d   |_        ||_        |j                  |_        d|_        t9        |j                  d
z        |_        |j                  t9        |j                  d
z        z
  |_        d|_        |j                  |_         tC        jD                         jG                  dddd      |_$        | j                   j)                  |       	 | j                   j+                          dddS y# tJ        $ r5}	| j                   jM                          ddt%        |	       dcY d }	~	S d }	~	ww xY w)Ni  zLibreDTE payment requiredcustomer_datar*   r   u+   Código de autorización: Nota de Crédito r   =   r#   r   )hourminutesecondmicrosecondsuccesszCredit Note saved successfullyr%   r$   r   zCreditnote was not created)'r   r;   r   r=   r)   r   r
   
get_by_rutr*   rm   rv   get_dte_dater.   pre_generate_credit_note_ticketr{   generate_credit_note_ticketr0   	reason_idrH   r   r   r   r+   rz   r:   r9   r-   r|   r   r}   r   r   r/   r   rs   replacer1   rG   rollback)
r   r   rK   customerr   dte_datecoder.   credit_note_dterM   s
             r   store_credit_notez0ReceivedTributaryDocumentClass.store_credit_note  sX   ggmmH%,,X[[ILL-HIOOQ )44SWW=

8,$$SYY/33M399coo_ghs{244]?5STY5Z\`aE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   7J 	K *K
KK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i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}nYddi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                         }	t        |	       |	j!                  d      }
|
S |j                  S # t"        $ r}t        d|       Y d }~y d }~ww xY w)Nr[   r#   r    r   TipoDTE'   rc   )	RUTEmisorCdgSIISucurr   r*   r   activityregioncommuneemail)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=0rh   ri   rj   rl   r   codigorr   )r   r;   r   r=   r)   r+   r   r-   	will_saver   dte_codert   r   r   rm   r@   ru   rG   )r   r   r   branch_office_datar   r   r7   r   r   dte_datar   rM   s               r   pre_generate_ticketz2ReceivedTributaryDocumentClass.pre_generate_ticket
  s   !WW]]+<=DDEVEYEY]f]w]wEwx~~  A2!""a'9+>+>$+F)J]J]acJc"))D0"))
 "2 &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!( $+#$#) $*#$#''DH "2 &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'D8	kC  }}'.ug%6$6H ##s*#==?h||H-+++ 	115	s   !AG
 >G
 
	G)G$$G)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/39/z/76063822?getXML=0&getDetalle=0&getDatosDte=0&getTed=0&getResolucion=0&getEmailEnviados=0&getLinks=0&getReceptor=0&getSucursal=0&getUsuario=0rh   ri   rj   rn   rp   )rH   rt   ru   rm   r@   )r   r.   r   r   r   response_datas         r   r   z+ReceivedTributaryDocumentClass.get_dte_datel  se    2ASZO  Sb  b<<#*5'!2 2
 !mW%%r   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}	 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[   r   rb   r   r#   1)r   FolioFchEmisTpoTranVentaFmaPagor   rc   r   r*   r   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   rh   ri   rj   rl   r   r   rr   )	r   rt   r   r@   rw   r   rm   ru   rG   )r   r   r.   r{   r1   r   r   r7   r   r   r   r   rM   s                r   r   z>ReceivedTributaryDocumentClass.pre_generate_credit_note_ticket~  s]   2{4'(
 $(!"#-()#& $\ %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||H-+++ 	115	s   A1C C 	C2C--C2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[   rc   r   rf   receptorrK   r   Vhttps://libredte.cl/api/dte/documentos/generar?getXML=0&links=0&email=1&retry=1&gzip=0rh   ri   rj   rl   r   r.   Error al generar el DTE:rr   rt   r   r@   r   rm   ru   rG   
r   customer_rutr   r   r7   r   r   r   r.   rM   s
             r   generate_ticketz.ReceivedTributaryDocumentClass.generate_ticket      2 #$	
	jC  }}'.ug%6$6H (O##s*#==? W-01h**HMMO< 	115	   AB (/B 	B7!B22B7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[   rc   r   r  r  rh   ri   rj   rl   r   r.   r  rr   r  r  s
             r   r   z:ReceivedTributaryDocumentClass.generate_credit_note_ticket  r  r  c                 r   | j                   j                  t              j                  t        j                  |k(        j                         }t               j                  |j                        }|rDd}dt        |      z   dz   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,                  j1                  |      }t3        j4                  |      j7                  d      }| j,                  j9                  |       |
|dS y y )Nr[   z.https://libredte.cl/api/dte/dte_recibidos/pdf/z/33/z^/76063822?papelContinuo=0&copias_tributarias=1&copias_cedibles=0&cedible=0&compress=0&base64=0rh   ri   rj   r   r   z%Y_%m_%d_%H_%M_%S   r   z.pdfzutf-8)	file_name	file_data)r   r;   r   r=   r)   r   r   numeric_rutr*   rH   r.   rt   ru   r@   contentr   r   rs   rF   uuiduuid4hexr   temporal_uploaddownloadbase64	b64encodedecodedelete)r   r)   rK   
issuer_rutr   r   r   pdf_content	timestamp	unique_idunique_filenameremote_pathfile_contentsencoded_files                 r   r%  z'ReceivedTributaryDocumentClass.download  s   ggmmH%,,X[[B->?EEG ]..sww7
6EBS_TV\\^abebkbk^ll  oO  O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)zH
        Actualiza los datos de la patente en la base de datos.
        r   r   r   r   Nr   r   s      r   verifyz%ReceivedTributaryDocumentClass.verifyG  sk     ggmmH%,,X[[B->?EEGC8KLL r   N)r   
   )__name__
__module____qualname__r   r   rO   rT   rY   r   r   r   r   r   ru   r   r   r   r   r  r   r%  r3   r   r   r   r      sw    (7 (\A|:Ax&APJX! &[z#-J50n`D&$EN'R'R.`r   r   )sqlalchemy.ormr   app.backend.db.modelsr   r   r   r   r   r	   "app.backend.classes.customer_classr
   app.backend.classes.file_classr   
sqlalchemyr   sqlalchemy.dialectsr   r   fastapir   rt   rm   r&  r!  sqlalchemy.sqlr   r   r    app.backend.classes.helper_classr   r   r8  r   r   <module>rB     sA    " x x < 4  %  !      ( 8A Ar   