+
    #im                    h   ^ RI HtHtHtHtHtHtHt ^ RIt	^ RI
t
^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHtHtH t H!t!H"t"H#t#  ^ RI$t$^ RI%t%]! ]'4      t(]PR                  ](n*        ]PV                  ](P"                  R
&   ]PX                  ](P"                  R&   ]PZ                  ](P"                  R&   ^ RI.H/t/ ]/! ](4       ](Pa                  RR.R7      ]R 4       4       t1](Pa                  R4      ]R 4       4       t2](Pa                  R4      ]R 4       4       t3](Ph                  R 4       t5](Pa                  R4      R 4       t6](Pa                  R4      R 4       t7](Pa                  RR.R7      ]R 4       4       t8](Pa                  RR.R7      ]R  4       4       t9](Pa                  R!4      ]R" 4       4       t:](Pa                  R#4      R$ 4       t;](Pa                  R#R.R7      R% 4       t<](Pa                  R&4      R' 4       t=](Pa                  R(4      ]R) 4       4       t>](Pa                  R*4      ]R+ 4       4       t?](Pa                  R,4      ]R- 4       4       t@](Pa                  R.4      ]R/ 4       4       tA](Pa                  R04      ]R1 4       4       tB](Pa                  R2R.R7      ]R3 4       4       tC](Pa                  R4R.R7      ]R5 4       4       tD](Pa                  R6R.R7      ]R7 4       4       tE](Pa                  R8R9.R7      ]R: 4       4       tF](Pa                  R;R.R7      ]R< 4       4       tG](Pa                  R=4      ]R> 4       4       tH](Pa                  R?R.R7      ]R@ 4       4       tI](Pa                  RAR.R7      ]RB 4       4       tJ](Pa                  RCR.R7      ]RD 4       4       tK](Pa                  RER9.R7      ]RF 4       4       tL](Pa                  RGR.R7      ]RH 4       4       tM](Pa                  RI4      ]RJ 4       4       tN](Pa                  RKR.R7      ]RL 4       4       tO](Pa                  RM4      ]RN 4       4       tP](Pa                  RO4      ]RP 4       4       tQ](Pa                  RQ4      ]RR 4       4       tR](Pa                  RSR.R7      ]RT 4       4       tS](Pa                  RUR.R7      ]RV 4       4       tT](Pa                  RWR.R7      RX 4       tU](Pa                  RYR.R7      RZ 4       tV](Pa                  R[R.R7      ]R\ 4       4       tW](Pa                  R]R.R7      R^ 4       tX](Pa                  R_R.R7      R` 4       tY](Pa                  RaR.R7      ]Rb 4       4       tZ](Pa                  Rc4      ]Rd 4       4       t[](Pa                  ReR.R7      Rf 4       t\](Pa                  Rg4      Rh 4       t]Ri t^](Pa                  Rj4      Rk 4       t^](Pa                  Rl4      Rm 4       t_](Pa                  Rn4      Ro 4       t`](Pa                  Rp4      Rq 4       ta](Pa                  RrR.R7      Rs 4       tb](Pa                  RtR.R7      Ru 4       tc](Pa                  RvR.R7      Rw 4       td](Pa                  RxR.R7      Ry 4       te](Pa                  RzR.R7      ]R{ 4       4       tf](Pa                  R|R.R7      R} 4       tg](Pa                  R~R.R7      R 4       th](Pa                  RR.R7      R 4       ti](Pa                  RR.R7      R 4       tj](Pa                  RR.R7      R 4       tk](Pa                  RR.R7      R 4       tl](Pa                  R4      R 4       tm](Pa                  RR.R7      R 4       tn](Pa                  RR.R7      R 4       to](Pa                  RR.R7      R 4       tp](Pa                  RR.R7      ]R 4       4       tq](Pa                  RR.R7      ]R 4       4       tr](Pa                  RR.R7      ]R 4       4       ts](Pa                  RR.R7      ]R 4       4       tt](Pa                  RR.R7      ]R 4       4       tu](Pa                  RR.R7      ]R 4       4       tv](Pa                  RR.R7      ]R 4       4       tw]'R8X  d!   ](P                  RR]P                  R7       R# R#   ]& d	    Rt$Rt% EL@i ; i)    )Flaskrender_templatejsonifyrequestsessionredirecturl_forN)pprint)Config)login_required)conectar)obter_dados_loja)hash_passwordpassword_is_bcryptverify_password)calcular_distancia_clientecalcular_taxa_entregaconvert_typesget_printer_from_dbgravar_delivery_pendentesend_to_printerSESSION_COOKIE_SAMESITESESSION_COOKIE_SECURESESSION_COOKIE_DOMAIN)register_domain_blueprintsz/formas-pagamentoGET)methodsc                      \        R 4      # )zformas_pagamento.htmlr        )C:\Users\joaqu\OneDrive\LojaOnline\app.pyformas_pagamento_pager#   .   s     233r!   z/configuracoesc                      \        R 4      # )zconfiguracoes.htmlr   r    r!   r"   configuracoesr%   4   s     /00r!   z/configuracoes-dadosc                      \        R 4      # )zconfiguracoes_dados.htmlr   r    r!   r"   configuracoes_dadosr'   9   s     566r!   c                     \         P                  '       g   \         P                  '       d   \        P                  P                  R \        P                  ! R4       R24       \        P                  P                  4        \        P                  P                  R\        P                  ! R4       R24       \        P                  P                  4        R# R# )u*   [LOG][before_request] Sessão id_cliente: 
id_cliente
u.   [LOG][before_request] Sessão usuario_logado: usuario_logadoN)	r   LOG_SESSION_DEBUGFLASK_DEBUGsysstderrwriter   getflushr    r!   r"   log_id_cliente_globalr3   ?   s    6#5#5#5

EgkkR^F_E``bcd



I'++VfJgIhhjkl

	 $6r!   z/pingc                      R# )pong)r5      r    r    r!   r"   pingr7   I   s    r!   z/rota_testec                      R # )zRota de teste OK!r    r    r!   r"   
rota_tester9   O   s    r!   z/api/salvar-forma-pagamentoPOSTc            	         \         P                  ! R R7      ;'       g    / p V P                  RR4      P                  4       p\        P                  ! R4      pV'       g   \        RRRR/4      R	3# V'       g   \        RRRR
/4      R	3#  \        4       pVP                  4       pVP                  RW!34       VP                  4       '       db   \        RRRR/4      R3R\        4       9   d   V'       d   VP                  4        R\        4       9   d   V'       d   VP                  4        # # # VP                  RW34       VP                  4        \        RR RR/4      R\        4       9   d   V'       d   VP                  4        R\        4       9   d   V'       d   VP                  4        # # #   \         du   p\        RRR\        T4      /4      R3u Rp?R\        4       9   d   X'       d   TP                  4        R\        4       9   d   X'       d   TP                  4        # # # Rp?ii ; i  R\        4       9   d   X'       d   TP                  4        R\        4       9   d   X'       d   TP                  4        i i i ; i)Tsilentforma r)   sucessoFmensagemu!   Forma de pagamento não informada     Sessão sem id_clientez
            SELECT chave
            FROM formapagamento
            WHERE id_cliente = %s
              AND LOWER(TRIM(forma)) = LOWER(TRIM(%s))
            LIMIT 1
            u,   Essa forma de pagamento já está cadastradai  cursorconnz>INSERT INTO formapagamento (forma, id_cliente) VALUES (%s, %s)z)Forma de pagamento adicionada com sucesso  N)r   get_jsonr1   stripr   r   r   rD   executefetchonelocalsclosecommit	Exceptionstr)datar>   r)   rE   rD   es         r"   salvar_forma_pagamentorR   U   s    4(..BDHHWb!'')E\*J	5*6YZ[]```	5*6NOPRUUU5z 	 		
 ??Iuj:hijloo vxFFLLNVX$

$ 	WZ_Ylm	45`ab vxFFLLNVX$

$	  D	5*c!f=>CCvxFFLLNVX$

$	D vxFFLLNVX$

$sC   AF1 /1F1 1H0<H+H0H3 +H00H3 3J&J2Jz(/api/excluir-forma-pagamento/<int:chave>DELETEc           	         \         P                  ! R 4      p \        4       pVP                  4       pVP	                  RW34       VP                  4        VP                  ^ 8  d`   \        RRRR/4      R\        4       9   d   V'       d   VP                  4        R\        4       9   d   V'       d   VP                  4        # # # \        RRRR	/4      R
3R\        4       9   d   V'       d   VP                  4        R\        4       9   d   V'       d   VP                  4        # # #   \         du   p\        RRR\        T4      /4      R3u Rp?R\        4       9   d   X'       d   TP                  4        R\        4       9   d   X'       d   TP                  4        # # # Rp?ii ; i  R\        4       9   d   X'       d   TP                  4        R\        4       9   d   X'       d   TP                  4        i i i ; i)r)   z?DELETE FROM formapagamento WHERE chave = %s AND id_cliente = %sr@   TrA   u(   Forma de pagamento excluída com sucessorD   rE   Fu"   Forma de pagamento não encontrada  rF   N)r   r1   r   rD   rI   rM   rowcountr   rK   rL   rN   rO   )chaver)   rE   rD   rQ   s   &    r"   excluir_forma_pagamentorX   z   si    \*J5zX[`Zmn??QItZ9cde
 vxFFLLNVX$

$ 	5*6Z[\^aa vxFFLLNVX$

$	  D	5*c!f=>CCvxFFLLNVX$

$	D vxFFLLNVX$

$sB   AD& D& &F%1F 
F%F(  F%%F( (G: &G:'G:/c                      \         P                  ! R 4      p \        V 4      pVP                  RR4      p\        RWR7      # )r)   nome
Minha Lojaz	casa.htmlr)   nome_fantasiar   r1   r   r   r)   
dados_lojar^   s      r"   indexrb      s9     \*J!*-JNN6<8M;:[[r!   z/loginc                     \        R4      # )u   Página de loginz
login.htmlr   r    r!   r"   
login_pagerd      s     <((r!   c            
        \         P                  ;'       g    / p V P                  RR4      P                  4       pV P                  RR4      P                  4       pRpRp \	        4       pVP                  RR7      pVP                  RV34       VP                  4       pV'       Ed   VP                  R4      p\        V\        4      '       d   VP                  RR	R
7      p\        Wb4      '       gC   \        RRRR/4      R3V'       d   VP                  4        V'       d   VP                  4        # # \        V\        4      '       dA   \        V4      '       g0    \!        V4      pVP                  RWq34       VP#                  4        V\(        R&   VP                  R4      ;'       g    ^p	V	\(        R&   Rp
Rp \	        4       p
V
P                  RR7      pVP                  RV	34       VP                  4       pV'       d   VP                  4        V
'       d   V
P                  4        T'       gE   \        RRRRRRRT	/4      T'       d   TP                  4        T'       d   TP                  4        # # \        RRRRRT	/4      T'       d   TP                  4        T'       d   TP                  4        # # \        RRRR/4      R3V'       d   VP                  4        V'       d   VP                  4        # #   \$         d   p\'        RT4        Rp?ELRp?ii ; i  T'       d   TP                  4        T
'       d   T
P                  4        i i ; i  \*        P,                  P.                   dY   p\'        RT4       \        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)uV   Autentica o usuário usando a tabela usuarios (bcrypt ou senha legada em texto plano).usuarior?   senhaNT
dictionaryzJSELECT usuario, senha, id_cliente FROM usuarios WHERE usuario = %s LIMIT 1zutf-8replace)errorsr@   Ferrou   Usuário ou senha incorretos  z1UPDATE usuarios SET senha = %s WHERE usuario = %sz*[LOGIN] Falha ao migrar senha para bcrypt:r+   r)   z5SELECT 1 FROM dadosloja WHERE id_cliente = %s LIMIT 1redirecionar/dados-lojarA   zComplete os dados da lojazLogin realizado com sucessoz[DB ERROR LOGIN]zErro ao validar loginrF   )r   jsonr1   rH   r   rD   rI   rJ   
isinstancebytesdecoder   r   rL   rO   r   r   rM   rN   printr   mysql	connectorError)dadosrf   rg   rE   rD   usuario_encontrado	stored_pw	novo_hashmig_errr)   conn2cursor2dadosloja_existedb_errs                 r"   loginr      s`    LLBEii	2&,,.GIIgr"((*EDFBz-XJ	
 $__.*..w7I)U++%,,WY,G	"944	5&:XYZ\__^ LLNJJL _ )S))2DY2O2OQ -e 4INNK", KKM )0G$%+//=BBJ$.GL!EG	" 
,,$,7 WZdYfg#*#3#3#5 MMOKKM#!4&"$?$j	" LLNJJL  ItZ9VXdfpqr LLNJJL  	5&2PQRTWW LLNJJL O ! QFPPQ MMOKKM  ??   Q &)	5&2IJKSPP LLNJJL Q
 LLNJJL s    B#M 5'M .K<  M ,M =?L! <M M 4M 8M :M <LLM LM ! MMM O6O	OO 	OO  P2Pz/logoutc                     \         P                  ! RR4       \         P                  ! RR4       \        \        R4      4      # )u   Desloga o usuárior+   Nr)   rd   )r   popr   r	   r    r!   r"   logoutr      s1     KK $'KKd#GL)**r!   z/casac                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u   Página de pedidos (carrossel)r)   r[   r\   z
