حتى عندما لم تكن الإذن بالعمل مع Cartera في النسخة الإسبانية من Microsoft Dynamics NAV 2009، يمكنك تطبيق عملية دفع وسند من العميل أو المورد إدخالات دفتر الأستاذ. المشكلة أن عند "بدون أذونات Cartera" تطبيق هذه الوثائق (الدفع والفاتورة) تظل شجرة "فتح" في وثائق Cartera المدينة أو الدائنة. يؤدي عدم تناسق في قاعدة البيانات. تحدث هذه المشكلة في المنتجات التالية:
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 R2
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 SP1
الحل
معلومات الإصلاح العاجل
الآن يتوفر إصلاح عاجل معتمد من Microsoft. ومع ذلك، هو فقط لتصحيح المشكلة الموضحة في هذه المقالة. تطبيقها فقط على الأنظمة التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح العاجل. ولذلك، إذا لم يكن تأثير المشكلة كبيرا، نوصي بالانتظار حتى الإصدار التالي من حزمة الخدمة Microsoft Dynamics NAV 2009 أو الإصدار Microsoft Dynamics التنقل التالي الذي يحتوي على هذا الإصلاح العاجل.
ملاحظة: في بعض الحالات، يحدد المصروفات التي تحتسب عادة لدعم قد يتم إلغاء المكالمات إذا "أخصائي الدعم التقني" ل Microsoft Dynamics والمنتجات ذات الصلة أن تحديثًا معيناً سوف يعمل على حل المشكلة. سيتم اضافة تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشاكل التي لا يأهل على حلها للتحديث المطلوب.
معلومات التثبيت
تقدم Microsoft أمثلة برمجية للتوضيح فقط، دون أي ضمان صريح أو ضمني. هذا يتضمن، على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالتسويق أو الملاءمة لغرض معين. تفترض هذه المقالة أنك معتاد على لغة البرمجة التي يتم شرحها والأدوات المستخدمة لإنشاء الإجراءات وتصحيحها. يساعد مهندسو الدعم لدى Microsoft شرح وظيفة إجراء محدد. ومع ذلك، لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة.
ملاحظة: قبل تثبيت هذا الإصلاح العاجل، تأكد من تسجيل خروج النظام كافة المستخدمين عميل Microsoft Dynamics التنقل. ويشمل ذلك خدمات Microsoft Dynamics NAV تطبيق الملقم (NAS). يجب أن يكون عميل فقط المستخدم الذي تم تسجيل دخوله عند تطبيق هذا الإصلاح العاجل.
لتطبيق هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.
نوصي بأن تعيين حساب المستخدم في إطار عمليات تسجيل دخول Windows أو في إطار "قاعدة بيانات تسجيل الدخول" بمعرف دور "رئيسي". إذا كان حساب المستخدم لا يمكن تعيين معرف دور "سوبر"، يجب التحقق من أن حساب المستخدم يملك الأذونات التالية:
-
إذن "تعديل" للكائن الذي سيتم تغيير.
-
إذن Execute للكائن 5210 معرف كائن النظام و نظام 9015 معرف الكائن
الكائن.
ملاحظة: ليس لديك حق لمخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.
تغييرات التعليمات البرمجية
ملاحظة اختبار دائماً إصلاحات التعليمات البرمجية في بيئة تسيطر عليها قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاج. قبل تطبيق التغيير، استيراد كافة التحديثات سيبا.
لحل هذه المشكلة، اتبع الخطوات التالية.
-
تغيير التعليمات البرمجية في "فاريابليسين العالمي" الجنرال جنل.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.';
Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr en cuenta el IVA, ¨desea continuar?';
Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.';
AppliedAmountLCY2@1100053 : Decimal;
AppliesToDocType@1100023 : Integer;
PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45);
BEGIN
NewGLReg := GLReg;
END;
...استبدال التعليمات البرمجية
...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.';
Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr en cuenta el IVA, ¨desea continuar?';
Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.';
AppliedAmountLCY2@1100053 : Decimal;
AppliesToDocType@1100023 : Integer;
// Add the following line.
Text1100013@1100026 : TextConst 'ENU=You do not have permissions to apply or unapply documents in the Cartera Module.';
// End of the added line.
PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45);
BEGIN
NewGLReg := GLReg;
END;
... -
تغيير التعليمات البرمجية في أبليكوستليدجينتريالدالة في جنل جنرال.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة 1...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");
OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No.");
OldCustLedgEntry.SETRANGE(Open,TRUE);
OldCustLedgEntry.FINDFIRST;
OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
IF AppManagement.AccessToCartera THEN
DocPost.CheckAppliedReceivableDoc(
OldCustLedgEntry,GenJnlLine."System-Created Entry");
...استبدال رمز 1
...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");
OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No.");
OldCustLedgEntry.SETRANGE(Open,TRUE);
OldCustLedgEntry.FINDFIRST;
// Add the following line.
CheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");
// End of the added line.
OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
IF AppManagement.AccessToCartera THEN
DocPost.CheckAppliedReceivableDoc(
OldCustLedgEntry,GenJnlLine."System-Created Entry");
...التعليمات البرمجية الموجودة 2
...// Check Cust Ledger Entry and add to Temp.
IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN
OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN
// Delete the following lines.
REPEAT
IF GenJnlApply.CheckAgainstApplnCurrency(
NewCVLedgEntryBuf."Currency Code",
OldCustLedgEntry."Currency Code",
GenJnlLine."Account Type"::Customer,
FALSE)
THEN BEGIN
IF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THEN
ApplyingDate := OldCustLedgEntry."Posting Date";
TempOldCustLedgEntry := OldCustLedgEntry;
TempOldCustLedgEntry.INSERT;
END;
UNTIL OldCustLedgEntry.NEXT=0;
// End of the deleted lines.
TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0);
IF TempOldCustLedgEntry.FIND('-') THEN BEGIN
...استبدال رمز 2
...// Check Cust Ledger Entry and add to Temp.
IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN
OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN
// Add the following lines.
REPEAT
CheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");
IF GenJnlApply.CheckAgainstApplnCurrency(
NewCVLedgEntryBuf."Currency Code",
OldCustLedgEntry."Currency Code",
GenJnlLine."Account Type"::Customer,
FALSE)
THEN BEGIN
IF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THEN
ApplyingDate := OldCustLedgEntry."Posting Date";
TempOldCustLedgEntry := OldCustLedgEntry;
TempOldCustLedgEntry.INSERT;
END;
UNTIL OldCustLedgEntry.NEXT=0;
// End of the added lines.
TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0);
IF TempOldCustLedgEntry.FIND('-') THEN BEGIN... -
تغيير التعليمات البرمجية في وظيفة أونابليكوستليدجينتري في جنل جنرال.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No.");
DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");
UnapplyVATEntries := FALSE;
DtldCustLedgEntry2.FINDSET;
REPEAT
DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE);
IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR
(DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR
(DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")
THEN
...استبدال التعليمات البرمجية
...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No.");
DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");
UnapplyVATEntries := FALSE;
DtldCustLedgEntry2.FINDSET;
REPEAT
// Add the following line.
CheckCarteraAccessPermissions(DtldCustLedgEntry2."Document Situation");
// End of the added line.
DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE);
IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR
(DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR
(DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")
THEN
... -
تغيير التعليمات البرمجية في وظيفة أبليفيندليدجينتري في جنل جنرال.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة 1...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type");
OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");
OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No.");
OldVendLedgEntry.SETRANGE(Open,TRUE);
OldVendLedgEntry.FINDFIRST;
OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
IF AppManagement.AccessToCartera THEN
DocPost.CheckAppliedPayableDoc(
OldVendLedgEntry,GenJnlLine."System-Created Entry");
...استبدال رمز 1
...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type");
OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");
OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No.");
OldVendLedgEntry.SETRANGE(Open,TRUE);
OldVendLedgEntry.FINDFIRST;
// Add the following line.
CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");
// End of the added line.
OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
IF AppManagement.AccessToCartera THEN
DocPost.CheckAppliedPayableDoc(
OldVendLedgEntry,GenJnlLine."System-Created Entry");
...التعليمات البرمجية الموجودة 2
...//Check and Move Ledger Entries to Temp
IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN
OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN
REPEAT
IF GenJnlApply.CheckAgainstApplnCurrency(
NewCVLedgEntryBuf."Currency Code",
OldVendLedgEntry."Currency Code",
GenJnlLine."Account Type"::Vendor,
FALSE)
...استبدال رمز 2
...//Check and Move Ledger Entries to Temp
IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN
OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN
REPEAT
// Add the following line.
CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");
// End of the added line.
IF GenJnlApply.CheckAgainstApplnCurrency(
NewCVLedgEntryBuf."Currency Code",
OldVendLedgEntry."Currency Code",
GenJnlLine."Account Type"::Vendor,
FALSE)
... -
تغيير التعليمات البرمجية في وظيفة أونابليفيندليدجينتري في جنل جنرال.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type");
DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No.");
DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No.");
DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry");
DtldVendLedgEntry2.FINDSET;
UnapplyVATEntries := FALSE;
REPEAT
IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR
(DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR
(DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")
...استبدال التعليمات البرمجية
...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type");
DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No.");
DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No.");
DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry");
DtldVendLedgEntry2.FINDSET;
// Add the following line.
CheckCarteraAccessPermissions(DtldVendLedgEntry2."Document Situation");
// End of the added line.
UnapplyVATEntries := FALSE;
REPEAT
IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR
(DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR
(DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")
... -
تغيير التعليمات البرمجية في وظيفة تشيككارتيراعكسيسبيرميسيونس في جنل جنرال.-"كوديونيت خط وظيفة" (12) كما يلي:
التعليمات البرمجية الموجودة...CLEAR(GenJnlLine2);
EXIT(IsOK);
END;
BEGIN
END.
}
}
...استبدال التعليمات البرمجية
...CLEAR(GenJnlLine2);
EXIT(IsOK);
END;
// Add the following lines.
LOCAL PROCEDURE CheckCarteraAccessPermissions@1100024(DocumentSituation@1170001 : ' ,Posted BG/PO,Closed BG/PO,BG/PO,Cartera,Closed Documents');
BEGIN
IF (DocumentSituation <> DocumentSituation::" ") AND (NOT AppManagement.AccessToCartera) THEN
ERROR(Text1100013);
END;
// End of the added lines.
BEGIN
END.
}
}
...
المتطلبات الأساسية
يجب أن يكون لديك أحد المنتجات التالية مثبتة لتطبيق هذا الإصلاح العاجل:
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 R2
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 SP1
معلومات الإزالة
لا يمكنك إزالة هذا الإصلاح العاجل.
الحالة
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".
ملاحظة: وهذا المقال "النشر السريع" التي تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة في هذه الوثيقة كاستجابه للمسائل الناشئة. نتيجة للسرعة في توفيره، قد تتضمن الأخطاء المطبعية المواد ويمكن مراجعة في أي وقت دون سابق إنذار. راجع شروط الاستخداملاعتبارات أخرى.