تنطبق هذه المقالة على Microsoft Dynamics NAV لجميع البلدان وجميع اللغات المحلية.
الأعراض
افترض أن لديك عميلا لديه فاتورة مستحقة اليوم في Microsoft Dynamics NAV. إذا قمت بتعيين تاريخ العمل لهذا اليوم، يتم تضمين الفاتورة في حقل المبالغ المتأخرة (LCY) اعتبارا من حقل التاريخ في مربع الحوار إحصائيات العملاء بشكل غير صحيح. بالإضافة إلى ذلك، عند إنشاء فاتورة مبيعات جديدة للعميل، يتم تضمين الفاتورة في المبلغ المتأخر في مربع الحوار التحقق من حد الائتمان . ومع ذلك، فإن الفواتير المستحقة اليوم ليست متأخرة بعد. يجب أن يتأخروا غدا
تحدث هذه المشكلة في المنتجات التالية:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
الدقة
معلومات الإصلاح العاجل
يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV التالية أو إصدار 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.
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.
تغييرات التعليمات البرمجية
ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.
لحل هذه المشكلة، اتبع الخطوات التالية:
أضف دالتين جديدتين في جدول إدخال دفتر الأستاذ (21) كما يلي:
التعليمات البرمجية الموجودة... PROCEDURE GetOriginalCurrencyFactor@2() : Decimal; BEGIN IF "Original Currency Factor" = 0 THEN EXIT(1); EXIT("Original Currency Factor"); END; BEGIN END. } }رمز الاستبدال
... PROCEDURE GetOriginalCurrencyFactor@2() : Decimal; BEGIN IF "Original Currency Factor" = 0 THEN EXIT(1); EXIT("Original Currency Factor"); END; // Add the following lines. PROCEDURE CalcOverDueBalance@1100(CustomerNo@1101 : Code[20]) OverDueBalance : Decimal; VAR CustLedgerEntry@1102 : Record 21; BEGIN SetFiltersToCalcOverDueBalance(CustLedgerEntry,CustomerNo); IF CustLedgerEntry.FINDSET THEN BEGIN REPEAT CustLedgerEntry.CALCFIELDS("Amount (LCY)"); OverDueBalance += CustLedgerEntry."Amount (LCY)"; UNTIL (CustLedgerEntry.NEXT = 0); END ELSE OverDueBalance := 0; END; PROCEDURE SetFiltersToCalcOverDueBalance@1103(VAR CustLedgerEntry@1104 : Record 21;CustomerNo@1105 : Code[20]); BEGIN CustLedgerEntry.SETCURRENTKEY("Customer No.",Open,Positive,"Due Date","Currency Code"); CustLedgerEntry.SETRANGE("Customer No.",CustomerNo); CustLedgerEntry.SETRANGE(Open,TRUE); CustLedgerEntry.SETFILTER("Due Date",'<%1',WORKDATE); END; // End of the lines. BEGIN END. } }تغيير التعليمات البرمجية في نموذج إحصائيات العملاء (151) كما يلي:
التعليمات البرمجية الموجودة... LeaderDots=Yes; SourceExpr=STRSUBSTNO(Text000,FORMAT(CurrentDate)) } { 15 ;TextBox ;3850 ;6490 ;2750 ;440 ;ParentControl=1; InPage=0; // Delete the following line. SourceExpr="Balance Due (LCY)"; OnDrillDown=VAR DtldCustLedgEntry@1000 : Record 379; CustLedgEntry@1001 : Record 21; BEGIN ...رمز الاستبدال
... LeaderDots=Yes; SourceExpr=STRSUBSTNO(Text000,FORMAT(CurrentDate)) } { 15 ;TextBox ;3850 ;6490 ;2750 ;440 ;ParentControl=1; InPage=0; // Add the following line. SourceExpr=CalcOverDueBalance; OnDrillDown=VAR DtldCustLedgEntry@1000 : Record 379; CustLedgEntry@1001 : Record 21; BEGIN ...أضف دالة جديدة في نموذج إحصائيات العملاء (151) كما يلي:
التعليمات البرمجية الموجودة... CODE { VAR Text000@1000 : TextConst 'ENU=Overdue Amounts ($) as of %1'; ValueEntry@1017 : Record 5802; DateFilterCalc@1001 : Codeunit 358; CustDateFilter@1002 : ARRAY [4] OF Text[30]; CustDateName@1003 : ARRAY [4] OF Text[30]; TotalAmountLCY@1004 : Decimal; CurrentDate@1005 : Date; CustSalesLCY@1006 : ARRAY [4] OF Decimal; AdjmtCostLCY@1022 : ARRAY [4] OF Decimal; CustProfit@1007 : ARRAY [4] OF Decimal; ProfitPct@1008 : ARRAY [4] OF Decimal; AdjCustProfit@1024 : ARRAY [4] OF Decimal; AdjProfitPct@1023 : ARRAY [4] OF Decimal; CustInvDiscAmountLCY@1009 : ARRAY [4] OF Decimal; CustPaymentDiscLCY@1010 : ARRAY [4] OF Decimal; CustPaymentDiscTolLCY@1019 : ARRAY [4] OF Decimal; CustPaymentTolLCY@1018 : ARRAY [4] OF Decimal; CustReminderChargeAmtLCY@1011 : ARRAY [4] OF Decimal; CustFinChargeAmtLCY@1012 : ARRAY [4] OF Decimal; CustCrMemoAmountsLCY@1013 : ARRAY [4] OF Decimal; CustPaymentsLCY@1014 : ARRAY [4] OF Decimal; CustRefundsLCY@1020 : ARRAY [4] OF Decimal; CustOtherAmountsLCY@1021 : ARRAY [4] OF Decimal; i@1015 : Integer; InvAmountsLCY@1016 : ARRAY [4] OF Decimal; Text001@1025 : TextConst 'ENU=Placeholder'; BEGIN END. } }رمز الاستبدال
... CODE { VAR Text000@1000 : TextConst 'ENU=Overdue Amounts ($) as of %1'; ValueEntry@1017 : Record 5802; DateFilterCalc@1001 : Codeunit 358; CustDateFilter@1002 : ARRAY [4] OF Text[30]; CustDateName@1003 : ARRAY [4] OF Text[30]; TotalAmountLCY@1004 : Decimal; CurrentDate@1005 : Date; CustSalesLCY@1006 : ARRAY [4] OF Decimal; AdjmtCostLCY@1022 : ARRAY [4] OF Decimal; CustProfit@1007 : ARRAY [4] OF Decimal; ProfitPct@1008 : ARRAY [4] OF Decimal; AdjCustProfit@1024 : ARRAY [4] OF Decimal; AdjProfitPct@1023 : ARRAY [4] OF Decimal; CustInvDiscAmountLCY@1009 : ARRAY [4] OF Decimal; CustPaymentDiscLCY@1010 : ARRAY [4] OF Decimal; CustPaymentDiscTolLCY@1019 : ARRAY [4] OF Decimal; CustPaymentTolLCY@1018 : ARRAY [4] OF Decimal; CustReminderChargeAmtLCY@1011 : ARRAY [4] OF Decimal; CustFinChargeAmtLCY@1012 : ARRAY [4] OF Decimal; CustCrMemoAmountsLCY@1013 : ARRAY [4] OF Decimal; CustPaymentsLCY@1014 : ARRAY [4] OF Decimal; CustRefundsLCY@1020 : ARRAY [4] OF Decimal; CustOtherAmountsLCY@1021 : ARRAY [4] OF Decimal; i@1015 : Integer; InvAmountsLCY@1016 : ARRAY [4] OF Decimal; Text001@1025 : TextConst 'ENU=Placeholder'; // Add the following lines. PROCEDURE CalcOverDueBalance@1000000001() : Decimal; VAR CustLedgEntry@1000000000 : Record 21; BEGIN EXIT(CustLedgEntry.CalcOverDueBalance("No.")); END; // End of the lines. BEGIN END. } }تغيير التعليمات البرمجية في الدالة ShowWarning في نموذج التحقق من حد الائتمان (343) كما يلي:
التعليمات البرمجية الموجودة... IF CheckOverDueBalance AND (SalesSetup."Credit Warnings" IN [SalesSetup."Credit Warnings"::"Both Warnings", SalesSetup."Credit Warnings"::"Overdue Balance"]) THEN BEGIN // Delete the following lines. CalcOverdueBalanceLCY; IF "Balance Due (LCY)" > 0 THEN BEGIN // End of the lines. ExitValue := ExitValue + 2; END; END; ...رمز الاستبدال
... IF CheckOverDueBalance AND (SalesSetup."Credit Warnings" IN [SalesSetup."Credit Warnings"::"Both Warnings", SalesSetup."Credit Warnings"::"Overdue Balance"]) THEN BEGIN // Add the following line. IF CalcOverDueBalance > 0 THEN BEGIN ExitValue := ExitValue + 2; END; END; ...أضف دالة جديدة في نموذج التحقق من حد الائتمان (343) كما يلي:
التعليمات البرمجية الموجودة... PROCEDURE CalcReturnAmounts@9(VAR OutstandingRetOrdersLCY2@1001 : Decimal;VAR RcdNotInvdRetOrdersLCY2@1002 : Decimal) : Decimal; BEGIN SalesLine.RESET; SalesLine.SETCURRENTKEY("Document Type","Bill-to Customer No.","Currency Code"); SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE("Bill-to Customer No.","No."); SalesLine.CALCSUMS("Outstanding Amount (LCY)","Return Rcd. Not Invd. (LCY)"); OutstandingRetOrdersLCY2 := SalesLine."Outstanding Amount (LCY)"; RcdNotInvdRetOrdersLCY2 := SalesLine."Return Rcd. Not Invd. (LCY)"; END; BEGIN END. } }رمز الاستبدال
... PROCEDURE CalcReturnAmounts@9(VAR OutstandingRetOrdersLCY2@1001 : Decimal;VAR RcdNotInvdRetOrdersLCY2@1002 : Decimal) : Decimal; BEGIN SalesLine.RESET; SalesLine.SETCURRENTKEY("Document Type","Bill-to Customer No.","Currency Code"); SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE("Bill-to Customer No.","No."); SalesLine.CALCSUMS("Outstanding Amount (LCY)","Return Rcd. Not Invd. (LCY)"); OutstandingRetOrdersLCY2 := SalesLine."Outstanding Amount (LCY)"; RcdNotInvdRetOrdersLCY2 := SalesLine."Return Rcd. Not Invd. (LCY)"; END; // Add the following lines. PROCEDURE CalcOverDueBalance@1000000000() : Decimal; VAR CustLedgEntry@1000000000 : Record 21; BEGIN EXIT(CustLedgEntry.CalcOverDueBalance("No.")); END; // End of the lines. BEGIN END. } }
المتطلبات الأساسية
يجب أن يكون لديك أحد المنتجات التالية مثبتا لتطبيق هذا الإصلاح العاجل:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
معلومات الإزالة
لا يمكنك إزالة هذا الإصلاح العاجل.
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
ملاحظة هذه مقالة "FAST PUBLISH" تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة هنا كما هي استجابة للقضايا الناشئة. نتيجة لسرعة إتاحتها، قد تتضمن المواد أخطاء مطبعية ويمكن مراجعتها في أي وقت دون إشعار. راجع شروط الاستخدام لاعتبارات أخرى.