يقترح تقرير DTA Suggest Vendor Payment (3010546) وتقرير LSV Suggest Collection (3010831) أسطرا غير صحيحة في الإصدار السويسري من Microsoft Dynamics NAV

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

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

  • الفرنسية (سويسرا) (fr-ch)
  • الألمانية (سويسرا) (gr-ch)
  • الإيطالية (سويسرا) (it-ch)

الأعراض

افترض أنك تنشر فاتورة شراء أو فاتورة مبيعات في الإصدار السويسري من Microsoft Dynamics NAV. عند تشغيل تقرير DTA Suggest Vendor Payment (3010546) في دفتر يومية الدفع أو تقرير LSV Suggest Collection (3010831) في قائمة دفتر يومية LSV باستخدام تاريخ ترحيل أقدم من تاريخ ترحيل الفاتورة، يتم اقتراح أسطر غير صحيحة. لذلك، يكون تاريخ النشر غير صحيح في إدخالات دفتر الأستاذ التفصيلي للعميل أو إدخالات leger التفصيلية للمورد بعد نشر الأسطر. في بعض الأحيان لا يمكنك نشر الأسطر وتلقي رسالة خطأ متناسقة.
تحدث هذه المشكلة في المنتجات التالية:

  • الإصدار السويسري من 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

      

السبب

تحدث هذه المشكلة لأن الفحص مفقود في تقرير DTA Suggest Vendor Payment (3010546) وفي تقرير LSV Suggest Collection (3010831). يتم تقديم الشيك لتجنب إنشاء خط دفع له تاريخ ترحيل أقدم من تاريخ ترحيل الفاتورة.

الدقة

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