index.htmlr]   r_   r`   s      r"   casar      s9     \*J!*-JNN6<8M<J\\r!   z/delivery-pendente-viewc                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u4   Página para visualizar pedidos pendentes de entregar)   r[   r\   zdelivery_pendente.htmlr]   r_   r`   s      r"   delivery_pendente_viewr      s:     \*J!*-JNN6<8M3
hhr!   z/canceladasc                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u*   Página para visualizar pedidos canceladosr)   r[   r\   zcanceladas.htmlr]   r_   r`   s      r"   canceladas_viewr      :     \*J!*-JNN6<8M,aar!   z	/comandasc                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u)   Página para visualizar comandas fechadasr)   r[   r\   zcomandas.htmlr]   r_   r`   s      r"   comandas_viewr   	  s9     \*J!*-JNN6<8M?z__r!   z/cadastrar-entregadorc                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u#   Página de cadastro de entregadoresr)   r[   r\   zcadastrar_entregador.htmlr]   r_   r`   s      r"   cadastrar_entregadorr     s:     \*J!*-JNN6<8M6:kkr!   z/api/salvar-entregadorc            
     l   Rp Rp \         P                  ;'       g    / pVP                  RR4      P                  4       pVP                  RR4      P                  4       pVP                  RR4      P                  4       pV'       gC   \	        RRRR	/4      R
3V'       d   VP                  4        V '       d   V P                  4        # # \        4       p V P                  4       p\        P                  ! R4      pVP                  RW4WV34       V P                  4        VP                  p\        RV RV RV R24       \	        RRRRV RV R2/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        RT4       \	        RRRR/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z2Salva um novo entregador na tabela de entregadoresNr[   r?   telefoneenderecor@   Frl      Nome é obrigatóriorB   r)   zw
            INSERT INTO entregador (nome, telefone, endereco, id_cliente)
            VALUES (%s, %s, %s, %s)
        z[ENTREGADOR CADASTRADO]     (código: z, telefone: )TrA   Entregador 'u$   ' cadastrado com sucesso! (Código: 
[DB ERROR]z+Erro ao salvar entregador no banco de dadosrF   r   rp   r1   rH   r   rL   r   rD   r   rI   rM   	lastrowidrt   ru   rv   rw   )	rE   rD   rx   r[   r   r   r)   chave_geradar   s	            r"   salvar_entregadorr     s    DF$""yy$**,99Z,22499Z,224Iuf6LMNPSS4 LLNJJL 5 z [[.
  h3	5
 	''(k,|T\S]]^_`t,tf,PQ]P^^_`
  LLNJJL  ??   glF#	5&2_`acfff LLNJJL g
 LLNJJL sC   BF F 
B
F G=%G8G=H  8G==H    H3!H3z/api/listar-entregadoresc                    Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       p\        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        RT4       \        RR	R
R/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z'Lista todos os entregadores cadastradosNTrh   r)   z
            SELECT chave, nome, telefone, endereco
            FROM entregador
            WHERE id_cliente = %s
            ORDER BY nome
        r@   entregadoresr   Frl   zErro ao listar entregadoresrF   r   rD   r   r1   rI   fetchallr   rL   ru   rv   rw   rt   )rE   rD   r)   r   r   s        r"   listar_entregadoresr   I  s    DFz-[[.
 
 ]	 (tL
  LLNJJL  ??   WlF#	5&2OPQSVVV LLNJJL W
 LLNJJL s6   A#B D:DDD DD  E6Ez!/api/obter-entregador/<int:chave>c                *   RpRp \        4       pVP                  RR7      p\        P                  ! R4      pVP	                  RW34       VP                  4       pV'       dA   \        RRRV/4      V'       d   VP                  4        V'       d   VP                  4        # # \        RRR	R
/4      R3V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \        RRR	R/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)u)   Obtém dados de um entregador específicoNTrh   r)   z
            SELECT chave, nome, telefone, endereco
            FROM entregador
            WHERE chave = %s AND id_cliente = %s
        r@   
entregadorFrl      Entregador não encontradorU   r   zErro ao obter entregadorrF   r   rD   r   r1   rI   rJ   r   rL   ru   rv   rw   rt   rW   rE   rD   r)   r   r   s   &     r"   obter_entregadorr   l  sS    DFz-[[.
   		" __&
4j  LLNJJL  Iuf6RSTVYY LLNJJL  ??   TlF#	5&2LMNPSSS LLNJJL T
 LLNJJL s<   A+C% #C% %EE E!E EE  F Fz"/api/editar-entregador/<int:chave>PUTc                   RpRp \         P                  ;'       g    / pVP                  RR4      P                  4       pVP                  RR4      P                  4       pVP                  RR4      P                  4       pV'       gC   \	        RRRR	/4      R
3V'       d   VP                  4        V'       d   VP                  4        # # \        4       pVP                  4       p\        P                  ! R4      pVP                  RWEW`V34       VP                  4        VP                  ^ 8  dW   \        RV RV  R24       \	        RRRRV R2/4      V'       d   VP                  4        V'       d   VP                  4        # # \	        RRRR/4      R3V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \	        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)zEdita um entregador existenteNr[   r?   r   r   r@   Frl   r   rB   r)   z
            UPDATE entregador 
            SET nome = %s, telefone = %s, endereco = %s
            WHERE chave = %s AND id_cliente = %s
        z[ENTREGADOR ATUALIZADO] r   r   TrA   r   z' atualizado com sucesso!r   rU   r   zErro ao editar entregadorrF   r   rp   r1   rH   r   rL   r   rD   r   rI   rM   rV   rt   ru   rv   rw   )	rW   rE   rD   rx   r[   r   r   r)   r   s	   &        r"   editar_entregadorr     s    DF&""yy$**,99Z,22499Z,224Iuf6LMNPSS8 LLNJJL 9 z[[.
  hz:		< 	??Q,TF+eWAFG4l4&0IJ  LLNJJL  Iuf6RSTVYY LLNJJL  ??   UlF#	5&2MNOQTTT LLNJJL U
 LLNJJL sI   BG G 
B
G G H?'H:H?I :H??I  I5#I5z#/api/excluir-entregador/<int:chave>c                   RpRp \        4       pVP                  RR7      p\        P                  ! R4      pVP	                  RW34       VP                  4       pV'       gC   \        RRRR	/4      R
3V'       d   VP                  4        V'       d   VP                  4        # # VP	                  RW34       VP                  4        \        RVR,           RV  R24       \        RRRRVR,           R2/4      V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)zExclui um entregadorNTrh   r)   z@SELECT nome FROM entregador WHERE chave = %s AND id_cliente = %sr@   Frl   r   rU   z;DELETE FROM entregador WHERE chave = %s AND id_cliente = %su   [ENTREGADOR EXCLUÍDO] r[   r   r   rA   r   u   ' excluído com sucesso!r   zErro ao excluir entregadorrF   r   rD   r   r1   rI   rJ   r   rL   rM   rt   ru   rv   rw   r   s   &     r"   excluir_entregadorr     s    DFz- [[.
Y\a[no__&
Iuf6RSTVYY" LLNJJL ! 	TW\Vij'
6(:';;ugQOPt,z&'9&::RS
  LLNJJL  ??   VlF#	5&2NOPRUUU LLNJJL V
 LLNJJL =   A-D, %AD, ,F#F'F#(F& F##F& & GGz/cadastrar-classificacaoc                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u'   Página de cadastro de classificaçõesr)   r[   r\   zcadastrar_classificacao.htmlr]   r_   r`   s      r"   cadastrar_classificacaor     s:     \*J!*-JNN6<8M9jnnr!   z/api/salvar-classificacaoc                 $   Rp Rp \         P                  ;'       g    / pVP                  RR4      P                  4       pVP                  R4      pVP                  R4      pV'       gC   \	        RRRR	/4      R
3V'       d   VP                  4        V '       d   V P                  4        # # \        4       p V P                  4       p\        P                  ! R4      pVP                  RW4WV34       V P                  4        VP                  p\        RV RV R24       \	        RRRRV R2/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        RT4       \	        RRRR/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u   Salva uma nova classificaçãoNnomeclassificacaor?   quantidadepartesnrofotor@   FrA   '   Nome da classificação é obrigatóriorB   r)   z
            INSERT INTO classificacao (nomeclassificacao, quantidadepartes, nrofoto, id_cliente)
            VALUES (%s, %s, %s, %s)
        u   [CLASSIFICAÇÃO CADASTRADA] r   r   T   Classificação 'z' cadastrada com sucesso!r   u0   Erro ao salvar classificação no banco de dadosrF   r   )	rE   rD   rx   r   r   r   r)   r   r   s	            r"   salvar_classificacaor     s    DF#""!II&92>DDF 99%78))I& Iuj:cdegjj2 LLNJJL 3 z[[.
   7G	I
 	''-.?-@L>YZ[\t+,=+>>WX
  LLNJJL  ??   plF#	5*6hijlooo LLNJJL p
 LLNJJL sC   A#E" *E" ,BE" "GGGG GG  H=Hz/api/listar-classificacoesc                    Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       pV F2  pVP	                  RVR,          V34       VP                  4       pWTR&   K4  	  \        V4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        R	T4       \        R
RRR/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u+   Lista todas as classificações cadastradasNTrh   r)   z
            SELECT chave, nomeclassificacao, quantidadepartes, nrofoto, formadecobrar
            FROM classificacao
            WHERE id_cliente = %s
            ORDER BY nomeclassificacao
        zQSELECT produto AS nome, preco FROM produtos WHERE classe = %s AND id_cliente = %sr   produtosr   r@   FrA   u   Erro ao listar classificaçõesrF   r   )rE   rD   r)   classificacoesclassifr   r   s          r"   listar_classificacoesr     sT    DFz-[[.
 
 ]	  *%GNNnqx  zM  rN  PZ  q[  \(H"*J & ~&
 LLNJJL  ??   _lF#	5*6WXY[^^^LLNJJL _ LLNJJL s6   BC E.E
EE	 EE	 	 E<*E<z$/api/obter-classificacao/<int:chave>c                "   RpRp \        4       pVP                  RR7      p\        P                  ! R4      pVP	                  RW34       VP                  4       pV'       d=   \        V4      V'       d   VP                  4        V'       d   VP                  4        # # \        RRRR	/4      R
3V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)u/   Obtém dados de uma classificação específicaNTrh   r)   z
            SELECT chave, nomeclassificacao, quantidadepartes, nrofoto, formadecobrar
            FROM classificacao
            WHERE chave = %s AND id_cliente = %s
        r@   FrA      Classificação não encontradarU   r   u   Erro ao obter classificaçãorF   r   rW   rE   rD   r)   classificacaor   s   &     r"   obter_classificacaor   ;  sD    DFz-[[.
   		" )=) LLNJJL  Iuj:[\]_bb LLNJJL  ??   ]lF#	5*6UVWY\\\ LLNJJL ]
 LLNJJL s<   A'C! C! !E EEE EE  F<Fz%/api/editar-classificacao/<int:chave>c                   RpRp \         P                  ;'       g    / pVP                  RR4      P                  4       pVP                  R4      pVP                  R4      pV'       gC   \	        RRRR	/4      R
