El saldo de contabilidad general se calcula incorrectamente al crear una conciliación bancaria en una cuenta bancaria en moneda extranjera en la versión de Norteamérica de Microsoft Dynamics NAV 2009

Se aplica a
Dynamics NAV 2009

Este artículo se aplica a Microsoft Dynamics NAV para los siguientes países y configuraciones regionales de idioma.

  • Inglés (Canadá) (en-ca)
  • Inglés (Estados Unidos) (en-us)
  • Español (México) (es-mx)
  • Francés (Canadá) (fr-ca)

Síntomas

Suponga que publica un diario de recibos de efectivo que usa una cuenta bancaria en moneda extranjera en la versión de Norteamérica de Microsoft Dynamics 2009. Para crear un ajuste para el diario de recepción de efectivo, ejecute la función Ajustar tipos de cambio... de moneda. En esta situación, al crear una conciliación bancaria en la cuenta bancaria de moneda extranjera, el saldo de contabilidad general de la línea sugerida se calcula incorrectamente. El cálculo de conciliación bancaria no incluye la ganancia realizada o la pérdida realizada de la cuenta bancaria.
Este problema se produce en los siguientes productos:

  • La versión en Norteamérica de Microsoft Dynamics NAV 2009 R2
  • La versión en Norteamérica de Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Resolución

Importante La revisión (2548309) se ha revertido al código original y se debe quitar de cualquier base de datos donde se aplicó este cambio. Si has realizado cambios de código que se describen en la sección "Cambios de código", puedes volver a cambiar el código para que el código vuelva a coincidir con la sección "Código existente". Si el código no se revierte, puede tener una diferencia en la pestaña General de la conciliación bancaria y, a continuación, no puede realizar una publicación.
El problema con un desequilibrio de contabilidad general (G/L) en la conciliación del banco de base de datos de América del Norte en el escenario original de recreación de este artículo se revisó y examinó. Mediante un análisis más exhaustivo, gestión de productos y desarrollo determinó que el problema que se notidicó con el desequilibrio no es el resultado de un código estándar incorrecto para el cálculo de conciliación bancaria, sino un problema de datos causado por la configuración inicial de la cuenta bancaria. La configuración inicial incorrecta de la cuenta bancaria consistía en romper el vínculo entre el movimiento de contabilidad de la cuenta bancaria y el movimiento de contabilidad de la cuenta de mayor. Los pasos incorrectos de configuración de cuentas bancarias en moneda extranjera pueden incluir algo similar a los siguientes pasos:

  1. Publique un diario de mayor en la cuenta de mayor de la cuenta bancaria para el saldo inicial, por ejemplo, la cuenta de mayor 11650.

    Nota Esta transacción normalmente se incluiría como parte de la configuración inicial del saldo de prueba de G/L.

  2. Contabilizar una entrada del diario de recepción de caja en la cuenta bancaria, en la que el grupo de contabilización de la cuenta bancaria tiene una cuenta de contabilidad temporal, por ejemplo 11000, asignada y cualquier transacción abierta sin conciliar, como cheques abiertos y recibos de efectivo, a la cuenta bancaria. La cuenta de equilibrio también se establece en la misma cuenta, por ejemplo 11000, para generar una entrada de lavado.

  3. La cuenta de grupo de contabilización bancaria se cambia de la cuenta temporal de G/L a la cuenta de mayor 11650. Por lo tanto, la entrada original que se registró para establecer la configuración detallada de la cuenta bancaria en el paso 2 fue a una cuenta de contabilidad diferente. Por lo tanto, ya no se establece el vínculo a las entradas de la G/L.

Una configuración incorrecta adicional para una cuenta bancaria en moneda extranjera sería similar a la siguiente:

  1. Publique un diario de mayor en la cuenta de mayor de la cuenta bancaria para el saldo inicial, por ejemplo, la cuenta de mayor 11650.
  2. A continuación, contabilizar un Diario general en la cuenta bancaria, con la cuenta de equilibrio establecida en la misma cuenta de contabilidad que se especifica en el grupo contabilización de cuentas bancarias, como en este caso cuenta G/L 11650.

De nuevo, no hay ningún vínculo entre la entrada de mayor registrada en el paso 1 y la entrada de contabilidad de cuenta bancaria registrada en el paso 2.

Estos pasos son la forma incorrecta de procesar el inicio de una nueva cuenta bancaria extranjera. Si ejecuta este proceso incorrecto, es posible que encuentre el problema que se describe en este artículo (2548309). Esta revisión (2548309) se agregó para corregir un escenario específico que fue causado por la configuración que se asemeja al escenario anterior. Sin embargo, diferentes escenarios de contabilización dieron lugar a problemas de desequilibrios continuos si configura una cuenta bancaria, pero luego no mantiene la cuenta de mayor en el grupo de contabilización bancaria, o si no hay ningún vínculo directo entre las entradas de la cuenta bancaria y las entradas de la G/L.

RECOMENDACIÓN: El proceso recomendado para crear un banco de divisas sería similar al siguiente (suponiendo que una cantidad en moneda local para el GL sea de 10.000 dólares).

