Fluxo Funcional
Passo a passo de uma requisição, validações e tratamento de erros.
Diagrama de sequência
Diagrama de fluxo (decisões)
Passo a passo detalhado
- Recebimento da requisição
Recebemos o payload viarun(array $params). O parâmetroacaodeve ser'getVendas'; qualquer outro valor resulta em erro imediato. - Validação de parâmetros
Validamos viavalidarParametrosObrigatorios():dataInicio,dataFimecnpjLoja— presença e valor não vazio. Se algum faltar, lançamos uma exception com o nome do campo faltante. - Normalização do período
VianormalizarPeriodo(), adicionamos horários às datas: início ficadataInicio 00:00:00e fimdataFim 23:59:59, garantindo cobertura integral dos dias extremos. - Verificação do limite
ViaperiodoExcedeLimite(), checamos se alguma das datas está além de 200 dias no passado. Se sim,getVendasConsolidadas()monta arrays vazios e um objetofallback, masrun()ainda trata o resultado como nenhum registro encontrado e retorna erro ao consumidor. - Vendas PDV
Executamos query com 2 CTEs nas tabelasmovimentacao + movimentacao_detalhe + movimentacao_nfe. Retornamos uma linha por item e depois agrupamos poridentificadorviaagruparItensDasVendas(), gerando o sub-arrayitens. - Trocas
Buscamos movimentações de entrada comtipo_estoque = 'TROCA', vinculando à venda original viamovimentacao_movimentacao. Consolidamos múltiplas trocas do mesmo documento somando valores emagruparTrocasPorDocumento(). - Omni
Buscamos pedidos omni criados pelo vendedor na loja (orçamentos comtipo_estoque = 'ORCAMENTO'e situação Confirmado/Finalizado), vinculados à venda real viamovimentacao_movimentacao. - E-commerce
Em dois sub-passos: (1) resolvemos os códigos de filial ativas via MySQL/CNPJ; (2) consultamos a view SQL Server com placeholders paramétricos dinâmicos para cada filial. - Resposta
Montamos o objetodatacom os quatro arrays e retornamos viasetSubmit(true, 'Vendas retornadas com sucesso!', $data).
Tratamento de erros
| Situação | Comportamento | success |
|---|---|---|
| Parâmetro obrigatório ausente | Mensagem com nome do campo faltante | false |
| Ação inválida (≠ getVendas) | Mensagem de ação não encontrada | false |
| Período além de 200 dias | Fallback interno é montado, mas a resposta final atual é erro de nenhum registro | false |
| CNPJ sem filiais ativas no MySQL | vendas_ecommerce vazio; se os demais canais também estiverem vazios, retorna erro de nenhum registro |
Depende |
| Falha no SQL Server | Exception capturada → retorno false |
false |
Parâmetro falha enviado |
Força erro (uso em testes) | false |
Logs automáticos de requisição Toda chamada — mesmo as que resultam em erro — é salva automaticamente nas tabelas
wosk_webservice* do banco integrador. Em caso de disputa ou diagnóstico, basta consultar wosk_webservice_retorno pelo timestamp.
No comments to display
No comments to display