3V'       d   VP                  4        V'       d   VP                  4        # # \        4       pVP                  4       p\        P                  ! R4      pVP                  RWEW`V34       VP                  4        VP                  ^ 8  dW   \        RV RV  R24       \	        RRRRV R2/4      V'       d   VP                  4        V'       d   VP                  4        # # \	        RRRR/4      R3V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \	        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)u#   Edita uma classificação existenteNr   r?   r   r   r@   FrA   r   rB   r)   z
            UPDATE classificacao 
            SET nomeclassificacao = %s, quantidadepartes = %s, nrofoto = %s
            WHERE chave = %s AND id_cliente = %s
        u   [CLASSIFICAÇÃO ATUALIZADA] r   r   Tr   z' atualizada com sucesso!r   rU   r   u   Erro ao editar classificaçãorF   r   )	rW   rE   rD   rx   r   r   r   r)   r   s	   &        r"   editar_classificacaor   ]  s    DF&""!II&92>DDF 99%78))I& Iuj:cdegjj8 LLNJJL 9 z[[.
   7:N		P 	??Q12C1DKPUwVWXY4/0A/BB[\  LLNJJL  Iuj:[\]_bb LLNJJL  ??   ^lF#	5*6VWXZ]]] LLNJJL ^
 LLNJJL sI   A#F* *F* ,B
F* (F* *H!	H%H!&H$ H!!H$ $ IIz&/api/excluir-classificacao/<int:chave>c                   RpRp \        4       pVP                  RR7      p\        P                  ! R4      pVP	                  RW34       VP                  4       pV'       gC   \        RRRR	/4      R
3V'       d   VP                  4        V'       d   VP                  4        # # VP	                  RW34       VP                  4        \        RVR,           RV  R24       \        RRRRVR,           R2/4      V'       d   VP                  4        V'       d   VP                  4        # #   \        P                  P                   dY   p\        RT4       \        RRRR/4      R3u Rp?T'       d   TP                  4        T'       d   TP                  4        # # Rp?ii ; i  T'       d   TP                  4        T'       d   TP                  4        i i ; i)u   Exclui uma classificaçãoNTrh   r)   zPSELECT nomeclassificacao FROM classificacao WHERE chave = %s AND id_cliente = %sr@   FrA   r   rU   z>DELETE FROM classificacao WHERE chave = %s AND id_cliente = %su   [CLASSIFICAÇÃO EXCLUÍDA] r   r   r   r   u   ' excluída com sucesso!r   rl   u   Erro ao excluir classificaçãorF   r   r   s   &     r"   excluir_classificacaor     s    DFz- [[.
ilqk~)Iuj:[\]_bb" LLNJJL ! 	WZ_Ylm,];N-O,PP[\a[bbcdet+M:M,N+OOgh
  LLNJJL  ??   [lF#	5&2STUWZZZ LLNJJL [
 LLNJJL r   ro   c                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u%   Página de cadastro dos dados da lojar)   r[   r\   zdados_loja.htmlr]   r_   r`   s      r"   ra   ra     r   r!   z/api/salvar-dados-lojac                    Rp Rp \         P                  ;'       g    / pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  R	R4      p	VP                  R
R4      p
VP                  RR4      pVP                  RR4      p\        P                  ! R4      pV'       gC   \	        RRRR/4      R3V'       d   VP                  4        V '       d   V P                  4        # # \        4       p V P                  4       pVP                  RV34       VP                  4       pV'       d   VP                  RW4WVWxWWV34       MVVP                  RWWEWgWWV34       VP                  RV34       VP                  4       pV'       g   VP                  RV34       V P                  4        \	        RRRR/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\        RT 24       \	        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?i\          dd   p\        RT 24       \	        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)zSalva os dados da lojaNr[   r?   r   bairrocidadecepr   cnpjlatitude	longitudedddr)   r@   Frl   %   id_cliente não encontrado na sessãorB   z6SELECT id_cliente FROM dadosloja WHERE id_cliente = %sz
                UPDATE dadosloja 
                SET nome = %s, endereco = %s, bairro = %s, cidade = %s, cep = %s, telefone = %s, cnpj = %s, latitude = %s, longitude = %s, ddd = %s
                WHERE id_cliente = %s
            z
                INSERT INTO dadosloja (id_cliente, nome, endereco, bairro, cidade, cep, telefone, cnpj, latitude, longitude, ddd)
                VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
            z;SELECT id_cliente FROM contadorpedido WHERE id_cliente = %s@INSERT INTO contadorpedido (contador, id_cliente) VALUES (1, %s)TrA   z Dados da loja salvos com sucesso
[ERRO DB] rF   [ERRO] )r   rp   r1   r   r   rL   r   rD   rI   rJ   rM   ru   rv   rw   rt   rO   rN   )rE   rD   rx   r[   r   r   r   r   r   r   r   r   r   r)   existeexiste_contadorrQ   s                    r"   salvar_dados_lojar     s    DF:""yy$99Z,8R(8R(iir"99Z,yy$99Z,IIk2.	iir"[[.
Iuf6]^_addP LLNJJL Q z 	OR\Q^_"NN  &#QZakl	n NN  Hf8S[hkln NNX[eZgh$oo/O"adncpq	45WXY LLNJJL  ??   @
1#	5&#a&9:C??
 LLNJJL   @sm	5&#a&9:C??LLNJJL @ LLNJJL sa   C+H8 2H8 4CH8 8L&'J5>L&?L) 5L&L&'L!*L&+L) !L&&L) ) M
Mz/api/buscar-dados-lojac            	        Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pV'       gC   \	        RRRR/4      R	3V'       d   VP                  4        V '       d   V P                  4        # # VP                  R
V34       VP                  4       pV'       dA   \	        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # # \	        RRRR/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\        RT 24       \	        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)zBusca os dados da lojaNTrh   r)   r@   Frl   rC   rm   z5SELECT * FROM dadosloja WHERE id_cliente = %s LIMIT 1rx   r   rF   )r   rD   r   r1   r   rL   rI   rJ   ru   rv   rw   rt   rO   )rE   rD   r)   rx   rQ   s        r"   buscar_dados_lojar     s    DFz-[[.
Iuf6NOPRUU LLNJJL  	NQ[P]^!ItWe<= LLNJJL  ItWd;< LLNJJL  ??   @
1#	5&#a&9:C??LLNJJL @ LLNJJL sH   A
D- *D- -D- -D- -F/'F*3F/4F2 *F//F2 2 G%G%z/cadastrar-taxac                     \         P                  ! R4      p \        V 4      pVP                  RR4      p\        RWR7      # )u'   Página de cadastro de taxas de entregar)   r[   r\   zcadastrar_taxa.htmlr]   r_   r`   s      r"   cadastrar_taxar     s:     \*J!*-JNN6<8M0Zeer!   z/api/dados-loja-infoc            	         \         P                  ! R4      p V '       g   \        RRRR/4      R3# \        V 4      p\        RRRV/4      #   \         d3   p\        R	T 24       \        RRR\        T4      /4      R
3u Rp?# Rp?ii ; i)u-   Retorna informações da loja para exibiçãor)   r@   Frl   rC   rm   Trx   r   rF   N)r   r1   r   r   rN   rt   rO   )r)   rx   rQ   s      r"   dados_loja_infor   &  s    @[[.
Iuf6NOPRUUU ,	4%899 @sm	5&#a&9:C??@s'   A A A B'B=BBz/api/salvar-taxac            	     n   Rp Rp \         P                  ;'       g    / pVP                  R^4      p\        P                  ! R4      p. p. p\	        ^^4       Fy  pVP                  RV R24      pVP                  RV R24      p	VP                  RV R24       VP                  RV R24       VP                  V4       VP                  V	4       K{  	  \        4       p V P                  4       pVP                  R	W434       VP                  4       p
V
'       df   R
RP                  V4       R2pVP                  V4       VP                  V4       VP                  V\        V4      4       \        RV RV 24       EM%RR.\	        ^^4       Uu. uF	  pRV R2NK  	  up,           \	        ^^4       Uu. uF	  pRV R2NK  	  up,           pR.\        V4      ,          pW4.p\	        ^^4       F'  pVP                  VP                  RV R24      4       K)  	  \	        ^^4       F'  pVP                  VP                  RV R24      4       K)  	  RRP                  V4       RRP                  V4       R2pVP                  V\        V4      4       \        RV RV 24       V P                  4        \        RRRR/4      V'       d   VP!                  4        V '       d   V P!                  4        # # u upi u upi   \"        P$                  P&                   db   p\        RT4       \        RRR\)        T4      /4      R3u Rp?T'       d   TP!                  4        T '       d   T P!                  4        # # Rp?ii ; i  T'       d   TP!                  4        T '       d   T P!                  4        i i ; i)z%Salva ou atualiza as taxas de entregaNrW   r)   faixa_d_vz_d = %sz_v = %sz@SELECT chave FROM txentrega WHERE chave = %s AND id_cliente = %szUPDATE txentrega SET z, z% WHERE chave = %s AND id_cliente = %sz [TAXA ENTREGA ATUALIZADA] chave z, id_cliente z%szINSERT INTO txentrega (z
) VALUES (r   z[TAXA ENTREGA CRIADA] chave r@   TrA   z$Taxas de entrega salvas com sucesso!r   Frl   rF   )r   rp   r1   r   rangeappendr   rD   rI   rJ   jointuplert   lenrM   r   rL   ru   rv   rw   rO   )rE   rD   rx   rW   r)   camposvaloresifaixa_dfaixa_vr   sqlcampos_insertplaceholdersvalores_insertr   s                   r"   salvar_taxar   4  sv    DF>""		'1%[[.
 q"Aii%s".Gii%s".GMME!G,-MME!G,-NN7#NN7#  z 	Y\a[no")$))F*;)<<abCNN5!NN:&NN3g/4UG=UV %l3eTUWYl6[lqc}l6[[v{|}  @B  wC  _D  wCqrafghfiik_l  wC  _D  DM 6C$66L#0N1b\%%eii%s"&>? "1b\%%eii%s"&>? " ,DIIm,D+EZPTPYPYZfPgOhhijCNN3n 560}ZLQRt>
  LLNJJL 7 7\  _D( ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL sU   F
K> K4K> 5K9C>K> 4
K> >M>%M9M>N 9M>>N  N4"N4z/api/obter-taxac            	     8   Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       pV'       dA   \        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # # \        RRRR/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        RT4       \        RR	R
\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u'   Obtém as taxas de entrega configuradasNTrh   r)   z;SELECT * FROM txentrega WHERE chave = 1 AND id_cliente = %sr@   taxar   Frl   rF   r   rD   r   r1   rI   rJ   r   rL   ru   rv   rw   rt   rO   )rE   rD   r)   r   r   s        r"   
obter_taxar   z  s@    DFz-[[.
TWaVcd ItVT:; LLNJJL  ItVT:; LLNJJL  ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL s<   A+C# #C# #E#%E'E#(E& E##E& & FFz/api/buscar-taxa-padraoc            	        Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       pV'       dh   VP                  R4      '       dQ   \        RRR\        VR,          4      /4      V'       d   VP                  4        V '       d   V P                  4        # # \        RRR^ /4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\        R	T 24       \        RR
R\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u9   Busca o valor da primeira faixa de entrega (taxa padrão)NTrh   r)   z<SELECT faixa1_v FROM txentrega WHERE id_cliente = %s LIMIT 1faixa1_vr@   taxa_padraor   Frl   rF   )r   rD   r   r1   rI   rJ   r   floatrL   ru   rv   rw   rt   rO   )rE   rD   r)   r   rQ   s        r"   buscar_taxa_padraor     s[    DFz-[[.
UXbWde DHHZ((It]E$zBR<STU LLNJJL  It]A>? LLNJJL  ??   @
1#	5&#a&9:C??LLNJJL @ LLNJJL sB   A3D
 :D
 
D
 
F)'FFF FF  G0Gz/api/buscar-configuracaoc            	     4   Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      p\	        RV R\        V4       R24       V'       dN   VP                  RV34       VP                  4       pV'       g"   VP                  R	4       VP                  4       pM!VP                  R
4       VP                  4       p\	        RV 24       V'       dA   \        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # # \        RRRR/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\	        RT 24       \        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u#   Busca as configurações do sistemaNTrh   r)   u-   [BUSCAR CONFIG DEBUG] id_cliente da sessão: z (tipo: r   LSELECT * FROM configuracao WHERE id_cliente = %s ORDER BY chave DESC LIMIT 1zKSELECT * FROM configuracao WHERE id_cliente = 1 ORDER BY chave DESC LIMIT 1zFSELECT * FROM configuracao WHERE chave = 1 ORDER BY chave DESC LIMIT 1z![BUSCAR CONFIG DEBUG] Resultado: r@   configr   Frl   rF   )r   rD   r   r1   rt   typerI   rJ   r   rL   ru   rv   rw   rO   )rE   rD   r)   r   rQ   s        r"   buscar_configuracaor     s    DF z-[[.
=j\RVWaRbQccdefNNilvkxy__&Flm* NNcd__&F1&:;ItXv>? LLNJJL  ItXt<= LLNJJL  ??   @
1#	5&#a&9:C??LLNJJL @ LLNJJL sC   A?E A'E E G!>'G%G!&G$ G!!G$ $ HHz/api/salvar-configuracao-dadosc            	     X   Rp Rp \         P                  ! RR7      ;'       g    / p\        VP                  R4      \        4      '       d   VP                  R4      M/ pVP                  R4      ;'       g    RP                  4       pVP                  R4      p\        P                  ! R4      ;'       g    ^p\        4       p V P                  4       pVP                  R	V34       VP                  4       pV'       d   V^ ,          pMVP                  R
V34       VP                  pVP                  R4       VP                  4        U	u0 uF  q^ ,          kK  	  p
p	RR0pV'       d   \        P                  ! RV4      '       gC   \        RRRR/4      R3V'       d   VP!                  4        V '       d   V P!                  4        # # WK9   dC   \        RRRR/4      R3V'       d   VP!                  4        V '       d   V P!                  4        # # WJ9  d'   VP                  RV R24       V
P#                  V4       WSV&   ^ pVP%                  4        F  w  r\        V\&        4      '       g   K  VP                  4       pV'       g   K7  W9   d   K?  W9  d   KG  \        P                  ! RV4      '       g   Kf  VP                  RV R2W34       V^,          pK  	  V P)                  4        V P                  RR7      pVP                  RV34       VP                  4       pVP!                  4        \        RRRRV 2RV/4      V'       d   VP!                  4        V '       d   V P!                  4        # # u up	i   \*         dn   pT '       d   T P-                  4        \        RRR\'        T4      /4      R3u Rp?T'       d   TP!                  4        T '       d   T P!                  4        # # Rp?ii ; i  T'       d   TP!                  4        T '       d   T P!                  4        i i ; i)zNEdita campos existentes e permite incluir novos campos na tabela configuracao.NTr<   updates	new_fieldr?   	new_valuer)   zPSELECT chave FROM configuracao WHERE id_cliente = %s ORDER BY chave DESC LIMIT 1z1INSERT INTO configuracao (id_cliente) VALUES (%s)zSHOW COLUMNS FROM configuracaorW   data_criacaoz^[A-Za-z_][A-Za-z0-9_]*$r@   FrA   u   Nome de campo inválidorB   u   Campo não permitidoz%ALTER TABLE configuracao ADD COLUMN `z` VARCHAR(255) NULLzUPDATE configuracao SET `z` = %s WHERE chave = %srh   z3SELECT * FROM configuracao WHERE chave = %s LIMIT 1u*   Configuração salva. Campos atualizados: r   rF   )r   rG   rq   r1   dictrH   r   r   rD   rI   rJ   r   r   rematchr   rL   additemsrO   rM   rN   rollback)rE   rD   rP   r   
novo_campo
novo_valorr)   rowchave_configccolunas_existentescampos_bloqueadoscampos_aplicadoscampovalorcursor_dictconfig_atualizadarQ   s                     r"   salvar_configuracao_dadosr    s    DFMt,22)3DHHY4G)N)N$((9%TVhh{+11r88:
XXk*
[[.33!
z 	ilvkxyooq6LNNNQ[P]^!++L 	78,2OO,=>,=qdd,=> %n5 887DD	5*>WXY[^^X LLNJJL [ .	5*>TUVX[[T LLNJJL W 3!FzlRefg"&&z2",J #MMOLEeS))KKME).887??NN6ug=TUX]Wlm! , 	 kkTk2QT`Sbc'002tDEUDVW'
  LLNJJL m ?^  DMMO	5*c!f=>CCLLNJJL D
 LLNJJL s{   A0M; 7>M; 6BM; 
M6*M; M; M; A6M; .M; 6BM; 6M; ;O31O.7O38O6 O6 .O33O6 6 P)P)z	/imprimirc                    \         P                  ;'       g    / p V P                  RR4      pV P                  R4      pV P                  R. 4      pV P                  RR4      p\        V P                  R^4      4      p\	        R4       \	        RV P                  R4       24       \	        R	\        V P                  R4      4       24       \	        R
V 24       V'       d   VRV R2,          pVR,          pV'       d   V'       d    \        WV4       \        4       pT;'       gC    T;'       g9    \        P                  R8X  d"   \        '       d   \        P                  ! 4       MRp\        4       p	V	P!                  RR7      p
\"        P                  ! R4      pV
P%                  RV34       V
P'                  4       pRpV'       d0   VP                  R4      pV'       d   RV 2pVP                  V4      pV
'       d   V
P)                  4        V	'       d   V	P)                  4        \	        RV R24       . p\+        V4       FR  p\-        WV4      w  ppV'       d   K  VP/                  RV^,            RV 24       \	        RV^,            RV 24       KT  	  V'       d#   \1        RRRRP3                  V4      RV/4      R 3# \         P4                  P                  R!4      R"8X  g   \         P6                  '       d   \1        RRRVRV/4      # \9        R#4      #   \         d/   p\	        RT 24       \        P                  ! 4         Rp?EL:Rp?ii ; i)$u   Endpoint de impressão silenciosa. Resolve nome da impressora pela ordem: parâmetro -> DB -> padrão do Windows.
Retorna JSON com sucesso/erro e o nome da impressora utilizado.
conteudor?   printerr   forma_pagamentocopiasz"[IMPRESSAO DEBUG] Dados recebidos:z  - copias (raw): z  - copias (type): z  - copias (convertido): zFORMA DE PAGAMENTO: r*   [DELIVERY PENDENTE ERRO] Nwin32Trh   r)   r   imp_comandadelivery	marca_impz[IMPRESSAO] Imprimindo u    cópia(s)...u   Cópia : u   [IMPRESSAO ERRO] Cópia z	 falhou: r@   Frl   z; rF   zX-Requested-WithXMLHttpRequestrY   )r   rp   r1   intrt   r   r   rN   	traceback	print_excr   r.   platform
win32printGetDefaultPrinterr   rD   r   rI   rJ   rL   r   r   r   r   r   headersis_jsonr   )rx   r  printer_paramr   r  r  rQ   
printer_dbprinter_resolvedrE   rD   r)   r   marca_impressoranro_impcampo_marcaerrosr   okerrs                       r"   imprimirr1  .  s   
 LLBEyyR(HIIi(MyyR(Hii 126O8Q'(F	.0	uyy23
45	UYYx%8 9:
;<	%fX
./ *?*;2>> H
 H	"$XI %&J$  M  M
  M  MZ]ZfZfjqZq  wA  wAz7S7S7U  HL :D[[D[)F\*J
NNadncpq__F**23%gY/K%zz+6

 
#F8=
9:E6]!(>NOCrLL71Q3%r#/0,QqSE3%@A	  	5&$))E2BIO_`acfff ??126FF'///ItY8H(TZ[\\}S  	"-aS12!!	"s   L M%#MMz/testar-impressorac                    \        4       p T ;'       g9    \        P                  R8X  d"   \        '       d   \        P                  ! 4       MRpRp\        W!4      w  r4V'       d   \        RRRV/4      # \        RRRVRV/4      R	3# )
z7Envia uma linha de teste para a impressora configurada.r  Nu(   *** TESTE DE IMPRESSÃO - NOVALOJA ***
r@   Tr  Frl   rF   )r   r.   r#  r$  r%  r   r   )r)  r*  tester/  r0  s        r"   testar_impressorar4  w  s     %&J!{{Y`I`eoeoj&B&B&Dvz8Ee6GB		44DEFF	5&#yBRSTVYYYr!   z/preparar-impressaoc            	     "    \         P                  ;'       g    / p V P                  RR4      pV P                  R. 4      pV'       g   \        RRRR/4      R3# V\        R	&   V'       d    \        W4       \        RR/4      #   \         d.   p\        R
T 24       \        P                  ! 4         Rp?L@Rp?ii ; i  \         dF   p\        RT4       \        P                  ! 4        \        RRR\        T4      /4      R3u Rp?# Rp?ii ; i)u<   Prepara o pedido para impressão e grava em deliverypendenter  r?   r   r@   Frl      Conteúdo vaziorB   pedido_impressaor  NTu   [PREPARAR IMPRESSÃO ERRO]rF   )r   rp   r1   r   r   r   rN   rt   r!  r"  rO   )rx   r  r   rQ   s       r"   preparar_impressaor8    s    @""99Z,99Z,Iuf6GHI3NN '/"# &(<
 	4())	  &1!56##%%&  @*A.	5&#a&9:C??@sX   B> .B> B> B> +B 6B> B;#B61B> 6B;;B> >D	:D	D	Dz/visualizar-pedidoc                     \         P                  ! RR4      p V '       g   Rp \         P                  ! R4      p\        V4      pVP                  RR4      p\        RWVR7      # )	u@   Exibe página HTML com o pedido formatado e botão de impressãor7  r?   u.   Nenhum pedido disponível para visualização.r)   r[   r\   zvisualizar_pedido.html)r  r)   r^   r_   )r  r)   ra   r^   s       r"   visualizar_pedidor:    sV     {{-r2HC\*J!*-JNN6<8M3hmz{{r!   z
/gerar-pdfc            	     ,    ^ RI Hp  ^ RIHp ^ RIHp ^ RIp^ RIHp \        P                  ;'       g    / pVP                  RR4      pVP                  R. 4      pV'       g   \        R	R
RR/4      R3# V'       d    \        Wg4       VP#                  4       P%                  R4      p	RV	 R2p
VP&                  P)                  RV
4      pVP+                  WR7      pV w  rVP-                  R^
4       VP/                  R4      pV^(,
          pV FQ  pV^(8  d,   VP1                  4        VP-                  R^
4       V^(,
          pVP3                  ^(VV4       V^,          pKS  	  VP5                  4        \        R	RRRV
 2RV/4      #   \         d/   p\        RT 24       \        P                   ! 4         Rp?EL2Rp?ii ; i  \         dF   p\        RT4       \        P                   ! 4        \        R	R
R\7        T4      /4      R3u Rp?# Rp?ii ; i)z^Gera PDF do pedido e salva em c:\novaloja1\pedidos\. Retorna o caminho relativo para download.)A4)canvas)mmN)datetimer  r?   r   r@   Frl   r6  rB   r  z%Y%m%d_%H%M%Spedido_z.pdfc:\novaloja1\pedidos)pagesizeCourierr*   Tarquivoz	/pedidos/caminho_completoz[GERAR PDF ERRO]rF   )reportlab.lib.pagesizesr<  reportlab.pdfgenr=  reportlab.lib.unitsr>  osr?  r   rp   r1   r   r   rN   rt   r!  r"  nowstrftimepathr   CanvassetFontsplitshowPage
drawStringsaverO   )r<  r=  r>  rI  r?  rx   r  r   rQ   	timestampnome_arquivorE  r  larguraalturalinhasylinhas                     r"   	gerar_pdfrZ    s   9@.+*%""99Z,99Z,Iuf6GHI3NN &(< LLN++O<	 4077<<(@,O MM*M8 	
		)R  %RKE2v

		)R(RKLLQ&GA  	
 t<.1 0
  	=  &1!56##%%&H  @ !$	5&#a&9:C??@sY   2G .G $G 5G >F 	C=G G #F;5G ;G  G H:HHHz/carrossel-imagensc                     R p R p \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       ;'       g    . p. pV F  pVP                  R4      pVP                  R4      pVP                  R4      pVf   K<  R\        V4       R	2p	TP                  R
T	RVe   \        V4      MRRT;'       g    RR\        VP                  R4      ;'       g    ^ 4      /4       K  	  \        R4        \        V4       \        V4       V'       d   VP                  4         T '       d   T P                  4        # #   \         d     LKi ; i  \         d   p
\        RT
4        R p
?
LHR p
?
ii ; i  \         d   p
\        RT
4        R p
?
# R p
?
ii ; i  \        P                  P                    d   p\        RT4       \"        P$                  ! 4        \        RRR\        T4      /4      R3u R p? T'       d   TP                  4        M$  \         d   p
\        RT
4        R p
?
MR p
?
ii ; i T '       d   T P                  4        # #   \         d   p
\        RT
4        R p
?
# R p
?
ii ; iR p?i\         d   p
\        RT
4       \"        P$                  ! 4        \        RRR\        T
4      /4      R3u R p
?
 T'       d   TP                  4        M$  \         d   p
\        RT
4        R p
?
MR p
?
ii ; i T '       d   T P                  4        # #   \         d   p
\        RT
4        R p
?
# R p
?
ii ; iR p
?
ii ; i   T'       d   TP                  4        M$  \         d   p
\        RT
4        R p
?
MR p
?
ii ; i T '       d   T P                  4        i i   \         d   p
\        RT
4        R p
?
i R p
?
ii ; i; i)NTrh   r)   zrSELECT chave, nomeclassificacao, quantidadepartes, nrofoto AS nro_da_foto FROM classificacao WHERE id_cliente = %srW   r   nro_da_fotoz/static/img/z.jpegrD  classer?   r[   maxr   z[CARROSSEL] imagens montadas:[WARN] falha ao fechar cursor:"   [WARN] falha ao fechar conexÃ£o:r   rl   Erro de banco de dadosdetalhesrF   [ERROR]Erro interno no servidor)r   rD   r   r1   rI   r   r   r   rO   rt   r
   rN   r   rL   ru   rv   rw   r!  r"  )rE   rD   r)   rW  imagensr
  r]  r   nrorD  rQ   r   s               r"   carrossel_imagensrg    sd   DF/;z-[[.
  L  OY  N[  	\"((bCWWW%F #(; <''-(C{$SXJe4GNN7);#f+)//Rs377#56;;!<	   	-.	7O w	7	;

 %  		  	72A66	7
  	;6::	;# ??   YlF# 8*c&kRSUXXX	7 	72A66	7	;

  	;6::	;  Vi :JAOPRUUU	7 	72A66	7	;

  	;6::	;V
	7 	72A66	7	;

  	;6::	;sz  CF: F: <F: E! #
F: .E2FF!E/,F: .E//F: 2F=FFF7!F22F7:M$:JM$M' H22I=III1I11J<JJM$"M$#:MM$M' #K<<LLL!L;)L;;MMMM$$M' 'O%)NO%N#NO%N##O%'O/O?O%O"OO%O""O%c            	        \         P                  P                  R4      p RpRp V '       g?   \        . 4       V'       d   VP	                  4         T'       d   TP	                  4        # # \        4       pVP                  RR7      pVP                  RV 34       VP                  4       ;'       g    . pV Uu. uF  p\        V4      NK  	  pp\        V4       V'       d   VP	                  4         T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; iu upi   \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        RT4       \        P                   ! 4        \        R	R
R\#        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?i\
         d   p\        RT4       \        P                   ! 4        \        R	RR\#        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        i i   \
         d   p\        RT4        Rp?i Rp?ii ; i; i)MRetorna produtos onde produtos.classe = nomeclassificacao recebido em 'nome'.r[   Nr_  r`  Trh   z=SELECT produto, preco, classe FROM produtos WHERE classe = %sr   rl   ra  rb  rF   rc  rd  )r   argsr1   r   rL   rN   rt   r   rD   rI   r   r   ru   rv   rw   r!  r"  rO   )r[   rE   rD   rQ   
resultadosrr   s          r"   produtos_filtrarrm    s   <<F#DDF ;2;*	7	;

 3 z-VY]X_`__&,,"
0:;
1mA&

;z"	7	;

   	72A66	7
  	;6::	;- <"  	72A66	7
  	;6::	;' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	;

  	;6::	;  Vi :JAOPRUUU	7 	72A66	7	;

  	;6::	;V	7 	72A66	7	;

  	;6::	;s  F! DD0D0+AF! 1F! 8EF! E!E2E=:E=D-D((D-0E;EEF! E:$E55E:=FFF!M :I<:M;M  HH:$H55H:>III9#I44I9<M	M
:MMM 
K##L.K??LL"L""M-L>>MMM OM)(O)N
4N ON

ON(N(&O(O	3O?OO		Oz/produtos-filtrarc            	        \         P                  P                  R4      p RpRp V '       g?   \        . 4       V'       d   VP	                  4         T'       d   TP	                  4        # # \        4       pVP                  RR7      p\        P                  ! R4      pVP                  RW34       VP                  4       ;'       g    . pV Uu. uF  p\        V4      NK  	  pp\        V4       V'       d   VP	                  4         T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; iu upi   \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        R	T4       \         P"                  ! 4        \        R
RR\%        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?i\
         d   p\        RT4       \         P"                  ! 4        \        R
RR\%        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        i i   \
         d   p\        RT4        Rp?i Rp?ii ; i; i)ri  r[   Nr_  r`  Trh   r)   zXSELECT produto, preco, classe, chave FROM produtos WHERE classe = %s AND id_cliente = %sr   rl   ra  rb  rF   rc  rd  )r   rj  r1   r   rL   rN   rt   r   rD   r   rI   r   r   ru   rv   rw   r!  r"  rO   )r[   rE   rD   rQ   r)   rk  rl  r   s           r"   rm  rm  F  s1    <<F#DDF!;2;,	7	;

 5 z-[[.
qtx  tF  	G__&,,"
0:;
1mA&

;z"	7	;

   	72A66	7
  	;6::	;- <"  	72A66	7
  	;6::	;' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	;

  	;6::	;  Vi :JAOPRUUU	7 	72A66	7	;

  	;6::	;V	7 	72A66	7	;

  	;6::	;s  F7 D"EE+AF7 F7 E*"F7 /E/7E/FF"E-D>>EE'E""E'*F7 /F:FFF4F//F47M!:JM!M$ H//I:III.I..J9J

JM!M! :MM!M$  K99LLLL8&L88MMMM!!M$ $O"&M?>O"?N 
NO"N  O"$N>,N><O">O	OO"OO"z/produto/<classe>c           	         R pR p \        4       pVP                  RR7      p\        RV  24       \        P                  ! R4      pVP                  RW34       VP                  4       pVP                  4        \        V4       \        V4      pV'       d?   \        V4       V'       d   VP                  4         T'       d   TP                  4        # # \        RR	R
V /4      R3 V'       d   VP                  4         T'       d   TP                  4        # #   \         d   p\        RT4        R p?L{R p?ii ; i  \         d   p\        RT4        R p?# R p?ii ; i  \         d   p\        RT4        R p?LR p?ii ; i  \         d   p\        RT4        R p?# R p?ii ; i  \        P                  P                   d   p\        RT4       \         P"                  ! 4        \        RRR\%        T4      /4      R3u R p? T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T'       d   TP                  4        # #   \         d   p\        RT4        R p?# R p?ii ; iR p?i\         d   p\        RT4       \         P"                  ! 4        \        RRR\%        T4      /4      R3u R p? T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T'       d   TP                  4        # #   \         d   p\        RT4        R p?# R p?ii ; iR p?ii ; i   T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T'       d   TP                  4        i i   \         d   p\        RT4        R p?i R p?ii ; i; i)NTrh   z&[DEBUG] Consulta produto pela classe: r)   z<SELECT * FROM produtos WHERE classe = %s AND id_cliente = %sr_  r`  rl   u   Produto nÃ£o encontrador]  rU   r   ra  rb  rF   rc  rd  )r   rD   rt   r   r1   rI   rJ   r   r
   r   r   rL   rN   ru   rv   rw   r!  r"  rO   )r]  rE   rD   r)   	resultadorQ   r   s   &      r"   produtorq  o  s/   DF,;z- 	6vh?@[[.
UX^WklOO%	y!),	 9%"	7	;

 - F$?6RSUXX	7	;

 	  	72A66	7  	;6::	;  	72A66	7  	;6::	;- ??   YlF# 8*c&kRSUXXX	7 	72A66	7	;

  	;6::	;!  Vi :JAOPRUUU	7 	72A66	7	;

  	;6::	;!V	7 	72A66	7	;

  	;6::	;s  BF) "D;D=D=F) &E!?FFD:$D55D:=EEE!F,E==FF&F!!F&)M:JMM H!!I,H==II I  J+I<<JMM:MMM K++L6LLL*L**M5MMMM OM10O1N<NONON0N0.O0O;OOOOz/buscar-clientec            	         \         P                  P                  R 4      p RpRp V '       gC   \        RR/4      R3 V'       d   VP	                  4         T'       d   TP	                  4        # # \        4       pVP                  RR7      p\        P                  ! R	4      pVP                  R
W34       VP                  4       pVP                  4        V'       dJ   \        V4      p\        V4       V'       d   VP	                  4         T'       d   TP	                  4        # # \        RR/4      R3 V'       d   VP	                  4         T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?EL0Rp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \        P                  P                    d   p\        RT4       \"        P$                  ! 4        \        RRR\'        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?i\
         d   p\        RT4       \"        P$                  ! 4        \        RRR\'        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP	                  4        i i   \
         d   p\        RT4        Rp?i Rp?ii ; i; i)r   Nrl   u   Telefone não fornecidorB   r_      [WARN] falha ao fechar conexão:Trh   r)   z>SELECT * FROM clientes WHERE telefone = %s AND id_cliente = %su   Cliente não encontradorU   r   ra  rb  rF   rc  rd  )r   rj  r1   r   rL   rN   rt   r   rD   r   rI   rJ   r   r   ru   rv   rw   r!  r"  rO   )r   rE   rD   rQ   r)   rp  r   s          r"   buscar_clientert    s   ||
+HDF%9F$=>?D4	7	9

 = z-[[.
WZbYopOO%	%i0I9%	7	9

 ' F$=>?D	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9  	72A66	7
  	94a88	9' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9s  I  E'FF/BI  2F0:F0GG%I  4G8HH'F	2FF	F-F((F-0G;GGG5G00G58HHHH='H88H= O*:LO*O- J88KKKK7%K77LLLO*(O*):O%#O*$O- )NN#NN#'O/OO"OO"%O**O- -Q+/PQ+P)P$Q+$P))Q+-Q5QQ+Q(Q#Q+#Q((Q+z/forma-cobrarc            	          \         P                  P                  R R4      p RpRp \        4       pVP	                  RR7      pVP                  RV 34       VP                  4       pVP                  4        V'       d   VP                  R4      '       do   \        VR,          4      P                  4       P                  4       p\        RV/4       V'       d   VP                  4         T'       d   TP                  4        # # \        RR
/4       V'       d   VP                  4         T'       d   TP                  4        # #   \         d   p\        RT4        Rp?LwRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \         d   p\        RT4        Rp?LRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \        P                   P"                   d   p\        RT4       \$        P&                  ! 4        \        RRR\        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?i\         d   p\        RT4       \$        P&                  ! 4        \        RRR\        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T'       d   TP                  4        i i   \         d   p\        R	T4        Rp?i Rp?ii ; i; i)r[   r?   NTrh   zDSELECT formadecobrar FROM classificacao WHERE nomeclassificacao = %sformadecobrarr>   r_  rs  normalr   rl   ra  rb  rF   rc  rd  )r   rj  r1   r   rD   rI   rJ   r   rO   lowerrH   r   rL   rN   rt   ru   rv   rw   r!  r"  )r[   rE   rD   rp  r>   rQ   r   s          r"   forma_cobrarry    s:   <<FB'DDF!9z-]`d_fgOO%	77	/2399;AACEGU+,	7	9

 ' GX./	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9s  A-G :G EE(E&0E&G F
(F.0F.E#EE#&F1FF
F+F&&F+.G9G

GM<1:J-+M<,M? 1I

I+I&&I+/J	7J		J*J%%J*-M<:M<;:M75M<6M? ;LL5L00L59MMM4M//M47M<<M? ?O=NO=N;%N61O=6N;;O=?OOO=O:$O50O=5O::O=z/proximo-pedidoc                  @   R p R p \        4       p V P                  RR7      p\        P                  ! R4      pV'       g   \	        RR/4      R3# VP                  RV34       VP                  4       pV'       d'   VR,          ^,           pVP                  R	WB34       TpMVP                  R
V34       ^pV P                  4        \	        RV/4      #   \        P                  P                   d-   p\        RT4       \        P                  ! 4         R p?R # R p?ii ; i)NTrh   r)   rl   r   rB   9SELECT contador FROM contadorpedido WHERE id_cliente = %scontadorz=UPDATE contadorpedido SET contador = %s WHERE id_cliente = %sr   numeror   )r   rD   r   r1   r   rI   rJ   rM   ru   rv   rw   rt   r!  r"  )rE   rD   r)   rp  novo_numeror}  r   s          r"   proximo_pedidor    s    DFz-[[.
F$KLMsRR 	RU_TabOO%	#J/!3KNNZ]h\uv F NN]`j_lmF&)**??   lF#s%   AC *C :AC D1!DDz/numero-pedido-atualc            	        Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pV'       gC   \	        RR/4      R3 V'       d   VP                  4         T '       d   T P                  4        # # VP                  R
V34       VP                  4       pV'       d   VR,          ^,           pM^p\	        RV/4       V'       d   VP                  4         T '       d   T P                  4        # #   \         d   p\        RT4        Rp?LRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \         d   p\        RT4        Rp?LRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        RT4       \        P                  ! 4        T '       d   T P                  4        \	        RRR\!        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?i\         d   p\        RT4       \        P                  ! 4        \	        RRR\!        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        i i   \         d   p\        R	T4        Rp?i Rp?ii ; i; i)u?   Retorna o próximo número de pedido SEM incrementar o contadorNTrh   r)   rl   r   rB   r_  rs  r{  r|  r}  r   ra  rb  rF   rc  rd  )r   rD   r   r1   r   rL   rN   rt   rI   rJ   ru   rv   rw   r!  r"  r  rO   )rE   rD   r)   rQ   rp  r}  r   s          r"   numero_pedido_atualr    s&    DF+9z-[[.
F$KLMsR8	7	9

 ? 	RU_TabOO%	z*Q.F F&)*	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9+ ??   YlF#MMO 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9s  AF D (D$0D$*F -F E&E,.E, D!DD!$E/E  EE)E$$E),F7FFM/AJMM H H  I+H<<IIIJ *I;;J MM:MMM K**L5LLL)L))M
4MM
MM OM0/O0N;NONON/N/-O/O:OOOOz/delivery-pendentec            	        Rp Rp \        4       p V P                  RR7      pVP                  R\        P                  ! R4      34       VP                  4       ;'       g    . pV Uu. uF  p\        V4      NK  	  pp\        RRR\        V4      RV/4       V'       d   VP                  4         T '       d   T P                  4        # # u upi   \         d   p\        R	T4        Rp?L<Rp?ii ; i  \         d   p\        R
T4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        RT4       \        P                   ! 4        \        RRR\#        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        R	T4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R
T4        Rp?# Rp?ii ; iRp?i\         d   p\        RT4       \        P                   ! 4        \        RRR\#        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        R	T4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R
T4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP                  4        M$  \         d   p\        R	T4        Rp?MRp?ii ; i T '       d   T P                  4        i i   \         d   p\        R
T4        Rp?i Rp?ii ; i; i)zFLista todos os registros pendentes de entrega, agrupados por nropedidoNTrh   aK  
            SELECT 
                MIN(chave) as chave,
                nropedido,
                telefone,
                cep,
                nome,
                endereco,
                nrocasa,
                complemento,
                MAX(entregador) as entregador,
                SUM(CAST(preco AS DECIMAL(10,2))) as total_preco,
                COUNT(*) as total_produtos
            FROM deliverypendente
            WHERE id_cliente = %s
            GROUP BY nropedido, telefone, cep, nome, endereco, nrocasa, complemento
            ORDER BY MIN(chave) DESC
        r)   r@   total	registrosr_  rs  r   rl   ra  rb  rF   rc  rd  )r   rD   rI   r   r1   r   r   r   r   rL   rN   rt   ru   rv   rw   r!  r"  rO   )rE   rD   r  rl  rQ   r   s         r"   listar_delivery_pendenter  K  s    DF59z- 	 " kk,')#	+& OO%++	/89y!]1%y	9tS^
 "	7	9

 3 :,  	72A66	7
  	94a88	9' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9sb  A!D 'C
;D CC0C38C3
D C0C++C03D>DDK6:G20K1K 6FF0F++F04G<GG/G**G/2K?K :J<:K;K  II:$I55I:>JJJ9#J44J9<KK MKML *K;6M;L  MLLML?)L:5M:L??Mz/atribuir-entregadorc            	     	   Rp Rp \         P                  ;'       g    / pVP                  R4      pVP                  RR4      P                  4       pV'       gC   \	        RR/4      R3 V'       d   VP                  4         T '       d   T P                  4        # # V'       gC   \	        RR
/4      R3 V'       d   VP                  4         T '       d   T P                  4        # # \        4       p V P                  4       pVP                  RWC34       V P                  4        \        RV RV 24       \	        RRRRV RV 2/4       V'       d   VP                  4         T '       d   T P                  4        # #   \         d   p\        RT4        Rp?ELRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \         d   p\        RT4        Rp?ELRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \         d   p\        RT4        Rp?LRp?ii ; i  \         d   p\        R	T4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        RT4       \        P                   ! 4        \	        RRR\#        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?i\         d   p\        RT4       \        P                   ! 4        \	        RRR\#        T4      /4      R3u Rp? T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        # #   \         d   p\        R	T4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP                  4        M$  \         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P                  4        i i   \         d   p\        R	T4        Rp?i Rp?ii ; i; i)z<Atribui um entregador a um pedido na tabela deliverypendenteN	nropedidor   r?   rl   !   Número do pedido é obrigatóriorB   r_  rs  u"   Nome do entregador é obrigatóriozp
            UPDATE deliverypendente 
            SET entregador = %s 
            WHERE nropedido = %s
        z[ENTREGADOR] u    atribuído ao pedido r@   TrA   zEntregador r   ra  rb  rF   rc  rd  )r   rp   r1   rH   r   rL   rN   rt   r   rD   rI   rM   ru   rv   rw   r!  r"  rO   )rE   rD   rx   r  r   rQ   r   s          r"   atribuir_entregadorr    s    DF29""IIk*	YY|R0668
F$GHI3NF	7	9

 O F$HIJCO@	7	9

 I z 	  $		& 	j\)?	{KLt+j\1G	{S
  	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9  	72A66	7
  	94a88	9' ??   YlF# 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9s  AI I (E;F 	F I #I 2GG)G)%A"I H!H1)H1;FFF G+F<<GG&G!!G&)H
4HH
H.H))H.1I<IIO?4:L0.O?/P 4KK.K))K.2L:LL-L((L-0O?=O?>:O:8O?9P >NN8"N33N8<OOO7!O22O7:O??P R PR P>(P94R 9P>>R Q
QR Q='Q83R 8Q==R z/api/diagnostico-comandac            	        Rp Rp \        4       p V P                  RR7      pVP                  R4       VP                  4       pVP                  R4       VP	                  4       p\        RRRTRV'       d
   VR	,          M^ /4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        R
T4       \        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z&Verifica a estrutura da tabela comandaNTrh   zDESCRIBE comandaz%SELECT COUNT(*) as total FROM comandar@   colunastotal_registrosr  r   Frl   rF   )r   rD   rI   r   rJ   r   rL   ru   rv   rw   rt   rO   )rE   rD   r  r  r   s        r"   diagnostico_comandar    s'    DFz- 	)*//# 	>?!twuW~A
  LLNJJL  ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL s6   A?B7 7D7%D2;D7<D: 2D77D: : E-E-z/fechar-comandac            	     
   Rp Rp \         P                  ;'       g    / pVP                  R4      pV'       gC   \        RR/4      R3 V'       d   VP	                  4         T '       d   T P	                  4        # # \        4       p V P                  RR	7      pVP                  R
