الأعراض
في النسخة الإسبانية من Microsoft Dynamics NAV 2009، افترض أن لديك فاتورتين فردية مختلفة (نفس العميل أو المورد أو آخر). يستخدم كل من هاتين الفاتورتين سطر واحد فقط ولكن مختلفة في المائة ضريبة القيمة المضافة (إحدى الفواتير 21 في المائة و 10% أخرى على سبيل المثال). ترحيل هذه الفواتير بإرسال المستندات إلى Cartera (كمبيالات أو فواتير Cartera) وإضافة هاتين الفاتورتين الفردية في ترتيب المجموعة أو دفع فاتورة. في حالة تسوية أحد البنود كل على حدة، يتم تصدير الدفع ك "Z" في تعريف 340. ومع ذلك، عند تسوية كل من المستندات، يتم تصدير المبلغين المدفوعين ك "2"، وخطأ، لأن الفواتير الأولية لم تكن نوع "جيم" (خطوط مختلفة مع مختلف % ضريبة القيمة المضافة)، ولكن تلك الفردية (يتم تعيين "العملية العادية" إلى "فارغة"). اتبع الخطوات الموجودة في المقطع تغييرات التعليمات البرمجية لحل هذه المشكلة. تحدث هذه المشكلة في المنتجات التالية:
-
النسخة الإسبانية من 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 معرف الكائن
الكائن.
ملاحظة: ليس لديك حق لمخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.
تغييرات التعليمات البرمجية
ملاحظة: دوماً التعليمات البرمجية للاختبار إصلاح في بيئة تسيطر عليها قبل تطبيق إصلاحات لأجهزة الكمبيوتر الإنتاج.
لحل هذه المشكلة، اتبع الخطوات التالية.-
تغيير التعليمات البرمجية في خصائص في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة...IF FORM.RUNMODAL(10744,TempDeclarationLines) = ACTION::LookupOK THEN BEGIN
TempDeclarationLines.SETRANGE("Operation Code",'R'); TempDeclarationLines.SETRANGE("Property Location",TempDeclarationLines."Property Location"::" "); // Delete the following lines. // VSTf307397.begin TempDeclarationLines.SETRANGE(Type,TempDeclarationLines.Type::Sale); // VSTF307397.end IF NOT TempDeclarationLines.ISEMPTY THEN EXIT; TempDeclarationLines.RESET; CreateFileHeader; WriteDeclarationLinesToText(TempDeclarationLines); END ELSE EXIT; // End of the deleted lines. END; WriteAppliedPaymentsToText; IF FileHeaderCreated THEN BEGIN ...استبدال التعليمات البرمجية
... IF FORM.RUNMODAL(10744,TempDeclarationLines) = ACTION::LookupOK THEN BEGIN
TempDeclarationLines.SETRANGE("Operation Code",'R'); TempDeclarationLines.SETRANGE("Property Location",TempDeclarationLines."Property Location"::" "); // Add the following lines. TempDeclarationLines.SETRANGE(Type,TempDeclarationLines.Type::Sale); IF NOT TempDeclarationLines.ISEMPTY THEN EXIT; TempDeclarationLines.RESET; CreateFileHeader; WriteDeclarationLinesToText(TempDeclarationLines); END ELSE EXIT; // End of the added lines. END; WriteAppliedPaymentsToText; IF FileHeaderCreated THEN BEGIN ... -
تغيير التعليمات البرمجية في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة... VATEntry."Document Type"::Refund:
BEGIN IF VATEntry."Unrealized VAT Entry No." <> 0 THEN BEGIN // Delete the following lines. UnrealizedVATEntry.GET(VATEntry."Unrealized VAT Entry No."); VendorDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry); // End of the deleted lines. END; EXIT; END; ...استبدال التعليمات البرمجية
...VATEntry."Document Type"::Refund:
BEGIN IF VATEntry."Unrealized VAT Entry No." <> 0 THEN BEGIN // Add the following lines. IF FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") <> '' THEN VendorDocumentNo := VATEntry."Document No." ELSE BEGIN UnrealizedVATEntry.GET(VATEntry."Unrealized VAT Entry No."); VendorDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry); END; // End of the added lines. END; EXIT; END; ... -
تغيير التعليمات البرمجية في وظيفة تشيكفاتيبي في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة... IF VATEntries.FINDFIRST THEN
REPEAT IF (VATEntries."VAT %" <> VATEntryRec."VAT %") OR // Delete the following lines. (VATEntries."EC %" <> VATEntryRec."EC %") THEN EXIT(TRUE); // End of the deleted lines. UNTIL VATEntries.NEXT = 0; END; ...استبدال التعليمات البرمجية
... IF VATEntries.FINDFIRST THEN
REPEAT IF (VATEntries."VAT %" <> VATEntryRec."VAT %") OR // Add the following lines. (VATEntries."EC %" <> VATEntryRec."EC %") THEN BEGIN IF VATEntryRec."Unrealized VAT Entry No." <> 0 THEN EXIT(CheckVATOnUnrealVATEntries(VATEntryRec)); EXIT(TRUE); END; // End of the added lines. UNTIL VATEntries.NEXT = 0; END; ... -
تغيير التعليمات البرمجية في وظيفة تشيكفاتونونريلفاتينتريس في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة...UNTIL VATEntries.NEXT = 0;
END; PROCEDURE CalcECAmount@1100002(VATEntryRec@1100000 : Record 254;VAR VATBuffer3@1100001 : TEMPORARY Record 10704); VAR Currency@1100004 : Record 4; ...استبدال التعليمات البرمجية
...UNTIL VATEntries.NEXT = 0;
END; // Add the following lines. LOCAL PROCEDURE CheckVATOnUnrealVATEntries@1100044(VATEntryRec@1100000 : Record 254) : Boolean; VAR UnrealVATEntry@1100001 : Record 254; BEGIN UnrealVATEntry.GET(VATEntryRec."Unrealized VAT Entry No."); UnrealVATEntry.SETCURRENTKEY("Transaction No."); UnrealVATEntry.SETRANGE("Transaction No.",UnrealVATEntry."Transaction No."); IF UnrealVATEntry.FINDSET THEN REPEAT IF (UnrealVATEntry."VAT %" <> VATEntryRec."VAT %") OR (UnrealVATEntry."EC %" <> VATEntryRec."EC %") THEN EXIT(TRUE); UNTIL UnrealVATEntry.NEXT = 0; EXIT(FALSE); END; // End of the added lines. PROCEDURE CalcECAmount@1100002(VATEntryRec@1100000 : Record 254;VAR VATBuffer3@1100001 : TEMPORARY Record 10704); VAR Currency@1100004 : Record 4; ... -
تغيير التعليمات البرمجية في وظيفة فيندبمتورديربيلجربانكاكك في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة...EXIT(FormatNumber(NoOfRegs,2));
END; PROCEDURE RecordTypeSale@1100009(); VAR UnrealizedVATEntry@1100001 : Record 254; ...استبدال التعليمات البرمجية
...EXIT(FormatNumber(NoOfRegs,2));
END; // Add the following lines. LOCAL PROCEDURE FindPmtOrderBillGrBankAcc@1100058(Type@1100005 : Option;DocumentNo@1100000 : Code[20]) : Code[20]; VAR ClosedBillGroup@1100003 : Record 7000007; ClosedPmtOrder@1100002 : Record 7000022; PostedBillGroup@1100004 : Record 7000006; PostedPmtOrder@1100001 : Record 7000021; BEGIN CASE Type OF VATEntry.Type::Sale: BEGIN IF PostedBillGroup.GET(DocumentNo) THEN EXIT(PostedBillGroup."Bank Account No."); IF ClosedBillGroup.GET(DocumentNo) THEN EXIT(ClosedBillGroup."Bank Account No."); END; VATEntry.Type::Purchase: BEGIN IF PostedPmtOrder.GET(DocumentNo) THEN EXIT(PostedPmtOrder."Bank Account No."); IF ClosedPmtOrder.GET(DocumentNo) THEN EXIT(ClosedPmtOrder."Bank Account No."); END; END; EXIT(''); END; // End of the added lines. PROCEDURE RecordTypeSale@1100009(); VAR UnrealizedVATEntry@1100001 : Record 254; ... -
تغيير التعليمات البرمجية في وظيفة ريكوردتيبيسالي في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة 1...END ELSE
OperationDateText := FormatDate(VATEntry."Posting Date"); IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No."; DocumentDate := VATEntry."Posting Date"; ...استبدال رمز 1
... END ELSE
OperationDateText := FormatDate(VATEntry."Posting Date"); // Add the following lines. AppliedToDocumentNo := VATEntry."Document No."; UnrealizedVATEntryNo := 0; // End of the added lines. IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No."; DocumentDate := VATEntry."Posting Date"; ...التعليمات البرمجية الموجودة 2
...IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN
UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No."; DocumentDate := VATEntry."Posting Date"; // Delete the following line. IF UnrealizedVATEntryNo <> 0 THEN BEGIN // End of the deleted line. UnrealizedVATEntry.GET(UnrealizedVATEntryNo); AppliedToDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry); OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date"); ...استبدال رمز 2
...IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN
UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No."; DocumentDate := VATEntry."Posting Date"; // Add the following lines. IF (UnrealizedVATEntryNo <> 0) AND (FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") = '') THEN BEGIN // End of the added lines. UnrealizedVATEntry.GET(UnrealizedVATEntryNo); AppliedToDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry); OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date"); ...التعليمات البرمجية الموجودة 3
... OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");
DocumentDate := UnrealizedVATEntry."Document Date"; END; // Delete the following lines. END ELSE BEGIN AppliedToDocumentNo := VATEntry."Document No."; UnrealizedVATEntryNo := 0; // End of the deleted lines. END; CreateTempDeclarationLines(PADSTR(CustVATNumber,9,' '),Customer."No.",Customer.Name,DocumentDate, ...استبدال رمز 3
...OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");
DocumentDate := UnrealizedVATEntry."Document Date"; END; END; CreateTempDeclarationLines(PADSTR(CustVATNumber,9,' '),Customer."No.",Customer.Name,DocumentDate, ... -
تغيير التعليمات البرمجية في وظيفة أدكوليكتيونبانكاكك في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة 1...VATEntryForPmnt@1100008 : Record 254;
BankAccLE@1100002 : Record 271; CheckLE@1100004 : Record 272; // Delete the following line. BankAcc@1100006 : Record 270; // End of the deleted line. CollectionPaymentMethodUsed@1100005 : Text[1]; BankAccountOrPaymentMethodUsed@1100003 : Text[34]; InsertPosition@1100007 : Integer; ...استبدال رمز 1
...VATEntryForPmnt@1100008 : Record 254;
BankAccLE@1100002 : Record 271; CheckLE@1100004 : Record 272; // Add the following line. BankAccNo@1100009 : Code[20]; // End of the added line. CollectionPaymentMethodUsed@1100005 : Text[1]; BankAccountOrPaymentMethodUsed@1100003 : Text[34]; InsertPosition@1100007 : Integer; ...التعليمات البرمجية الموجودة 2
... IF CheckLE.FINDFIRST THEN BEGIN
BankAccountOrPaymentMethodUsed := CheckLE."Check No."; CollectionPaymentMethodUsed := 'T'; // Delete the following lines. END ELSE IF BankAccLE.GET(DeclarationLine."Bank Account Ledger Entry No.") THEN BEGIN CollectionPaymentMethodUsed := 'C'; BankAcc.GET(BankAccLE."Bank Account No."); BankAccountOrPaymentMethodUsed := BankAcc."CCC No."; IF BankAccountOrPaymentMethodUsed = '' THEN BankAccountOrPaymentMethodUsed := BankAcc."Bank Account No."; IF BankAccountOrPaymentMethodUsed = '' THEN BankAccountOrPaymentMethodUsed := COPYSTR(BankAcc.IBAN,1,MAXSTRLEN(BankAccountOrPaymentMethodUsed)); END; // End of the deleted lines. IF BankAccountOrPaymentMethodUsed = '' THEN BEGIN CollectionPaymentMethodUsed := 'O'; IF DeclarationLine.Type = DeclarationLine.Type::Sale THEN ...استبدال رمز 2
...IF CheckLE.FINDFIRST THEN BEGIN
BankAccountOrPaymentMethodUsed := CheckLE."Check No."; CollectionPaymentMethodUsed := 'T'; // Add the following lines. END ELSE BEGIN IF BankAccLE.GET(DeclarationLine."Bank Account Ledger Entry No.") THEN BankAccNo := BankAccLE."Bank Account No." ELSE BankAccNo := FindPmtOrderBillGrBankAcc(DeclarationLine.Type,DeclarationLine."Document No."); BankAccountOrPaymentMethodUsed := GetBankAccountUsed(BankAccNo); IF BankAccountOrPaymentMethodUsed <> '' THEN CollectionPaymentMethodUsed := 'C'; END; // End of the added lines. IF BankAccountOrPaymentMethodUsed = '' THEN BEGIN CollectionPaymentMethodUsed := 'O'; IF DeclarationLine.Type = DeclarationLine.Type::Sale THEN ... -
تغيير التعليمات البرمجية في وظيفة جيتبانكاككونتوسيد في تقرير إجراء إقرار 340 (10743) كما يلي:
التعليمات البرمجية الموجودة... txt := InsertTextWithReplace(txt,BankAccountOrPaymentMethodUsed,InsertPosition);
END; LOCAL PROCEDURE AreDatesInSamePeriod@1100035(Date1@1100000 : Date;Date2@1100001 : Date) : Boolean; BEGIN EXIT(CALCDATE('<CM>',Date1) = CALCDATE('<CM>',Date2)); ...استبدال التعليمات البرمجية
...txt := InsertTextWithReplace(txt,BankAccountOrPaymentMethodUsed,InsertPosition);
END; // Add the following lines. LOCAL PROCEDURE GetBankAccountUsed@1100059(BankAccNo@1100001 : Code[20]) BankAccountUsed : Text[34]; VAR BankAccount@1100000 : Record 270; BEGIN WITH BankAccount DO IF GET(BankAccNo) THEN BEGIN BankAccountUsed := "CCC No."; IF BankAccountUsed = '' THEN BankAccountUsed := "Bank Account No."; IF BankAccountUsed = '' THEN BankAccountUsed := COPYSTR(IBAN,1,MAXSTRLEN(BankAccountUsed)); END; END; // End of the added lines. LOCAL PROCEDURE AreDatesInSamePeriod@1100035(Date1@1100000 : Date;Date2@1100001 : Date) : Boolean; BEGIN EXIT(CALCDATE('<CM>',Date1) = CALCDATE('<CM>',Date2)); ...
المتطلبات الأساسية
يجب أن يكون لديك أحد المنتجات التالية مثبتة لتطبيق هذا الإصلاح العاجل:
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 R2
-
النسخة الإسبانية من Microsoft Dynamics NAV 2009 SP1
معلومات الإزالة
لا يمكنك إزالة هذا الإصلاح العاجل.
الحالة
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".
ملاحظة: وهذا المقال "النشر السريع" التي تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة في هذه الوثيقة كاستجابه للمسائل الناشئة. نتيجة للسرعة في توفيره، قد تتضمن الأخطاء المطبعية المواد ويمكن مراجعة في أي وقت دون سابق إنذار. راجع شروط الاستخداملاعتبارات أخرى.