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