O total é incorreto quando você executa o relatório Do Livro de Depreciação (12119) na versão italiana do Microsoft Dynamics NAV

Aplica-se a
Dynamics NAV 2009 Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

Artigos publicados rapidamente fornecem informações diretamente de dentro da organização de suporte da Microsoft. As informações contidas aqui são criadas em resposta a tópicos emergentes ou exclusivos ou destinam-se a complementar outras informações da Base de Dados de Conhecimento.

Este artigo se aplica ao Microsoft Dynamics NAV para a localidade de idioma italiano (it).

Sintomas

Suponha que você execute o relatório Do Livro de Depreciação (12119) na versão italiana do Microsoft Dynamics NAV. Se os ativos fixos pertencerem à mesma classe, o relatório imprimirá um total progressivo. No entanto, se uma classe de ativo fixa for alterada, o relatório não manterá o total progressivo para a classe anterior. Portanto, o total está incorreto.

Esse problema ocorre nos seguintes produtos:

  • A versão italiana do Microsoft Dynamics NAV 2009 Service Pack 1
  • A versão italiana do Microsoft Dynamics NAV 2009
  • A versão italiana do Microsoft Dynamics NAV 5.0 Service Pack 1

Resolução

Informações sobre o hotfix

Um hotfix com suporte agora está disponível na Microsoft. No entanto, ele destina-se apenas a corrigir o problema descrito neste artigo. Aplique-o somente a sistemas que estão enfrentando esse problema específico. Esse hotfix pode receber testes adicionais. Portanto, se você não for severamente afetado por esse problema, recomendamos aguardar o próximo pacote de serviços do Microsoft Dynamics NAV ou a próxima versão do Microsoft Dynamics NAV que contém esse hotfix.

Observação Em casos especiais, os encargos que normalmente são incorridos para chamadas de suporte podem ser cancelados se um profissional de suporte técnico do Microsoft Dynamics e produtos relacionados determinar que uma atualização específica resolve seu problema. Os custos de suporte em geral aplicam-se a questões e problemas de suporte adicionais que não se enquadrem na atualização específica em questão.

            
          

Informações de instalação

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não se limita a, as garantias implícitas de comercialização ou adequação a uma finalidade específica. Este artigo pressupõe que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidade adicional nem criarão procedimentos específicos para atender às suas necessidades específicas.

Observação Antes de instalar esse hotfix, verifique se todos os usuários cliente do Microsoft Navision estão conectados ao sistema. Isso inclui usuários cliente do NAS (Microsoft Navision Application Services). Você deve ser o único usuário cliente que está conectado ao implementar esse hotfix.

Para implementar esse hotfix, você deve ter uma licença de desenvolvedor.

Recomendamos que a conta de usuário na janela Logons do Windows ou na janela Logons de Banco de Dados seja atribuída à ID da função "SUPER". Se a conta de usuário não puder ser atribuída à ID da função "SUPER", você deverá verificar se a conta de usuário tem as seguintes permissões:

  • A permissão Modificar para o objeto que você estará alterando.
  • A permissão Executar para o objeto System Object ID 5210 e para o objeto System Object ID 9015.

                
Observação Você não precisa ter direitos para os armazenamentos de dados, a menos que precise executar o reparo de dados.

Alterações de código

