La versión norteamericana de Microsoft Dynamics NAV muestra el importe IVA sin el importe de impuesto en las líneas de pedido de ventas, si el importe neto de las líneas positivas y negativas es cero para un pedido de ventas


En este artículo se aplica a Microsoft Dynamics NAV para la configuración regional de América del Norte.

Síntomas


En la versión norteamericana de Microsoft Dynamics NAV, se supone que la suma de las líneas de importe positivo de ventas y líneas de importe de ventas negativo reduce a cero y todo el uso de líneas de pedido de ventas el mismo código de área y Código de grupo de impuestos para una orden de venta. Cuando se ejecuta la función liberar para liberar la orden de venta, observa que el sistema no muestra el importe de impuestos incluida en el campo Importe IVA en cualquiera de las líneas de pedido de ventas. Espera a que el monto de impuestos que se mostrará para los casos positivos y negativos en cada línea de pedido de ventas.
Este problema se produce en los siguientes productos:
  • La versión norteamericana de Service Pack 1 (SP1) de Microsoft Dynamics NAV 2009
  • La versión norteamericana de Microsoft Dynamics NAV 2009 R2
  • La versión norteamericana de Microsoft Dynamics NAV 2009
  • La versión norteamericana de Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Solución


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 2009 o 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, siga estos pasos:
  1. Cambie el código de la tabla (10011) como sigue:

    Código existente
    ...  FIELDS

    ...
    10042; ;Is Report-to Jurisdiction;Boolean ;CaptionML=ENU=Is Report-to Jurisdiction;
    Editable=No
    ...
    KEYS
    Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax;
    Clustered=Yes
    ...
    Código de sustitución
    ...  FIELDS

    ...
    10042; ;Is Report-to Jurisdiction;Boolean ;CaptionML=ENU=Is Report-to Jurisdiction;
    Editable=No

    // Add the following line.
    10043; ;Positive ;Boolean
    // End of the added line.

    ...
    KEYS

    // Add the Positive Field to the keys.
    Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax,Positive;
    Clustered=Yes
    ...
  2. Cambie el código en la función AddSalesLine de la codeunit (398) como sigue:

    Código existente
    ...    TaxAreaLine.FINDSET;
    REPEAT
    SETRANGE("Tax Jurisdiction Code",TaxAreaLine."Tax Jurisdiction Code");
    "Tax Jurisdiction Code" := TaxAreaLine."Tax Jurisdiction Code";
    IF NOT FINDFIRST THEN BEGIN
    ...
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    "Calculation Order" := TaxAreaLine."Calculation Order";
    ...
    Código de sustitución
    ...   TaxAreaLine.FINDSET;
    REPEAT
    SETRANGE("Tax Jurisdiction Code",TaxAreaLine."Tax Jurisdiction Code");

    // Add the following line.
    SETRANGE(Positive, SalesLine."Line Amount" - SalesLine."Inv. Discount Amount" > 0);
    // End of the added line.

    "Tax Jurisdiction Code" := TaxAreaLine."Tax Jurisdiction Code";
    IF NOT FINDFIRST THEN BEGIN
    ...
    "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    "Calculation Order" := TaxAreaLine."Calculation Order";

    // Add the following line.
    Positive := SalesLine."Line Amount" - SalesLine."Inv. Discount Amount" > 0;
    // End of the added line.
    ...
  3. Cambie el código en la función DistTaxOverSalesLines de la codeunit (398) como sigue:

    Código existente
    ...         IF (TaxCountry = TaxCountry::US) OR
    // Delete the following line.
    ((TaxCountry = TaxCountry::CA) AND (TaxAreaLine.GET(SalesLine."Tax Area Code","Tax Jurisdiction Code"))) THEN BEGIN
    // End of the deleted line.
    ...
    Código de sustitución
    ...         IF (TaxCountry = TaxCountry::US) OR
    // Add the following lines.
    ((TaxCountry = TaxCountry::CA) AND (TaxAreaLine.GET(SalesLine."Tax Area Code","Tax Jurisdiction Code"))) AND
    CheckTaxAmtLinePos(SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",
    Positive)
    THEN BEGIN
    // End of the added lines.
    ...
  4. Agregue una función local en la codeunit (398) como sigue:
    LOCAL PROCEDURE CheckTaxAmtLinePos(SalesLineAmt: Decimal, TaxAmtLinePos: Boolean):BooleanEXIT(
    ((SalesLineAmt > 0) AND TaxAmtLinePos) OR
    ((SalesLineAmt <0) AND NOT TaxAmtLinePos)
    );


Requisitos previos

Debe tener uno de los siguientes productos instalados para aplicar esta revisión:
  • La versión norteamericana de Service Pack 1 (SP1) de Microsoft Dynamics NAV 2009
  • La versión norteamericana de Microsoft Dynamics NAV 2009 R2
  • La versión norteamericana de Microsoft Dynamics NAV 2009
  • La versión norteamericana de Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)


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".

Referencias


DynamicsNAV VSTF SE: 256111
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.