يتم استخدام حساب دفتر الأستاذ العام غير الصحيح لتفاوتات الدفع عند تحديد خانة الاختيار تحذير التسامح مع الدفع في مربع الحوار إعداد دفتر الأستاذ العام في Microsoft Dynamics NAV

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

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

الأعراض

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

  • 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.

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

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

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

  1. تغيير التعليمات البرمجية في الدالة PostDtldVendLedgEntries في Gen. Jnl.-Post Line codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة 1

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance":
      BEGIN
        IF GLSetup."Pmt. Disc. Tolerance Posting" =
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts"
        THEN BEGIN
          IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc.";
          END;
        END ELSE IF GLSetup."Pmt. Disc. Tolerance Posting" =
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts"
        THEN BEGIN
          IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance":
      BEGIN
        IF GLSetup."Pmt. Disc. Tolerance Posting" =
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts"
        THEN BEGIN
          IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc.";
          END;
        END ELSE IF GLSetup."Pmt. Disc. Tolerance Posting" =
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts"
        THEN BEGIN
          IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    … 
    DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance":
      BEGIN
        IF GLSetup."Payment Tolerance Posting" =
          GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts"
        THEN BEGIN
          IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc.";
          END;
        END ELSE IF GLSetup."Payment Tolerance Posting" =
          GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts"
        THEN BEGIN
          IF (DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance":
      BEGIN
        IF GLSetup."Payment Tolerance Posting" =
          GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts"
        THEN BEGIN
          IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Tolerance Credit Acc.";
          END;
        END ELSE IF GLSetup."Payment Tolerance Posting" =
          GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts"
        THEN BEGIN
          IF (-DtldCVLedgEntryBuf."Amount (LCY)" >= 0) THEN BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Debit Acc.";
          END ELSE BEGIN
            VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
            PaymentTolAcc := VendPostingGr."Payment Disc. Credit Acc.";
    …
    
  2. تغيير التعليمات البرمجية في الدالة AutoEntrForDtldVendLedgEntries في Gen. Jnl.-Post Line codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة 1

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance":
      BEGIN
        CASE GLSetup."Pmt. Disc. Tolerance Posting" OF
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts":
            BEGIN
              IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Credit Acc.";
              END;
            END;
          GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts":
            BEGIN
              IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
                AccNo := VendPostingGr."Payment Disc. Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
                AccNo := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Discount Tolerance":
      BEGIN
        CASE GLSetup."Pmt. Disc. Tolerance Posting" OF
            GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Tolerance Accounts":
              BEGIN
                IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                  VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
                  AccNo := VendPostingGr."Payment Tolerance Debit Acc.";
                END ELSE BEGIN
                  VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
                  AccNo := VendPostingGr."Payment Tolerance Credit Acc.";
                END;
              END;
            GLSetup."Pmt. Disc. Tolerance Posting"::"Payment Discount Accounts":
              BEGIN
                IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                  VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
                  AccNo := VendPostingGr."Payment Disc. Debit Acc.";
                END ELSE BEGIN
                  VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
                  AccNo := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance":
      BEGIN
        CASE GLSetup."Payment Tolerance Posting" OF
          GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts":
            BEGIN
              IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Credit Acc.";
              END;
            END;
          GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts":
            BEGIN
              IF DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
                AccNo := VendPostingGr."Payment Disc. Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
                AccNo := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

    …
    DtldCVLedgEntryBuf."Entry Type"::"Payment Tolerance":
      BEGIN
        CASE GLSetup."Payment Tolerance Posting" OF
          GLSetup."Payment Tolerance Posting"::"Payment Tolerance Accounts":
            BEGIN
              IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Debit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Tolerance Credit Acc.");
                AccNo := VendPostingGr."Payment Tolerance Credit Acc.";
              END;
            END;
          GLSetup."Payment Tolerance Posting"::"Payment Discount Accounts":
            BEGIN
              IF -DtldCVLedgEntryBuf."Amount (LCY)" < 0 THEN BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Debit Acc.");
                AccNo := VendPostingGr."Payment Disc. Debit Acc.";
              END ELSE BEGIN
                VendPostingGr.TESTFIELD("Payment Disc. Credit Acc.");
                AccNo := VendPostingGr."Payment Disc. Credit Acc.";
    …
    

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

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

  • 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:

981697 يتم استخدام حساب G/L غير صحيح عند نشر دفعة لتطبيق فاتورة حيث تم استخدام "ضريبة القيمة المضافة الكاملة" إذا تم تمكين إعداد "ضبط خصم الدفع" في نموذج "إعداد دفتر الأستاذ العام" في Microsoft Dynamics NAV 2009

الحالة

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

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