Páginas filhas
  • DDINTEGRA-11552 DT WinThor > API Vendas - Validar Comissão RCA/PRODUTO


01. DADOS GERAIS

Produto:

TOTVS Distribuição e Varejo

Linha de Produto:

Linha Winthor 

Segmento:

Distribuição TOTVS Goiânia 

Módulo:API - VENDAS
Requisito/Story/Issue (informe o requisito relacionado) :DDINTEGRA-11552

02. SITUAÇÃO/REQUISITO

Piloto Varejão - PERCOM (Percentual de Comissão)

Boa tarde, Pessoal 

a Rejane da Varejão, veio me relatar que as vendas feitas pelo SELFCHECKOUT não está gravar o PERCOM ("percentual de comissão) na tabela PCMOV; impossibilitando a geração da comissão progressiva por faixa de desconto;

03. SOLUÇÃO

Critérios de aceite
Validar parâmetro 2220 Como Sim e a comissão igual a 0;
Validar parâmetro 2220 Como Não e a comissão igual a 0;

Validar os seguintes cenários:

Para a comissão, devem ser validadas as seguintes situações: * Na busca da venda para a geração dos dados do XML para a PCFILAMENSAGEM, validar:

Antes, validar o tipo de venda do RCA (PCUSUARI.TIPOVEND):
I - Interno (valida PCOMINT1)
R - Representante (valida PCOMREP1)
E - Externo (valida PCOMEXT1)
No parametro 'FIL_TIPOAVALIACAOCOMISSAO' da 132, qual o tipo de avaliação de comissão:
Se for 1, usará o que for definido no parametro 'CON_ORDEMAVALIACAOCOMISSAORCA':
Se for 1, a ordem de busca de comissão será da seguinte maneira:
Se existir comissão na rotina 553 por desconto e RCA (tabela PCCOMISSAOUSUR).
Se não existir, verificar se existe comissão por faixa de desconto e região na rotina 363 (tabela PCCOMISSAOREGIAO).
Se não existir, verificar se existe comissão por faixa de desconto e plano de pagamento na rotina 583 (tabela PCCOMISSAOPLPAG).
Se não existir, verificar se existe comissão por faixa de desconto e RCA na rotina 517 (tabela PCUSUARI).
Se não existir, verificar se existe comissão por faixa de desconto ou lucratividade na rotina 550 (tabela PCTABCOMISS).
Se não existir, verificar se existe comissão por linha de produto na rotina 558 (tabelas PCPLPAGI,PCPLPAG,PCLINHAPROD) validando o plano de pagamento.
Se não existir, verificar se existe comissão por RCA na 517.
E por ultimo, se não existir, verificar se existe comissão por produto:
Se o parametro 'FIL_UTILIZAVENDAPOREMBALAGEM' estiver ativado, verificar na PCEMBALAGEM se existe PCOMINT1, PCOMREP1 ou PCOMEXT1, de acordo com o tipo de venda do RCA;
Se não, olhar diretamente na PCPRODFILIAL e, seainda assim forem nulos, olhar na PCPRODUT.
Se o parametro 'FIL_UTILIZAVENDAPOREMBALAGEM' estiver desativado, olhar diretamente na PCPRODFILIAL e, seainda assim forem nulos, olhar na PCPRODUT.
Ao encontrar o percentual de comissão, o campo a ser preenchido na tag <PERCOM> da <PCPEDIECF> será o percentual.
Se não trouxer nada, o campo a ser preenchido na tag <PERCOM> da <PCPEDIECF> será 0.
Se for 2, validar:
Se existir comissão na rotina 302 por cliente (tabela PCCLIENT).
Se não existir, verificar se existe comissão por RCA na 517.
Se não existir, verificar se existe comissão por faixa de desconto e região na rotina 363 (tabela PCCOMISSAOREGIAO).
Se não existir, verificar se existe comissão por faixa de desconto e plano de pagamento na rotina 583 (tabela PCCOMISSAOPLPAG).
Se não existir, verificar se existe comissão por faixa de desconto e RCA na rotina 517 (tabela PCUSUARI).
Se não existir, verificar se existe comissão por faixa de desconto ou lucratividade na rotina 550 (tabela PCTABCOMISS).
Se não existir, verificar se existe comissão por linha de produto na rotina 558 (tabelas PCPLPAGI,PCPLPAG,PCLINHAPROD) validando o plano de pagamento.
E por ultimo, se não existir, verificar se existe comissão por produto:
Se o parametro 'FIL_UTILIZAVENDAPOREMBALAGEM' estiver ativado, verificar na PCEMBALAGEM se existe PCOMINT1, PCOMREP1 ou PCOMEXT1, de acordo com o tipo de venda do RCA.
Se não, olhar diretamente na PCPRODFILIAL e, seainda assim forem nulos, olhar na PCPRODUT.
Se o parametro 'FIL_UTILIZAVENDAPOREMBALAGEM' estiver desativado, olhar diretamente na PCPRODFILIAL e, seainda assim forem nulos, olhar na PCPRODUT.
Ao encontrar o percentual de comissão, o campo a ser preenchido na tag <PERCOM> da <PCPEDIECF> será o percentual.
Se não trouxer nada, o campo a ser preenchido na tag <PERCOM> da <PCPEDIECF> será 0.
Se for 2, validar:
A ordem é definida pela rotina 584, onde a prioridade é a comissão de maior ordem, ou seja, a ordem de número 11, portanto, o sistema pegará a comissão de ordem 10, quando não existir a comissão cadastrada na ordem 11 e, assim por diante (tabela PCORDEMAPURACAOCOMIS).
O conceito de Sobreposição que trata essa variação do parametro, a ordem é crescente, onde primeiro o sistema pega a comissão de ordem 1 e depois olha a comissão de ordem 2, caso exista a comissão de ordem 2, o sistema pega ela sobrepondo a comissão da ordem 1, até chegar na comissão de ordem 11, se existir comissão nessa ordem, ela pegará, sobrepondo assim todas as ordens anteriores.
Se for 3, buscar o menor percentual dentro todas as opções acimas possíveis.
Se for 4, buscar o maior percentual dentro todas as opções acimas possíveis.
Este processo já existe no serviço http://bitbucket.pcinformatica.com.br/projects/WTAVEN/repos/winthor-venda/browse/winthor-venda/src/main/java/br/com/pcsist/winthor/venda/domain

Exemplo de validação:

CASE WHEN (NVL(M.PRIORIZACOMISSAO,'N') = 'S') THEN NVL(D.PERCOMMINT,0) WHEN (NVL((SELECT VALOR FROM PCPARAMFILIAL WHERE NOME = 'FIL_CONSIDERARCOMISSAOZERO' AND VALOR = 'S' AND ROWNUM = 1),'N') = 'S') THEN D.PERCOMMINT WHEN (D.PERCOMMINT <> 0) THEN D.PERCOMMINT END PERCOMMINT , CASE WHEN (NVL(M.PRIORIZACOMISSAO,'N') = 'S') THEN NVL(D.PERCOMEXT,0) WHEN (NVL((SELECT VALOR FROM PCPARAMFILIAL WHERE NOME = 'FIL_CONSIDERARCOMISSAOZERO' AND VALOR = 'S' AND ROWNUM = 1),'N') = 'S') THEN D.PERCOMEXT WHEN (D.PERCOMEXT <> 0) THEN D.PERCOMEXT END PERCOMEXT , CASE WHEN (NVL(M.PRIORIZACOMISSAO,'N') = 'S') THEN NVL(D.PERCOMREP ,0) WHEN (NVL((SELECT VALOR FROM PCPARAMFILIAL WHERE NOME = 'FIL_CONSIDERARCOMISSAOZERO' AND VALOR = 'S' AND ROWNUM = 1),'N') = 'S') THEN D.PERCOMREP WHEN (D.PERCOMREP <> 0) THEN D.PERCOMREP END PERCOMREP

04. DEMAIS INFORMAÇÕES

Não se aplica

05. ASSUNTOS RELACIONADOS

        Não se aplica