V34       VP                  4       pV'       gC   \        RR/4      R3 V'       d   VP	                  4         T '       d   T P	                  4        # # VP                  RR4      pV'       d   VP                  4       R8X  dC   \        RR/4      R3 V'       d   VP	                  4         T '       d   T P	                  4        # # \        P                  ! R4      pVP                  RW734       VP                  pVP                  RW734       V P                  4        \        RV RV R24       \        RRRRV R2RV/4       V'       d   VP	                  4         T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?ELRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?ELRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?EL|Rp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?ELRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \        P                   P"                   d   p	\        RT	4       \$        P&                  ! 4        \        RRR\)        T	4      /4      R3u Rp	?	 T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp	?	i\
         d   p\        RT4       \$        P&                  ! 4        \        RRR\)        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        i i   \
         d   p\        RT4        Rp?i Rp?ii ; i; i)zFTransfere um pedido de deliverypendente para comanda (fecha a comanda)Nr  rl   r  rB   r_  rs  Trh   z
            SELECT entregador 
            FROM deliverypendente 
            WHERE nropedido = %s 
            LIMIT 1
        u   Pedido não encontradorU   r   r?   u=   Não é possível fechar a comanda sem atribuir um entregadorr)   a	  
            INSERT INTO comanda 
            (nropedido, telefone, cep, nome, endereco, nrocasa, complemento, 
             codigoproduto, produto, preco, quantidade, classe, entregador, cliente, id_cliente, formapagamento)
            SELECT nropedido, telefone, cep, nome, endereco, nrocasa, complemento,
                   codigoproduto, produto, preco, quantidade, classe, entregador, cliente, id_cliente, formapagamento
            FROM deliverypendente
            WHERE nropedido = %s AND id_cliente = %s
        h
            DELETE FROM deliverypendente 
            WHERE nropedido = %s AND id_cliente = %s
        z[FECHAR COMANDA] Pedido z transferido para comanda ( registros)r@   rA   zComanda do pedido z fechada com sucessoregistros_transferidosr   FrF   rc  )r   rp   r1   r   rL   rN   rt   r   rD   rI   rJ   rH   r   rV   rM   ru   rv   rw   r!  r"  rO   )
