"A diferença deve ser zero antes que você possa reconciliar esse talão de seleção" ao conciliar o talão de seleção de transações bancárias

Este artigo fornece uma resolução para o problema de que a diferença é mostrada como zero quando você reconcilia o talão de seleção de transações bancárias no Microsoft Dynamics GP.

Aplica-se a: Microsoft Dynamics GP, Microsoft Dynamics SL Bank Reconciliation
Número de KB original: 851301

Sintomas

Quando você concilia o talão de seleção de transações bancárias no Microsoft Dynamics GP, a diferença é exibida como zero, mas você recebe a seguinte mensagem de erro:

A diferença deve ser zero antes que você possa reconciliar essa pasta de seleção.

Motivo

Isso é causado por uma diferença fracionária. A janela Selecionar Transações Bancárias exibirá apenas quantas casas decimais forem configuradas para a ID de moeda atribuída à respectiva pasta de seleção. Portanto, por exemplo, se sua pasta de seleção receber uma ID de moeda com duas casas decimais, apenas duas casas decimais serão exibidas na janela Selecionar Transações Bancárias . No entanto, os registros na Tabela SQL armazenam até cinco casas decimais para um campo de quantidade, portanto, esse problema pode acontecer se você tiver valores nas casas decimais restantes para qualquer registro nas tabelas SQL e resultar em uma diferença fracionária. Isso normalmente acontece se os registros foram importados para o Microsoft Dynamics GP com quantidades que têm mais casas decimais do que a ID da moeda é configurada para.

Importante

Não há suporte para importar dados dessa maneira. Este artigo serve como um guia para ajudá-lo a corrigir os dados, pois não podemos fornecer correção de dados para condições sem suporte em um caso de suporte.

Resolução

