Pular para o conteúdo principal

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árioConfiguraçãoO que validar
APRECO_POR_PERIODO = 'S' + desconto tabela 100%Se PRECO_FINAL fica zerado
BPRECO_POR_PERIODO = 'S' + promoção 100% + loja no grupoSe promoção é IGNORADA (comportamento correto)
CPRECO_POR_PERIODO = 'N' + promoção 100%Se promoção é aplicada normalmente
DPRECO_POR_PERIODO = 'S' + promoção 100% + loja FORA do grupoSe promoção É aplicada

3. Riscos a verificar (validações que podem impedir o teste):​

ValidaçãoOnde verificarPossível impedimento
Preço mínimoUMM206.pas / UDM302.pasSistema pode bloquear se PRECO_FINAL < PRECO_MINIMO
Desconto máximoUDM302.pas - VALIDA_DESCONTOCampo MAXIMO na tabela DESCONTOS pode limitar a 99%
Impressão fiscalUFIN002.pasECF pode não aceitar preço zerado
Integração balançaUMM206.pasPeso 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:​

  1. 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
  2. Verifique se existe desconto máximo configurado - se o máximo for 99%, o sistema vai bloquear 100%
  3. 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?