Produto: | TOTVS CRM Automação da Força de Vendas |
---|---|
Linha de Produto: | Linha TOTVS CRM SFA |
ERPs impactados: | Winthor |
Módulo: | Venda |
Função: | Pedido |
Ticket: | |
Requisito/Story/Issue: |
Anteriormente, para integrações com ERP Winthor,
O SFA somente faz o consumo da precificação por região, com origem pela tabela PCTABPR. Entretanto, ao ativar o parâmetro do Winthor "1065/2257- Trabalha com preço por embalagem", o preço do SFA ainda continua se originando da tabela PCTABPR, quando deveria consumir originado da tabela PCEMBALAGEM.
Agora,
O SFA deverá adaptar a integração para receber os preços da tabela PCEMBALAGEM, para filiais que contém o parâmetro "1065/2257- Trabalha com preço por embalagem" como preço de tabela do produto.
A aplicação do SFA deverá fazer a leitura desse parâmetro integrado. Quando marcado, o SFA deverá preferir a precificação do produto por sua embalagem para a filial selecionada no cabeçalho. Quando desmarcado, o sistema continuará fazendo a utilização da precificação por região.
Contexto / Gatilho:
Lógica:
Criação de nova union, trazendo os preços específicos das filiais, quando existe precificação por embalagem, dessa forma:
SELECT * FROM pctabpr ptp CROSS JOIN pcparamfilial pcf LEFT JOIN pcembalagem pe ON pcf.CODFILIAL = pe.CODFILIAL AND pe.codprod = ptp.CODPROD WHERE pcf.NOME = 'FIL_PRECOPOREMBALAGEM' AND pcf.VALOR = 'S' AND pcf.CODFILIAL <> 99
Winthor | SFA (TABELAPRECOPRODUTO) |
---|---|
PCEMBALAGEM.PVENDA | PRECO PRECO2 PRECO3 PRECO4 PRECO5 PRECO6 PRECO7 |
PCEMBALAGEM.PTABELA | PRECOREFERENCIA PRECOREFERENCIA2 PRECOREFERENCIA3 PRECOREFERENCIA4 PRECOREFERENCIA5 PRECOREFERENCIA6 PRECOREFERENCIA7 |
PCEMBALAGEM.CODFILIAL | IDLOCALFILIAL |
SELECT DISTINCT CAST(1 AS INT) AS IDNATIVO, CAST('PRECOEMBAL' AS VARCHAR2(80))AS DESCRICAO, CAST(NULL AS VARCHAR2(10))AS SGLTIPOOPERACAO, CAST('PRECOEMBAL' AS VARCHAR2(10))AS SGLOPERACAO, CAST(NULL AS VARCHAR2(10))AS SGLTIPOVALOR, CAST('PRECOEMBAL' AS VARCHAR2(80))AS CODIGOERP FROM PCPARAMFILIAL WHERE NOME ='FIL_PRECOPOREMBAL';
SELECT CAST('PRECOEMBAL' AS VARCHAR2(80)) AS IDOPERACAO_, CAST(NULL AS VARCHAR2(80)) AS IDLOCAL_, CAST(CODFILIAL AS VARCHAR(80)) || '#UEM' AS IDLOCALFILIAL_, CAST(CASE WHEN VALOR = 'S' THEN 1 ELSE 0 END AS NUMERIC(18,6)) AS VALOR, CAST(NULL AS VARCHAR2(20)) AS CODIGO, CAST('PRECOEMBAL#' || CAST(CODFILIAL AS VARCHAR2(80)) || '#UEM' AS VARCHAR2(80)) AS CODIGOERP, CAST(CODFILIAL AS VARCHAR2(80)) AS CODFILIAL FROM PCPARAMFILIAL WHERE UPPER(NOME) LIKE '%FIL_PRECOPOREMBALAGEM%' --AND (CAST(CODFILIAL AS VARCHAR2(80)) IS NULL OR CAST(CODFILIAL AS VARCHAR2(80)) IN (?,'99') OR COALESCE(?,'') IS NULL) AND (CAST(CODFILIAL AS VARCHAR2(80)) IS NULL OR CAST(CODFILIAL AS VARCHAR2(80)) IN ((SELECT REGEXP_SUBSTR(?, '[^,]+' , 1, LEVEL) FILIAL FROM DUAL CONNECT BY REGEXP_SUBSTR(? , '[^,]+' , 1, LEVEL) IS NOT NULL)) OR CAST(CODFILIAL AS VARCHAR2(80)) IN ('99') OR COALESCE(?, '') IS NULL)
Contexto / Gatilho:
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:
select preco, idembalagem from tabelaprecoproduto where idlocalfilial = :filial_cabecalho and idproduto = :produto_grid and idnprecofixo = 0 and idembalagem is not null
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:
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