นำไปใช้กับ
Dynamics NAV 2009

อาการ

ไม่ถูกต้องถูกจัดกลุ่มฐานและยอดเงินสำหรับรอบระยะเวลาในการรายงานภาษี 340 เงินสด VAT ที่เกี่ยวข้องใน Microsoft Dynamics NAV 2009 รุ่นภาษาสเปนและเปอร์เซ็นต์ VAT เดียวกันสถานการณ์เดียวกันกับ VAT ปกติทำงานตามที่คาดไว้ แยกแต่ละใบแจ้งหนี้โดยไม่คำนึงถึงว่าพวกเขามีเปอร์เซ็นต์ VAT เดียวกัน ทำตามขั้นตอนต่าง ๆ ในส่วนของการเปลี่ยนแปลงรหัสเพื่อแก้ไขปัญหานี้ ปัญหานี้เกิดขึ้นในผลิตภัณฑ์ต่อไปนี้:

  • Microsoft Dynamics NAV 2009 R2 รุ่นภาษาสเปน

  • SP1 2009 นำทางของ Dynamics Microsoft รุ่นภาษาสเปน

การแก้ปัญหา

ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มีเป้าหมายเพียงเพื่อการแก้ไขปัญหาที่อธิบายไว้ในบทความนี้ นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอ service pack ถัดไปของ Microsoft Dynamics NAV 2009 หรือเวอร์ชันถัดไป Microsoft Dynamics NAV ที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมค่าใช้จ่ายสำหรับการสนับสนุนโทรศัพท์อาจถูกยกเลิกถ้า Technical Support Professional สำหรับ Microsoft Dynamics และผลิตภัณฑ์ที่เกี่ยวข้องตรวจพบว่าการปรับปรุงเฉพาะจะแก้ปัญหาของคุณ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง

ข้อมูลการติดตั้ง

Microsoft ให้ตัวอย่างการเขียนโปรแกรมไว้สำหรับประกอบการอธิบายเท่านั้นโดยไม่มีการรับประกันไม่ว่าจะโดยชัดแจ้งหรือโดยนัย กรณีนี้รวมถึงแต่มิได้จำกัดเพียงแค่การการรับประกันโดยนัยเกี่ยวกับการจำหน่ายเป็นสินค้าหรือความเหมาะสำหรับวัตถุประสงค์เฉพาะ บทความนี้ตั้งสมมติฐานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่กำลังแสดงและคุ้นเคยกับเครื่องมือที่ใช้ใน การสร้างและแก้จุดบกพร่องของขั้นตอนการดำเนินการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายเกี่ยวกับหน้าที่การใช้งานของกระบวนการเฉพาะ อย่างไรก็ตาม จะไม่แก้ไขตัวอย่างเหล่านี้เพื่อเพิ่มฟังก์ชัน หรือสร้างขั้นตอนเพื่อตอบสนองความต้องการเฉพาะของคุณหมายเหตุ ก่อนที่คุณติดตั้งโปรแกรมแก้ไขด่วนนี้ โปรดตรวจสอบว่า ผู้ใช้ไคลเอนต์ของ Microsoft Dynamics NAV ทั้งหมดเข้าสู่ระบบออกจากระบบ ข้อมูลนี้รวมถึงบริการ Microsoft Dynamics NAV แอพพลิเคชันเซิร์ฟเวอร์ (NAS) คุณควรไคลเอ็นต์เฉพาะผู้ใช้ที่เข้าสู่ระบบเมื่อคุณใช้โปรแกรมแก้ไขด่วนนี้เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมีสิทธิ์การใช้งานสำหรับนักพัฒนาเราขอแนะนำว่า บัญชีผู้ใช้ ในหน้าต่างล็อกอินของ Windows หรือ ในหน้าต่างล็อกอินฐานข้อมูลสามารถกำหนดรหัสการเข้าถึงข้อมูล "ขั้นสูง" ถ้าบัญชีผู้ใช้ไม่สามารถกำหนดรหัสการบทบาท "SUPER" คุณต้องตรวจสอบว่า บัญชีผู้ใช้มีสิทธิ์ต่อไปนี้:

  • สิทธิ์การปรับเปลี่ยนสำหรับออปเจ็กต์ที่คุณจะสามารถเปลี่ยน

  • สิทธิ์ในการดำเนินการ สำหรับออบเจ็กต์5210 รหัสวัตถุของระบบและระบบ 9015 ID ของวัตถุวัตถุ

