لا يتم حساب ضريبة القيمة المضافة غير القابلة للخصم ونشرها عند ترحيل الفواتير من الموردين الأجانب في إصدار بلجيكا من Microsoft Dynamics NAV

ينطبق على
Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

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

تنطبق هذه المقالة على Microsoft Dynamics NAV للبلدان واللغات المحلية التالية.

  • بلجيكا (الفرنسية) (fr-be)
  • بلجيكا (الهولندية) (nl-be)

الأعراض

في إصدار بلجيكا من Microsoft Dynamics NAV، عند نشر فاتورة من مورد أجنبي، حيث يجب ترحيل ضريبة القيمة المضافة غير القابلة للخصم (VAT)، لا يتم حساب ضريبة القيمة المضافة غير القابلة للخصم وترحيلها للفاتورة التي تم ترحيلها. تحدث هذه المشكلة إذا تم تعيين نوع حساب ضريبة القيمة المضافة إلى "عكس رسوم ضريبة القيمة المضافة".

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

  • إصدار بلجيكا من Microsoft Dynamics NAV 2009 مع حزمة الخدمة 1 (SP1)
  • إصدار بلجيكا من Microsoft Dynamics NAV 5.0 مع SP1

الدقة

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

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة 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.

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

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

ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.

لتثبيت هذا الإصلاح العاجل، قم بتغيير التعليمات البرمجية في Purch.-Post codeunit (90).

