
    jJ                        S r SSKrSSKrSSKrSSKJrJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKr\" S\5      rS	 r\R-                  S
5      \S 5       5       r\R-                  SS/S9\S 5       5       r\R-                  S5      \S 5       5       r\R-                  S5      \S 5       5       r\R-                  S5      \S 5       5       rg)zMesa floor and related APIs.    N)	Blueprintjsonifyrender_templaterequestsession)login_required)conectar)fetch_mesa_recent_for_client)obter_dados_loja	mesa_shopc                     S n S n [        5       n U R                  5       nUR                  S5        UR                  S5        UR                  5       c  UR                  S5        UR                  S5        UR                  5       c  UR                  S5        U R	                  5         U(       a  UR                  5         U (       a  U R                  5         g g ! [
         a>  n U (       a  U R                  5         O! [
         a     Of = f[        SUSS9   S nANsS nAff = f! U(       a  UR                  5         U (       a  U R                  5         f f = f)	Na  
            CREATE TABLE IF NOT EXISTS pedido_diarios (
                chave INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
                origem VARCHAR(20) NOT NULL,
                nropedido INT NOT NULL,
                status_pedido VARCHAR(20) NULL,
                status_comanda VARCHAR(30) NULL,
                telefone VARCHAR(30) NULL,
                cep VARCHAR(20) NULL,
                nome VARCHAR(255) NULL,
                endereco VARCHAR(255) NULL,
                nrocasa VARCHAR(40) NULL,
                complemento VARCHAR(120) NULL,
                referencia VARCHAR(255) NULL,
                bairro VARCHAR(120) NULL,
                cidade VARCHAR(120) NULL,
                estado VARCHAR(10) NULL,
                codigoproduto VARCHAR(80) NULL,
                produto VARCHAR(255) NOT NULL,
                preco DECIMAL(10,2) DEFAULT 0,
                quantidade DECIMAL(10,3) DEFAULT 1,
                obs_item TEXT NULL,
                obs_geral TEXT NULL,
                classe VARCHAR(120) NULL,
                cod_classe INT NULL,
                cod_usuario INT NULL,
                cliente VARCHAR(255) NULL,
                id_cliente INT NOT NULL,
                formapagamento VARCHAR(80) NULL,
                lancamento INT NULL,
                nrolancamento BIGINT NULL,
                data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                INDEX idx_pd_cliente_pedido (id_cliente, nropedido),
                INDEX idx_pd_origem_status (origem, status_pedido),
                INDEX idx_pd_status_comanda (status_comanda),
                INDEX idx_pd_codproduto (codigoproduto),
                INDEX idx_pd_lancamento (lancamento, nrolancamento)
            )
            3SHOW COLUMNS FROM pedido_diarios LIKE 'status_mesa'zRALTER TABLE pedido_diarios ADD COLUMN status_mesa VARCHAR(20) NULL AFTER nropedido4SHOW COLUMNS FROM pedido_diarios LIKE 'pessoas_mesa'zMALTER TABLE pedido_diarios ADD COLUMN pessoas_mesa INT NULL AFTER status_mesaz[MESA_BP PEDIDO_DIARIOS ERRO]Tflush)	r	   cursorexecutefetchonecommit	Exceptionrollbackprintclose)conncures      WC:\Users\user\Desktop\Projetos_em_andamento\_Mexendo\LojaOnline\blueprints\mesa_shop.py_ensure_pedido_diarios_tabler      s   D
C>zkkm&(	
R 	IJ<<>!KKlmJK<<>!KKgh IIKJJL   >	 		-q=> IIKJJL sH   B!C 
D"C:9D:
DDDDD" DD" "1Ez/api/mesa-todosc                       [         R                  " S5      n U (       d  [        SS05      S4$ [        U 5      n[        SU05      $ ! [         a"  n[        S[        U5      05      S4s S nA$ S nAff = f)N
id_clienteerrou   Sessão sem id_cliente  	registros  )r   getr   r
   r   str)r    r#   r   s      r   listar_todas_mesasr'   T   sq    .[[.
F$<=>CC0<	Y/00 .A'(#--.s"   +A A 
A2A-'A2-A2z/api/salvar-mesaPOST)methodsc                      [         R                  " 5       n U R                  S/ 5      nU R                  S5      n[        R                  " S5      nU R                  S5      nU R                  SS 5      nU(       a  U(       d\  [	        SSS.5      S	4S
[        5       ;   a  W(       a  UR                  5         S[        5       ;   a  W(       a  UR                  5         $ $ $ [        5       nUR                  5         UR                  5       nUR                  SS9nUR                  S5        UR                  5       S Ln	UR                  SXC45        UR                  5       (       al  UR                  5         [	        SSS.5      S4S
[        5       ;   a  U(       a  UR                  5         S[        5       ;   a  U(       a  UR                  5         $ $ $ UR                  SXS45        UR                  5       n
U
(       a7  U
R                  S5      (       a!  U
S   R                  5       R                  5       OSnUR                  SXS45        UR                  5       =(       d    0 nUR                  S5      n[        R                  " S5      nUcz  [        [        R                  " S5      =(       d    S5      R                  5       nU(       a=  UR                  SX45        UR                  5       =(       d    0 nUR                  S5      nUR                  5         UR                  S5        UR                  5       S Ln	UR                  S5        UR                  5       S LnSnU(       a  UR                  SX445        UR                  5       nUc  SnOP[!        U["        5      (       a$  [%        UR                  S5      =(       d    S5      nO[%        US   =(       d    S5      nUS::  a  SnUR                  S 5        UR                  5       S LnUR                  S!5        UR                  5       S LnU(       d  ['        S"5      eUR                  S#X445        UR                  5       nUc  SnOP[!        U["        5      (       a$  [%        UR                  S$5      =(       d    S5      nO[%        US   =(       d    S5      nUS%;   Ga  [)        U5      S:  Ga  [)        U5      n/ nU H.  n UR+                  [-        UR                  S&S5      5      5        M0     US':X  a!  US:  a  [1        [3        U5      U-  S(5      OSnOU(       a  [5        U5      OSn [-        [        U=(       d    S5      R7                  S)S*5      5      nU(       a!  [1        [-        U5      [-        U5      -   S(5      nUS-  n[9        U5       GH  u  nnUR                  S,5      nUS:  a  S-U S.3OSnU U 3n UR                  S/5      n!UR                  S05      =(       d    SR                  5       n"UR                  S15      =(       d    SR                  5       n#[        UR                  S25      =(       d    S5      R                  5       n$US:X  a  UOSn%/ S3Qn&S4US5S6U$U U%U!U"X]USUU/n'U	(       a$  U&R;                  S(S75        U'R;                  S(S85        U(       a5  U&R=                  S95      n(U&R;                  U(S5        U'R;                  U(U5        U(       a8  U&R=                  S05      S-   n)U&R;                  U)S15        U'R;                  U)U#5        S:R?                  S;/[)        U'5      -  5      n*UR                  S<S:R?                  U&5       S=U* S>3[A        U'5      5        GM     GOU GH  nUR                  S,5      n UR                  S&5      n+UR                  S/5      n!UR                  S25      n$UR                  S05      =(       d    SR                  5       n"UR                  S15      =(       d    SR                  5       n# [-        [        U=(       d    S5      R7                  S)S*5      5      nU(       a+   [1        [-        U+=(       d    S5      [-        U5      -   S(5      n+US-  n/ S3Qn&S4US5S6U$U U+U!U"X]USUU/n'U	(       a$  U&R;                  S(S75        U'R;                  S(S85        U(       a5  U&R=                  S95      n(U&R;                  U(S5        U'R;                  U(U5        U(       a8  U&R=                  S05      S-   n)U&R;                  U)S15        U'R;                  U)U#5        S:R?                  S;/[)        U'5      -  5      n*UR                  S<S:R?                  U&5       S=U* S>3[A        U'5      5        GM	     URC                  5         [	        SS?S.5      S
[        5       ;   a  U(       a  UR                  5         S[        5       ;   a  U(       a  UR                  5         $ $ $ ! [.         a    UR+                  S5         GMA  f = f! [.         a    S+n GNf = f! [.         a    S+n GNf = f! [.         a    [-        U5      n+ GNf = f! [.         a  n,[E        S@U,SSA9  [F        RH                  " 5         [	        S[        U,5      S.5      SB4s S n,A,S
[        5       ;   a  W(       a  UR                  5         S[        5       ;   a  W(       a  UR                  5         $ $ $ S n,A,ff = f! S
[        5       ;   a  W(       a  UR                  5         S[        5       ;   a  W(       a  UR                  5         f f f = f)CNprodutosacrescimo_totalr    	nropedidoclasseFu,   Produtos ou número da mesa não informados.)sucessomensagemi  r   r   T
dictionaryr   z
            SELECT 1
            FROM pedido_diarios
            WHERE origem = 'MESA'
              AND nropedido = %s
              AND id_cliente = %s
              AND UPPER(COALESCE(status_mesa, '')) = 'CONTA'
            LIMIT 1
            u-   Mesa está em CONTA e não pode ser alterada.i  z`SELECT formadecobrar FROM classificacao WHERE nomeclassificacao = %s AND id_cliente = %s LIMIT 1formadecobrarnormalzXSELECT chave FROM classificacao WHERE nomeclassificacao = %s AND id_cliente = %s LIMIT 1chave
id_usuariousuario_logado zISELECT chave FROM usuarios WHERE usuario = %s AND id_cliente = %s LIMIT 1r      z
                SELECT MAX(COALESCE(pessoas_mesa, 0)) AS pessoas_mesa
                FROM pedido_diarios
                WHERE origem = 'MESA' AND id_cliente = %s AND nropedido = %s
                pessoas_mesar   2SHOW COLUMNS FROM pedido_diarios LIKE 'dados_item'z2SHOW COLUMNS FROM pedido_diarios LIKE 'lancamento'uC   Coluna obrigatória 'lancamento' não encontrada em pedido_diarios.z
            SELECT COALESCE(MAX(COALESCE(lancamento, 0)), 0) AS max_lancamento
            FROM pedido_diarios
            WHERE origem = 'MESA' AND id_cliente = %s AND nropedido = %s
            max_lancamento)mediamaiorprecor=      ,.g        nomez1/ qtdobs_item
dados_itemcodigoproduto)origemr-   status_pedidostatus_comandarH   produtor?   
quantidaderF   r.   
cod_classecod_usuarioclienter    
lancamentoMESAAGUARDENORMALstatus_mesaABERTArK   z, z%szINSERT INTO pedido_diarios (z
) VALUES ()z*Produtos enviados para a mesa com sucesso!z"[ERRO] ao salvar produtos na mesa:r   r$   )%r   get_jsonr%   r   r   localsr   r	   start_transactionr   r   r   r   lowerstripr&   
isinstancedictintRuntimeErrorlenappendfloatr   roundsummaxreplace	enumerateinsertindexjointupler   r   	traceback	print_exc)-datar+   r,   r    mesanror.   r   r   cursor_classhas_status_mesa_col	class_rowr3   row_cod_classerN   rO   r7   row_uhas_pessoas_mesa_colpessoas_mesa_valrow_pmhas_dados_item_colhas_lancamento_colrow_lanclancamento_atualpartesprecosprodvalor_principalacresidxnome_originalprefixorC   rE   rF   rG   rH   preco_gravarcolsvalsidx_pmidx_diplaceholdersr?   r   s-                                                r   salvar_mesar   a   s	   B!88J+((#45[[.
((;'(D)wu:hijloon vxFLLNVX$JJL #'q z {{d{3LM$oo/t; !	
 ??MMOu:ijkmppD vxFLLNVX$JJL #'G 	n 	
 !))+	 Y]]?;; o&,,.446 	
 	f 	
 &..06B#''0
kk,/ -=!>!D"EKKMN$$_#0 %--/52#ii0LM$oo/t;MN%0<NN
 % __&F~#$ FD))#&vzz.'A'FQ#G #&vay~A#6 1$#$ KL#__.d:KL#__.d:!dee
 !	
 ??$ $''"8<<0@#A#FQG"8A;#3!4..3x=13D]FF %MM%!(<"=> !
 'DJQJ%Ff(<a"@TU17#f+Qc/"6Q7??SIJ "'o(>u(Mq"Q!&x0	T $ 0,2QJBvha.B!=/2hhuo HHZ06B==?"hh|4:AAC
 #DHH_$=$C D J J L25( _HmTS_adfnpv  EP  RT  V`  br  s&KK=1KK8,'!ZZ(89FKK7KK(89%!ZZ
3a7FKK5KK
3#yy$#d));<!=diio=NjYeXffghjoptjuv/ 12 !xx')hhuo $ 9 HHZ06B==?"hh|4:AAC
 !#o&:";"C"CC"MNE - %eEJQ&7%,&F J !A%  _HmTSXZ]_gio  ~I  KM  OY  [k  l&KK=1KK8,'!ZZ(89FKK7KK(89%!ZZ
3a7FKK5KK
3#yy$#d));<!=diio=NjYeXffghjoptjuvE !F 	45abc vxFLLNVX$JJL #'k ! %MM!$$%  T !  E 
 % - %e-,  D2ATB5c!f=>CCvxFLLNVX$JJL #'D
 vxFLLNVX$JJL #'s   Bi B#i Li *g9?i -h 2J*i -h/
i *i<D0i 9hi hi h,(i +h,,i /h?;i >h??i ii ii 
k7(8k2 k7!k: 2k77k: :Amz
/mesa_testc                      [        S5      $ )Nzmesa_test.html)r        r   	mesa_testr   )  s     +,,r   z/mesac            	         [         R                  " S5      n [        SU  3SS9  [        U 5      nUR                  SS5      n[        SU 3SS9  / n[	        5       nS n [        5       nUR                  SS9nUR                  S	U 45        UR                  5       nUR                  S
U 45        UR                  5       n[        [	        S U 5       5      5      n UR                  SU 45        UR                  5       n[        SU 3SS9  UR                  5         UR                  5         [        SU UUUUS9$ ! [         a  n	[        SU	 3SS9   S n	A	NJS n	A	ff = f! [         a  n
[        SU
SS9   S n
A
NLS n
A
ff = f)Nr    u$   [LOG] (mesa) id_cliente na sessão: Tr   rC   z
Minha Lojaz[LOG] (mesa) nome_fantasia: r1   zLSELECT * FROM classificacao WHERE id_cliente = %s ORDER BY nomeclassificacaoz
            SELECT DISTINCT nropedido AS mesanro
            FROM pedido_diarios
            WHERE origem = 'MESA'
              AND id_cliente = %s
              AND UPPER(COALESCE(status_pedido, '')) NOT IN ('ITEM_REMOVIDO', 'RECEBIDO')
            c              3   R   #    U  H  oR                  S 5      c  M  US    v   M     g7f)rp   N)r%   ).0rows     r   	<genexpr>mesa.<locals>.<genexpr>M  s      %m
ggV_N`nc)n
s   ''zLSELECT * FROM configuracao WHERE id_cliente = %s ORDER BY chave DESC LIMIT 1z%[LOG] (mesa) configuracao carregada: z[ERRO] ao buscar configuracao: u<   [ERRO] ao buscar classificações ou mesas para o carrossel:z	mesa.html)r    nome_fantasiaclassificacoesmesas_com_registroconfig)r   r%   r   r   setr	   r   r   fetchalllistr   r   r   r   )r    
dados_lojar   r   r   r   r   r   
mesas_rowse_confr   s              r   mesar   /  s    \*J	0
=TJ!*-JNN6<8M	(
8ENF ]zkkTk*ZM	
  M		
 \\^
!#%m
%m"mn	JKK^ \\^F9&B$O 			

 #%-   	J3F8<DI	J  ]LaW[\]sC   A:E 0D6  E 6
E EE EE 
E9$E44E9z0/produtos_por_classificacao/<nome_classificacao>c                    [         R                  R                  SU  S35        [         R                  R                  5         S nS n [	        SSS9  [	        SU  S[        U 5       S3SS9  [        R                  " S	U 5      R                  5       n[        5       nUR                  SS
9nUR                  S5        UR                  5       S Ln[        R                  " S5      n[	        SU 3SS9  U(       dR  [	        SSS9  [	        SSS9  [        SS05      S4U(       a  UR!                  5         U(       a  UR!                  5         $ $ [	        SX54SS9  UR                  SX545        UR                  5       n[	        SU 3SS9  U(       d^  [	        SU  SU 3SS9  [	        SSS9  [        SSU  SU 305      S4U(       a  UR!                  5         U(       a  UR!                  5         $ $ US   n[	        SU 3SS9  [	        SXu4SS9  UR                  SXu45        UR#                  5       n[	        SU 3SS9  U(       d.  UR                  S5        UR#                  5       n	[	        S U	 3SS9  [	        SSS9  [        U5      U(       a  UR!                  5         U(       a  UR!                  5         $ $ ! [$         a{  n
[	        S!U
SS9  [&        R(                  " 5         [	        SSS9  [        S[+        U
5      05      S"4s S n
A
U(       a  UR!                  5         U(       a  UR!                  5         $ $ S n
A
ff = f! U(       a  UR!                  5         U(       a  UR!                  5         f f = f)#NzK[DEBUG] Entrou na rota /produtos_por_classificacao com nome_classificacao: 
uS   
==================== INÍCIO LOG PRODUTOS POR CLASSIFICAÇÃO ====================Tr   z+[LOG] nome_classificacao recebido na URL: 'z	' (type: rW   NFKCr1   r;   r    u   [LOG] id_cliente na sessão: u-   [ERRO] id_cliente não encontrado na sessão!uO   ==================== FIM LOG PRODUTOS POR CLASSIFICAÇÃO ====================
r!   u%   id_cliente não encontrado na sessãor"   zy[LOG] Executando SELECT nomeclassificacao, id_cliente FROM classificacao WHERE nomeclassificacao = %s AND id_cliente = %szhSELECT nomeclassificacao, id_cliente FROM classificacao WHERE nomeclassificacao = %s AND id_cliente = %sz)[LOG] Resultado do SELECT classificacao: u   [ERRO] Classificação 'u!   ' não encontrada para o cliente u   Classificação 'i  nomeclassificacaoz$[LOG] nomeclassificacao encontrada: zl[LOG] Executando SELECT chave, produto, preco, descricao FROM produtos WHERE classe = %s AND id_cliente = %szqSELECT chave, produto AS nome, preco, descricao AS observacao FROM produtos WHERE classe = %s AND id_cliente = %sz[LOG] Produtos retornados: z0SELECT DISTINCT classe, id_cliente FROM produtosz0[LOG] Todas as classes e id_cliente existentes: u.   [ERRO] ao buscar produtos por classificação:r$   )sysstderrwriter   r   typeunicodedata	normalizer\   r	   r   r   r   r   r%   r   r   r   r   rm   rn   r&   )nome_classificacaor   r   nome_classificacao_normry   r    r   nome_classificacao_dbr+   todas_classesr   s              r   produtos_por_classificacaor   e  sf    JJ
UVhUiikl JJDFCdlpq9:L9MYW[\nWoVppqr	
 #."7"7@R"S"Y"Y"[z-KL#__.d:[[.
-j\:$GANdlpqF$KLMsR` LLNJJL a 	 H$1	

 	v$1	
 oo9#?tL*+=*>>_`j_kl dlpq,-?,@@ablamno: LLNJJL 9 !$$7 845J4KLTXYz"/	

 	"/	
 ??$+H:6dCNNMN"OO-MD]OT\`a`hlmx  LLNJJL   .>N`hlmA'(#--LLNJJL . LLNJJL s@   CJ0 A1J0 )BJ0 0
L5:AL0;L5<L8 0L55L8 81M))__doc__r   rm   r   flaskr   r   r   r   r   
decoratorsr   databaser	   repositories.mesa_repor
   services.dados_lojar   time__name__mesa_shop_bpr   router'   r   r   r   r   r   r   r   <module>r      s   " 
   G G %  ? 0 h/AH %&.  '. &9C  :CL L!-  "- G1  1h FGJ  HJr   