يتوفر الآن إصلاح عاجل مدعوم من 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. أضف متغيرا عموميا جديدا في تقرير DTA Suggest Vendor Payment (3010546)، ثم حدد المتغير كما يلي:

    • الاسم: VendorLedgEntryTemp@1150058
    • نوع البيانات: سجل
    • النوع الفرعي: إدخال دفتر الأستاذ للمورد
    • مؤقت: نعم
  2. أضف ثابت نص جديدا في تقرير DTA Suggest Vendor Payment (3010546)، ثم حدد الثابت كما يلي:

    • الاسم: Text50000@1150064
    • القيمة الثابتة: ENU=هناك إدخال واحد أو أكثر لم يتم تقديم اقتراحات دفع له لأن تواريخ ترحيل الإدخالات أحدث من تاريخ النشر في نافذة طلب وظيفة الدفعة اقتراح مورد DTA المدفوعات. هل تريد رؤية الإدخالات؟
  3. أضف التعليمات البرمجية التالية في مشغل OnPreReport في تقرير DTA Suggest Vendor Payment (3010546):

    VendorLedgEntryTemp.DELETEALL;
    
  4. أضف التعليمات البرمجية التالية في مشغل OnPostReport في تقرير DTA Suggest Vendor Payment (3010546):

    COMMIT;
    IF NOT VendorLedgEntryTemp.ISEMPTY THEN
      IF CONFIRM(Text50000) THEN
        FORM.RUNMODAL(0,VendorLedgEntryTemp);
    
  5. تغيير التعليمات البرمجية في مشغل المورد - OnPostDataItem في تقرير DTA اقتراح دفع المورد (3010546) كما يلي:
    التعليمات البرمجية الموجودة

    d.CLOSE;
    IF NoOfLinesInserted > 0 THEN BEGIN
      WriteBalAccountLine(ToGlLine);
      MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY);
      IF NoOfVendorsWithCM > 0 THEN
        MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt)
    END ELSE
      MESSAGE(Text018,FromDueDate,ToDueDate);
    

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

    d.CLOSE;
    IF VendorLedgEntryTemp.ISEMPTY THEN BEGIN
      IF NoOfLinesInserted > 0 THEN BEGIN
        WriteBalAccountLine(ToGlLine);
        MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY);
        IF NoOfVendorsWithCM > 0 THEN
          MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt)
      END ELSE
        MESSAGE(Text018,FromDueDate,ToDueDate);
    END;
    
  6. تغيير التعليمات البرمجية في الدالة WritePmtSuggestLines في تقرير DTA Suggest Vendor Payment (3010546) كما يلي:
    التعليمات البرمجية الموجودة 1

    // CH2316.begin
     VendorLedgerEntryNo := VendEntry."Entry No.";
    // CH2316.end
    WITH ToGlLine DO BEGIN
      INIT;
    ...
    

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

    IF VendEntry."Posting Date" <= PostDate THEN BEGIN // CH0001
      // CH2316.begin
      VendorLedgerEntryNo := VendEntry."Entry No.";
      // CH2316.end
      WITH ToGlLine DO BEGIN
        INIT;
    ...
    

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

    ...
    VendorLedgerEntry2.GET(VendorLedgerEntryNo);
    VendorLedgerEntry2."On Hold" := 'DTA';
    VendorLedgerEntry2."Accepted Payment Tolerance" := 0;
    VendorLedgerEntry2.MODIFY;
    // CH2316.END
    

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

    ...
      VendorLedgerEntry2.GET(VendorLedgerEntryNo);
      VendorLedgerEntry2."On Hold" := 'DTA';
      VendorLedgerEntry2."Accepted Payment Tolerance" := 0;
      VendorLedgerEntry2.MODIFY;
    // CH2316.END
    END ELSE BEGIN
      VendorLedgEntryTemp := VendEntry;
      VendorLedgEntryTemp.INSERT;
    END;
    
  7. أضف متغيرا عموميا جديدا في تقرير LSV Suggest Collection (3010831)، ثم حدد المتغير كما يلي:

    • الاسم: TempCustLedgEntry@1150042
    • نوع البيانات: سجل
    • النوع الفرعي: إدخال دفتر الأستاذ للعميل
    • مؤقت: نعم
  8. أضف ثابت نص جديدا في تقرير LSV Suggest Collection (3010831)، ثم حدد الثابت كما يلي:

    • الاسم: Text50000@1150064
    • القيمة الثابتة: ENU=هناك إدخال واحد أو أكثر لم يتم تقديم اقتراحات مجموعة له لأن تواريخ ترحيل الإدخالات أحدث من تاريخ المجموعة في نافذة طلب مهمة دفعة LSV Collect Suggestions. هل تريد رؤية الإدخالات؟
  9. تغيير التعليمات البرمجية في مشغل OnPreReport في تقرير LSV Suggest Collection (3010831) كما يلي:
    التعليمات البرمجية الموجودة

    IF LsvJournal."LSV Bank Code" = '' THEN
      ERROR(Text020);
    

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

    IF LsvJournal."LSV Bank Code" = '' THEN
      ERROR(Text020);
    TempCustLedgEntry.DELETEALL;
    
  10. أضف التعليمات البرمجية التالية في مشغل OnPostReport في تقرير LSV Suggest Collection (3010831):

    COMMIT;
    IF NOT TempCustLedgEntry.ISEMPTY THEN
      IF CONFIRM(Text50000) THEN
        FORM.RUNMODAL(0,TempCustLedgEntry);
    
  11. تغيير التعليمات البرمجية في مشغل Customer - OnPostDataItem في تقرير LSV Suggest Collection (3010831) كما يلي:
    التعليمات البرمجية الموجودة

    d.CLOSE;
    IF NoOfLinesInserted > 0 THEN BEGIN
      MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt);
      IF LsvJournal."LSV Journal Description" = '' THEN BEGIN
        LsvJournal."LSV Journal Description" :=
          FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS)
            ,-MAXSTRLEN(LsvJournal."LSV Journal Description"));
      END;
      LsvJournal."Credit Date" := CollectionDate;
      LsvJournal.MODIFY;
      // CH2813.BEGIN
      IF NoOfCustWithCreditMemo > 0 THEN
        IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN
          ERROR(Text014);
      // CH2813.END
    END ELSE
      MESSAGE(Text015,FromDueDate,ToDueDate);
    

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

    d.CLOSE;
    IF TempCustLedgEntry.ISEMPTY THEN BEGIN // CH0001
      IF NoOfLinesInserted > 0 THEN BEGIN
        MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt);
        IF LsvJournal."LSV Journal Description" = '' THEN BEGIN
          LsvJournal."LSV Journal Description" :=
            FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS)
              ,-MAXSTRLEN(LsvJournal."LSV Journal Description"));
        END;
        LsvJournal."Credit Date" := CollectionDate;
        LsvJournal.MODIFY;
        // CH2813.BEGIN
        IF NoOfCustWithCreditMemo > 0 THEN
          IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN
            ERROR(Text014);
        // CH2813.END
      END ELSE
        MESSAGE(Text015,FromDueDate,ToDueDate);
    END;
    
  12. تغيير التعليمات البرمجية في الدالة WritePmtSuggestLines في تقرير LSV Suggest Collection (3010831) كما يلي:
    التعليمات البرمجية الموجودة 1

    // Collection amt: Cust. Entry amount - Cash disc. possible
    WITH ToLSVJourLine DO BEGIN
      // Ensure, that the Entry is only once in the LSV Journal Line
      LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No.");
      LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No.");
    ...
    

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

    // Collection amt: Cust. Entry amount - Cash disc. possible
    WITH ToLSVJourLine DO BEGIN
      IF CustLedgEntry."Posting Date" <= CollectionDate THEN BEGIN
        // Ensure, that the Entry is only once in the LSV Journal Line
        LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No.");
        LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No.");
    ...
    

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

    ...
      TotalAmt := TotalAmt + "Collection Amount";
      d.UPDATE(3,TotalAmt);
      // CH2813.BEGIN
      EntriesPerCust := EntriesPerCust + 1;
      // CH2813.END
    END;
    

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

    ...
        TotalAmt := TotalAmt + "Collection Amount";
        d.UPDATE(3,TotalAmt);
        // CH2813.BEGIN
        EntriesPerCust := EntriesPerCust + 1;
        // CH2813.END
    
    //Add the follong lines.
      END ELSE BEGIN
        TempCustLedgEntry := CustLedgEntry;
        TempCustLedgEntry.INSERT;
      END;
    //End of the lines.
    
    END;
    

            
          

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

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

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