Error "La diferencia debe ser cero para poder conciliar esta chequera" al conciliar la chequera en Seleccionar transacciones bancarias

En este artículo se proporciona una solución para el problema de que la diferencia se muestra como cero al conciliar la chequera en Seleccionar transacciones bancarias en Microsoft Dynamics GP.

Se aplica a: Conciliación bancaria de Microsoft Dynamics GP, Microsoft Dynamics SL
Número de KB original: 851301

Síntomas

Al conciliar la chequera en Seleccionar transacciones bancarias en Microsoft Dynamics GP, la diferencia se muestra como cero, pero recibe el siguiente mensaje de error:

La diferencia debe ser cero para poder conciliar esta chequera.

Causa

Esto se debe a una diferencia fraccionaria. La ventana Seleccionar transacciones bancarias solo mostrará tantas posiciones decimales como estén configuradas para el identificador de moneda asignado a la chequera correspondiente. Por ejemplo, si a la chequera se le asigna un identificador de moneda con dos posiciones decimales, solo se muestran dos posiciones decimales en la ventana Seleccionar transacciones bancarias . Sin embargo, los registros de la tabla SQL almacenan hasta cinco posiciones decimales para un campo de cantidad, por lo que este problema puede producirse si tiene cantidades en las posiciones decimales restantes para cualquier registro de las tablas SQL y puede dar lugar a una diferencia fraccionaria. Esto suele ocurrir si los registros se importaron en Microsoft Dynamics GP con cantidades que tienen más posiciones decimales que el identificador de moneda configurado.

Importante

No se admite la importación de datos de esta manera. Este artículo sirve como guía para ayudarle a corregir los datos, ya que no se pueden proporcionar correcciones de datos para condiciones no admitidas dentro de un caso de soporte técnico.

Solución

Siga estos pasos para buscar registros con posiciones decimales fraccionarias y use los scripts siguientes para resolverlo:

  1. Inicie Microsoft SQL Server Management Studio y seleccione el botón Nueva consulta para abrir una ventana de consulta.

  2. Ejecute el siguiente script en la base de datos de la empresa para determinar si hay registros que tienen cantidades con un valor de posición decimal distinto de cero, tercero, cuarto o quinto decimal:

    Nota:

    Si la moneda de la chequera tiene 2 decimales, el "3" del script siguiente en cada línea comprobará la 3ª posición de una fracción. Por lo tanto, si la moneda tiene 3 posiciones decimales, ajuste el script a "4", etc.

    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

    Asegúrese de desplazarse por todos los registros devueltos para tomar nota de todas las columnas "amount" de los registros devueltos.

  3. Además, ejecute este script para revisar también los importes de la tabla Patrón de cheques:

    select CURRBLNC,* from CM00100 where CHEKBKID = 'xxx'
    --modify the xxx placeholder with your checkbook ID.
    
  4. Realice una copia de seguridad restaurable actual de la base de datos de la empresa antes de continuar o hágalo primero en un entorno de prueba.

    Importante

    No omita este paso.

  5. En función de las tablas o campos en los que haya encontrado la fracción, lea ambos métodos a continuación y use el método adecuado para resolver el problema:

    Método 1: actualice cada campo de uno en uno directamente en SQL para quitar el decimal fraccionario.

    Simplemente puede actualizar las cantidades encontradas por los scripts anteriores directamente en las tablas sql mediante un script similar al siguiente ejemplo. Después de actualizar los importes para quitar la fracción no deseada, actualice la ventana Seleccionar transacciones bancarias para ver si se resuelve el problema.

    Este es un script de ejemplo para actualizar un campo a la 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.
    

    Nota:

    Sea coherente. Si actualiza las cantidades de una tabla encontrada por el script en el paso 2 para un campo de Checkbook_Amt, es posible que tenga que actualizar también el valor actual del saldo de la chequera en la tabla CM00100 Checkbook Master en la misma dirección. Además, asegúrese de que todos los usuarios estén fuera de Microsoft Dynamics GP antes de ejecutar un script de actualización en la tabla Patrón de la libreta de comprobación. No quiere que nadie publique y cambie la cantidad del saldo actual de la chequera exactamente al mismo tiempo que realiza este mantenimiento.

    Método 2: Suma de totales de campos para ver si los totales tienen un decimal fraccionario.

    Ejecute el script siguiente para comprobar los totales de campo por tipo. Revise para ver si hay más decimales que el identificador de moneda que usa. Además, si los registros se importaron en o desde un software de terceros, es posible que haya importado en cantidades con más decimales de los permitidos en GP. En este caso, tendrá que calcular la "diferencia neta" y actualizar un único registro para esta diferencia para que equilibre exactamente a 0,00000 USD. Es posible que tenga que abrir un incidente de soporte técnico si necesita más ayuda para hacerlo. Si lo hace usted mismo, asegúrese de hacerlo primero en una empresa de pruebas.

Este es un script de ejemplo para sumar cada uno de los campos de cantidad de la tabla 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 transacción:

1 = Depósito
2 = Recibo
3 = Comprobar
4 = Retirada
5 = Aumentar ajuste
6 = Reducción del ajuste
7 = Transferencia
101 = Ingresos por intereses
102 = Otros ingresos
103 = Otros gastos
104 = Cargo por servicio

Nota:

Tome nota de los importes que cambie, ya que es posible que también tenga que actualizar el saldo de la chequera CM00100 en la misma dirección para la misma diferencia.

Más información

Como último recurso, compruebe la intercalación de SQL y SQL Server criterio de ordenación para ver si se encuentra en un entorno compatible. (Se admite la intercalación SQL de Latin1-General y SQL Server criterio de ordenación de 50 o 52. Conciliar puede no ejecutarse en una versión no admitida incluso si la diferencia es de 0,0000 USD). Si se usa una intercalación SQL no admitida o SQL Server criterio de ordenación, deberá abrir un incidente de soporte técnico con el equipo de SQL Server para obtener más ayuda sobre cómo cambiar el criterio de ordenación de SQL Collation/SQL antes de continuar. Ejecute este script para determinar la intercalación de SQL y SQL Server criterio de ordenación:

sp_helpsort