rE   rD   rx   r  rQ   rp  r   r)   r  r   s
             r"   fechar_comandar    s    DFN9""IIk*	F$GHI3N@	7	9

 I z- 	 
 \	 OO%	F$<=>C`	7	9

 i ]]<4
Z--/25F$cdegjjV	7	9

 ] [[.
  $	& "( 	  $	&
 	(3NOeNffqrst,YK7KL$&<
 "	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9  	72A66	7
  	94a88	9  	72A66	7
  	94a88	9' ??   ElF#	5&#f+>?DD	7 	72A66	7	9

  	94a88	9  @i	5&#a&9:C??	7 	72A66	7	9

  	94a88	9@	7 	72A66	7	9

  	94a88	9s
  2M M H'!I)I;AM I0*J2JM #M J9K#K5A>M 4LL'L''I	2II	I-I((I-0J;JJJ6 J11J69KKKK?)K::K?L$LL$'M2MMS5*:P&$S5%S8 *OO$OO$(P0PP#PP#&S53S54:S0.S5/S8 4RR.R))R.2S:SS-S((S-0S55S8 8U6:TU6T4T/*U6/T44U68U UU6U3U.)U6.U33U6z/cancelar-pedidoc            	        Rp Rp \         P                  ;'       g    / pVP                  R4      pV'       gC   \        RR/4      R3 V'       d   VP	                  4         T '       d   T P	                  4        # # \        4       p V P                  4       p\        P                  ! R4      pVP                  R	W534       VP                  pVP                  R
W534       V P                  4        \        RV RV R24       \        RRRRV R2RV/4       V'       d   VP	                  4         T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?ELRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \
         d   p\        RT4        Rp?LRp?ii ; i  \
         d   p\        RT4        Rp?# Rp?ii ; i  \        P                  P                   d   p\        RT4       \         P"                  ! 4        \        RRR\%        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?i\
         d   p\        RT4       \         P"                  ! 4        \        RRR\%        T4      /4      R3u Rp? T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        # #   \
         d   p\        RT4        Rp?# Rp?ii ; iRp?ii ; i   T'       d   TP	                  4        M$  \
         d   p\        RT4        Rp?MRp?ii ; i T '       d   T P	                  4        i i   \
         d   p\        RT4        Rp?i Rp?ii ; i; i)z7Transfere um pedido de deliverypendente para canceladasNr  rl   r  rB   r_  rs  r)   a  
            INSERT INTO canceladas 
            (nropedido, cliente, telefone, nome, cep, endereco, nrocasa, complemento, 
             codigoproduto, produto, preco, quantidade, classe, entregador, id_cliente)
            SELECT nropedido, cliente, telefone, nome, cep, endereco, nrocasa, complemento,
                   codigoproduto, produto, preco, quantidade, classe, entregador, id_cliente
            FROM deliverypendente
            WHERE nropedido = %s AND id_cliente = %s
        r  z[CANCELAR PEDIDO] Pedido z transferido para canceladas (r  r@   TrA   zPedido z cancelado com sucessor  r   FrF   rc  )r   rp   r1   r   rL   rN   rt   r   rD   r   rI   rV   rM   ru   rv   rw   r!  r"  rO   )rE   rD   rx   r  rQ   r)   r  r   s           r"   cancelar_pedidor  7  s}    DF<9""IIk*	F$GHI3N\	7	9

 e z [[.
  $	& "( 	  $	&
 	))4RSiRjjuvwt'),BC$&<
 "	7	9

   	72A66	7
  	94a88	9  	72A66	7
  	94a88	9' ??   ElF#	5&#f+>?DD	7 	72A66	7	9

  	94a88	9  @i	5&#a&9:C??	7 	72A66	7	9

  	94a88	9@	7 	72A66	7	9

  	94a88	9s  2G G E!E,)E,;BG F-F45F4E)E$$E),F7FFF1F,,F14G?GGN7:J31N2N 7II1I,,I15J=JJ0J++J03N N:M=;N<N LL;%L66L;?MMM:$M55M:=NN PN P O+N<7P<OPOOPP *O;6P;P  Pz/salvar-clientec                  4   R p R p \         P                  ;'       g    / p\        RR> 24       \        R4       \        V4       \        R> 4       \        R4       \        RVP                  R4       24       \        R\	        VP                  R4      4       24       \        RVP                  R4       24       \        R	\	        VP                  R4      4       24       \        R> R24       VP                  R
4      pV'       gC   \        RR/4      R3 V'       d   VP                  4         T '       d   T P                  4        # # \        4       p V P                  RR7      p\        P                  ! R4      pVP                  RV34       VP                  4       pRpV'       dN   VP                  R4      ;'       g    RP                  4       P                  4       pVR8H  p\        RV RV 24       V'       dU   VP                  R^ 4      p	 \        V	4      p	\!        W%4      w  rpV	^ 8  d   T	MT
p\#        V4      p\        RV RV 24       M_\        VP                  R^ 4      ;'       g    ^ 4      p\        VP                  R^ 4      ;'       g    ^ 4      pR pR p\        RV RV 24       V P                  RR7      p\        P                  ! R4      pVP                  RW534       VP                  4       pVP                  R4       VP                  4       R JpVP                  R4       VP                  4       R JpV'       Ed   V'       d   V'       d   RpVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVVVP                  R)R!4      VV3pEMV'       d   V'       g   R*pVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVVVV3pEMBV'       d   V'       g   R+pVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVP                  R)R!4      VV3pMR,pVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVV3pVP                  VV4       V P%                  4        \        R-RR.R/R0VR0,          R1VR2V/4       V'       d   VP                  4         T '       d   T P                  4        # # V'       d   V'       d   R3pVVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVVVP                  R)R!4      V3pEMV'       d   V'       g   R4pVVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVVV3pEMBV'       d   V'       g   R5pVVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVVP                  R)R!4      V3pMR6pVVP                  R R!4      VP                  R"R!4      VP                  R#R!4      VP                  R$R!4      VP                  R%R!4      VP                  R&R!4      VP                  R'R!4      VP                  R(R!4      VVV3pVP                  VV4       V P%                  4        \        R-RR.R7R0VP&                  R1VR2V/4       V'       d   VP                  4         T '       d   T P                  4        # #   \         d   p\        RT4        R p?ELTR p?ii ; i  \         d   p\        RT4        R p?# R p?ii ; i  \         d    ^ p	 ELi ; i  \         d   p\        RT4        R p?ELR p?ii ; i  \         d   p\        RT4        R p?# R p?ii ; i  \         d   p\        RT4        R p?LR p?ii ; i  \         d   p\        RT4        R p?# R p?ii ; i  \(        P*                  P,                   d   p\        R8T4       \.        P0                  ! 4        T '       d   T P3                  4        \        RR9R:\5        T4      /4      R;3u R p? T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T '       d   T P                  4        # #   \         d   p\        RT4        R p?# R p?ii ; iR p?i\         d   p\        R<T4       \.        P0                  ! 4        \        RR=R:\5        T4      /4      R;3u R p? T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T '       d   T P                  4        # #   \         d   p\        RT4        R p?# R p?ii ; iR p?ii ; i   T'       d   TP                  4        M$  \         d   p\        RT4        R p?MR p?ii ; i T '       d   T P                  4        i i   \         d   p\        RT4        R p?i R p?ii ; i; i)?Nr*   z'[SALVAR CLIENTE] REQUEST JSON COMPLETO:z![SALVAR CLIENTE] Dados recebidos:u     - Taxa do formulário (raw): taxaentregau      - Taxa do formulário (type): u%     - Distância do formulário (raw): 	distanciau&     - Distância do formulário (type): r   rl   u   Telefone é obrigatóriorB   r_  rs  Trh   r)   zMSELECT calculodistancia FROM configuracao WHERE chave = 1 AND id_cliente = %scalculodistanciaSimsimu2   [SALVAR CLIENTE] Configuração: calculodistancia=z, habilitado=z'[SALVAR CLIENTE] Modo CALCULADO - Taxa=z, Dist=z$[SALVAR CLIENTE] Modo MANUAL - Taxa=zBSELECT chave FROM clientes WHERE telefone = %s AND id_cliente = %sz-SHOW COLUMNS FROM clientes LIKE 'lat_cliente'z%SHOW COLUMNS FROM clientes LIKE 'cep'aa  UPDATE clientes SET 
                         nome = %s, endereco = %s, nrocasa = %s, complemento = %s,
                         referencia = %s, bairro = %s, cidade = %s, estado = %s,
                         taxaentrega = %s, distancia = %s, lat_cliente = %s, lon_cliente = %s, cep = %s
                         WHERE telefone = %s AND id_cliente = %sr[   r?   r   nrocasacomplemento
referenciar   r   estador   aW  UPDATE clientes SET 
                         nome = %s, endereco = %s, nrocasa = %s, complemento = %s,
                         referencia = %s, bairro = %s, cidade = %s, estado = %s,
                         taxaentrega = %s, distancia = %s, lat_cliente = %s, lon_cliente = %s
                         WHERE telefone = %s AND id_cliente = %sa=  UPDATE clientes SET 
                         nome = %s, endereco = %s, nrocasa = %s, complemento = %s,
                         referencia = %s, bairro = %s, cidade = %s, estado = %s,
                         taxaentrega = %s, distancia = %s, cep = %s
                         WHERE telefone = %s AND id_cliente = %sa3  UPDATE clientes SET 
                         nome = %s, endereco = %s, nrocasa = %s, complemento = %s,
                         referencia = %s, bairro = %s, cidade = %s, estado = %s,
                         taxaentrega = %s, distancia = %s
                         WHERE telefone = %s AND id_cliente = %sr@   rA   zCliente atualizado com sucessorW   distancia_calculadataxa_calculadaa>  INSERT INTO clientes 
                         (telefone, nome, endereco, nrocasa, complemento, referencia, 
                          bairro, cidade, estado, taxaentrega, distancia, lat_cliente, lon_cliente, cep, id_cliente)
                         VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)a5  INSERT INTO clientes 
                         (telefone, nome, endereco, nrocasa, complemento, referencia, 
                          bairro, cidade, estado, taxaentrega, distancia, lat_cliente, lon_cliente, id_cliente)
                         VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)a  INSERT INTO clientes 
                         (telefone, nome, endereco, nrocasa, complemento, referencia, 
                          bairro, cidade, estado, taxaentrega, distancia, cep, id_cliente)
                         VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)a  INSERT INTO clientes 
                         (telefone, nome, endereco, nrocasa, complemento, referencia, 
                          bairro, cidade, estado, taxaentrega, distancia, id_cliente)
                         VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)zCliente cadastrado com sucessor   ra  rb  rF   rc  rd  z<============================================================)r   rp   rt   r1   r   r   rL   rN   r   rD   r   rI   rJ   rH   rx  r   r   r   rM   r   ru   rv   rw   r!  r"  r  rO   )rE   rD   rx   r   rQ   r)   r   calculo_habilitadocalculo_distdistancia_brutadistancia_calclat_clilon_clidistancia_finaltaxa_entregacliente_existentetem_lat_lontem_cepr   r   r   s                        r"   salvar_clienter  z  s   DFM9"" 	6(m79e13/		-0H/IJK0eii6N1O0PQR5eii6L5MNO6tEIIk<R7S6TUVm99Z(F$>?@#Ed	7	9

 m z- [[.
fishuv"!"JJ'9:CCeJJLRRTL".%"7F|nTabtauvw #iiQ7O$"'"8 0J%/\,NW1@11Do.O 1AL;L>Q`Pabc $EIIk1$=$B$BCO =!!<!A!ABLGG8goM^_`- [[.
[^f]st"OO- 	FGoo't3>?//#4/wD IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #IIeR(" WD IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #  D IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #IIeR( D IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ # NN3(KKMItZ9Y[bduv}d~  AV  Xg  iy  {G  H  IL	7	9

 S w`
 IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #IIeR(" W\
 IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #  X
 IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ #IIeR( T
 IIfb)IIj"-IIi,IImR0IIlB/IIh+IIh+IIh+ # NN3(KKMItZ9Y[bdjdtdt  wL  N]  _o  q}  ~  	7	9

   	72A66	7
  	94a88	9K  $"#$@  	72A66	7
  	94a88	9  	72A66	7
  	94a88	9+ ??   YlF#MMO 8*c&kRSUXXX	7 	72A66	7	9

  	94a88	9  Vi :JAOPRUUU	7 	72A66	7	9

  	94a88	9V	7 	72A66	7	9

  	94a88	9sV  Di e&0f8f