اتبع هذه الخطوات للقيام بذلك:

  1. في القائمة عرض ، انقر فوق C/AL Globals، ثم أضف المتغيرات التالية في علامة التبويب Variables :
    المتغير الأول:

    • الاسم: TotalNonDeductVATForRChargeVAT
    • DataType: عشري

    المتغير الثاني:

    • الاسم: TotalNonDeductVATFCYForRCVAT
    • DataType: عشري

    المتغير الثالث:

    • الاسم: PurchLineForReverseChargeVAT
    • نوع البيانات: سجل
    • النوع الفرعي: خط الشراء
    • في القائمة عرض ، انقر فوق خصائص، ثم قم بتعيين الخاصية المؤقتة إلى "نعم".
  2. تغيير التعليمات البرمجية في مشغل OnRun كما يلي:
    التعليمات البرمجية الموجودة

    ...
    
    TempVATAmountLineRemainder.DELETEALL;
    PurchLine.CalcVATAmountLines(1,PurchHeader,CombinedPurchLineTemp,TempVATAmountLine);
    
    
    IF PurchLine.FINDSET THEN
    REPEAT
    JobPurchLine := PurchLine;
    ...
    
    
    

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

    ....
    
    TempVATAmountLineRemainder.DELETEALL;
    PurchLine.CalcVATAmountLines(1,PurchHeader,CombinedPurchLineTemp,TempVATAmountLine);
    
    PurchLineForReverseChargeVAT.RESET; // Add this line. 
    PurchLineForReverseChargeVAT.DELETEALL; // Add this line. 
    
    IF PurchLine.FINDSET THEN
    REPEAT
    JobPurchLine := PurchLine;
    ....
    
    

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

    ...
    
    END ELSE
    PurchLine.TESTFIELD(Amount,0);
    
    
    RoundAmount(PurchLine."Qty. to Invoice");
    
    IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    ReverseAmount(PurchLine);
    ReverseAmount(PurchLineACY);
    END;
    RemQtyToBeInvoiced := PurchLine."Qty. to Invoice";
    ...
    
    

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

    ...
    
    END ELSE
    PurchLine.TESTFIELD(Amount,0);
    
    PurchLineForReverseChargeVAT := PurchLine; // Add this line. 
    
    RoundAmount(PurchLine."Qty. to Invoice");
    
    IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    ReverseAmount(PurchLine);
    ReverseAmount(PurchLineACY);
    ReverseAmount(PurchLineForReverseChargeVAT); // Add this line. 
    END;
    PurchLineForReverseChargeVAT.INSERT; // Add this line. 
    RemQtyToBeInvoiced := PurchLine."Qty. to Invoice";
    ...
    
    

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

    ...
    
    CASE InvPostingBuffer[1]."VAT Calculation Type" OF
    InvPostingBuffer[1]."VAT Calculation Type"::"Reverse Charge VAT":
    // Delete the following lines. 
    BEGIN 
    VATPostingSetup.GET( 
    InvPostingBuffer[1]."VAT Bus. Posting Group",InvPostingBuffer[1]."VAT Prod. Posting Group");
    InvPostingBuffer[1]."VAT Amount" := 
    ROUND( 
    (InvPostingBuffer[1].Amount - 
    InvPostingBuffer[1]."Line Discount Amount" - 
    InvPostingBuffer[1]."Inv. Discount Amount") * 
    VATPostingSetup."VAT %" / 100);
    InvPostingBuffer[1]."VAT Amount (ACY)" := 
    ROUND(
    (InvPostingBuffer[1]."Amount (ACY)" - 
    InvPostingBuffer[1]."Line Discount Amt. (ACY)" - 
    InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") * 
    VATPostingSetup."VAT %" / 100,Currency."Amount Rounding Precision"); 
    END; 
    // The end of the lines. 
    InvPostingBuffer[1]."VAT Calculation Type"::"Sales Tax":
    ....
    
    

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

    ...
    
    CASE InvPostingBuffer[1]."VAT Calculation Type" OF
    InvPostingBuffer[1]."VAT Calculation Type"::"Reverse Charge VAT":
    CalcAmtVATForReversechargeVAT; // Add this line. 
    InvPostingBuffer[1]."VAT Calculation Type"::"Sales Tax":
    ...
    
    

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

    ....
    
    GenJnlLine."Currency Code" := "Currency Code";
    // Delete the following lines. 
    GenJnlLine.Amount := -TotalPurchLine."Amount Including VAT";
    GenJnlLine."Source Currency Code" := "Currency Code"; 
    GenJnlLine."Source Currency Amount" := -TotalPurchLine."Amount Including VAT"; 
    GenJnlLine."Amount (LCY)" := -TotalPurchLineLCY."Amount Including VAT"; 
    // The end of the lines. 
    IF PurchHeader."Currency Code" = '' THEN
    GenJnlLine."Currency Factor" := 1
    ...
    
    

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

    ....
    
    GenJnlLine."Currency Code" := "Currency Code";
    // Add the following lines. 
    GenJnlLine.Amount := -(TotalPurchLine."Amount Including VAT" + TotalNonDeductVATFCYForRCVAT);
    GenJnlLine."Source Currency Code" := "Currency Code"; 
    GenJnlLine."Source Currency Amount" := -(TotalPurchLine."Amount Including VAT" + TotalNonDeductVATFCYForRCVAT);
    GenJnlLine."Amount (LCY)" := -(TotalPurchLineLCY."Amount Including VAT" + TotalNonDeductVATForRChargeVAT);
    // The end of the new lines. 
    IF PurchHeader."Currency Code" = '' THEN
    GenJnlLine."Currency Factor" := 1
    ...
    
    
  3. أضف دالة جديدة "CalcAmtVATForReversechargeVAT". اتبع هذه الخطوات للقيام بذلك:

    1. في القائمة عرض ، انقر فوق C/AL Globals، وأضف ما يلي في علامة التبويب Functions كما يلي:

      • الاسم: CalcAmtVATForReversechargeVAT
    2. انقر فوق Local، وأضف ما يلي في علامة التبويب Variables :
      المتغير الأول:

      • الاسم: InvPostingVATAmountFCY
      • DataType: عشري

      المتغير الثاني:

      • الاسم: NonDeductVATForReversChargeVAT
      • DataType: عشري

      المتغير الثالث:

      • الاسم: NonDeductVATACYForRevsChargVA
      • DataType: عشري

      المتغير الرابع:

      • الاسم: NonDeductVATFCYForRevsChargVAT
      • DataType: عشري
    3. أضف أسطر التعليمات البرمجية التالية لمشغل CalcAmtVATForReversechargeVAT كما يلي:

      VATPostingSetup.GET(
      InvPostingBuffer[1]."VAT Bus. Posting Group",InvPostingBuffer[1]."VAT Prod. Posting Group");
      PurchLineForReverseChargeVAT.RESET;
      PurchLineForReverseChargeVAT.SETRANGE("Line No.",InvPostingBuffer[1]."Line No.");
      PurchLineForReverseChargeVAT.FINDFIRST;
      NonDeductVATForReversChargeVAT :=
      ROUND(
      (InvPostingBuffer[1].Amount -
      InvPostingBuffer[1]."Line Discount Amount" -
      InvPostingBuffer[1]."Inv. Discount Amount") *
      VATPostingSetup."VAT %" / 100 *
      PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100);
      NonDeductVATACYForRevsChargVAT :=
      ROUND(
      (InvPostingBuffer[1]."Amount (ACY)" -
      InvPostingBuffer[1]."Line Discount Amt. (ACY)" -
      InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") *
      VATPostingSetup."VAT %" / 100 *
      PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100,
      Currency."Amount Rounding Precision");
      NonDeductVATFCYForRevsChargVAT :=
      ROUND(
      (PurchLineForReverseChargeVAT.Amount -
      InvPostingBuffer[1]."Line Discount Amount" -
      InvPostingBuffer[1]."Inv. Discount Amount") *
      VATPostingSetup."VAT %" / 100 *
      PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100,
      Currency."Amount Rounding Precision");
      InvPostingBuffer[1]."VAT Amount" :=
      ROUND(
      (InvPostingBuffer[1].Amount -
      InvPostingBuffer[1]."Line Discount Amount" -
      InvPostingBuffer[1]."Inv. Discount Amount") *
      VATPostingSetup."VAT %" / 100) -
      NonDeductVATForReversChargeVAT;
      InvPostingBuffer[1]."VAT Amount (ACY)" :=
      ROUND(
      (InvPostingBuffer[1]."Amount (ACY)" -
      InvPostingBuffer[1]."Line Discount Amt. (ACY)" -
      InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") *
      VATPostingSetup."VAT %" / 100,
      Currency."Amount Rounding Precision") -
      NonDeductVATACYForRevsChargVAT;
      InvPostingVATAmountFCY :=
      ROUND(
      (PurchLineForReverseChargeVAT.Amount -
      PurchLineForReverseChargeVAT."Line Discount Amount" -
      PurchLineForReverseChargeVAT."Inv. Discount Amount") *
      VATPostingSetup."VAT %" / 100,
      Currency."Amount Rounding Precision") -
      NonDeductVATFCYForRevsChargVAT;
      InvPostingBuffer[1].Amount := InvPostingBuffer[1].Amount + NonDeductVATForReversChargeVAT;
      InvPostingBuffer[1]."Amount (ACY)" := InvPostingBuffer[1]."Amount (ACY)" + NonDeductVATACYForRevsChargVAT;
      InvPostingBuffer[1]."VAT Base Amount" := InvPostingBuffer[1]."VAT Base Amount" + NonDeductVATForReversChargeVAT;
      TotalNonDeductVATForRChargeVAT := TotalNonDeductVATForRChargeVAT + NonDeductVATForReversChargeVAT;
      TotalNonDeductVATFCYForRCVAT := TotalNonDeductVATFCYForRCVAT + NonDeductVATFCYForRevsChargVAT;
      
      
      

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

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

  • إصدار بلجيكا من Microsoft Dynamics NAV 2009 مع SP1
  • إصدار بلجيكا من Microsoft Dynamics NAV 5.0 مع SP1

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

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

الحالة

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

لا تقدم MICROSOFT و/أو مورديها أي إقرارات أو ضمانات حول ملاءمة المعلومات الواردة في المستندات والرسومات ذات الصلة المنشورة على هذا الموقع ("المواد") أو موثوقيتها أو دقتها لأي غرض.

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