El saldo de contabilidad general se calcula incorrectamente cuando se crea una conciliación bancaria en un banco de moneda extranjera en la versión norteamericana de Microsoft Dynamics NAV 2009

Se aplica a: Dynamics NAV 2009

En 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


Supongamos que se registra un diario de cobros que utiliza una cuenta de banco de moneda extranjera en la versión norteamericana de Microsoft Dynamics 2009. Crear un ajuste para el diario de cobros mediante la ejecución de la función de Ajustar tipos de cambio... . En esta situación, cuando crea una conciliación de bancos en la cuenta bancaria de divisas, el saldo de contabilidad general en la línea sugerida se calcula incorrectamente. El cálculo de la conciliación bancaria no incluye la ganancia o la pérdida producida de la cuenta bancaria.
Este problema se produce en los siguientes productos:
  • La versión norteamericana de Microsoft Dynamics NAV 2009 R2
  • La versión norteamericana de Service Pack 1 (SP1) de Microsoft Dynamics NAV 2009

Solución


Importante: La revisión (2548309) se ha revertido el código original y debe quitarse de las bases de datos donde se aplica este cambio. Si ha realizado cambios en el código que se describen en la sección "Cambios en el código", puede cambiar el código para que coincida con el código a la sección "Código existente". Si el código no se revierte, puede haber una diferencia en la ficha General de la conciliación bancaria y, a continuación, no puede realizar una entrada de blog.
El problema con un desequilibrio de Contabilidad General (Contabilidad) en la conciliación de la base de datos de North American en el escenario original de volver a crear para este artículo se revisan y examinan. A través de posteriores análisis, administración de productos y desarrollo determinan que el problema que se ha encontrado con el desequilibrio no es el resultado de un código estándar incorrecto para el cálculo de la conciliación bancaria, pero un problema de datos que se deba a la configuración inicial de la cuenta bancaria. La incorrecta configuración inicial de la cuenta bancaria consistió en romper el vínculo entre el movimiento de la cuenta bancaria y el movimiento de la cuenta de contabilidad. Los pasos de configuración de banco divisas incorrecta pueden incluir algo similar a lo siguiente:
  1. Registrar un diario de contabilidad para cuenta de la cuenta banco de saldo inicial, por ejemplo cuenta 11650.

    Nota: Normalmente, esta transacción sería incluida como parte de la instalación inicial de balance de comprobación de contabilidad.
  2. Registrar una entrada del diario de recepción de efectivo en la cuenta bancaria, en el que el grupo contable de banco tiene una cuenta contable temporal, por ejemplo 11000, asignado, y las transacciones no conciliadas abiertas, como cheques abiertas y cobros en la cuenta bancaria. La cuenta de contrapartida también se establece en la misma cuenta, por ejemplo 11000, para generar una entrada del lavado.
  3. La cuenta bancaria, la cuenta de grupo de contabilización se cambia después de la cuenta temporal en cuenta 11650. Por lo tanto, el movimiento original que se ha registrado para establecer la configuración de la cuenta bancaria detallada en el paso 2 era una cuenta diferente. Por lo tanto, ya no se establece el enlace a los movimientos de contabilidad.
Una configuración incorrecta adicional para una cuenta bancaria de moneda extranjera tendría la apariencia siguiente:
  1. Registrar un diario de contabilidad para cuenta de la cuenta banco de saldo inicial, por ejemplo cuenta 11650.
  2. Post, a continuación, establecer un diario General a la cuenta bancaria, con la cuenta de contrapartida en la misma cuenta especificada dentro del grupo de registro de cuenta bancaria, como en este caso la cuenta 11650.
De nuevo, no hay ningún vínculo entre el movimiento registrado en el paso 1 y el movimiento de banco registrado en el paso 2.