A6i <i >i f/ Ai 0$i B=i i B,i i Bi ,i 4E/i $g=g(g(i i 'B,i i Bi 8i  E2i 3hh0h0&f1fff,f''f,/g <i ?g  i g%g  g%(h	3hh	h-h((h-0i;iip3Ampp k$k$$l/l  l	l#l##m.l??mpp:ppp n..o9o

oo-o--p8p		ppp rp43r4q?qrqrq3!q31r3r>r
rrrz/api/comandasc                 l   Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       ;'       g    . p\        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        RT4       \        RR	R
R/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?i\         dY   p\        RT4       \        RR	R
R/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z4Retorna todos os registros da tabela comanda em JSONNTrh   r)   z+SELECT * FROM comanda WHERE id_cliente = %sr@   r  r   Frl   ra  rF   rc  rd  r   rD   r   r1   rI   r   r   rL   ru   rv   rw   rt   rN   rE   rD   r)   r  r   rQ   s         r"   api_comandasr    sd    DFz-[[.
DzmTOO%++	t
  LLNJJL  ??   RlF#	5&2JKLcQQ LLNJJL   Ti	5&2LMNPSSS LLNJJL T
 LLNJJL T   A-B% %E=D E=!F  E=$E=%E8E=F  8E==F    F3!F3z/api/canceladasc                 l   Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       ;'       g    . p\        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dY   p\        RT4       \        RR	R
