يصدر إعلان ضريبة القيمة المضافة الإسبانية 349 المبالغ بالعملة المستخدمة في المستند على الرغم من تطبيق الإصلاح العاجل 254942 في Microsoft Dynamics NAV

ينطبق على
Dynamics NAV 2013 Dynamics NAV 2009

تنطبق هذه المقالة على Microsoft Dynamics NAV للغات اللغة الإسبانية (es).

الأعراض

افترض أنك قمت بتطبيق 2547942 الإصلاح العاجل في Microsoft Dynamics NAV. ومع ذلك، لا يزال إعلان ضريبة القيمة المضافة الإسبانية 349 يصدر المبالغ بالعملة المستخدمة في المستند بدلا من العملة المحلية. إذا لم يكن لدى العميل أو المورد رمز عملة في البطاقة، ولكن تم نشر مستند يتضمن عملة، فإن المبالغ التي يتم تصديرها في إعلان 349 غير صحيحة، لأن المبلغ المصدر هو المبلغ بالعملة المستخدمة في المستند بدلا من العملة المحلية التي يحتاج المستخدم إلى إبلاغ السلطات الضريبية بها.

تحدث هذه المشكلة في المنتجات التالية:

  • Microsoft Dynamics NAV 2013
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

الدقة

معلومات الإصلاح العاجل

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV 2013 التالية أو إصدار Microsoft Dynamics NAV التالي الذي يحتوي على هذا الإصلاح العاجل.

ملاحظة في حالات خاصة، قد يتم إلغاء الرسوم التي يتم تكبدها عادة لمكالمات الدعم إذا حدد محترف الدعم التقني ل Microsoft Dynamics والمنتجات ذات الصلة أن تحديثا معينا سيحل مشكلتك. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات غير المؤهلة للتحديث المحدد المعني.

          

معلومات التثبيت

توفر Microsoft أمثلة برمجة للتوضيح فقط، دون ضمان سواء تم التعبير عنه أو تضمينه. وهذا يشمل، على سبيل المثال لا الحصر، الضمانات الضمنية للقابلية التجارية أو اللياقة البدنية لغرض معين. تفترض هذه المقالة أنك على دراية بلغة البرمجة التي يتم توضيحها ومع الأدوات المستخدمة لإنشاء إجراءات وتصحيح الأخطاء. يمكن لمهندسي دعم Microsoft المساعدة في شرح وظيفة إجراء معين. ومع ذلك، لن يعدلوا هذه الأمثلة لتوفير وظائف إضافية أو إجراءات إنشاء لتلبية متطلباتك المحددة.

ملاحظة قبل تثبيت هذا الإصلاح العاجل، تحقق من تسجيل خروج جميع مستخدمي عميل Microsoft Navision من النظام. يتضمن ذلك مستخدمي عميل Microsoft Navision Application Services (NAS). يجب أن تكون المستخدم العميل الوحيد الذي قام بتسجيل الدخول عند تنفيذ هذا الإصلاح العاجل.

لتنفيذ هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.

نوصي بتعيين معرف دور "SUPER" لحساب المستخدم في نافذة تسجيلات الدخول إلى Windows أو في نافذة تسجيلات دخول قاعدة البيانات. إذا تعذر تعيين معرف دور "SUPER" لحساب المستخدم، فيجب عليك التحقق من أن حساب المستخدم لديه الأذونات التالية:

  • إذن تعديل للكائن الذي ستقوم بتغييره.
  • إذن Execute للكائن System Object ID 5210 ولعنصر System Object ID 9015.

                
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.

