Ambiente Web/Android, na busca de preços do produto
Lógica:
Após a primeira validação se há preço fixo para o produto (idnprecofixo=1), a aplicação deverá realizar a busca abaixo para identificar preços por embalagem na filial selecionada no cabeçalho:
Sem Formato
select
preco,
idembalagem
from tabelaprecoproduto
where idlocalfilial = :filial_cabecalho
and idproduto = :produto_grid
and idnprecofixo = 0
and idembalagem is not null
Caso a busca retorne resultados, o preço de tabela exibido deve condizer com a embalagem informada no campo Embalagem no carrinho;
Se o vendedor mudar a embalagem selecionada, o preço de tabela também deve ser atualizado para corresponder à nova embalagem selecionada;
03.02.02 Validação de preço por embalagem - Parte II
A aplicação deve validar se a filial informada no cabeçalho utiliza ou não preço por embalagem. Se a filial estiver vinculada a operação 'PRECOEMBAL', significa que ela utiliza preço por embalagem e, consequentemente, o cálculo do Valor Total Produto será por embalagem:
Sem Formato
select
o.sgloperacao,
ol.idlocalfilial
from operacaolocal ol inner join operacao o
on o.idoperacao =ol.idoperacao
where o.sgloperacao ='PRECOEMBAL'
and ol.valor=1
Quando o preço for por embalagem, a aplicação deve ignorar o cálculo de multiplicação utilizando PRODUTOEMBALAGEM.FATORPRECO; esse cálculo não deve ser feito e o preço exibido para o item no campo Preço Tabela deve ser o valor retornado de TABELAPRECOPRODUTO.PRECO e o desconto/acréscimo da condição de pagamento (quando houver);
O cálculo para o campo Valor Total Produto Líquido deve olhar para Quantidade Embalagem, e não mais Quantidade, como é hoje:
Preço Venda * Quantidade Embalagem = Valor Total ProdutoLíquido
Quando a filial utilizar preço por embalagem, a aplicação deve buscar por preços aplicáveis ao pedido na seguinte ordem:
1° TABELAPRECOPRODUTO.PRECO + IDNPRECOFIXO =1 2° TABELAPRECOPRODUTO.PRECO + IDLOCALFILIAL + IDNPRECOFIXO =0 + IDEMBALAGEM IS NOT NULL
Não é mais necessária a 3° busca de preços como ocorre atualmente;
Persistir a quantidade de embalagens em PEDIDOPRODUTO.QUANTIDADEEMBALAGEM;
A quantidade embalagem deve ser persistida em todas as vendas sempre o campo Quantidade Embalagem estiver visível em tela;
Quando um pedido gravado ou finalizado, for aberto em tela para visualização/edição, exibir a informação gravado em banco;
Persistir em banco os campos PEDIDOPRODUTO.VALORTOTALLIQUIDO e PEDIDOPRODUTO.VALORTOTALBRUTO, em todas as vendas;
Para o caso de pedidos em que a filial utiliza preço por embalagem, os campos devem ser persistidos com o cálculo: VALORTOTALBRUTO = PREÇO TABELA X QUANTIDADE EMBALAGENS VALORTOTALLIQUIDO = PREÇO VENDA X QUANTIDADE EMBALAGENS
Para o caso de pedidos em que a filial NÃO utiliza preço por embalagem, os campos devem ser persistidos com o cálculo: VALORTOTALBRUTO = PREÇO TABELA X QUANTIDADE VALORTOTALLIQUIDO = PREÇO VENDA X QUANTIDADE
Quando um pedido gravado ou finalizado, for aberto em tela para visualização/edição, exibir a informação gravado em banco;