ينشئ النظام مبلغا غير صحيح في دفتر اليومية Intrastat إذا قمت بنشر فاتورة تحتوي على أرقام Lot متعددة لخط عنصر في الإصدار الإيطالي من Microsoft Dynamics NAV 2009

ينطبق على
Dynamics NAV 2009

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

الأعراض

ضع في اعتبارك السيناريو التالي في الإصدار الإيطالي من Microsoft Dynamics NAV 2009 R2 وMicrosoft Dynamics NAV 2009 Service Pack 1 (SP1):

  • يمكنك إنشاء فاتورة لعنصر وتعيين كمية العنصر إلى 2.
  • يمكنك تعيين رقمين Lot سطر العنصر في مربع الحوار سطور تعقب العناصر .
  • يمكنك إضافة سطر عنصر رسوم تم تعيينه لكل عنصر تم فوترته بالمبلغ في مربع الحوار تعيينات رسوم العنصر .
  • يمكنك نشر الفاتورة.

في هذا السيناريو، ينشئ النظام كمية غير صحيحة في دفتر اليومية Intrastat. يتضمن المبلغ في دفتر يومية Intrastat فقط رسوم عنصر واحد تم فوترته بشكل غير متوقع.

الدقة

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

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

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

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

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

  1. تغيير التعليمات البرمجية في عنصر البيانات رقم 2 كما يلي:

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

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      
      // Delete the following line.
      ValueEntry2@1130016 : Record 5802;
      
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      

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

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      
    2. تغيير التعليمات البرمجية كما يلي:
      التعليمات البرمجية الموجودة 1

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      // Delete the following lines.
       ValueEntry2.COPYFILTERS(ValueEntry);
       ValueEntry2.SETRANGE("Invoiced Quantity",0);
      // End of the deleted lines.
      
      IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
      CASE ValueEntry."Item Ledger Entry Type" OF
      ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
      IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
      ...
      

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

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
      CASE ValueEntry."Item Ledger Entry Type" OF
      ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
      IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
      ...
      

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

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Cost Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Cost Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt + ValueEntry2."Cost Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

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

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

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

      ...
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Sales Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Sales Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt - ValueEntry2."Sales Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

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

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

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

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      

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

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      
      // Add the following line.
      CalcTotalItemChargeAmt;
      
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      
  2. تغيير التعليمات البرمجية في الدالة CalcTotalItemChargeAmt كما يلي:
    التعليمات البرمجية الموجودة

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

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

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    
    // Add the following lines.
     LOCAL PROCEDURE CalcTotalItemChargeAmt@1130002();
     VAR
     ValueEntry2@1130001 : Record 5802;
     ActualAmount@1130002 : Decimal;
     BEGIN
     ValueEntry2.COPYFILTERS(ValueEntry);
     ValueEntry2.SETRANGE("Invoiced Quantity",0);
     ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
     ValueEntry2.SETRANGE("Item Ledger Entry No.");
     ValueEntry2.SETFILTER("Item Charge No.",'<>%1','');
     ValueEntry2.SETRANGE("Document No.",ValueEntry."Document No.");
     IF ValueEntry2.FINDSET THEN BEGIN
     REPEAT
     ActualAmount := GetActualAmount(ValueEntry2);
     IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
     ActualAmount :=
     CurrExchRate.ExchangeAmtLCYToFCY(
     ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
     ActualAmount,AddCurrencyFactor);
     TotalAmt := TotalAmt + ActualAmount;
     UNTIL ValueEntry2.NEXT = 0;
     END;
     END;
    
     LOCAL PROCEDURE GetActualAmount@1130001(ValueEntry2@1170000000 : Record 5802) : Decimal;
     BEGIN
     CASE ValueEntry2."Item Ledger Entry Type" OF
     ValueEntry2."Item Ledger Entry Type"::Sale:
     EXIT(- ValueEntry2."Sales Amount (Actual)");
     ValueEntry2."Item Ledger Entry Type"::Purchase:
     EXIT(ValueEntry2."Cost Amount (Actual)");
     END;
     END;
    // End of the added lines.
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

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

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

  • الإصدار الإيطالي من Microsoft Dynamics NAV 2009 R2
  • الإصدار الإيطالي من Microsoft Dynamics NAV 2009 Service Pack 1

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

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

الحالة

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

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