تغييرات التعليمات البرمجية

ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.
لحل هذه المشكلة، قم بتغيير التعليمات البرمجية في تقرير Make 349 Declaration (10710). اتبع هذه الخطوات للقيام بذلك:

  1. تغيير التعليمات البرمجية في الدالة GetPostedCountryLocCode كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
                                REPEAT
                                  IF SalesInvLines."Location Code" <> '' THEN BEGIN
                                    IF Location.GET(SalesInvLines."Location Code") THEN
                                      EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                    IF EUCountryLinesLocationCode THEN BEGIN
    
    // Delete the following line.
                                      AmountToIncludeIn349 := AmountToIncludeIn349 + SalesInvLines.Amount;
    
                                      IF GetCountryfromLocation(SalesInvLines."Location Code") <> CountryCode THEN
                                        LocationDifferentCountryCode := TRUE;
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
    ...
    
    

    رمز الاستبدال 1

    ...
                                REPEAT
                                  IF SalesInvLines."Location Code" <> '' THEN BEGIN
                                    IF Location.GET(SalesInvLines."Location Code") THEN
                                      EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                    IF EUCountryLinesLocationCode THEN BEGIN
    
    // Add the following lines.
                                      AmountToIncludeIn349 +=
                                        GetExportedAmountIn349(SalesInvHeader."Currency Code",
                                        SalesInvHeader."Currency Factor",SalesInvLines."Line Amount");
    // End of the lines.
    
                                      IF GetCountryfromLocation(SalesInvLines."Location Code") <> CountryCode THEN
                                        LocationDifferentCountryCode := TRUE;
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
    ...
    
    

    التعليمات البرمجية الموجودة 2

    ...
                                      TempSalesInvLines.INSERT;
                                    END;
                                  END ELSE
                                    IF CompInforShipToCountryCode THEN BEGIN
                                      EUCountryLinesLocationCode := TRUE;
    
    // Delete the following line.
                                      AmountToIncludeIn349 := AmountToIncludeIn349 + SalesInvLines.Amount;
    
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
                                UNTIL SalesInvLines.NEXT = 0;
                            END;
    ...
    
    

    رمز الاستبدال 2

    ...
                                      TempSalesInvLines.INSERT;
                                    END;
                                  END ELSE
                                    IF CompInforShipToCountryCode THEN BEGIN
                                      EUCountryLinesLocationCode := TRUE;
    
    // Add the following lines.
                                      AmountToIncludeIn349 +=
                                        GetExportedAmountIn349(SalesInvHeader."Currency Code",
                                        SalesInvHeader."Currency Factor",SalesInvLines."Line Amount");
    // End of the lines.
    
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
                                UNTIL SalesInvLines.NEXT = 0;
                            END;
    ...
    
    

    التعليمات البرمجية الموجودة 3

    ...
                              REPEAT
                                IF PurchInvLines."Location Code" <> '' THEN BEGIN
                                  IF Location.GET(PurchInvLines."Location Code") THEN
                                    EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                  IF EUCountryLinesLocationCode THEN BEGIN
    
    // Delete the following line.
                                    AmountToIncludeIn349 := AmountToIncludeIn349 + PurchInvLines.Amount;
    
                                    IF GetCountryfromLocation(PurchInvLines."Location Code") <> CountryCode THEN
                                      LocationDifferentCountryCode := TRUE;
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
    ...
    

    رمز الاستبدال 3

    ...
                              REPEAT
                                IF PurchInvLines."Location Code" <> '' THEN BEGIN
                                  IF Location.GET(PurchInvLines."Location Code") THEN
                                    EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                  IF EUCountryLinesLocationCode THEN BEGIN
    
    // Add the following lines.
                                    AmountToIncludeIn349 +=
                                      GetExportedAmountIn349(PurchInvHeader."Currency Code",
                                      PurchInvHeader."Currency Factor",PurchInvLines."Line Amount");
    // End of the lines.
    
                                    IF GetCountryfromLocation(PurchInvLines."Location Code") <> CountryCode THEN
                                      LocationDifferentCountryCode := TRUE;
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
    ...
    
    

    التعليمات البرمجية الموجودة 4

    ...
                                    TempPurchInvLines.INSERT;
                                  END;
                                END ELSE
                                  IF CompInforShipToCountryCode THEN BEGIN
                                    EUCountryLinesLocationCode := TRUE;
    
    // Delete the following line.
                                    AmountToIncludeIn349 := AmountToIncludeIn349 + PurchInvLines.Amount;
    
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
                              UNTIL PurchInvLines.NEXT = 0;
                          END;
    ...
    
    

    رمز الاستبدال 4

    ...
                                    TempPurchInvLines.INSERT;
                                  END;
                                END ELSE
                                  IF CompInforShipToCountryCode THEN BEGIN
                                    EUCountryLinesLocationCode := TRUE;
    
    // Add the following lines.
                                    AmountToIncludeIn349 +=
                                      GetExportedAmountIn349(PurchInvHeader."Currency Code",
                                      PurchInvHeader."Currency Factor",PurchInvLines."Line Amount");
    // End of the lines.
    
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
                              UNTIL PurchInvLines.NEXT = 0;
                          END;
    ...
    
    
  2. تغيير التعليمات البرمجية في الدالة GetExportedAmountIn349 كما يلي:
    التعليمات البرمجية الموجودة

    ...
          BEGIN
            IF DeliveryOperationCode = DeliveryOperationCode::" " THEN
              DeliveryOperationCode := DeliveryOperationCode::E;
          END;
    
          BEGIN
          END.
        }
        RDLDATA
        {
    ...
    
    

    رمز الاستبدال

    ...
          BEGIN
            IF DeliveryOperationCode = DeliveryOperationCode::" " THEN
              DeliveryOperationCode := DeliveryOperationCode::E;
          END;
    
    // Add the following lines.  
          LOCAL PROCEDURE GetExportedAmountIn349@1100014(CurrencyCode@1100008 : Code[20];CurrencyFactor@1100009 : Decimal;LineAmount@1100010 : Decimal) : Decimal;
          VAR
            Currency@1100001 : Record 4;
          BEGIN
            IF CurrencyCode <> '' THEN BEGIN
              Currency.GET(CurrencyCode);
              EXIT(ROUND(LineAmount / CurrencyFactor,Currency."Amount Rounding Precision"))
            END;
            EXIT(LineAmount);
          END;
    
    // End of the lines.
    
          BEGIN
          END.
        }
        RDLDATA
        {
    ...
    
    

المتطلبات الأساسية

يجب أن يكون لديك أحد المنتجات التالية مثبتا لتطبيق هذا الإصلاح العاجل:

  • Microsoft Dynamics NAV 2013
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

معلومات الإزالة

لا يمكنك إزالة هذا الإصلاح العاجل.

الحالة

لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".

ملاحظة هذه مقالة "FAST PUBLISH" تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة هنا كما هي استجابة للقضايا الناشئة. نتيجة لسرعة إتاحتها، قد تتضمن المواد أخطاء مطبعية ويمكن مراجعتها في أي وقت دون إشعار. راجع شروط الاستخدام لاعتبارات أخرى.