
    (8i                     ~   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ d d	lmZmZmZmZ  e j.                  e      Z ed
dg      Zej7                  dddeddideddeddddddddddddd gd!d"iiiii#       edd$d%&       ee       ee      fd'ee   d(dd)efd*       Zy)+    N)Optional)require_fix_token)get_mysql_db)AsyncSession)OmieClienteResponse)OmieClienteService)	APIRouterDependsQuerystatus)build_success_payloadto_schema_dictSuccessResponseErrorResponsez/clientes-omiezOmie - Cadastro Clientes Omie)prefixtags z#Listar clientes cadastrados na Omieu  
Consulta a tabela **omie_cliente** no banco de dados **MySQL (DataLake)**.

**⚠️ IMPORTANTE - DIFERENÇA ENTRE ROTAS:**

Esta rota lista os **clientes cadastrados na Omie**, diferente da rota `/clientes-alerta-fiscal/buscar` que pertence ao **cadastro interno do sistema Alerta Fiscal**.

**Comparação:**
- **Esta rota (`/clientes-omie`)**: Consulta `omie_cliente` no **MySQL (DataLake)** - dados da Omie
- **Rota `/clientes-alerta-fiscal/buscar`**: Consulta `dbo.Cliente` no **SQL Server** - cadastro interno do sistema Alerta Fiscal

**Tabela:** `omie_cliente` (MySQL)

**Filtros suportados (todos opcionais):**
- `cnpj`: Filtra por CNPJ (busca parcial). Se não fornecido, retorna TODOS os clientes.

**Exemplos:**

1. **Buscar TODOS os clientes da Omie (sem filtros):**
```bash
curl -X GET 'http://localhost:8000/clientes-omie'   -H 'Authorization: Bearer <TOKEN>'
```

2. **Buscar clientes da Omie por CNPJ (com filtro opcional):**
```bash
curl -X GET 'http://localhost:8000/clientes-omie?cnpj=12345678000190'   -H 'Authorization: Bearer <TOKEN>'
```

**SQL Base:**
```sql
SELECT * FROM omie_cliente
WHERE (cnpj LIKE '%{cnpj}%' OR :cnpj IS NULL)
```

**Nota:** O parâmetro `cnpj` é completamente opcional. Se não for passado, a API retornará todos os clientes cadastrados na Omie.
descriptionzLista de clientes da Omieu"   Credenciais inválidas ou ausentes)r   modelzErro interno)   i  i  	responses200contentzapplication/jsonexamplez2 clientes encontrados   z12.345.678/0001-90zEmpresa Exemplo LtdazEmpresa Exemplo)idcnpjrazao_socialnome_fantasiaz2025-01-01T12:00:00Z)messagedata	timestamp)summaryr   response_modelr   openapi_extraua   Filtrar por CNPJ (busca parcial). OPCIONAL: se não informado, retorna todos os clientes da Omie.12345678000190)r   r   r   _dbc           
      X  K   t         j                  d| r| nd        	 t         j                  d       t        j                  ||        d {   }t         j                  dt        |       d       t         j                  d       g }t        |      D ]'  \  }}	 t        t        |      }|j                  |       ) t        |      }t         j                  d| d       g }| r|j                  d|  d       |rddj%                  |       nd}|dk(  rd| }n|dk(  rd| }n| d| }t         j                  d|        t'        ||      S 7 
# t        $ r}i }		 t        |d      r[|j                  j                         D 
ci c]/  \  }
}|
j                  d	      r|
t        |      j                   |f1 nc c}}
w }	}
}n#  Y nxY wt         j#                  d
| d| d|	         d }~ww xY w# t        $ r }t         j#                  d| d        d }~ww xY ww)Nz0Iniciando busca de clientes Omie - CNPJ filtro: zNenhum (todos)z%Chamando OmieClienteService.listar...)r   z#OmieClienteService.listar retornou z itensz Convertendo itens para schema...__dict___sa_u   ❌ Erro ao converter item z para schema:
   Erro: z
   Tipos dos campos do item: u   Conversão concluída: z itens processadoszCNPJ contendo ''z com filtros: z, r   r   z!Nenhum cliente da Omie encontrador   z1 cliente da Omie encontradoz clientes da Omie encontradosu   Busca concluída com sucesso: )r!   r    zErro ao listar clientes Omie: T)exc_info)loggerinfodebugr   listarlen	enumerater   r   append	Exceptionhasattrr*   items
startswithtype__name__errorjoinr   )r   r'   r(   r7   r!   idxitem	convertede	item_dictkvqtdfiltrossufixor    s                   //srv/www/app-alerta/controllers/omie_cliente.pylistar_clientes_omierH      s;    ^ KKB44UeBfgh.<=(//>>:3u:,fMN78"5) 	IC*+>E	I&	& $i.se3EFGNN_TF!45:A>$))G"4!56r!89&BGAX4VH=G:6(CG4WI>?$$@@Q ?  	tZ0JN--J]J]J_$|$!Qghgsgstzg{Qa)9)91(=%=$|$|	$|1# 7  !s #44=;@
 B  5aS9DIs   H*/G> EAG> !E BG> H*G> 	G;%G6()GG
+G

GG6G$G66G;;G> >	H'H""H''H*)loggingtypingr   	core.authr   core.databaser   sqlalchemy.ext.asyncior   schemas.omie_clienter   services.omie_clienter   fastapir	   r
   r   r   core.api_responsesr   r   r   r   	getLoggerr:   r.   routergetstrrH        rG   <module>rX      s8     ' & / 4 4 5 5 d d			8	$	
)	*

 1%L #89AMZ+mD 	&!'? +,,@4J5F	!"% *@$)
_  EN  w 
 '(|,9
3-9 9 	9MEL9rW   