قيمة "التقدمات (LCY)" غير صحيحة في بطاقة العميل عند نشر فاتورة مسبقة للعميل باستخدام عملة أجنبية في الإصدار المجري من Microsoft Dynamics NAV 2009 R2

ينطبق على
Microsoft Dynamics NAV 2009 R2

تنطبق هذه المقالة على Microsoft Dynamics NAV للغات اللغة المجرية (hu).

الأعراض

افترض أنك تطبق الإصلاح العاجل للسداد المسبق TFS326659 في الإصدار المجري من Microsoft Dynamics NAV 2009 R2. عند نشر فاتورة مسبقة لعميل باستخدام عملة أجنبية، تكون قيمة السلف (LCY) في بطاقة العميل هي 0.01. تتوقع أن تكون قيمة Advances (LCY) صفرا.
لمزيد من المعلومات حول الإصلاح العاجل للسداد المسبق TFS326659، راجع المعلومات التالية:

TFS326659 تحديث الدفعات المسبقة ل Microsoft Dynamics NAV 2009 R2 - المجر

الدقة

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

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV 2009 التالية أو إصدار Microsoft Dynamics NAV التالي الذي يحتوي على هذا الإصلاح العاجل.

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

معلومات التثبيت

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

ملاحظة قبل تثبيت هذا الإصلاح العاجل، تحقق من تسجيل خروج جميع مستخدمي عميل Microsoft Dynamics NAV من النظام. يتضمن ذلك خدمات Microsoft Dynamics NAV Application Server (NAS). يجب أن تكون المستخدم العميل الوحيد الذي قام بتسجيل الدخول عند تنفيذ هذا الإصلاح العاجل.

لتنفيذ هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.

نوصي بتعيين معرف دور "SUPER" لحساب المستخدم في نافذة تسجيلات الدخول إلى Windows أو في نافذة تسجيلات دخول قاعدة البيانات. إذا تعذر تعيين معرف دور "SUPER" لحساب المستخدم، فيجب عليك التحقق من أن حساب المستخدم لديه الأذونات التالية:

  • إذن تعديل للكائن الذي ستقوم بتغييره.

  • إذن التنفيذ لكائن معرف عنصر النظام 5210 ومعرف عنصر النظام 9015

    الكائن.

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

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

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

لحل هذه المشكلة، استخدم الخطوات التالية:

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

    ...
    CustLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Delete the following lines.
    IF CustLedgEntry.Prepayment AND
    (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment) AND
    (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance)
    // End of the deleted lines.
    
    THEN BEGIN
    ...
    

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

    ...
    CustLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Add the following lines.
    IF IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type") AND
    (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment)
    // End of the added lines.
    
    THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    CustLedgEntry.Prepayment AND (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance);
    // End of the deleted line.
    
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type");
    // End of the added line.
    
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ...
    
  2. تغيير التعليمات البرمجية في الدالة PostVend في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    VendLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Delete the following lines.
    IF VendLedgEntry.Prepayment AND
    (VendLedgEntry."Document Type" = VendLedgEntry."Document Type"::Payment) AND
    (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance)
    // End of the deleted lines.
    
    THEN BEGIN
    ...
    

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

    ...
    VendLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Add the following lines.
    IF IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type") AND
    (VendLedgEntry."Document Type" = VendLedgEntry."Document Type"::Payment)
    // End of the added lines.
    
    THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    VendLedgEntry.Prepayment AND (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance);
    // End of the deleted line.
    
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type");
    // End of the added line.
    
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ...
    
  3. تغيير التعليمات البرمجية في دالة CalcCurrencyRealizedGainLoss في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    CVLedgEntryBuf.Prepayment AND (CVLedgEntryBuf."Prepayment Type" = CVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    IF RealizedGainLossLCY < 0 THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(CVLedgEntryBuf.Prepayment,CVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    IF RealizedGainLossLCY < 0 THEN BEGIN
    ...
    
  4. تغيير التعليمات البرمجية في دالة CalcApplication في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    OldCVLedgEntryBuf.Prepayment AND (OldCVLedgEntryBuf."Prepayment Type" = OldCVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,OldCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(OldCVLedgEntryBuf.Prepayment,OldCVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,OldCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    NewCVLedgEntryBuf.Prepayment AND (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(NewCVLedgEntryBuf.Prepayment,NewCVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);
    ...
    
  5. تغيير التعليمات البرمجية في دالة CalcAmtLCYAdjustment في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    DtldCVLedgEntryBuf."Entry Type"::"Correction of Remaining Amount";
    DtldCVLedgEntryBuf."Amount (LCY)" := AdjustedAmountLCY - CVLedgEntryBuf."Remaining Amt. (LCY)";
    ...
    

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

    ...
    DtldCVLedgEntryBuf."Entry Type"::"Correction of Remaining Amount";
    
    // Add the following lines.
    DtldCVLedgEntryBuf.Advance :=
    IsAdvancePrepayment(CVLedgEntryBuf.Prepayment,CVLedgEntryBuf."Prepayment Type");
    // End of the added lines.
    
    DtldCVLedgEntryBuf."Amount (LCY)" := AdjustedAmountLCY - CVLedgEntryBuf."Remaining Amt. (LCY)";
    ...
    
  6. تغيير التعليمات البرمجية في الدالة PostDtldCustLedgEntries في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    GenJnlLine."Posting Group",
    
    // Delete the following lines.
    GenJnlLine.Prepayment AND
    (GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance));
    // End of the deleted lines.
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    ...
    GenJnlLine."Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(GenJnlLine.Prepayment,GenJnlLine."Prepayment Type"));
    // End of the added line.
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    
    
    ...
    
    
    GenJnlLine."Posting Group",
    
    // Delete the following lines.
    GenJnlLine.Prepayment AND
    (GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance));
    // End of the deleted lines.
    
    
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    
    
    ...
    
    
    GenJnlLine."Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(GenJnlLine.Prepayment,GenJnlLine."Prepayment Type"));
    // End of the added line.
    
    
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    
  7. تغيير التعليمات البرمجية في الدالة GetReceivablesAccNo في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    CustLedgEntry."Customer Posting Group",
    
    // Delete the following lines.
    CustLedgEntry.Prepayment AND
    (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance)));
    // End of the deleted lines.
    
    END;
    ...
    

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

    ...
    CustLedgEntry."Customer Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type")));
    // End of the added line.
    
    END;
    ...
    
  8. تغيير التعليمات البرمجية في الدالة GetPayablesAccNo في Gen. Jnl.-Post Line Codeunit (12) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    VendLedgEntry."Vendor Posting Group",
    
    // Delete the following lines.
    VendLedgEntry.Prepayment AND
    (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance)));
    // End of the deleted lines.
    
    END;
    

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

    ...
    VendLedgEntry."Vendor Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type")));
    // End of the added line.
    
    END;
    ...
    

          

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

يجب أن يكون لديك الإصدار المجري من Microsoft Dynamics NAV 2009 R2 مثبتا لتطبيق هذا الإصلاح العاجل.

معلومات الإزالة

لا يمكنك إزالة هذا الإصلاح العاجل.

الحالة

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

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