O saldo geral do razão é calculado incorretamente quando você cria uma reconciliação bancária em uma conta bancária em moeda estrangeira na versão norte-americana do Microsoft Dynamics NAV 2009

Aplica-se a
Dynamics NAV 2009

Este artigo se aplica ao Microsoft Dynamics NAV para os seguintes países e localidades de idioma.

  • Inglês (Canadá) (en-ca)
  • Inglês (Estados Unidos) (en-us)
  • Espanhol (México) (es-mx)
  • Francês (Canadá) (fr-ca)

Sintomas

Suponha que você publique um diário de recebimento em dinheiro que usa uma conta bancária em moeda estrangeira na versão norte-americana do Microsoft Dynamics 2009. Você cria um ajuste para o diário de recibo de caixa executando a função Conversor de Moedas Ajustar Taxas de Câmbio... Nessa situação, quando você cria uma reconciliação bancária na conta bancária em moeda estrangeira, o saldo de razão geral na linha sugerida é calculado incorretamente. O cálculo de reconciliação bancária não inclui o ganho realizado ou a perda realizada da conta bancária.
Esse problema ocorre nos seguintes produtos:

  • A versão norte-americana do Microsoft Dynamics NAV 2009 R2
  • A versão norte-americana do Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Resolução

Importante O hotfix (2548309) foi revertido para o código original e deve ser removido de todos os bancos de dados em que essa alteração foi aplicada. Se você tiver feito alterações de código descritas na seção "Alterações de código", poderá alterar o código de volta para que seu código corresponda à seção "Código existente". Se o código não for revertido, você poderá ter uma diferença na guia Geral da reconciliação bancária e, em seguida, não poderá fazer uma postagem.
O problema com um desequilíbrio de Razão Geral (G/L) na Reconciliação do Banco de Dados norte-americano no cenário original de recriação deste artigo foi revisitado e examinado. Por meio de análises adicionais, o Gerenciamento e Desenvolvimento de Produtos determinou que o problema relatado com o desequilíbrio não é o resultado do código padrão incorreto para o cálculo de Reconciliação Bancária, mas um problema de dados causado pela configuração inicial da conta bancária. A configuração inicial incorreta da conta bancária consistia em quebrar o vínculo entre a entrada do razão da conta bancária e a entrada do razão da conta G/L. As etapas incorretas de configuração da conta bancária de moeda estrangeira podem incluir algo que se assemelha às seguintes etapas:

  1. Poste um diário G/L na conta G/L da conta bancária para saldo inicial, por exemplo, conta G/L 11650.

    Observação Essa transação normalmente seria incluída como parte da configuração inicial do saldo de avaliação de G/L.

  2. Poste uma entrada de diário de recibo de caixa na conta bancária, na qual o grupo de postagem de conta bancária tem uma conta G/L temporária, por exemplo, 11000, atribuída e quaisquer transações abertas não reconciliadas, como cheques abertos e recibos em dinheiro, na conta bancária. A conta de balanceamento também é definida como a mesma conta, por exemplo, 11000, para gerar uma entrada de lavagem.

  3. A conta de grupo de postagem da conta bancária é então alterada da conta G/L temporária para a conta G/L 11650. Portanto, a entrada original que foi postada para estabelecer a configuração detalhada da conta bancária na etapa 2 foi para uma conta G/L diferente. Portanto, o link para as entradas G/L não está mais estabelecido.

Uma configuração incorreta adicional para uma conta bancária em moeda estrangeira se assemelharia ao seguinte:

  1. Poste um diário G/L na conta G/L da conta bancária para saldo inicial, por exemplo, conta G/L 11650.
  2. Em seguida, poste um Diário Geral na Conta Bancária, com a conta de balanceamento definida como a mesma conta G/L especificada no Grupo de Postagem de Conta Bancária, como nesse caso, conta G/L 11650.

Novamente, não há nenhum link entre a entrada G/L postada na Etapa 1 e a Entrada de Razão da Conta Bancária postada na etapa 2.

Essas etapas são a maneira incorreta de processar o início de uma nova conta bancária estrangeira. Se você executar esse processo incorreto, poderá encontrar o problema descrito neste artigo (2548309). Esse hotfix (2548309) foi adicionado para corrigir um cenário específico causado pela configuração que se assemelha ao cenário anterior. No entanto, diferentes cenários de postagem resultaram em problemas com desequilíbrios contínuos se você configurar uma conta bancária, mas não manter a conta G/L no grupo de postagem bancária ou se não houver nenhum vínculo direto entre as entradas da Conta Bancária e as entradas G/L.

RECOMENDAÇÃO: O processo recomendado para configurar um banco de moeda estrangeira seria semelhante ao seguinte (supondo que um valor de moeda local para o GL seja de US $ 10.000).

Observação – o seguinte é baseado em uma taxa de câmbio 1:1. Valores G/L são atualizados em moeda local. Portanto, cálculos manuais são necessários para a conta bancária para que o GL seja atualizado com o valor correto da moeda local.

  1. Ao postar saldos de avaliação inicial no GL, poste o SALDO GL do Banco em uma conta G/L temporária, como a Conta G/L 11000, por US$ 10.000.

  2. Poste um Diário Geral na Conta Bancária, que tem o Grupo de Postagem de Conta Bancária definido como a conta G/L desejada, nesse caso, conta G/L 11650. Aqui você definiria a Conta de Balanceamento como Conta G/L 11000, que é a conta de caixa temporária inicial que foi originalmente postada como parte da configuração do saldo de avaliação inicial.

    -Postar essa entrada de US$ 10.000 atualizará a conta bancária estrangeira e a conta G/L 11650 por US$ 10.000. Ele também reduzirá essa conta G/L temporária 11000 para US $ 0 por causa da conta de balanceamento de deslocamento da transação. Ao postar dessa maneira, há um link direto entre a entrada do razão bancário e a entrada do razão da conta G/L. É a maneira correta de processar e lidar com a instalação de uma conta bancária estrangeira.

      

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 resolve esse problema, altere o código na função CalculateBalance na tabela Banco Rec. Cabeçalho (10120) da seguinte maneira:
Código existente

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Delete the folloiwng line.
                "G/L Balance" += BankAccLedgEntry.Amount;

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

Código de substituição

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Add the following lines.
                "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                        "Currency Code",
                                                                        GLEntry.Amount,
                                                                        "Currency Factor"),
                                       Currency."Amount Rounding Precision");
                // End of the lines.

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

          

Pré-requisitos

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

  • A versão norte-americana do Microsoft Dynamics NAV 2009 R2
  • A versão norte-americana do Microsoft Dynamics NAV 2009 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".

Observação Este é um artigo "FAST PUBLISH" criado diretamente na organização de suporte da Microsoft. As informações contidas aqui são fornecidas como resposta aos problemas possíveis. Como resultado da prontidão de disponibilizá-lo, os materiais pode conter erros tipográficos e podem ser revisados a qualquer momento são aviso prévio. Consulte Termos de Uso para obter outras considerações.