TP_BLOQUEIOOS
Resumo do que encontrei
Como o PRECO_POR_PERIODO = 'S' funciona:
Quando a loja do produto tem PRECO_POR_PERIODO = 'S':
1. SEMPRE aplica o desconto de TABELA (desconto_tabela)
2. Se a loja pertence ao grupo de lojas (ST_GRUPOLOJAS = 'S'):
- Os descontos de promoção, negociação e fidelização NÃO são aplicados
- (mesmo que existam promoções vigentes, elas são ignoradas)
3. Se a loja NÃO pertence ao grupo:
- Aplica promoção, negociação e fidelização normalmente
O que você precisa para testar 100% de desconto
1. Dados de teste no banco:
a) Produto com desconto de tabela = 100%:
-- Verificar/configurar desconto na tabela de preços
-- A tabela é vinculada via CD_TABELA_PRECO na tabela PRODUTO
UPDATE TABELA_PRECO_ITEM
SET DESCONTO = 100
WHERE CD_PRODUTO = :produto_teste
AND CD_TABELA_PRECO = :tabela_teste;
b) OU Criar uma promoção de 100% vigente:
-- Na tela MDV001 (Promoções), criar promoção ativa e vigente
-- ou diretamente:
UPDATE PROMOCAO
SET PC_DESCONTO = 100,
ST_ATIVO = 'S',
DT_INICIO <= CURRENT_DATE,
DT_FIM >= CURRENT_DATE
WHERE CD_PRODUTO = :produto_teste;
c) Configurar a loja do produto com PRECO_POR_PERIODO:
UPDATE LOJA
SET PRECO_POR_PERIODO = 'S'
WHERE CD_LOJA = :loja_teste;
2. Cenários de teste recomendados:
| Cenário | Configuração | O que validar |
|---|---|---|
| A | PRECO_POR_PERIODO = 'S' + desconto tabela 100% | Se PRECO_FINAL fica zerado |
| B | PRECO_POR_PERIODO = 'S' + promoção 100% + loja no grupo | Se promoção é IGNORADA (comportamento correto) |
| C | PRECO_POR_PERIODO = 'N' + promoção 100% | Se promoção é aplicada normalmente |
| D | PRECO_POR_PERIODO = 'S' + promoção 100% + loja FORA do grupo | Se promoção É aplicada |
3. Riscos a verificar (validações que podem impedir o teste):
| Validação | Onde verificar | Possível impedimento |
|---|---|---|
| Preço mínimo | UMM206.pas / UDM302.pas | Sistema pode bloquear se PRECO_FINAL < PRECO_MINIMO |
| Desconto máximo | UDM302.pas - VALIDA_DESCONTO | Campo MAXIMO na tabela DESCONTOS pode limitar a 99% |
| Impressão fiscal | UFIN002.pas | ECF pode não aceitar preço zerado |
| Integração balança | UMM206.pas | Peso x Preço pode não calcular com preço zerado |
4. Consulta para verificar se existe validação de preço mínimo:
-- Verificar se o produto tem preço mínimo configurado
SELECT PRECO_MINIMO, PRECO_FINAL, PRECO_CUSTO
FROM PRODUTO
WHERE CD_PRODUTO = :produto_teste;
-- Verificar configuração de desconto máximo
SELECT MAXIMO, DESCONTO
FROM DESCONTOS
WHERE TABELA = :tabela_preco;
Recomendação antes de rodar o teste:
- Verifique se existe preço mínimo configurado para o produto - se existir e o preço final zerado for menor, o sistema vai bloquear
- Verifique se existe desconto máximo configurado - se o máximo for 99%, o sistema vai bloquear 100%
- Escolha um produto SEM preço mínimo ou configure-o para 0
Quer que eu busque mais detalhes sobre as validações de preço mínimo e desconto máximo?