R/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?i\         dY   p\        RT4       \        RR	R
R/4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z7Retorna todos os registros da tabela canceladas em JSONNTrh   r)   z.SELECT * FROM canceladas WHERE id_cliente = %sr@   r  r   Frl   ra  rF   rc  rd  r  r  s         r"   api_canceladasr    sd    DFz-[[.
G*WOO%++	t
  LLNJJL  ??   RlF#	5&2JKLcQQ LLNJJL   Ti	5&2LMNPSSS LLNJJL T
 LLNJJL r  z /criar-coluna-cliente-canceladasc                    Rp Rp \        4       p V P                  4       pVP                  R4       VP                  4       f   VP                  R4       \	        R4       VP                  R4       VP                  4       f   VP                  R4       \	        R4       VP                  R4       VP                  4       f   VP                  R	4       \	        R
4       VP                  R4       VP                  4       f   VP                  R4       \	        R4       \        RRRR/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\	        RT4       \        RRRRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?i\         dd   p\	        RT4       \        RRRRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u^   Adiciona as colunas cliente nas tabelas canceladas, comanda e deliverypendente se não existirNz+SHOW COLUMNS FROM canceladas LIKE 'cliente'z;ALTER TABLE canceladas ADD COLUMN cliente VARCHAR(255) NULLu7   [INFO] Coluna 'cliente' adicionada à tabela canceladasz(SHOW COLUMNS FROM comanda LIKE 'cliente'z8ALTER TABLE comanda ADD COLUMN cliente VARCHAR(255) NULLu4   [INFO] Coluna 'cliente' adicionada à tabela comandaz1SHOW COLUMNS FROM deliverypendente LIKE 'cliente'zAALTER TABLE deliverypendente ADD COLUMN cliente VARCHAR(255) NULLu=   [INFO] Coluna 'cliente' adicionada à tabela deliverypendentez,SHOW COLUMNS FROM canceladas LIKE 'telefone'zKALTER TABLE canceladas ADD COLUMN telefone VARCHAR(20) NULL AFTER nropedidou8   [INFO] Coluna 'telefone' adicionada à tabela canceladasr@   TrA   zColunas adicionadas com sucessor   Frl   ra  rb  rF   rc  zErro interno)r   rD   rI   rJ   rt   r   rL   ru   rv   rw   rO   rN   )rE   rD   r   rQ   s       r"   criar_coluna_cliente_canceladasr    s    DF+z 	DE??$NNXYKL 	AB??$NNUVHI 	JK??$NN^_QR 	EF??$NNhiLM	45VWX LLNJJL  ??   klF#	5&2JJX[\bXcdegjjj LLNJJL   \i	5&.*cRSfUVX[[[ LLNJJL \
 LLNJJL sT   D$E I
;'G"I
#I I
&I
''II
I I

I  J .J z/pedidos/<path:filename>c                     ^ RI Hp V! RV 4      # )z$Serve PDFs gerados da pasta pedidos.)send_from_directoryrA  )flaskr  )filenamer  s   & r"   
servir_pdfr   	  s     *7BBr!   z/criar-tabela-usuariosc            	        Rp Rp \        4       p V P                  4       pVP                  R4       VP                  R4       VP                  4       ^ ,          ^ 8X  d   VP                  R4       V P	                  4        \        R4       \        RRRR	/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        R
T4       \        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)u%   Cria a tabela de usuários para loginNa#  
            CREATE TABLE IF NOT EXISTS usuarios (
                chave INT AUTO_INCREMENT PRIMARY KEY,
                usuario VARCHAR(100) NOT NULL UNIQUE,
                senha VARCHAR(255) NOT NULL,
                data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        z5SELECT COUNT(*) FROM usuarios WHERE usuario = 'admin'z?INSERT INTO usuarios (usuario, senha) VALUES ('admin', 'admin')z+[INFO] Tabela 'usuarios' criada com sucessor@   TrA   u&   Tabela de usuários criada com sucessor   Frl   rF   )r   rD   rI   rJ   rM   rt   r   rL   ru   rv   rw   rO   )rE   rD   r   s      r"   criar_tabela_usuariosr  	  s/    DF z 	  	 	NO??Q1$NN\];<	45]^_ LLNJJL  ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL s6   BC
 
E
)%EE
E E

E  F .F z/atualizar-cliente-comandac            	        Rp Rp \        4       p V P                  4       pVP                  R4       VP                  pV P	                  4        \        RV R24       \        RRRV R2/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        R	T4       \        RR
R\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z;Atualiza o campo cliente na tabela comanda copiando de nomeNzGUPDATE comanda SET cliente = nome WHERE cliente IS NULL OR cliente = ''z[INFO] z( registros atualizados na tabela comandar@   TrA   z" registros atualizados com sucessor   Frl   rF   )r   rD   rI   rV   rM   rt   r   rL   ru   rv   rw   rO   )rE   rD   registros_atualizadosr   s       r"   atualizar_cliente_comandar  -	  s    DFz 	`a &-..VWXt011ST
  LLNJJL  ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL s6   A'B D>%D#D$D" DD" " EEz/verificar-estrutura-produtosc            	     x   Rp Rp \        4       p V P                  RR7      pVP                  R4       VP                  4       p\	        RRRV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        RT4       \	        RRR	\        T4      /4      R
3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z&Retorna a estrutura da tabela produtosNTrh   zDESCRIBE produtosr@   r  r   Frl   rF   )r   rD   rI   r   r   rL   ru   rv   rw   rt   rO   )rE   rD   r  r   s       r"   verificar_estrutura_produtosr  L	  s     DFz- 	*+//#	4G<= LLNJJL  ??   ElF#	5&#f+>?DD LLNJJL E
 LLNJJL s6   AB D"%C>DD >DD  D9'D9z /api/verificar-delivery-pendentec                    Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       pV'       d
   VR,          M^ p\        RV^ 8  RV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\        RT4       \        RR	R^ R
\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)uY   Verifica se existem registros na tabela deliverypendente, contando apenas pedidos únicosNTrh   r)   USELECT COUNT(DISTINCT nropedido) as total FROM deliverypendente WHERE id_cliente = %sr  r   r   Frl   rF   r   rE   rD   r)   rp  r  r   s         r"   verificar_delivery_pendenter  e	  s)    DFz- [[.
nq{p}~OO%	&/	'"QeaiU
  LLNJJL  ??   PlF#%!VS[IJCOO LLNJJL P
 LLNJJL 6   A9B1 1D3'D.7D38D6 .D33D6 6 E)E)z/api/limpar-delivery-pendentec            	        Rp Rp \        4       p V P                  4       pVP                  R\        P                  ! R4      34       VP                  4       pV'       d
   V^ ,          M^ pVP                  R\        P                  ! R4      34       \        RRRVRV R	2/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        R
T4       \        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)z3Apaga todos os registros da tabela deliverypendenteNr  r)   z2DELETE FROM deliverypendente WHERE id_cliente = %sr@   Tregistros_deletadosrA   z" pedido(s) deletado(s) com sucessor   FrF   )r   rD   rI   r   r1   rJ   r   rL   ru   rv   rw   rt   rO   )rE   rD   rp  pedidos_deletadosr   s        r"   limpar_delivery_pendenter  	  s`    DFz 	nqxq|q|  ~J  rK  qM  	NOO%	,5IaL1KgkkZfNgMijt!#4,--OP
  LLNJJL  ??   lF#uF
   	 LLNJJL  LLNJJL s6   BC E5%EEE EE  F:Fz/api/verificar-comandasc                    Rp Rp \        4       p V P                  RR7      p\        P                  ! R4      pVP	                  RV34       VP                  4       pV'       d
   VR,          M^ p\        RV^ 8  RV/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   dd   p\        RT4       \        RR	R^ R
\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)uQ   Verifica se existem registros na tabela comandas, contando apenas pedidos únicosNTrh   r)   zLSELECT COUNT(DISTINCT nropedido) as total FROM comanda WHERE id_cliente = %sr  r   r   Frl   rF   r   r  s         r"   verificar_comandasr  	  s)    DFz- [[.
ehrgtuOO%	&/	'"QeaiU
  LLNJJL  ??   PlF#%!VS[IJCOO LLNJJL P
 LLNJJL r  z#/api/transferir-comandas-liquidadasc                 H   Rp Rp \        4       p V P                  4       pVP                  R4       VP                  4       pV'       d
   V^ ,          M^ pV^ 8  d=   \        P
                  ! R4      pVP                  RV34       VP                  RV34       \        RX 24       VP                  RV34       \        RVP                   24       V P                  4        VP                  R	V34       VP                  4       pV'       d
   V^ ,          M^ p\        R
