Atacarejo E-commerce
2. Documentação Técnica (Engenharia e Integração)
A rotina é executada via Procedure PL/SQL no banco de dados, responsável por ler os parâmetros da tela, calcular a rentabilidade considerando impostos e custos, e realizar o envio (Sincronização) para a API da plataforma E-commerce (FBITS).
2.1. Carga de Dados e Fila (AD_ECOMPRECOATACAREJO)
O processo inicia alimentando a tabela de controle AD_ECOMPRECOATACAREJO.
* Faz um JOIN entre as tabelas de produtos (TGFPRO), preços (AD_PRECO_FBITS) e agrupamentos de venda (TGFVOA).
* Utiliza OUTER APPLY para buscar promoções ativas na AD_PROMOCAOECOM, validando a condição de segurança (se houver promoção, o atacarejo é anulado).
* Garante a integridade evitando duplicações através do NOT EXISTS e sequenciamento via ROW_NUMBER().
2.2. Motor de Precificação
Para cada item ativo na fila, o sistema calcula o preço dinamicamente:
1. Levantamento de Custos e Impostos: Coleta as alíquotas de ICMS, IPI, PIS e COFINS através de funções customizadas (ex: F_OBTEM_ALIQICMS_ANHA).
2. Cálculo Base: Estipula um preço mínimo gerencial (V_PRECOMINGER) aplicando um fator de markup sobre o custo médio/gerencial.
3. Iteração de Margem (Loop WHILE): O sistema realiza até 4 iterações de cálculo para ajustar o preço final (V_PRECO_ATACAREJO). Ele recalcula a margem gerencial em tempo real através da PCK_RENTABILIDADE_ANHA até que a margem calculada cruze o limite estipulado pela segurança (V_MARGEM_ALVO_SEGURANCA).
2.3. Sincronização API FBITS
A integração com a URL base https://api.fbits.net/produtos/ possui um mecanismo de cache interno para otimizar requisições HTTP:
- Validação de Mudança (Delta): A API só é acionada se o preço calculado for diferente do
PRECO_POR_ATUALsalvo no banco, ou se o ID de atacado do E-commerce (IDATACADO) estiver nulo. - Gestão de ID e Endpoints HTTP:
GET: Acionado caso oIDATACADOnão exista no banco. Busca o ID correspondente ao volume (quantidade) no E-commerce.POST: Utilizado para enviar um novo preço de atacarejo (payload em JSON).PUT: Utilizado para atualizar o preço de uma faixa de atacarejo já existente (requer oIDATACADO).DELETE: Acionado quando a validação de segurança zera o preço de atacarejo (ex: entrou em promoção), removendo a faixa de volume da loja virtual.
2.4. Fluxograma de Execução (Motor e API)
O diagrama abaixo ilustra o comportamento do cursor PL/SQL para cada item ativo na tabela de atacarejo:
