Condividi tramite


Errore "La differenza deve essere zero prima di poter riconciliare questo checkbook" durante la riconciliazione del checkbook in Select Bank Transactions (Seleziona transazioni bancarie)

Questo articolo fornisce una soluzione per il problema che la differenza viene visualizzata come zero quando si riconcilia il checkbook in Seleziona transazioni bancarie in Microsoft Dynamics GP.

Si applica a: Microsoft Dynamics GP, Riconciliazione della banca Microsoft Dynamics SL
Numero KB originale: 851301

Sintomi

Quando si riconcilia il checkbook in Seleziona transazioni bancarie in Microsoft Dynamics GP, la differenza viene visualizzata come zero, ma viene visualizzato il messaggio di errore seguente:

La differenza deve essere zero prima di poter riconciliare questo checkbook.

Causa

Ciò è causato da una differenza frazionaria. Nella finestra Seleziona transazioni bancarie verranno visualizzate solo le posizioni decimali impostate per l'ID valuta assegnato al rispettivo checkbook. Ad esempio, se al checkbook viene assegnato un ID valuta con due posizioni decimali, nella finestra Seleziona transazioni bancarie vengono visualizzate solo due posizioni decimali. Tuttavia, i record nella tabella SQL archivia fino a cinque posizioni decimali per un campo di importo, pertanto questo problema può verificarsi se sono presenti importi nelle posizioni decimali rimanenti per qualsiasi record nelle tabelle SQL e possono generare una differenza frazionaria. Ciò si verifica in genere se i record sono stati importati in Microsoft Dynamics GP con importi con più posizioni decimali rispetto all'ID valuta impostato per.

Importante

L'importazione di dati in questo modo non è supportata. Questo articolo funge da guida per la correzione dei dati, in quanto non è possibile fornire la correzione dei dati per le condizioni non supportate all'interno di un caso di supporto.

Risoluzione

Usare la procedura seguente per verificare la presenza di record con posizioni decimali frazionarie e usare gli script seguenti per risolverlo:

  1. Avviare Microsoft SQL Server Management Studio e selezionare il pulsante Nuova query per aprire una finestra di query.

  2. Eseguire lo script seguente nel database aziendale per determinare se sono presenti record con importi diversi da zero per il terzo, il quarto o il quinto valore decimale:

    Nota

    Se la valuta per il checkbook ha 2 decimali, il '3' nello script seguente in ogni riga verificherà la terza posizione per una frazione. Quindi, se la valuta ha 3 posizioni decimali, modificare lo script su "4" e così via.

    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

    Assicurarsi di scorrere tutti i record restituiti per prendere nota di tutte le colonne "amount" per tutti i record restituiti.

  3. Eseguire inoltre questo script per esaminare anche gli importi nella tabella Checkbook Master:

    select CURRBLNC,* from CM00100 where CHEKBKID = 'xxx'
    --modify the xxx placeholder with your checkbook ID.
    
  4. Eseguire un backup ripristinabile corrente del database aziendale prima di continuare o eseguire prima questa operazione in un ambiente di test.

    Importante

    Non ignorare questo passaggio.

  5. A seconda delle tabelle o dei campi in cui è stata trovata la frazione, leggere entrambi i metodi seguenti e usare il metodo appropriato per risolvere il problema:

    Metodo 1: aggiornare ogni campo uno alla volta direttamente in SQL per rimuovere il decimale frazionario.

    È sufficiente aggiornare gli importi trovati dagli script precedenti direttamente nelle tabelle SQL usando uno script simile all'esempio seguente. Dopo aver aggiornato gli importi per rimuovere la frazione indesiderata, aggiornare la finestra Seleziona transazioni bancarie per verificare se il problema è stato risolto.

    Ecco uno script di esempio per aggiornare un campo alla volta:

    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.
    

    Nota

    Essere coerenti. Se si aggiornano gli importi in una tabella trovata dallo script nel passaggio 2 per un campo Checkbook_Amt, potrebbe essere necessario aggiornare anche il valore del saldo corrente del checkbook nella tabella CM00100 Checkbook Master nella stessa direzione. Assicurarsi inoltre di avere tutti gli utenti fuori da Microsoft Dynamics GP prima di eseguire uno script di aggiornamento nella tabella Master checkbook. Non si vuole che nessuno post e modificare la quantità del saldo corrente per il checkbook nello stesso momento in cui si esegue questa manutenzione.

    Metodo 2: Sommare i totali dei campi per verificare se i totali hanno un decimale frazionario.

    Eseguire lo script seguente per verificare i totali dei campi in base al tipo. Verificare se sono presenti più decimali rispetto all'ID valuta in uso. Inoltre, se i record sono stati importati in o da un software di terze parti, è possibile che siano stati importati in importi con più decimali rispetto a quelli consentiti in Criteri di gruppo. In questo caso, sarà necessario calcolare la "differenza netta" e aggiornare un singolo record per questa differenza in modo da bilanciare esattamente a $0.00000. Potrebbe essere necessario aprire un evento imprevisto di supporto se è necessaria ulteriore assistenza a tale scopo. Se si esegue questa operazione manualmente, assicurarsi di farlo prima in una società di test.

Di seguito è riportato uno script di esempio per sommare ognuno dei campi di importo per la tabella CM20200 in base al 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 di transazione:

1 = Deposito
2 = Ricevuta
3 = Verifica
4 = Ritiro
5 = Aumento della regolazione
6 = Riduci regolazione
7 = Trasferimento
101 = Interessi attivi
102 = Altri redditi
103 = Altre spese
104 = Addebito del servizio

Nota

Prendere nota di eventuali importi modificati, in quanto potrebbe anche essere necessario aggiornare il saldo del checkbook CM00100 nella stessa direzione per la stessa differenza.

Ulteriori informazioni

Come ultima risorsa, controllare le regole di confronto SQL e SQL Server ordinamento per verificare se si è in un ambiente supportato. Sono supportate le regole di confronto SQL di Latin1-General e SQL Server ordinamento 50 o 52. La funzione Riconcilia potrebbe non essere eseguita in una versione non supportata, anche se la differenza è $0,00000. Se vengono usate regole di confronto SQL non supportate o SQL Server ordinamento, è necessario aprire un evento imprevisto di supporto con il team di SQL Server per assistenza aggiuntiva su come modificare le regole di confronto SQL/ordinamento SQL prima di poter continuare. Eseguire questo script per determinare le regole di confronto SQL e SQL Server ordinamento:

sp_helpsort