Observação Sempre teste correções de código em um ambiente controlado antes de aplicar as correções aos computadores de produção.
Para resolver este problema, execute as seguintes etapas:

  1. Adicione uma variável global no relatório Do Livro de Depreciação (12119) e especifique a variável da seguinte maneira:

    • Nome:FromFALedgEntryNo
    • DataType:Integer
  2. Adicione uma variável global no relatório Do Livro de Depreciação (12119) e especifique a variável da seguinte maneira:

    • Nome:NextFALedgEntryNo
    • DataType:Integer
  3. Adicione uma variável global no relatório Do Livro de Depreciação (12119) e especifique a variável da seguinte maneira:

    • Nome:TempFALedgEntry
    • DataType:Record
    • Subtype:Fa Ledger Entry
  4. Altere o código no gatilho Ativo Fixo – OnPreDataItem no relatório Livro de Depreciação (12119) da seguinte maneira:
    Código existente

    ...
    SETCURRENTKEY("Acquisition Year","FA Class Code", "FA Subclass Code");
    FirstRecord := FALSE;
    PrevFASubclassCode := '';
    PrevInventoryYear := 0;
    Printyear := FALSE;
    
    FOR k := 1 TO 14 DO BEGIN
    ...
    
    

    Código de substituição

    ...
    SETCURRENTKEY("Acquisition Year","FA Class Code", "FA Subclass Code");
    FirstRecord := FALSE;
    PrevFASubclassCode := '';
    PrevInventoryYear := 0;
    Printyear := FALSE;
    
    // Add the following lines.
    FromFALedgEntryNo := 0; 
    NextFALedgEntryNo := 1; 
    TempFALedgEntry.DELETEALL;  
    // End of the lines.
    
    FOR k := 1 TO 14 DO BEGIN
    ..
    
    
  5. Altere o código no gatilho Ativo Fixo – OnAfterGetRecord no relatório Livro de Depreciação (12119) da seguinte maneira:
    Código 1 existente

    ...
    IF (PrevFASubclassCode <> "FA Subclass Code") THEN BEGIN
      PrintTotalSubclass := TRUE;
      PrevFASubclassCode := "FA Subclass Code";
    
    // Delete the following lines.
      FOR k := 1 TO 14 DO BEGIN 
        TotalSubclass[k] := 0; 
      END; 
    // End of the lines.
    
    END ELSE BEGIN
      PrintTotalSubclass := FALSE;
    ...
    
    

    Código de substituição 1

    ...
    IF (PrevFASubclassCode <> "FA Subclass Code") THEN BEGIN
      PrintTotalSubclass := TRUE;
      PrevFASubclassCode := "FA Subclass Code";
    END ELSE BEGIN
      PrintTotalSubclass := FALSE;
    ..
    
    

    Código 2 existente

    ...
    IF (PrevFAclassCode <> "FA Class Code") THEN BEGIN
      PrintTotalclass := TRUE;
      PrevFAclassCode := "FA Class Code";
    
    // Delete the following lines.
      FOR k := 1 TO 14 DO BEGIN   
        TotalClass[k] := 0;  
      END; 
    // End of the lines.
    
    END ELSE BEGIN
      PrintTotalSubclass := FALSE;
    ...
    
    

    Código de substituição 2

    ...
    IF (PrevFAclassCode <> "FA Class Code") THEN BEGIN
      PrintTotalclass := TRUE;
      PrevFAclassCode := "FA Class Code";
    END ELSE BEGIN
      PrintTotalSubclass := FALSE;
    ..
    
    
  6. Altere o código no ativo fixo, corpo (8) – gatilho OnPreSection no relatório Livro de Depreciação (12119) da seguinte maneira:
    Código existente

    ...
    FOR k := 1 TO 14 DO
      TotalInventoryYear[k] += Total[k];
    
    // Delete the following lines.
    FOR k := 1 TO 14 DO 
      TotalClass[k] += Total[k];
    FOR k := 1 TO 14 DO
      TotalSubclass[k] += Total[k]; 
    // End of the lines.
    
    CurrReport.SHOWOUTPUT(PrintDetails);
    ...
    
    

    Código de substituição

    ...
    FOR k := 1 TO 14 DO
      TotalInventoryYear[k] += Total[k];
    
    // Add the following line.
    FillTempFALedgEntry;
    
    CurrReport.SHOWOUTPUT(PrintDetails);
    ..
    
    
  7. Altere o código no ativo fixo, GroupFooter (10) – gatilho OnPreSection no relatório Livro de Depreciação (12119) da seguinte maneira:
    Código existente

    ...
    IF (CurrReport.TOTALSCAUSEDBY <> FIELDNO("Fixed Asset"."FA Subclass Code")) THEN
      CurrReport.SHOWOUTPUT(FALSE);
    ...
    
    

    Código de substituição

    ...
    IF (CurrReport.TOTALSCAUSEDBY <> FIELDNO("Fixed Asset"."FA Subclass Code")) THEN
      CurrReport.SHOWOUTPUT(FALSE);
    
    // Add the following line.
    CalcTotals(TRUE,TotalSubclass);
    ..
    
    
  8. Altere o código no ativo fixo, GroupFooter (11) – gatilho OnPreSection no relatório Livro de Depreciação (12119) da seguinte maneira:
    Código existente

    ...
    IF (CurrReport.TOTALSCAUSEDBY <> FIELDNO("Fixed Asset"."FA Class Code")) THEN
      CurrReport.SHOWOUTPUT(FALSE);
    ...
    
    

    Código de substituição

    ...
    IF (CurrReport.TOTALSCAUSEDBY <> FIELDNO("Fixed Asset"."FA Class Code")) THEN
      CurrReport.SHOWOUTPUT(FALSE);
    
    // Add the following line.
    CalcTotals(FALSE,TotalClass);
    ..
    
    
  9. Crie a função CalcTotals no relatório Livro de Depreciação (12119). Para fazer isso, siga estas etapas:

    1. Adicione um parâmetro local e especifique o parâmetro da seguinte maneira:

      • Var: Não
      • Nome:Subclasse
      • DataType:Boolean
    2. Adicione um parâmetro local e especifique o parâmetro da seguinte maneira:

      • Var: Sim

      • Nome:TotalAmount

      • DataType:Decimal

        Observação Defina a propriedade Dimension como 14.

    3. Adicione uma variável local e especifique a variável da seguinte maneira:

      • Nome:Tipo
      • DataType:Integer
    4. Adicione o seguinte código na função CalcTotals:

      FOR Type := 1 TO 14 DO BEGIN
        TotalAmount[Type] := 0;
        TempFALedgEntry.RESET;
        IF Subclass THEN BEGIN
          TempFALedgEntry.SETRANGE("Entry No.",FromFALedgEntryNo,NextFALedgEntryNo - 1);
          TempFALedgEntry.SETRANGE("FA Subclass Code","Fixed Asset"."FA Subclass Code");
        END;
        TempFALedgEntry.SETRANGE("FA Class Code","Fixed Asset"."FA Class Code");
        TempFALedgEntry.SETRANGE("Transaction No.",Type);
        IF TempFALedgEntry.FINDSET THEN
          REPEAT
            TotalAmount[Type] := TotalAmount[Type] + TempFALedgEntry.Amount;
          UNTIL TempFALedgEntry.NEXT = 0;
      END;
      
      
  10. Crie a função FillTempFALedgEntry no relatório Livro de Depreciação (12119). Para fazer isso, siga estas etapas:

    1. Adicione uma variável local e especifique a variável da seguinte maneira:

      • Nome:x
      • DataType:Integer
    2. Adicione o seguinte código na função FillTempFALedgEntry:

      FOR x := 1 TO 14 DO BEGIN
        TempFALedgEntry."Entry No." := NextFALedgEntryNo;
        TempFALedgEntry."FA Class Code" := "Fixed Asset"."FA Class Code";
        TempFALedgEntry."FA Subclass Code" := "Fixed Asset"."FA Subclass Code";
        TempFALedgEntry."Transaction No." := x;
        TempFALedgEntry.Amount := Total[x];
        TempFALedgEntry.INSERT;
        NextFALedgEntryNo := NextFALedgEntryNo + 1;
      END;
      
      

