Erro "A diferença deve ser zero antes que você possa reconciliar esta pasta de seleção" ao reconciliar a pasta de seleção em Selecionar transações bancárias
Este artigo fornece uma resolução para o problema de que a diferença é mostrada como zero quando você reconcilia a pasta de seleção em Selecionar Transações Bancárias no Microsoft Dynamics GP.
Aplica-se a: Microsoft Dynamics GP, Microsoft Dynamics SL Bank Reconciliation
Número original do KB: 851301
Sintomas
Quando você reconcilia a pasta de seleção em Selecionar 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 para que você possa reconciliar essa pasta de seleção.
Causa
Isso é causado por uma diferença fracionária. A janela Selecionar transações bancárias exibirá apenas quantas casas decimais estiverem configuradas para o ID de moeda atribuído à respectiva pasta de seleção. Assim, por exemplo, se a 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 valor, portanto, esse problema pode ocorrer se você tiver valores nas casas decimais restantes para qualquer registro nas tabelas SQL e pode resultar em uma diferença fracionária. Isso normalmente acontece se os registros foram importados para o Microsoft Dynamics GP com valores que têm mais casas decimais do que a ID de moeda está configurada.
Importante
Não há suporte para a importação de 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 não suportadas em um caso de suporte.
Solução
Use as etapas abaixo para verificar se há registros com casas decimais fracionárias e use os scripts abaixo para resolvê-lo:
Inicie o Microsoft SQL Server Management Studio e selecione o botão Nova Consulta para abrir uma janela de consulta.
Execute o seguinte script no banco de dados da empresa para determinar se há registros com valores com um terceiro, quarto ou quinto valor decimal diferente de zero:
Observação
Se a sua moeda para o talão de cheques tiver 2 casas decimais, o '3' no script abaixo em cada linha verificará a 3ª posição por uma fração. Portanto, se sua moeda tiver 3 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 rolar todos os registros retornados para anotar todas as colunas de 'valor' de todos os registros retornados.
Além disso, execute este script para revisar também os valores na tabela Mestre de Checkbook:
select CURRBLNC,* from CM00100 where CHEKBKID = 'xxx' --modify the xxx placeholder with your checkbook ID.
Faça um backup restaurável 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.
Dependendo de quais tabelas/campos você encontrou a fração, leia os dois métodos abaixo e use o método apropriado para resolver o problema:
Método 1: Atualize cada campo, um de cada vez, diretamente no SQL para remover o decimal fracionário.
Você pode simplesmente atualizar os valores encontrados pelos scripts acima diretamente na(s) tabela(s) 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 foi resolvido.
Aqui está um exemplo de script 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 qualquer valor em uma tabela encontrada pelo script na etapa 2 para um campo Checkbook_Amt, talvez seja necessário atualizar também o valor atual do saldo da caixa de seleção na tabela CM00100 Pasta de Seleção Mestre 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 da Pasta de Seleção. Você não quer que ninguém lance e altere o valor do saldo atual da pasta de seleção exatamente ao mesmo tempo em que você está fazendo essa manutenção.
Método 2: Some os totais do campo para ver se algum total tem um decimal fracionário.
Execute o script abaixo para verificar os totais de campo por tipo. Revise para ver se algum tem mais decimais do que o ID da moeda que você está usando. Além disso, se os registros foram importados de ou de um software de terceiros, você pode ter importado em quantidades com mais decimais do que o permitido na GP. Nesse caso, você precisará calcular a 'diferença líquida' e atualizar um único registro para essa diferença para que você equilibre exatamente US$ 0,00000. Talvez seja necessário abrir um incidente de suporte se precisar de mais assistência para fazer isso. Se você fizer isso sozinho, certifique-se de fazer isso em uma empresa de teste primeiro.
Aqui está um script de exemplo para somar cada um dos campos de valor da 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 = Ajuste de Diminuição
7 = Transferência
101 = Receita de Juros
102 = Outras receitas
103 = Outras despesas
104 = Taxa de Serviço
Observação
Anote todos os valores que você alterar, pois também pode ser necessário atualizar o saldo da CM00100 talão de cheques na mesma direção para a mesma diferença.
Mais informações
Como último recurso, verifique a ordenação do SQL e a ordem de classificação do SQL Server para ver se você está em um ambiente com suporte. (Há suporte para o agrupamento SQL de Latin1-General e a ordem de classificação do SQL Server de 50 ou 52. A Reconciliação pode não ser executada em uma versão sem suporte, mesmo que a diferença seja de US$ 0,00000.) Se uma ordenação do SQL ou uma ordem de classificação do SQL Server sem suporte estiver sendo usada, você precisará abrir um incidente de suporte com a equipe do SQL Server para obter assistência adicional sobre como alterar a ordenação do SQL/ordem de classificação do SQL antes de continuar. Execute este script para determinar a ordenação do SQL e a ordem de classificação do SQL Server:
sp_helpsort