Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DADOS GERAIS

Produto:

Solucoes_totvs
SolucaoTOTVS Varejo Supermercados

Linha de Produto:

Linhas_totvs
LinhaSupermercados - Linha Consinco

Segmento:

Segmentos_totvs
Segmento Varejo

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) :

Jira
serverJIRA
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyDSUPCONTR-9025

02. SITUAÇÃO/REQUISITO

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.

03. PRÉ-REQUISITOS

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
languagesql
firstline1
titleScript criação chave primária
linenumberstrue
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;
/  

05. REQUISITOS DE VERSÃO

       Se estiver na versão 25.01, atualizar o sistema para o service pack 25.01.026 ou superior.

       Se estiver na versão 25.07, atualizar o sistema para o service pack 25.07.002 ou superior.

06. DOCUMENTOS RELACIONADOS

DOCUMENTO(S) DE REFERÊNCIA
  • Clique Aqui para saber mais sobre Consultar Apuração dos Contratos de Retorno - MGC00101.
  • Clique Aqui para saber mais sobre Manutenção dos Contratos - MGC00102.
  • Clique Aqui para saber mais sobre Apuração dos Contratos - MGC00109.