Use as etapas abaixo para marcar para registros com casas decimais fracionárias e use os scripts abaixo para resolve-lo:

  1. Inicie o Microsoft SQL Server Management Studio e selecione o botão Nova Consulta para abrir uma janela de consulta.

  2. Execute o script a seguir no banco de dados da empresa para determinar se há registros que têm valores com um valor de local decimal não zero:

    Observação

    Se sua moeda para o talão de seleção tiver 2 decimais, o '3' no script abaixo em cada linha marcar a terceira posição por uma fração. Portanto, se sua moeda tiver três casas decimais, ajuste o script para '4', e assim por diante.

    select 'CM20200' AS 'TABLE',DEX_ROW_ID,ClrdAmt,TRXAMNT,ORIGAMT,Checkbook_Amount,* from CM20200 where right(ClrdAmt,3)<>0
    or right(TRXAMNT,3)<>0
    or right(ORIGAMT,3)<>0
    or right(Checkbook_Amount,3)<>0
    select 'CM20400' AS 'TABLE',DEX_ROW_ID,DEBITAMT,CRDTAMNT,* from CM20400 where right(DEBITAMT,3)<>0
    or right(CRDTAMNT,3)<>0
    select 'CM20500' AS 'TABLE',DEX_ROW_ID,StmntBal,CUTOFFBAL,ClrePayAmt,ClrdDepAmt,Cleared_Difference,OUTPAYTOT,OUTDEPTOT,IINADJTOT,DECADJTOT,ASOFBAL, * from CM20500 where right(StmntBal,3)<>0
    or right(CUTOFFBAL,3)<>0
    or right(ClrePayAmt,3)<>0
    or right(ClrdDepAmt,3)<>0
    or right(Cleared_Difference,3)<>0
    or right(OUTPAYTOT,3)<>0
    or right(OUTDEPTOT,3)<>0
    or right(IINADJTOT,3)<>0
    or right(DECADJTOT,3)<>0
    or right(ASOFBAL,3)<>0
    select 'CM20501' AS 'TABLE', DEX_ROW_ID,TRXAMNT,* from CM20501 where right(TRXAMNT,3)<>0
    select 'CM20201' AS 'TABLE', DEX_ROW_ID, Orig_Credit_Card_Total,Originating_Cash_Total,Originating_Deposit_Amou,Originating_Checkbook_Am,* from CM20201 where right(ORCHKTTL,3)<>0
    or right(Orig_Credit_Card_Total,3)<>0
    or right(Originating_Cash_Total,3)<>0
    or right(Originating_Deposit_Amou,3)<>0
    or right(Originating_Checkbook_Am,3)<>0
    

    Importante

    Certifique-se de percorrer todos os registros retornados para observar todas as colunas de "quantidade" de todos os registros retornados.

  3. Além disso, execute este script para examinar os valores na tabela Mestre do Talão de Verificação também:

    select CURRBLNC,* from CM00100 where CHEKBKID = 'xxx'
    --modify the xxx placeholder with your checkbook ID.
    
  4. Faça um backup restaurador atual do banco de dados da empresa antes de continuar ou faça isso em um ambiente de teste primeiro.

    Importante

    Não ignore esta etapa.

  5. Dependendo de quais tabelas/campos você encontrou a fração, leia os dois métodos abaixo e use o método apropriado para resolve o problema:

    Método 1: atualize cada campo um de cada vez diretamente no SQL para remover o decimal fracionário.

    Basta atualizar os valores encontrados pelos scripts acima diretamente nas Tabelas SQL usando um script semelhante ao exemplo abaixo. Depois de atualizar os valores para remover a fração indesejada, atualize a janela Selecionar Transações Bancárias para ver se o problema está resolvido.

    Aqui está um script de exemplo para atualizar um campo por vez:

    UPDATE CMXXXXX SET YYYYY = '$.$$000' where DEX_ROW_ID = x
    
    --Before executing this script, update the placedholders as needed:
     -Modify the CMXXXXX placeholder with the correct table name; 
     -Modify the YYYYY placedholder with the correct field name in that table; 
     -Modify the $.$$000 with the correct amount with 2 decimal places,
     -Modify the x with the specific Dex Row ID for the record that you need to modify. 
    
    Repeat as many times as needed to update each field/table returned by the script in step 2
    and/or step 3 that has more than 2 decimal places.
    

    Observação

    Seja consistente. Se você atualizar todos os valores em uma tabela encontrada pelo script na etapa 2 para um campo de Checkbook_Amt, talvez seja necessário atualizar também o valor do saldo de talão de seleção atual na tabela Mestre do CM00100 Checkbook na mesma direção. Além disso, certifique-se de ter todos os usuários fora do Microsoft Dynamics GP antes de executar um script de atualização na tabela Mestre do Checkbook. Você não quer que ninguém poste e altere a quantidade do saldo atual para o talão de seleção ao mesmo tempo em que está fazendo essa manutenção.

    Método 2: soma de totais de campo para ver se algum total tem um decimal fracionário.

    Execute o script abaixo para verificar os totais de campo por tipo. Examine para ver se há mais decimais do que a ID da moeda que você está usando. Além disso, se os registros foram importados dentro ou de um software de terceiros, você poderá ter importado em quantidades com mais decimais do que o permitido em GP. Nesse caso, você precisará calcular a 'diferença líquida' e atualizar um único registro para essa diferença para que você balancee para US$ 0,000000 exatamente. Talvez seja necessário abrir um incidente de suporte se precisar de ajuda adicional para fazer isso. Se você fizer isso por conta própria, certifique-se de fazer isso em uma empresa de teste primeiro.

Aqui está um script de exemplo para resumir cada um dos campos de quantidade para a tabela CM20200 por tipo:

select Distinct(CMTRXTYPE)as 'Type',SUM(TRXAMNT)as 'TRXAMNT', SUM (ORIGAMT)as 'ORIGAMT', SUM(Checkbook_Amount)as 'Checkbook_Amount' from CM20200 where CHEKBKID='XXX' group by CMTRXTYPE
--update the XXX placeholder with the appropriate checkbook ID.

Tipo de transação:

1 = Depósito
2 = Recibo
3 = Verificar
4 = Retirada
5 = Aumentar Ajuste
6 = Diminuir ajuste
7 = Transferência
101 = Rendimentos de juros
102 = Outros rendimentos
103 = Outras Despesas
104 = Taxa de Serviço

Observação

Observe todos os valores que você alterar, pois talvez você também precise atualizar o CM00100 saldo de talão de seleção na mesma direção para a mesma diferença.

Mais informações

Como último recurso, marcar a ordenação sql e SQL Server classificar a ordem para ver se você está em um ambiente com suporte. (Há suporte para ordenação de SQL de Latin1-General e SQL Server ordem de classificação de 50 ou 52. O Reconciliar pode não ser executado em uma versão sem suporte, mesmo que a diferença seja $0.00000.) Se uma Ordenação SQL sem suporte ou SQL Server Ordem de Classificação estiver sendo usada, você precisará abrir um incidente de suporte com a equipe de SQL Server para obter assistência adicional sobre como alterar a Ordem de Classificação SQL/SQL antes que você possa continuar. Execute este script para determinar a Ordenação do SQL e SQL Server Ordem de Classificação:

sp_helpsort