Compartir a través de


"La diferencia debe ser cero antes de que pueda reconciliar esta libreta de cheques" al reconciliar la libreta de cheques en "Seleccionar transacciones bancarias"

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

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

Síntomas

Al reconciliar la libreta de cheques 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 este cheque.

Causa

Esto se debe a una diferencia fraccional. La ventana Seleccionar transacciones bancarias solo mostrará tantos decimales como estén configurados para el identificador de moneda asignado a la libreta de cheques correspondiente. Por ejemplo, si a tu chequera se le asigna un identificador de moneda con dos posiciones decimales, entonces solo se mostrarán dos decimales en la ventana Seleccionar transacciones bancarias. Sin embargo, los registros del almacén de tablas sql hasta cinco posiciones decimales para un campo de cantidad, por lo que este problema puede ocurrir si tiene cantidades en los 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 de las que el ID de moneda está 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 podemos proporcionar la corrección de datos para condiciones no admitidas en un caso de soporte técnico.

Solución

Siga estos pasos para comprobar los registros con posiciones decimales fraccionarios y use los scripts siguientes para resolverlos:

  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 empresa para determinar si hay registros que tienen cantidades con un valor de posición decimal, cuarto o quinto distinto de cero:

    Nota:

    Si la moneda del cheque tiene 2 decimales, el "3" en el script siguiente en cada línea comprobará la posición 3ª para una fracción. Por lo tanto, si su 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 Checkbook Master:

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

    Importante

    No omita este paso.

  5. En función de las tablas o campos en los que encontró 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 ejemplo siguiente. 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 en 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 del saldo del libro de cheques actual en la tabla CM00100 Maestro de Libros de Cheques en el mismo sentido. Además, asegúrese de tener todos los usuarios fuera de Microsoft Dynamics GP antes de ejecutar un script de actualización en la tabla Checkbook Master. No quieres que nadie registre y cambie la cantidad del saldo actual de la chequera al mismo tiempo exacto que estás realizando este mantenimiento.

    Método 2: Suma de totales de campo para ver si alguno de los totales tiene un decimal fraccionario.

    Ejecute el siguiente script para comprobar los totales del campo por tipo. Revise para ver si hay más decimales que el identificador de moneda que está usando. 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, deberá calcular la "diferencia neta" y actualizar un único registro para esa diferencia, de modo que se equilibre exactamente a $0.00000. 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 prueba.

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 el ajuste
6 = Disminuir ajuste
7 = Transferencia
101 = Ingresos por intereses
102 = Otros ingresos
103 = Otros gastos
104 = Cargo de servicio

Nota:

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

Más información

Como último recurso, compruebe la intercalación de SQL y el criterio de ordenación de SQL Server para ver si está en un entorno compatible. (Se admite la intercalación sql de Latin1-General y el criterio de ordenación de SQL Server de 50 o 52. Es posible que La conciliación no se ejecute en una versión no admitida aunque la diferencia sea de 0,00000 USD). Si se usa una intercalación de SQL o un criterio de ordenación de SQL Server no compatible, deberá abrir un incidente de soporte técnico con el equipo de SQL Server para obtener ayuda adicional sobre cómo cambiar el criterio de ordenación de SQL Collation/SQL antes de poder continuar. Ejecute este script para determinar la intercalación de SQL y el criterio de ordenación de SQL Server:

sp_helpsort