Estos pasos son la manera incorrecta para procesar el inicio de una nueva cuenta bancaria extranjera. Si ejecuta este proceso incorrecto, experimenta el problema que se describe en este artículo (2548309). Esta revisión (2548309) se agregó para corregir un determinado escenario que fue causado por la instalación que se asemeja a la situación anterior. Sin embargo, contabilización diferentes escenarios dio lugar a problemas con los desequilibrios continuados si configurar una cuenta bancaria pero, a continuación, no guarde la cuenta en el grupo contable de banco, o si no hay ningún vínculo directo entre los movimientos de la cuenta bancaria y los movimientos de contabilidad.

Recomendación: El proceso recomendado para configurar un banco divisas sería similar a la siguiente (suponiendo que el monto en moneda local de la contabilidad es de 10.000 $).

Nota : el siguiente se basa en un tipo de cambio de divisa de 1:1. Se actualizan importes en la divisa local. Por lo tanto, son necesarios cálculos manuales para la cuenta bancaria para que la contabilidad se actualiza con la cantidad de moneda local correcto.
  1. Al registrar los saldos iniciales en la contabilidad, contabilizar el saldo de contabilidad del banco en una cuenta contable temporal, como cuenta 11000 $ 10.000.
  2. Registrar un diario General a la cuenta bancaria, que tiene el grupo contable de banco establecido en la cuenta contable deseada, en este caso cuenta 11650. Aquí se establecería la cuenta de contrapartida en la cuenta contable 11000, que es la cuenta de caja temporal inicial que se publicó originalmente como parte de la configuración de la balanza de comprobación inicial.

    -Registrar esta entrada de 10.000 $ actualizará la cuenta bancaria extranjera y la cuenta 11650 $ 10.000. También reducirá esa cuenta temporal 11000 a $0 debido a que la contrapartida de la transacción de compensación. Registro de esta manera, hay un vínculo directo entre el movimiento de banco y el movimiento de la cuenta de contabilidad. Es la forma correcta de procesar y administrar la configuración de una cuenta bancaria extranjera.

Información de la revisión

Ahora hay una revisión compatible de Microsoft. Sin embargo, sólo se diseñó para corregir el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Esta revisión puede ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere al próximo service pack de Microsoft Dynamics NAV o de la próxima versión de Microsoft Dynamics NAV que contenga esta revisión.

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


Información sobre la instalación

Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan 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 que cumplan sus requisitos específicos.

Nota: Antes de instalar este hotfix, compruebe que todos los usuarios del cliente Microsoft Navision han salido del sistema. Esto incluye a los usuarios del cliente Microsoft Navision Application Services (NAS). Debe ser el único usuario del cliente conectado cuando implemente este hotfix.

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

Recomendamos que la cuenta de usuario en la ventana Conexiones Windows o en la ventana Conexiones base de datos se asigne el identificador de rol "SUPER". Si la cuenta de usuario no se puede asignar el identificador de rol "SUPER", debe comprobar que la cuenta de usuario tiene los permisos siguientes:
  • El permiso de modificación para el objeto que se va a cambiar.
  • El permiso de ejecución para el objeto System Object ID 5210 y System Object ID 9015 del objeto.


Nota: No es necesario tener derechos para los almacenes de datos a menos que deba realizar reparaciones de datos.

Cambios de código

Nota: Siempre pruebe correcciones de código en un entorno controlado antes de aplicar las revisiones a los equipos de producción.
Para resolver este problema, cambie el código en la función CalculateBalance en la tabla de cabecera de conciliación bancaria (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 sustitución
...          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 norteamericana de Microsoft Dynamics NAV 2009 R2
  • La versión norteamericana de Service Pack 1 de Microsoft Dynamics NAV 2009

Información de eliminación

No se puede quitar este hotfix.

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: Es un artículo "Publicación rápida" creado directamente desde dentro de la organización de soporte técnico de Microsoft. La información contenida en este documento se proporciona como está en respuesta a nuevos problemas. Como consecuencia de la velocidad en la puesta a disposición, los materiales pueden incluir errores tipográficos y podrán revisarse en cualquier momento sin previo aviso. Para obtener información adicional, consulte Condiciones de uso.