Nota: lo siguiente se basa en un tipo de cambio 1:1. Los importes de G/L se actualizan en moneda local. Por lo tanto, se necesitan cálculos manuales para la cuenta bancaria para que el GL se actualice con la cantidad de moneda local correcta.

  1. Al registrar saldos iniciales de prueba en el BALANCE, contabilizar el saldo de GL del Banco en una cuenta temporal de contabilidad general, como la cuenta de mayor 11000, por 10.000 dólares.

  2. Contabilizar un Diario general en la cuenta bancaria, que tiene el grupo de contabilización de cuenta bancaria establecido en la cuenta de mayor deseada, en este caso cuenta G/L 11650. Aquí establecería la cuenta de equilibrio en Cuenta de mayor 11000, que es la cuenta de efectivo temporal inicial que se registró originalmente como parte de la configuración del saldo de prueba inicial.

    -Al publicar esta entrada de 10.000 $, se actualizarán tanto la cuenta bancaria externa como la cuenta de mayor 11650 por 10.000 $. También reducirá esa cuenta temporal de G/L 11000 a $0 debido a la cuenta de equilibrio de compensación de la transacción. Mediante contabilización de esta manera, existe un vínculo directo entre el movimiento de contabilidad bancario y el movimiento de contabilidad de la cuenta de mayor. Es la forma correcta de procesar y manejar la configuración de una cuenta bancaria extranjera.

      

Información de revisiones

Una revisión compatible ya está disponible en Microsoft. Sin embargo, solo está pensado para corregir el problema que se describe en este artículo. Aplicarlo solo a los sistemas que experimentan este problema específico. Esta revisión puede recibir pruebas adicionales. Por lo tanto, si no se ve afectado gravemente por este problema, le recomendamos que espere al siguiente Service Pack de Microsoft Dynamics NAV o a la siguiente versión de Microsoft Dynamics NAV que contenga esta revisión.

Nota En casos especiales, los cargos que se incurren normalmente por las llamadas de soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft Dynamics y productos relacionados determina que una actualización específica resolverá el problema. Se aplicarán los costos habituales de soporte técnico a las consultas y cuestiones de soporte técnico adicionales que no guarden relación con la actualización en cuestión.

            
          

Información de instalación

Microsoft proporciona ejemplos de programación solo para ilustración, sin garantía expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad o idoneidad para un propósito determinado. En este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se usan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.

Nota Antes de instalar esta revisión, verifique que todos los usuarios cliente de Microsoft Navision hayan cerrado sesión en el sistema. Esto incluye a los usuarios cliente de Microsoft Navision Application Services (NAS). Usted debe ser el único usuario del cliente que ha iniciado sesión al implementar esta revisión.

Para implementar esta revisión, debe tener una licencia de desarrollador.

Le recomendamos que la cuenta de usuario en la ventana Inicios de sesión de Windows o en la ventana Inicios de sesión de base de datos tenga asignado el id. de rol "SUPER". Si no se puede asignar a la cuenta de usuario el id. de rol "SUPER", debe comprobar que la cuenta de usuario tiene los permisos siguientes:

  • El permiso Modificar para el objeto que va a cambiar.
  • El permiso Execute para el objeto System Object ID 5210 y para el objeto System Object ID 9015.

                
Nota No es necesario tener derechos sobre los almacenes de datos a menos que tenga que realizar una reparación de datos.

Cambios de código

Nota Pruebe siempre las correcciones de código en un entorno controlado antes de aplicar las correcciones a los equipos de producción.
Para resolver este problema, cambie el código de la función CalculateBalance de la tabla Encabezado Rec. (10120) de la siguiente manera:
Código existente

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Delete the folloiwng line.
                "G/L Balance" += BankAccLedgEntry.Amount;

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

Código de reemplazo

...
          REPEAT
            IF BankAccLedgEntry.GET(GLEntry."Entry No.") THEN BEGIN
              IF "Currency Code" <> BankAccLedgEntry."Currency Code" THEN BEGIN
                IF BankAccLedgEntry."Currency Code" <> '' THEN
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtFCYToFCY("Statement Date",
                                                                          BankAccLedgEntry."Currency Code",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount),
                                         Currency."Amount Rounding Precision")
                ELSE
                  "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                          "Currency Code",
                                                                          BankAccLedgEntry.Amount,
                                                                          "Currency Factor"),
                                         Currency."Amount Rounding Precision");
              END ELSE BEGIN

                // Add the following lines.
                "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                        "Currency Code",
                                                                        GLEntry.Amount,
                                                                        "Currency Factor"),
                                       Currency."Amount Rounding Precision");
                // End of the lines.

              END;
            END ELSE BEGIN
              "G/L Balance" += ROUND(CurrExchRate.ExchangeAmtLCYToFCY("Statement Date",
                                                                      "Currency Code",
                                                                      GLEntry.Amount,
                                                                      "Currency Factor"),
                                     Currency."Amount Rounding Precision");
            END;
          UNTIL GLEntry.NEXT = 0;
...

          

Requisitos previos

Debe tener uno de los siguientes productos instalados para aplicar esta revisión:

  • La versión en Norteamérica de Microsoft Dynamics NAV 2009 R2
  • La versión en Norteamérica de Microsoft Dynamics NAV 2009 Service Pack 1

Información sobre la eliminación

No puede quitar esta revisión.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Nota Esto es un artículo "PUBLICACIÓN RÁPIDA" creado directamente desde la organización de soporte técnico de Microsoft. La información contenida se proporciona tal cual en respuesta a nuevos problemas. Como resultado de la rapidez en la publicación, es posible que los materiales incluyan errores tipográficos. Además, se pueden revisar en cualquier momento sin previo aviso. Consulte los Términos de uso para otras consideraciones.