...
| Produto: |
| ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Linha de Produto: |
| ||||||||
| Segmento: |
| ||||||||
| Tipo de Documento: | Manutenção | ||||||||
| Módulo: | Contrato Fidelidade | ||||||||
| Caminho: | Apuração > Apuração de Contratos | ||||||||
| Função: | APURAÇÃO DOS CONTRATOS - MGC00109 | ||||||||
| País: | Brasil | ||||||||
| Ticket: | 21527057 | ||||||||
| Requisito/Story/Issue (informe o requisito relacionado) : |
|
- Contexto: problema, inovação, manutenção ou necessidade legislativa. Seja claro e objetivo.
...
Problema identificado no ambiente do cliente: durante a apuração de contratos de fidelidade, quando uma nota fiscal recebida está associada a dois ou mais pedidos com seleção inversa contendo o mesmo produto, os valores apresentados na aplicação Apuração dos Contratos de Retorno são calculados de forma incorreta.
A causa do problema está na forma como a tabela MGC_APURACAONFDET trata os registros, desconsiderando os pedidos relacionados. Isso resulta em inconsistências nos campos VLRBASE e VLRNET, o que, por consequência, afeta também os valores exibidos nas colunas Vlr. NET, Vlr Base Desc. e % Desconto.
O erro foi identificado no ambiente do cliente Savegnago, devido à ausência da chave primária Mgc_ApuracaoNfDetItemPK, o que permitiu a inclusão de registros duplicados — com variações apenas no campo SeqRetornoApuracaoPedProd.
Problema identificado em base local: Ao realizar a apuração de contratos de fidelidade, quando uma nota fiscal recebida está associada a dois ou mais pedidos com seleção inversa contendo o mesmo produto, é retornado erro de SQL, por conta da violação da Mgc_ApuracaoNfDetItemPK.
| Nota |
|---|
Alterações ou parametrizações incorretas podem comprometer o desempenho e causar falhas no sistema. Sempre que necessário, consulte um especialista ou a equipe responsável para garantir a configuração correta. |
04. SOLUÇÃO
Contrato de retorno com múltiplas classificações:
O contrato deve conter mais de uma classificação de retorno.
Notas fiscais vinculadas com pedidos de compra distintos:
As notas fiscais recebidas, associadas ao contrato, devem referenciar, para o mesmo produto, diferentes pedidos de compra, cada um relacionado a uma seleção inversa diferente.
04. SOLUÇÃO
Ajuste no INSERT da tabela MGC_APURACAONFDET: O comando INSERT foi ajustado para realizar o agrupamento pelo campo SeqRetornoApuracaoPedProd nos casos em que houver associação com pedidos de compra. Essa mudança garante que os agrupamentos sejam realizados corretamente por pedido, evitando duplicidades e inconsistências nos cálculos.
Criação de script para alteração da chave primária
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
declare
contador number;
begin
select count(*)
into contador
from user_constraints
where upper(table_name) = 'MGC_APURACAONFDETITEM'
and upper(constraint_name) = 'MGC_APURACAONFDETITEMPK'; if contador > 0 then
execute immediate 'alter table Mgc_ApuracaoNfDetItem drop constraint Mgc_ApuracaoNfDetItemPK';
end if; delete
from Gex_DadosTemporarios DadosTemporarios
where DadosTemporarios.String1 = 'DSUPCONTR-9025';
insert into Gex_DadosTemporarios (String1, String2, String3)
select 'DSUPCONTR-9025',
Trigger_Name,
Status
from User_Triggers
where Table_Name = 'MGC_APURACAONFDETITEM'
and Status = 'ENABLED';
execute immediate 'alter table Mgc_ApuracaoNfDetItem disable all triggers'; update Mgc_ApuracaoNfDetItem
set SeqRetornoApuracaoPedProd = 0
where SeqRetornoApuracaoPedProd is null;
commit;
begin
for vtTrigger in (select DadosTemporarios.String2 as Trigger_Name
from Gex_DadosTemporarios DadosTemporarios
where DadosTemporarios.String1 = 'DSUPCONTR-9025')
loop/
execute immediate 'alter trigger ' || vtTrigger.Trigger_Name ||
' enable';
end loop;
end; delete
from Gex_DadosTemporarios DadosTemporarios
where DadosTemporarios.String1 = 'DSUPCONTR-9025';
execute immediate 'alter table Mgc_ApuracaoNfDetItem
add constraint Mgc_ApuracaoNfDetItemPK primary key (SeqRetornoApuracaoPedProd,
SeqRetornoApuracao,
SeqIdentificador,
NumeroNf,
SeqPessoa,
SerieNf,
TipNotaFiscal,
NroEmpresa,
SeqNF,
SeqProduto,
NfReferenciaNro,
NfReferenciaSerie,
SeqItemNf)
using index
tablespace &TSIndice';
end;
/ | ||||||||
| Totvs custom tabs box | ||||||||
| ||||||||
| Totvs custom tabs box items | | |||||||
| ||||||||
| Totvs custom tabs box items | ||||||||
| default | no | referencia | passo2
...