القيم الموجودة في حقلي Cost Amount (Expected)(ACY) و Cost Amount (Actual)(ACY) غير صحيحة بعد نشر شحنة تراجع في Microsoft Dynamics NAV

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

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

الأعراض

افترض أنك قمت بتعيين عملة تقارير إضافية في إعداد دفتر الأستاذ العام في الإدارة المالية في Microsoft Dynamics NAV. بعد نشر شحنة تراجع، ستلاحظ أن القيم الموجودة في حقول Cost Amount (Expected)(ACY) و Cost Amount (Actual)(ACY) غير صحيحة في إدخالات قيمة المخزون/إدخالات دفتر الأستاذ للعنصر.
تحدث هذه المشكلة في المنتجات التالية:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

الدقة

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

يتوفر الآن إصلاح عاجل مدعوم من 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.

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

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

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

  1. تغيير التعليمات البرمجية في الدالة InsertValueEntry في العنصر Jnl.-Post Line codeunit (22) كما يلي:
    بالنسبة للإصدار العالمي ل Microsoft Dynamics NAV 5.0 SP1 وMicrosoft Dynamics NAV 2009 وMicrosoft Dynamics NAV 2009 SP1 وMicrosoft Dynamics NAV 2009 R2
    التعليمات البرمجية الموجودة

    ...
             ELSE
            InvoicedQty := ValueEntry."Valued Quantity";
        END ELSE
          InvoicedQty := ValueEntry."Invoiced Quantity";
        CalcExpectedCost(
          ItemLedgEntry."Entry No.",
          InvoicedQty,
          ItemLedgEntry.Quantity,
          ValueEntry."Cost Amount (Expected)",
          ValueEntry."Cost Amount (Expected) (ACY)",
          ValueEntry."Sales Amount (Expected)",
          ValueEntry."Purchase Amount (Expected)",
          ItemLedgEntry.Quantity = ItemLedgEntry."Invoiced Quantity");
    // Delete the following lines.
        IF (InvdValueEntry."Cost Amount (Expected)" <>0) AND (ValueEntry."Cost Amount (Expected)" <> 0) THEN
          ValueEntry."Cost Amount (Expected)" :=
           ValueEntry."Cost Amount (Expected)" - InvdValueEntry."Cost Amount (Expected)";
        IF (InvdValueEntry."Cost Amount (Expected) (ACY)" <> 0) AND (ValueEntry."Cost Amount (Expected) (ACY)"<>0) THEN
          ValueEntry."Cost Amount (Expected) (ACY)" :=
            ValueEntry."Cost Amount (Expected) (ACY)" - InvdValueEntry."Cost Amount (Expected) (ACY)";
    // End of the deleted lines.
      END;
    
      IF ValueEntry.Inventoriable THEN
        PostInventoryToGL(ValueEntry);
      IF  ItemLedgEntry."Job No." <> '' THEN BEGIN
    ...
    

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

    ...
           ELSE
            InvoicedQty := ValueEntry."Valued Quantity";
        END ELSE
          InvoicedQty := ValueEntry."Invoiced Quantity";
        CalcExpectedCost(
    
    // Add the following line.
          ValueEntry,
    // End of the added line.
    
          ItemLedgEntry."Entry No.",
          InvoicedQty,
          ItemLedgEntry.Quantity,
          ValueEntry."Cost Amount (Expected)",
          ValueEntry."Cost Amount (Expected) (ACY)",
          ValueEntry."Sales Amount (Expected)",
          ValueEntry."Purchase Amount (Expected)",
          ItemLedgEntry.Quantity = ItemLedgEntry."Invoiced Quantity");
      END;
    
      IF ValueEntry.Inventoriable THEN
        PostInventoryToGL(ValueEntry);
      IF  ItemLedgEntry."Job No." <> '' THEN BEGIN
    ...
    

    بالنسبة لإصدار أمريكا الشمالية ل Microsoft Dynamics NAV 5.0 SP1 وMicrosoft Dynamics NAV 2009 وMicrosoft Dynamics NAV 2009 SP1 وMicrosoft Dynamics NAV 2009 R2
    التعليمات البرمجية الموجودة

    ...
          ELSE
            InvoicedQty := ValueEntry."Valued Quantity";
        END ELSE
          InvoicedQty := ValueEntry."Invoiced Quantity";
        IF NOT Kitting THEN BEGIN
          CalcExpectedCost(
            ItemLedgEntry."Entry No.",
            InvoicedQty,
            ItemLedgEntry.Quantity,
            ValueEntry."Cost Amount (Expected)",
            ValueEntry."Cost Amount (Expected) (ACY)",
            ValueEntry."Sales Amount (Expected)",
            ValueEntry."Purchase Amount (Expected)",
            ItemLedgEntry.Quantity = ItemLedgEntry."Invoiced Quantity");
    
    // Delete the following lines.
          IF (InvdValueEntry."Cost Amount (Expected)" <>0) AND (ValueEntry."Cost Amount (Expected)" <>0) THEN
            ValueEntry."Cost Amount (Expected)" :=
             ValueEntry."Cost Amount (Expected)" - InvdValueEntry."Cost Amount (Expected)";
          IF (InvdValueEntry."Cost Amount (Expected) (ACY)" <> 0) AND (ValueEntry."Cost Amount (Expected) (ACY)" <> 0) THEN
            ValueEntry."Cost Amount (Expected) (ACY)" :=
              ValueEntry."Cost Amount (Expected) (ACY)" - InvdValueEntry."Cost Amount (Expected) (ACY)";
    // End of the deleted lines.
    
        END;
      END;
    
      IF ValueEntry.Inventoriable THEN
        PostInventoryToGL(ValueEntry);
      IF  ItemLedgEntry."Job No." <>'' THEN BEGIN  
    ...
    

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

    ...
          ELSE
            InvoicedQty := ValueEntry."Valued Quantity";
        END ELSE
          InvoicedQty := ValueEntry."Invoiced Quantity";
        IF NOT Kitting THEN BEGIN
          CalcExpectedCost(
    // Add the following line.
            ValueEntry,
    // End of the added line.
    
            ItemLedgEntry."Entry No.",
            InvoicedQty,
            ItemLedgEntry.Quantity,
            ValueEntry."Cost Amount (Expected)",
            ValueEntry."Cost Amount (Expected) (ACY)",
            ValueEntry."Sales Amount (Expected)",
            ValueEntry."Purchase Amount (Expected)",
            ItemLedgEntry.Quantity = ItemLedgEntry."Invoiced Quantity");
        END;
      END;
    
      IF ValueEntry.Inventoriable THEN
        PostInventoryToGL(ValueEntry);
      IF  ItemLedgEntry."Job No."<>'' THEN BEGIN
    ...
    
  2. تغيير التعليمات البرمجية في الدالة CalcExpectedCost في العنصر Jnl.-Post Line codeunit (22) كما يلي:
    بالنسبة للإصدار العالمي وإصدار أمريكا الشمالية ل Microsoft Dynamics NAV 5.0 SP1 وMicrosoft Dynamics NAV 2009 وMicrosoft Dynamics NAV 2009 SP1 وMicrosoft Dynamics NAV 2009 R2
    التعليمات البرمجية الموجودة 1

    ...
           LOCAL PROCEDURE CalcExpectedCost@60(ItemLedgEntryNo@1003 : Integer;InvoicedQty@1006 : Decimal;Quantity@1005 : Decimal;VAR ExpectedCost@1001 : Decimal;VAR ExpectedCostACY@1002 : Decimal;VAR ExpectedSalesAmt@1007 : Decimal;VAR ExpectedPurchAmt@1008 : Decimal;CalcReminder@1004 : Boolean);  
    ...
    

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

    ...
          LOCAL PROCEDURE CalcExpectedCost@60(VAR InvdValueEntry@1009 : Record 5802;ItemLedgEntryNo@1003 : Integer;InvoicedQty@1006 : Decimal;Quantity@1005 : Decimal;VAR ExpectedCost@1001 : Decimal;VAR ExpectedCostACY@1002 : Decimal;VAR ExpectedSalesAmt@1007 : Decimal;VAR ExpectedPurchAmt@1008 : Decimal;CalcReminder@1004 : Boolean);
    ...
    

    التعليمات البرمجية الحالية 2 ل Microsoft Dynamics NAV 5.0 SP1 وMicrosoft Dynamics NAV 2009

    ...
              "Sales Amount (Expected)","Purchase Amount (Expected)");
          ExpectedCost :=  -"Cost Amount (Expected)";
          ExpectedCostACY := -"Cost Amount (Expected) (ACY)";
          ExpectedSalesAmt := -"Sales Amount (Expected)";
          ExpectedPurchAmt := -"Purchase Amount (Expected)";
        END ELSE BEGIN
          REPEAT
            IF "Expected Cost" THEN BEGIN
              ExpectedCost := ExpectedCost + "Cost Amount (Expected)";
              ExpectedCostACY := ExpectedCostACY + "Cost Amount (Expected) (ACY)"         
    ...
    

    رمز الاستبدال 2 ل Microsoft Dynamics NAV 5.0 SP1 وMicrosoft Dynamics NAV 2009

    ...
                "Sales Amount (Expected)","Purchase Amount (Expected)");
          ExpectedCost :=  -"Cost Amount (Expected)";
          ExpectedCostACY := -"Cost Amount (Expected) (ACY)";
          ExpectedSalesAmt := -"Sales Amount (Expected)";
          ExpectedPurchAmt := -"Purchase Amount (Expected)";
    
    // Add the following lines.
        END ELSE
          IF InvdValueEntry.Adjustment AND
             (InvdValueEntry."Entry Type" = InvdValueEntry."Entry Type"::"Direct Cost")
          THEN BEGIN
            ExpectedCost := -InvdValueEntry."Cost Amount (Actual)";
            ExpectedCostACY := -InvdValueEntry."Cost Amount (Actual) (ACY)";
            IF NOT CalledFromAdjustment THEN BEGIN
              ExpectedSalesAmt := -InvdValueEntry."Sales Amount (Actual)";
              ExpectedPurchAmt := -InvdValueEntry."Purchase Amount (Actual)";
            END
    // End of the added lines.
    
        END ELSE BEGIN
          REPEAT
            IF "Expected Cost" THEN BEGIN
              ExpectedCost := ExpectedCost + "Cost Amount (Expected)";
              ExpectedCostACY := ExpectedCostACY + "Cost Amount (Expected) (ACY)";
    ...
    

    التعليمات البرمجية الحالية 3 ل Microsoft Dynamics NAV 2009 SP1 وMicrosoft Dynamics NAV 2009 R2

    …
    IF FINDSET AND "Expected Cost" THEN
      IF CalcReminder THEN BEGIN
        CALCSUMS(
             "Cost Amount (Expected)","Cost Amount (Expected) (ACY)",
             "Sales Amount (Expected)","Purchase Amount (Expected)");
        ExpectedCost :=  -"Cost Amount (Expected)";
        ExpectedCostACY := -"Cost Amount (Expected) (ACY)";
        IF NOT CalledFromAdjustment THEN BEGIN
           ExpectedSalesAmt := -"Sales Amount (Expected)";
           ExpectedPurchAmt := -"Purchase Amount (Expected)";
        END
      END ELSE BEGIN
            REPEAT
               IF "Expected Cost" THEN BEGIN
                 ExpectedCost := ExpectedCost + "Cost Amount (Expected)";
                 ExpectedCostACY := ExpectedCostACY + "Cost Amount (Expected) (ACY)";
    …
    

    رمز الاستبدال 3 ل Microsoft Dynamics NAV 2009 SP1 وMicrosoft Dynamics NAV 2009 R2

    …
    IF FINDSET AND "Expected Cost" THEN
      IF CalcReminder THEN BEGIN
        CALCSUMS(
             "Cost Amount (Expected)","Cost Amount (Expected) (ACY)",
             "Sales Amount (Expected)","Purchase Amount (Expected)");
        ExpectedCost :=  -"Cost Amount (Expected)";
        ExpectedCostACY := -"Cost Amount (Expected) (ACY)";
        IF NOT CalledFromAdjustment THEN BEGIN
           ExpectedSalesAmt := -"Sales Amount (Expected)";
           ExpectedPurchAmt := -"Purchase Amount (Expected)";
        END
    
    // Add the following lines.   
         END ELSE
           IF InvdValueEntry.Adjustment AND
              (InvdValueEntry."Entry Type" = InvdValueEntry."Entry Type"::"Direct Cost")
           THEN BEGIN
             ExpectedCost := -InvdValueEntry."Cost Amount (Actual)";
             ExpectedCostACY := -InvdValueEntry."Cost Amount (Actual) (ACY)";
             IF NOT CalledFromAdjustment THEN BEGIN
               ExpectedSalesAmt := -InvdValueEntry."Sales Amount (Actual)";
               ExpectedPurchAmt := -InvdValueEntry."Purchase Amount (Actual)";
             END
    // End of the added lines.
    
      END ELSE BEGIN
           REPEAT
                IF "Expected Cost" THEN BEGIN
                  ExpectedCost := ExpectedCost + "Cost Amount (Expected)";
                  ExpectedCostACY := ExpectedCostACY + "Cost Amount (Expected) (ACY)";
    …
    
    

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

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

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

                
              

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

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

الحالة

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

المراجع

VSTF DynamicsNAV SE: 266892

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