V 24       \        RRRVRVRV R2/4      V'       d   VP                  4        V '       d   V P                  4        # #   \        P                  P                   db   p\        RT4       \        RRR\        T4      /4      R3u Rp?T'       d   TP                  4        T '       d   T P                  4        # # Rp?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)zHTransfere registros da tabela comanda para liquidada e reseta o contadorNz6SELECT COUNT(DISTINCT nropedido) as total FROM comandar)   a  
                INSERT INTO liquidada 
                (nropedido, telefone, cep, nome, endereco, nrocasa, complemento, 
                 codigoproduto, produto, preco, quantidade, classe, entregador, cliente, data_criacao, id_cliente, formapagamento)
                SELECT nropedido, telefone, cep, nome, endereco, nrocasa, complemento,
                       codigoproduto, produto, preco, quantidade, classe, entregador, cliente, data_criacao, id_cliente, formapagamento
                FROM comanda WHERE id_cliente = %s
            z)DELETE FROM comanda WHERE id_cliente = %sz[RESET CONTADOR] id_cliente=z<UPDATE contadorpedido SET contador = 0 WHERE id_cliente = %sz"[RESET CONTADOR] Linhas afetadas: r{  z[RESET CONTADOR] Valor atual: r@   Tr  contador_atualrA   z9 pedido(s) transferido(s) com sucesso e contador resetador   FrF   )r   rD   rI   rJ   r   r1   rt   rV   rM   r   rL   ru   rv   rw   rO   )rE   rD   rp  pedidos_transferidosr)   r  contador_valorr   s           r"   transferir_comandas_liquidadasr  	  s    DF6z 	OPOO%	/8y|a!# \2JNN    NNFV 	,ZL9:UXbWde26??2CDE 	RU_Tab*.<*!.~.>?@t$&:n/00ij	
  LLNJJL  ??   lF#uF
   	 LLNJJL  LLNJJL s6   D3E+ +G+
%G&/G+0G. &G++G. . H!H!z/api/formas-pagamentoc                  ,   R p R p \        4       p V P                  RR7      p\        P                  ! R4      p\	        RV 24       VP                  RV34       VP                  4       ;'       g    . p\	        RV 24       V'       g   \	        RV 24       \        RRR	V/4      V'       d   VP                  4        V '       d   V P                  4        # #   \         d|   p^ R I
p\        T4       R
TP                  ! 4        2p\	        RT4       \        RRRT/4      R3u R p?T'       d   TP                  4        T '       d   T P                  4        # # R p?ii ; i  T'       d   TP                  4        T '       d   T P                  4        i i ; i)NTrh   r)   u3   [LOG][formas_pagamento_api] id_cliente na sessão: z2SELECT * FROM formapagamento WHERE id_cliente = %sz0[LOG][formas_pagamento_api] Formas encontradas: zF[LOG][formas_pagamento_api] Nenhuma forma encontrada para id_cliente: r@   formasr*   z[ERRO FORMAS PAGAMENTO]Frl   rF   )r   rD   r   r1   rt   rI   r   r   rL   rN   r!  rO   
format_exc)rE   rD   r)   r  rQ   r!  erro_msgs          r"   formas_pagamento_apir  
  sX    DFz-[[.
CJ<PQKj]["((b@IJZ[eZfgh	46:; LLNJJL   B!fXR	 4 4 678'2	5&(;<cAALLNJJL B LLNJJL s6   BC E"?E!E"E  EE    FFz/api/mesa/<int:mesanro>c                     \         P                  ! R 4      pV'       g   \        RRRR/4      R3# \        RV  R\	        V 4       RV 2R	R
7       \        4       pVP                  R	R7      pRpVP                  RV34       VP                  4       ;'       g    / pV'       g,   VP                  R4       VP                  4       ;'       g    / p \        VP                  R4      ;'       g    ^ 4      pRpV \        V 4      V3p\        RVP                  4        RV 2R	R
7       VP                  Wg4       VP                  4       p\        RV 2R	R
7       VP                  4        VP                  4        \        RR	RVRV/4      #   \         d    Rp Li ; i  \         d*   p	\        RT	R	R
7       \        RRRR/4      R3u Rp	?	# Rp	?	ii ; i)r)   r@   FrA       Sessão sem tenant (id_cliente).rm   z0[DEBUG] /api/mesa/<mesanro> chamado com mesanro=z (type=z) e id_cliente=Tr2   rh   g        zVSELECT servicomesa FROM configuracao WHERE id_cliente = %s ORDER BY chave DESC LIMIT 1zUSELECT servicomesa FROM configuracao WHERE id_cliente = 1 ORDER BY chave DESC LIMIT 1servicomesaz
                SELECT * FROM mesa 
                WHERE (mesanro = %s OR mesanro = %s) AND id_cliente = %s 
                ORDER BY mesanro DESC
            z[DEBUG] Executando query: z com params: z[DEBUG] Registros retornados: r  taxa_servicoz"[ERRO] ao buscar produtos da mesa:z Erro ao buscar produtos da mesa.rF   N)r   r1   r   rt   r   r   rD   rI   rJ   r   rN   rO   rH   r   rL   )
mesanror)   rE   curr  cfgqueryparamsr  rQ   s
   &         r"   buscar_mesar  $
  s   *`[[.
Iuj:\]^`ccc>wiwtT[}o]lmwlxy	
 zkkTk*dM	
 lln""KKg ,,.&&BC	 !7!<!<1=L
 3w<4*5;;=/vhOW[\E"LLN	.yk:$G		

	4iQ]^__  	L	   `2ATB	5*6XYZ\___`s_   F F A1F #'F F F ,F 3BF FF FF G$GGGz*/api/mesa/<int:mesanro>/item/<int:item_id>c           	        a  \         P                  ! R 4      pV'       g   \        RRRR/4      R3# \        RV RV  RV 2R	R
7       \	        4       pVP                  R	R7      oR V3R llpV! R4      '       d   RMRpV! R4      '       d   RMRpV! R4      '       d   RMRpV! R4      '       d   RMRpV! R4      '       d   RMRp	V! R 4      p
V
'       g   RMRpW\        V 4      .pV
'       g   . MV.pRV RV RV RV R2	p\        RV RW,            2R	R
7       SP                  WV,           4       SP                  4       pV'       g2   SP                  4        VP                  4        \        RRRR/4      R 3# \        R!V 2R	R
7       VP                  R"4      p\        R#V 2R	R
7       VEeX   V^ 8  EdP   R$pV.pV
'       d   VR,          pVP                  V4       \        R%V RV 2R	R
7       SP                  VV4       SP                  4       R&,          p\        R'V R(V 2R	R
7       V^8  dh   R)pV.pV
'       d   VR,          pVP                  V4       \        R*V RV 2R	R
7       SP                  VV4       \        R+SP                   2R	R
7       MR,V R-2pV.pV
'       d   VR,          pVP                  V4       \        R.V RV 2R	R
7       SP                  VV4       \        R/SP                   2R	R
7       MjR,V R-2pV.pV
'       d   VR,          pVP                  V4       \        R0V RV 2R	R
7       SP                  VV4       \        R1SP                   2R	R
7       VP                  4        \        R2R	R
7       SP                  4        VP                  4        \        RR	RR3/4      #   \         dA   p\        R4T 2R	R
7       \        P                  ! 4        \        RRRR5/4      R63u Rp?# Rp?ii ; i)7r)   r@   FrA   r  rm   z[DEBUG] Removendo item z	 da mesa z para id_cliente=Tr  rh   c                0    V ^8  d   QhR\         R\        /# )   nome_colunareturn)rO   bool)formats   "r"   __annotate__'remover_item_mesa.<locals>.__annotate__a
  s     	 	s 	t 	r!   c                    <  SP                  R V 34       SP                  4       p\        T;'       d    VP                  R4      4      #   \         d   p\        RT  RT 2RR7        Rp?R# Rp?ii ; i)zSELECT COUNT(*) AS existe FROM information_schema.columns
                        WHERE table_schema = DATABASE() AND table_name = 'mesa' AND column_name = %sr   z![WARN] Falha ao verificar coluna r  Tr  NF)rI   rJ   r  r1   rN   rt   )r  r
  rQ   r  s   &  r"   coluna_existe(remover_item_mesa.<locals>.coluna_existea
  st    
h N
 llnC55CGGH$566 9+bLTXYs   0A
 A
 
A3A..A3idrW   r  r  codigoprodutoNrq  r]  r?   z AND id_cliente = %sz3
            SELECT * FROM mesa
            WHERE (z = %s) AND (z	 = %s OR z = %s)z	
        z[DEBUG] SELECT remover_item: z params=u5   Item não encontrado ou não pertence a este cliente.rU   z[DEBUG] Item encontrado: nrolancamentoz[DEBUG] nrolancamento do item: z;SELECT COUNT(*) as total FROM mesa WHERE nrolancamento = %sz[DEBUG] COUNT SQL: r  z.[DEBUG] Quantidade de itens com nrolancamento=r  z)DELETE FROM mesa WHERE nrolancamento = %sz+[DEBUG] DELETE multiparte (nrolancamento): z'[DEBUG] Linhas deletadas (multiparte): zDELETE FROM mesa WHERE z = %su   [DEBUG] DELETE único (ID): u#   [DEBUG] Linhas deletadas (único): z"[DEBUG] DELETE sem nrolancamento: z[DEBUG] Linhas deletadas: u)   [DEBUG] Remoção concluída com sucesso.zItem removido com sucesso.z [ERRO] ao remover item da mesa: zErro ao remover item da mesa.rF   )r   r1   r   rt   r   rD   rO   rI   rJ   rL   r   rV   rM   rN   r!  r"  )r  item_idr)   rE   r  col_idcol_mesacol_codcol_prod
col_classetem_id_clientewhere_clienteparams_baseparams_cliente
select_sqlitemr  	count_sqlcount_params	qtd_items
delete_sqldelete_paramsrQ   r  s   &&                     @r"   remover_item_mesar  U
  s'   p][[.
Iuj:\]^`ccc'y	'BST^S_`hlmzkkTk*	 	 't,,' -i 8 89k%2?%C%C/ -i 8 89d!.x!8!8Xd
&|4 #16LW6#1
|8<z8*F=/ Z	
 	-j\+B^A_`hlmJn <=||~IIKJJLIuj:qrsuxxx 	)$0= 1/?tL$):UI)?L33	##J/'	{(<.IQUVKK	<0w/IB=/QST]S^_gkl1}H
!.!"88J!((4CJ<xXeWfgostJ6?~NVZ[  7vheD
!(	!"88J!((44ZLX`deJ6;CLL>JRVW 36(%@J$IM44
$$Z06zl(=/ZbfgKK
M2.s||n=TJ9$G		

	45QRSS ]04DA	5*6UVWY\\\]sj   O O AO O O 1O O B&O >A
O 	A<O A*O 1A*O B$O P5PPP__main__z0.0.0.0i  )hostportdebug)zr  r   r   r   r   r   r   r	   mysql.connectorru   decimalr!  r
   requestsmathr.   r  r   r   
decoratorsr   databaser   services.dados_lojar   services.passwordsr   r   r   helpers_appr   r   r   r   r   r   r$  win32apirN   __name__app
SECRET_KEY
secret_keyr   r   r   
blueprintsr   router#   r%   r'   before_requestr3   r7   r9   rR   rX   rb   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r   r   r   r   r   r   r   r   r  r1  r4  r8  r:  rZ  rg  rm  rq  rt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  runr-   r    r!   r"   <module>r     s   V V V       
 	  %  0 Q Q  Ho""(.(F(F

$ %&,&B&B

" #&,&B&B

" # 1 3  04  14 1  1 !"7  #7   7 
 = 
 (6(;!5  <!5F 5zJ5  K5" 3\  \ 8) ) 8fX&J 'JX 9+ + 7]  ] $%i  &i =b  b ;`  ` "#l  $l #fX6(  7(T %w7  8B .@!  A!F /%A*  B*X 08*E"  F"L %&o  'o &9'  :'R '%9  :< 1E7C  D@ 2UGD*  E*X 3hZH"  I"L =b  b #fX6>  7>@ #$  %: f  f !"
@  #
@ x0B  1BH ug.  /8 $ug6 72 %w7$ 8$L +fX>Q  ?Qf ;)F *FP %1	Z 2	Z  6(3@  4@8  |  !| <&*;@ +;@z  2; !2;f%;N &;  &;P /;  /;d )9 )9V ?%9 %9N ug. /@ !E73/9 4/9f %199 299v !F8469 569p %w7  8@ vh/R9 0R9h x0@9 1@9D vh/P9 0P9d ?UG, -> ug. /> -x@/ A/d %&C 'C
 #fX6$ 7$L '&: ;< *UG< =0 -w?  @: *VH=   > D $ug6  7: 06(C:  D:~ "UG4  54 $ug6+`  7+`^ 7(Lq]  Mq]h zGGV-?-?G@ ]U  JHs   (b" "b10b1