หมายเหตุ คุณไม่จำเป็นต้องมีสิทธิ์ไปยังร้านค้าข้อมูลยกเว้นว่าคุณจำเป็นต้องซ่อมแซมข้อมูล

การเปลี่ยนแปลงรหัส

หมายเหตุ เสมอทดสอบรหัสแก้ไขในสภาพแวดล้อมการควบคุมก่อนที่คุณนำไปใช้แก้ไขปัญหากับคอมพิวเตอร์ของคุณผลิตเมื่อต้องการแก้ไขปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้:

  1. เปลี่ยนรหัสในรายงานทำรายงานภาษี 340 (10743) เป็นดังนี้:รหัสที่อยู่ 1

    ...   END;                      END;// Delete the following line.OnAfterGetRecord=BEGIN// End of the deleted line.                           OperationCode := GetOperationCode(VATEntry2);                           VATBuffer."VAT %" := "VAT %";...

    รหัสแทนที่ 1

    ... END;                      END;// Add the following lines.OnAfterGetRecord=VARVendLedgEntryAppl@1100000 : Record 25;NewEntry@1100001 : Boolean;BEGIN// End of the added lines.                           OperationCode := GetOperationCode(VATEntry2);                           VATBuffer."VAT %" := "VAT %";...

    รหัสที่มีอยู่ 2

    ... VATBuffer.Amount := Amount;                             END;                             VATBuffer.INSERT;// Delete the following lines.IF Type = VATEntry.Type::Purchase THEN BEGINVATEntryTemporary := VATEntry2;VATEntryTemporary.INSERT;END;END;// End of the deleted lines.                         END;        TotalFields=Base,Amount;...

    รหัสแทนที่ 2

    ...VATBuffer.Amount := Amount;                             END;                             VATBuffer.INSERT;// Add the following lines.END;IF Type = VATEntry.Type::Purchase THENIF HasBeenRealized("Entry No.") OR ("Unrealized VAT Entry No." <> 0) THEN BEGINNewEntry := CheckVLEApplication(VATEntry2);VATEntryTemporary.SETRANGE("Posting Date","Posting Date");VATEntryTemporary.SETRANGE("Document No.","Document No.");VATEntryTemporary.SETRANGE("Document Type","Document Type");VATEntryTemporary.SETRANGE(Type,Type);VATEntryTemporary.SETRANGE("VAT %","VAT %");VATEntryTemporary.SETRANGE("Transaction No.","Transaction No.");IF VATEntryTemporary.FINDFIRST AND NOT NewEntry THEN BEGINVATEntryTemporary.Base += Base;VATEntryTemporary.Amount += Amount;VATEntryTemporary.MODIFY;END ELSE BEGINVATEntryTemporary := VATEntry2;VATEntryTemporary.INSERT;END;END ELSE BEGINVATEntryTemporary := VATEntry2;VATEntryTemporary.INSERT;END;// End of the added lines.                         END;        TotalFields=Base,Amount;...

    รหัสที่มีอยู่ 3

    ...  DataItemVarName=<Integer2>;        OnPreDataItem=BEGIN                        VATBuffer.FIND('-');                       VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");                        IF VATEntryTemporary.FINDFIRST THEN;                        CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount);                        Fin := FALSE;...

    รหัสแทนที่ 3

    ...  DataItemVarName=<Integer2>;        OnPreDataItem=BEGIN                        VATBuffer.FIND('-');// Delete the following line.VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");// End of the deleted line.                        IF VATEntryTemporary.FINDFIRST THEN;                        CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount);                        Fin := FALSE;...

    รหัสที่มีอยู่ 4

    ...IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN                             VATEntryTemporary.Amount :=  VATBuffer.Amount;                             VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary);// Delete the following lines.VATEntryTemporary.NEXT;RecordTypePurchase(VATEntry2);// End of the deleted lines.                           END;                           Fin := VATBuffer.NEXT = 0;                         END;...

    รหัสแทนที่ 4

    ... IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN                             VATEntryTemporary.Amount :=  VATBuffer.Amount;                             VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary);// Add the following lines.VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");VATEntryTemporary.SETRANGE("VAT %",VATBuffer."VAT %");VATEntryTemporary.SETRANGE("EC %",VATBuffer."EC %");VATEntryTemporary.FINDSET;REPEATRecordTypePurchase(VATEntryTemporary);UNTIL VATEntryTemporary.NEXT = 0;// End of the added lines.                           END;                           Fin := VATBuffer.NEXT = 0;                         END;...
  2. เปลี่ยนแปลงรหัสนี้ในตัวแปรส่วนกลางในรายงานทำรายงานภาษี 340 (10743) เป็นดังนี้:รหัสที่มีอยู่

    ...VATEntryTemporary@1100078 : TEMPORARY Record 254;      TempDeclarationLines@1100149 : TEMPORARY Record 10744;      TempVATEntry@1100007 : TEMPORARY Record 254;      CommonDialogMgt@1100015 : Codeunit 412;      OutFile@1100016 : File;      DeclarationNum@1100017 : Text[4];...

    รหัสแทน

    ...  VATEntryTemporary@1100078 : TEMPORARY Record 254;      TempDeclarationLines@1100149 : TEMPORARY Record 10744;      TempVATEntry@1100007 : TEMPORARY Record 254;// Add the following line.TempDtldVendLedgerEntry@1100115 : TEMPORARY Record 380;// End of the added line.      CommonDialogMgt@1100015 : Codeunit 412;      OutFile@1100016 : File;      DeclarationNum@1100017 : Text[4];...
  3. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันRecordTypePurchaseในรายงานทำรายงานภาษี 340 (10743) เป็นดังนี้:รหัสที่มีอยู่

    ... END ELSE        OperationDateText := FormatDate(VATEntryRec."Posting Date");// Delete the following lines.IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGINUnrealizedVATEntryNo := VATEntryRec."Unrealized VAT Entry No.";DocumentDate := VATEntryRec."Posting Date";IF UnrealizedVATEntryNo <> 0 THEN BEGINUnrealizedVATEntry.GET(UnrealizedVATEntryNo);OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");DocumentDate := UnrealizedVATEntry."Document Date";// End of the deleted lines.        END;      END ELSE        UnrealizedVATEntryNo := 0;...

    รหัสแทน

    ... END ELSE        OperationDateText := FormatDate(VATEntryRec."Posting Date");// Add the following lines.VATBuffer2.Base := VATBuffer.Base;VATBuffer2.Amount := VATBuffer.Amount;IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGINUnrealizedVATEntryNo := VATEntryTemporary."Unrealized VAT Entry No.";DocumentDate := VATEntryTemporary."Posting Date";IF UnrealizedVATEntryNo <> 0 THEN BEGINUnrealizedVATEntry.GET(UnrealizedVATEntryNo);OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");DocumentDate := UnrealizedVATEntry."Document Date";IF FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") = '' THEN BEGINVendorDocumentNo := UnrealizedVATEntry."External Document No.";VATBuffer2.Base := VATEntryTemporary.Base;VATBuffer2.Amount := VATEntryTemporary.Amount;END;// End of the added lines.        END;      END ELSE        UnrealizedVATEntryNo := 0;...
  4. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันCheckVLEApplicationในรายงานทำรายงานภาษี 340 (10743) เป็นดังนี้:รหัสที่มีอยู่

    ...  PrevDeclarationNumEnable := ReplaceDeclaration;    END;    BEGIN    END.  }...

    รหัสแทน

    ...PrevDeclarationNumEnable := ReplaceDeclaration;    END;// Add the following lines.LOCAL PROCEDURE CheckVLEApplication@1100074(VATEntry@1100000 : Record 254) : Boolean;VARVendorLedgerEntry@1100001 : Record 25;DtldVendLedgEntry@1100002 : Record 380;CheckVendLedgEntry@1100003 : Record 25;UnrealizedVendLedgEntry@1100004 : Integer;BEGINFilterVendLedgerEntryByVATEntry(VendorLedgerEntry,VATEntry);UnrealizedVendLedgEntry := GetUnrealizedInvoiceVLENo(VATEntry."Unrealized VAT Entry No.");IF VendorLedgerEntry.FINDSET THENREPEATDtldVendLedgEntry.RESET;DtldVendLedgEntry.SETRANGE(Unapplied,FALSE);DtldVendLedgEntry.SETRANGE("Entry Type",DtldVendLedgEntry."Entry Type"::Application);DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",VendorLedgerEntry."Entry No.");IF UnrealizedVendLedgEntry <> 0 THENDtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",UnrealizedVendLedgEntry);IF DtldVendLedgEntry.FINDSET THENREPEATIF (DtldVendLedgEntry."Vendor Ledger Entry No." <> DtldVendLedgEntry."Applied Vend. Ledger Entry No.") ANDCheckVendLedgEntry.GET(DtldVendLedgEntry."Vendor Ledger Entry No.")THEN BEGINIF ExistDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THENEXIT(FALSE);InsertTempDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No.");EXIT(TRUE);END;UNTIL DtldVendLedgEntry.NEXT = 0ELSE BEGINDtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.");DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendorLedgerEntry."Entry No.");IF UnrealizedVendLedgEntry <> 0 THENDtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",UnrealizedVendLedgEntry);IF DtldVendLedgEntry.FINDSET THENREPEATIF CheckVendLedgEntry.GET(DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THEN BEGINIF ExistDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.") THENEXIT(FALSE);InsertTempDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.");EXIT(TRUE);END;UNTIL DtldVendLedgEntry.NEXT = 0;END;UNTIL VendorLedgerEntry.NEXT = 0;EXIT(TRUE);END;LOCAL PROCEDURE GetUnrealizedInvoiceVLENo@1100075(VATEntryNo@1100000 : Integer) : Integer;VARVATEntry@1100002 : Record 254;VendLedgEntry@1100001 : Record 25;BEGINIF NOT VATEntry.GET(VATEntryNo) THENEXIT(0);FilterVendLedgerEntryByVATEntry(VendLedgEntry,VATEntry);IF VendLedgEntry.FINDFIRST THENEXIT(VendLedgEntry."Entry No.");EXIT(0);END;LOCAL PROCEDURE FilterVendLedgerEntryByVATEntry@1100087(VAR VendLedgEntry@1100001 : Record 25;VATEntry@1100000 : Record 254);BEGINVendLedgEntry.SETRANGE("Vendor No.",VATEntry."Bill-to/Pay-to No.");VendLedgEntry.SETRANGE("Posting Date",VATEntry."Posting Date");VendLedgEntry.SETRANGE("Document Type",VATEntry."Document Type");VendLedgEntry.SETRANGE("Document No.",VATEntry."Document No.");VendLedgEntry.SETRANGE("Transaction No.",VATEntry."Transaction No.");END;LOCAL PROCEDURE HasBeenRealized@1100064(VATEntryNo@1100000 : Integer) : Boolean;VARUnrealizedVATEntry@1100001 : Record 254;BEGINUnrealizedVATEntry.SETRANGE("Unrealized VAT Entry No.",VATEntryNo);EXIT(NOT UnrealizedVATEntry.ISEMPTY);END;LOCAL PROCEDURE ExistDtldVLE@1100195(VLENo@1100001 : Integer;AppliedVLENo@1100000 : Integer) : Boolean;BEGINTempDtldVendLedgerEntry.SETRANGE("Vendor Ledger Entry No.",VLENo);TempDtldVendLedgerEntry.SETRANGE("Applied Vend. Ledger Entry No.",AppliedVLENo);EXIT(NOT TempDtldVendLedgerEntry.ISEMPTY);END;LOCAL PROCEDURE InsertTempDtldVLE@1100191(VLENo@1100000 : Integer;AppliedVLENo@1100001 : Integer);BEGINTempDtldVendLedgerEntry.INIT;IF TempDtldVendLedgerEntry.FINDLAST THEN;TempDtldVendLedgerEntry."Entry No." += 1;TempDtldVendLedgerEntry."Vendor Ledger Entry No." := VLENo;TempDtldVendLedgerEntry."Applied Vend. Ledger Entry No." := AppliedVLENo;TempDtldVendLedgerEntry.INSERT;END;// End of the added lines.BEGIN    END.  }...

ข้อกำหนดเบื้องต้น

คุณต้องมีหนึ่งผลิตภัณฑ์ต่อไปนี้ติดตั้งอยู่เพื่อใช้โปรแกรมแก้ไขด่วนนี้:

  • Microsoft Dynamics NAV 2009 R2 รุ่นภาษาสเปน

  • SP1 2009 นำทางของ Dynamics Microsoft รุ่นภาษาสเปน

ข้อมูลการเอาออก

คุณไม่สามารถเอาโปรแกรมแก้ไขด่วนนี้

สถานะ

Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"

หมายเหตุ นี่คือบทความ "เผยแพร่เร็ว" ที่สร้างขึ้นโดยตรงจากภายใน Microsoft สนับสนุนองค์กร ข้อมูลในที่นี้ให้ไว้ตามสภาพ เพื่อตอบสนองกับปัญหาที่เกิดขึ้นใหม่ เป็นผลมาจากความเร็วในการทำให้พร้อมใช้งาน วัสดุอาจรวมถึงข้อผิดพลาดการพิมพ์ผิด และอาจแก้ไขได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบ ดูข้อตกลงการใช้สำหรับข้อควรพิจารณาอื่น ๆ

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