تنطبق هذه المقالة على Microsoft Dynamics NAV لجميع البلدان وجميع اللغات المحلية.
الأعراض
ضع في اعتبارك السيناريو التالي في Microsoft Dynamics NAV 2009:
- يمكنك تطبيق 2558516 الإصلاح العاجل.
لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرض المقالة في قاعدة معارف Microsoft:
2558516 يتم حساب حقل "الدفع المسبق Amt Excl. VAT" بشكل غير صحيح بعد تغيير قيمة "الدفع المسبق ٪" بترتيب في Microsoft Dynamics NAV 2009 - يمكنك نشر فاتورة الدفع المسبق لأمر تم تحديد حقل ٪Prepayment فيه.
- تقوم جزئيا بشحن بعض وحدات الطلب وفواتيرها.
- إعادة فتح الطلب.
- يمكنك تغيير قيمة ٪Prepayment بالترتيب.
في هذا السيناريو، يتم حساب حقل الدفع المسبق Amt Excl. VAT بشكل غير صحيح.
تحدث هذه المشكلة في المنتجات التالية:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
الدقة
معلومات الإصلاح العاجل
يتوفر الآن إصلاح عاجل مدعوم من 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.
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.
تغييرات التعليمات البرمجية
ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.
لحل هذه المشكلة، اتبع الخطوات التالية:
تغيير التعليمات البرمجية في الدالة UpdateAmounts في جدول Sales Line (37) كما يلي:
التعليمات البرمجية الموجودة... FIELDERROR("Unit Price",STRSUBSTNO(Text047,FIELDCAPTION("Prepayment %"))); END; IF SalesHeader."Document Type" <> SalesHeader."Document Type"::Invoice THEN BEGIN "Prepayment VAT Difference" := 0; // Delete the following lines. IF "Quantity Invoiced" = 0 THEN BEGIN "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv.")); END ELSE BEGIN IF "Prepayment %" <> 0 THEN "Prepmt. Line Amount" := "Prepmt. Amt. Inv." + ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100, Currency."Amount Rounding Precision") ELSE "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" > "Line Amount" THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Line Amount")); END; // End of the lines. END; InitOutstandingAmount; IF (CurrFieldNo <> 0) AND NOT ((Type = Type::Item) AND (CurrFieldNo = FIELDNO("No.")) AND (Quantity <> 0) AND ...رمز الاستبدال
... FIELDERROR("Unit Price",STRSUBSTNO(Text047,FIELDCAPTION("Prepayment %"))); END; IF SalesHeader."Document Type" <> SalesHeader."Document Type"::Invoice THEN BEGIN "Prepayment VAT Difference" := 0; // Add the following lines. "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text049,"Prepmt. Amt. Inv.")); // End of the lines. END; InitOutstandingAmount; IF (CurrFieldNo <> 0) AND NOT ((Type = Type::Item) AND (CurrFieldNo = FIELDNO("No.")) AND (Quantity <> 0) AND ...تغيير التعليمات البرمجية في الدالة UpdateAmounts في جدول سطر الشراء (39) كما يلي:
التعليمات البرمجية الموجودة... FIELDERROR("Direct Unit Cost",STRSUBSTNO(Text043,FIELDCAPTION("Prepayment %"))); END; IF PurchHeader."Document Type" <> PurchHeader."Document Type"::Invoice THEN BEGIN "Prepayment VAT Difference" := 0; // Delete the following lines. IF "Quantity Invoiced" = 0 THEN BEGIN "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv.")); END ELSE BEGIN IF "Prepayment %" <> 0 THEN "Prepmt. Line Amount" := "Prepmt. Amt. Inv." + ROUND("Line Amount" * (Quantity - "Quantity Invoiced") / Quantity * "Prepayment %" / 100, Currency."Amount Rounding Precision") ELSE "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" > "Line Amount" THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Line Amount")); END; // End of the lines. END; IF PurchHeader.Status = PurchHeader.Status::Released THEN UpdateVATAmounts; ...رمز الاستبدال
... FIELDERROR("Direct Unit Cost",STRSUBSTNO(Text043,FIELDCAPTION("Prepayment %"))); END; IF PurchHeader."Document Type" <> PurchHeader."Document Type"::Invoice THEN BEGIN "Prepayment VAT Difference" := 0; // Add the following lines. "Prepmt. Line Amount" := ROUND("Line Amount" * "Prepayment %" / 100,Currency."Amount Rounding Precision"); IF "Prepmt. Line Amount" < "Prepmt. Amt. Inv." THEN FIELDERROR("Prepmt. Line Amount",STRSUBSTNO(Text037,"Prepmt. Amt. Inv.")); // End of the lines. END; IF PurchHeader.Status = PurchHeader.Status::Released THEN UpdateVATAmounts; ...تغيير التعليمات البرمجية في الدالة Code في Sales-Post Prepayments codeunit (442) كما يلي:
التعليمات البرمجية الموجودة... REPEAT IF SalesLine."Prepmt. Line Amount" <> SalesLine."Prepmt. Amt. Inv." THEN BEGIN SalesLine."Prepmt. Amt. Inv." := SalesLine."Prepmt. Line Amount"; SalesLine."Prepmt. Amount Inv. Incl. VAT" := SalesLine."Prepmt. Amt. Incl. VAT"; // Delete the following line. SalesLine.CalcPrepaymentToDeduct; SalesLine."Prepmt VAT Diff. to Deduct" := SalesLine."Prepmt VAT Diff. to Deduct" + SalesLine."Prepayment VAT Difference"; SalesLine."Prepayment VAT Difference" := 0; SalesLine.MODIFY; ...رمز الاستبدال
... REPEAT IF SalesLine."Prepmt. Line Amount" <> SalesLine."Prepmt. Amt. Inv." THEN BEGIN SalesLine."Prepmt. Amt. Inv." := SalesLine."Prepmt. Line Amount"; SalesLine."Prepmt. Amount Inv. Incl. VAT" := SalesLine."Prepmt. Amt. Incl. VAT"; // Add the following line. SalesLine."Prepmt Amt to Deduct" := SalesLine."Prepmt. Amt. Inv." - SalesLine."Prepmt Amt Deducted"; SalesLine."Prepmt VAT Diff. to Deduct" := SalesLine."Prepmt VAT Diff. to Deduct" + SalesLine."Prepayment VAT Difference"; SalesLine."Prepayment VAT Difference" := 0; SalesLine.MODIFY; ...تغيير التعليمات البرمجية في الدالة Code في Purchase-Post Prepayments codeunit (444) كما يلي:
التعليمات البرمجية الموجودة... REPEAT IF PurchLine."Prepmt. Line Amount" <> PurchLine."Prepmt. Amt. Inv." THEN BEGIN PurchLine."Prepmt. Amt. Inv." := PurchLine."Prepmt. Line Amount"; PurchLine."Prepmt. Amount Inv. Incl. VAT" := PurchLine."Prepmt. Amt. Incl. VAT"; // Delete the following line. PurchLine.CalcPrepaymentToDeduct; PurchLine."Prepmt VAT Diff. to Deduct" := PurchLine."Prepmt VAT Diff. to Deduct" + PurchLine."Prepayment VAT Difference"; PurchLine."Prepayment VAT Difference" := 0; PurchLine.MODIFY; ...رمز الاستبدال
... REPEAT IF PurchLine."Prepmt. Line Amount" <> PurchLine."Prepmt. Amt. Inv." THEN BEGIN PurchLine."Prepmt. Amt. Inv." := PurchLine."Prepmt. Line Amount"; PurchLine."Prepmt. Amount Inv. Incl. VAT" := PurchLine."Prepmt. Amt. Incl. VAT"; // Add the following line. PurchLine."Prepmt Amt to Deduct" := PurchLine."Prepmt. Amt. Inv." - PurchLine."Prepmt Amt Deducted"; PurchLine."Prepmt VAT Diff. to Deduct" := PurchLine."Prepmt VAT Diff. to Deduct" + PurchLine."Prepayment VAT Difference"; PurchLine."Prepayment VAT Difference" := 0; PurchLine.MODIFY; ...
المتطلبات الأساسية
يجب أن يكون لديك أحد المنتجات التالية مثبتا لتطبيق هذا الإصلاح العاجل:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
معلومات الإزالة
لا يمكنك إزالة هذا الإصلاح العاجل.
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
ملاحظة هذه مقالة "FAST PUBLISH" تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة هنا كما هي استجابة للقضايا الناشئة. نتيجة لسرعة إتاحتها، قد تتضمن المواد أخطاء مطبعية ويمكن مراجعتها في أي وقت دون إشعار. راجع شروط الاستخدام لاعتبارات أخرى.