Pré-requisitos

Você deve ter um dos seguintes produtos instalados para aplicar este hotfix:

  • A versão italiana do Microsoft Dynamics NAV 2009 Service Pack 1
  • A versão italiana do Microsoft Dynamics NAV 2009
  • A versão italiana do Microsoft Dynamics NAV 5.0 Service Pack 1

Informações sobre remoção

Você não pode remover esse hotfix.

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

A MICROSOFT E/OU SEUS FORNECEDORES NÃO FAZEM REPRESENTAÇÕES OU GARANTIAS SOBRE A ADEQUAÇÃO, A CONFIABILIDADE OU A PRECISÃO DAS INFORMAÇÕES CONTIDAS NOS DOCUMENTOS E NOS GRÁFICOS RELACIONADOS PUBLICADOS NESTE SITE (OS "MATERIAIS") PARA QUALQUER FINALIDADE.

O MATERIAL PODE INCLUIR IMPRECISÕES TÉCNICAS OU ERROS TIPOGRÁFICOS E PODE SER REVISADO A QUALQUER MOMENTO SEM AVISO PRÉVIO. NA MEDIDA MÁXIMA PERMITIDA PELA LEI APLICÁVEL, A MICROSOFT E/OU SEUS FORNECEDORES SE ISOLAM E EXCLUEM TODAS AS REPRESENTAÇÕES, GARANTIAS E CONDIÇÕES EXPRESSAS, IMPLÍCITAS OU ESTATUTÁRIAS, INCLUINDO, MAS NÃO SE LIMITANDO A REPRESENTAÇÕES, GARANTIAS OU CONDIÇÕES DE TÍTULO, NÃO VIOLAÇÃO, CONDIÇÃO OU QUALIDADE SATISFATÓRIAS, COMERCIALIZABILIDADE E APTIDÃO PARA UMA FINALIDADE ESPECÍFICA, COM RELAÇÃO AOS MATERIAIS.