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

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

  • Microsoft Dynamics NAV 2009 R2 รุ่นภาษาอิตาลี

  • รุ่นภาษาอิตาลีของ Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

การแก้ปัญหา

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

โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก 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. เปลี่ยนแปลงรหัสนี้ในคีย์ในตารางรายการ VAT (254) เป็นดังนี้:รหัสที่มีอยู่

    ...KeyGroups=SalesTax }      {    ;Type,Country/Region Code,VAT Registration No.,VAT Bus. Posting Group,VAT Prod. Posting Group,Posting Date;                                                     SumIndexFields=Base,Additional-Currency Base;                                                     KeyGroups=VIES_EC }// Delete the following line.     {    ;Document No.,Posting Date                }// End of the deleted line.      {    ;Transaction No.                          }      {    ;Tax Jurisdiction Code,Tax Group Used,Tax Type,Use Tax,Posting Date;                                                     KeyGroups=SalesTax }      {    ;Type,Closed,VAT Bus. Posting Group,VAT Prod. Posting Group,Tax Jurisdiction Code,Use Tax,Tax Liable,VAT Period,Operation Occurred Date,Activity Code;...

    รหัสแทน

    ...KeyGroups=SalesTax }      {    ;Type,Country/Region Code,VAT Registration No.,VAT Bus. Posting Group,VAT Prod. Posting Group,Posting Date;                                                     SumIndexFields=Base,Additional-Currency Base;                                                     KeyGroups=VIES_EC }// Add the following line.     {    ;Document No.,Posting Date               ;SumIndexFields=Remaining Unrealized Base,Remaining Unrealized Amount }// End of the added line.      {    ;Transaction No.                          }      {    ;Tax Jurisdiction Code,Tax Group Used,Tax Type,Use Tax,Posting Date;                                                     KeyGroups=SalesTax }      {    ;Type,Closed,VAT Bus. Posting Group,VAT Prod. Posting Group,Tax Jurisdiction Code,Use Tax,Tax Liable,VAT Period,Operation Occurred Date,Activity Code;...
  2. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันGetUnRealizedVATPartในตารางรายการ VAT (254) เป็นดังนี้:รหัสที่อยู่ 1

    ...END;        EXIT(GLSetup."Additional Reporting Currency");      END;// Delete the following line.     PROCEDURE GetUnRealizedVATPart@2(SettledAmount@1003 : Decimal;Paid@1005 : Decimal;Full@1001 : Decimal;TotalUnrealVATAmountFirst@1006 : Decimal;TotalUnrealVATAmountLast@1007 : Decimal;Type2@1130000 : 'Sale,Purchase';DocType@1130001 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund,,,,Dishonored';LedgEntryOpen@1130002 : Boolean;LedgEntryAmount@1130003 : Decimal;LedgEntryRemAmt@1130004 : Decimal;TotalPayments@1130005 : Decimal) : Decimal;// End of the deleted line.      VAR        UnrealizedVatType@1000 : ' ,Percentage,First,Last,First (Fully Paid),Last (Fully Paid)';      BEGIN        IF (Type <> 0) AND...

    รหัสแทนที่ 1

    ...END;        EXIT(GLSetup."Additional Reporting Currency");      END;// Add the following line.     PROCEDURE GetUnRealizedVATPart@2(SettledAmount@1003 : Decimal;Paid@1005 : Decimal;Full@1001 : Decimal;TotalUnrealVATAmountFirst@1006 : Decimal;TotalUnrealVATAmountLast@1007 : Decimal;Type2@1130000 : 'Sale,Purchase';DocType@1130001 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund,,,,Dishonored';LedgEntryOpen@1130002 : Boolean;LedgEntryAmount@1130003 : Decimal;LedgEntryRemAmt@1130004 : Decimal;TotalPayments@1130005 : Decimal;VATPart@1130006 : Decimal;VAR TransactionInclPrepmt@1130007 : Boolean) : Decimal;// End of the added line.      VAR        UnrealizedVatType@1000 : ' ,Percentage,First,Last,First (Fully Paid),Last (Fully Paid)';      BEGIN        IF (Type <> 0) AND...

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

    ...(("Remaining Unrealized Amount" = 0) AND              ("Remaining Unrealized Base" = 0))          THEN            EXIT(0);// Delete the following lines.        //IF ABS(Paid) = ABS(Full) THEN        //   EXIT(1);         CASE UnrealizedVatType OF           UnrealizedVatType::Percentage:             BEGIN               IF Type2 = Type2::Purchase THEN BEGIN                 IF (DocType = DocType::"Credit Memo") THEN BEGIN                   IF (TotalPayments - ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN                     EXIT(1)                 END ELSE BEGIN                   IF (TotalPayments - ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN                     EXIT(CalcVatPart(GetCurrencyCode(), 1.0, TotalPayments,                       ("Remaining Unrealized Amount" + "Remaining Unrealized Base")))                   ELSE                     EXIT(1)                 END;               END               ELSE BEGIN                 IF (DocType = DocType::"Credit Memo") THEN BEGIN                   IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN                     EXIT(1)                 END ELSE BEGIN                   IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN                     EXIT(CalcVatPart(GetCurrencyCode(), 1.0, TotalPayments,                       ("Remaining Unrealized Amount" + "Remaining Unrealized Base")))                   ELSE                     EXIT(1)                 END;               END;// End of the deleted lines.              END;            UnrealizedVatType::First,UnrealizedVatType::"First (Fully Paid)":                BEGIN                  IF NOT LedgEntryOpen OR ("VAT Calculation Type" = "VAT Calculation Type"::"Reverse Charge VAT") THEN...

    รหัสแทนที่ 2

    ...(("Remaining Unrealized Amount" = 0) AND              ("Remaining Unrealized Base" = 0))          THEN            EXIT(0);// Add the following lines.         IF (ABS(GetRemainingUnrealizedAmount("Document No.","Posting Date")) = ABS(Paid)) AND            NOT IsPrepaymentIncluded(Type2,DocType,"Document No.")         THEN BEGIN           VATPart := 1;           EXIT(VATPart);         END;         CASE UnrealizedVatType OF           UnrealizedVatType::Percentage:             IF Type2 = Type2::Purchase THEN BEGIN               TransactionInclPrepmt := FALSE;               IF DocType = DocType::"Credit Memo" THEN BEGIN                 IF PurchCrMemoInclPrepmt("Document No.") THEN BEGIN                   TransactionInclPrepmt := TRUE;                   IF VATPart = 0 THEN BEGIN                     IF (ABS(TotalPayments) >= ABS(GetTransactionRemainingAmount("Transaction No."))) OR                        (ABS(Paid) = ABS(Full))                     THEN                       VATPart := 1                     ELSE                       VATPart :=                         CalcVatPart(                           GetCurrencyCode,1.0,TotalPayments,                           GetTransactionRemainingAmount("Transaction No."));                   END;                   EXIT(VATPart);                 END ELSE                   IF (TotalPayments - ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN                     EXIT(1)               END ELSE BEGIN                 IF PurchInvInclPrepmt("Document No.") THEN BEGIN                   TransactionInclPrepmt := TRUE;                   IF VATPart = 0 THEN BEGIN                     IF (ABS(TotalPayments) >= ABS(GetTransactionRemainingAmount("Transaction No."))) OR                       (ABS(Paid) = ABS(Full))                     THEN                       VATPart := 1                     ELSE                       VATPart :=                         CalcVatPart(                           GetCurrencyCode,1.0,TotalPayments,                           GetTransactionRemainingAmount("Transaction No."));                   END;                   EXIT(VATPart);                 END ELSE                   IF (TotalPayments - ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN                     EXIT(                       CalcVatPart(                         GetCurrencyCode,1.0,TotalPayments,                        ("Remaining Unrealized Amount" + "Remaining Unrealized Base")));                 EXIT(1);               END;             END ELSE BEGIN               TransactionInclPrepmt := FALSE;               IF DocType = DocType::"Credit Memo" THEN BEGIN                 IF SalesInvInclPrepmt("Document No.") THEN BEGIN                   TransactionInclPrepmt := TRUE;                   IF VATPart = 0 THEN BEGIN                     IF (ABS(TotalPayments) >= ABS(GetTransactionRemainingAmount("Transaction No."))) OR                        (ABS(Paid) = ABS(Full))                     THEN                       VATPart := 1                     ELSE                       VATPart :=                         CalcVatPart(                           GetCurrencyCode,1.0,TotalPayments,                           GetTransactionRemainingAmount("Transaction No."));                   END;                   EXIT(VATPart);                 END;                 IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN                   EXIT(1);                 EXIT(TotalPayments / ("Remaining Unrealized Amount" + "Remaining Unrealized Base"));               END;               IF SalesInvInclPrepmt("Document No.") THEN BEGIN                 TransactionInclPrepmt := TRUE;                 IF VATPart = 0 THEN BEGIN                  IF (ABS(TotalPayments) >= ABS(GetTransactionRemainingAmount("Transaction No."))) OR                      (ABS(Paid) = ABS(Full))                   THEN                     VATPart := 1                   ELSE                     VATPart :=                       CalcVatPart(                         GetCurrencyCode,1.0,TotalPayments,                         GetTransactionRemainingAmount("Transaction No."));                 END;                 EXIT(VATPart);               END ELSE                 IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN                   EXIT(                     CalcVatPart(                       GetCurrencyCode,1.0,TotalPayments,                       ("Remaining Unrealized Amount" + "Remaining Unrealized Base")));               EXIT(1);// End of the added lines.              END;            UnrealizedVatType::First,UnrealizedVatType::"First (Fully Paid)":                BEGIN                  IF NOT LedgEntryOpen OR ("VAT Calculation Type" = "VAT Calculation Type"::"Reverse Charge VAT") THEN...
  3. เปลี่ยนแปลงรหัสนี้ในฟังก์ชัน SalesInvInclPrepmt ในตารางรายการ VAT (254) เป็นดังนี้:รหัสที่มีอยู่

    ...EXIT(RemainingAmount - SettledAmount);        EXIT(RemainingAmount - (SettledAmount / CurrencyFactor));      END;      BEGIN      END.    }  }...

    รหัสแทน

    ...EXIT(RemainingAmount - SettledAmount);        EXIT(RemainingAmount - (SettledAmount / CurrencyFactor));      END;// Add the following lines.  LOCAL PROCEDURE SalesInvInclPrepmt@1130019(DocNo@1130000 : Code[20]) : Boolean;  VAR    SalesInvLine@1130001 : Record 113;  BEGIN    SalesInvLine.SETRANGE("Document No.",DocNo);    SalesInvLine.SETRANGE("Prepayment Line",TRUE);    EXIT(NOT SalesInvLine.ISEMPTY);  END;  LOCAL PROCEDURE SalesCrMemoInclPrepmt@1130101(DocNo@1130000 : Code[20]) : Boolean;  VAR    SalesCrMemoLine@1130001 : Record 115;  BEGIN    SalesCrMemoLine.SETRANGE("Document No.",DocNo);    SalesCrMemoLine.SETRANGE("Prepayment Line",TRUE);    EXIT(NOT SalesCrMemoLine.ISEMPTY);  END;  LOCAL PROCEDURE PurchInvInclPrepmt@1130021(DocNo@1130000 : Code[20]) : Boolean;  VAR    PurchInvLine@1130001 : Record 123;  BEGIN    PurchInvLine.SETRANGE("Document No.",DocNo);    PurchInvLine.SETRANGE("Prepayment Line",TRUE);    EXIT(NOT PurchInvLine.ISEMPTY);  END;  LOCAL PROCEDURE PurchCrMemoInclPrepmt@1130020(DocNo@1130000 : Code[20]) : Boolean;  VAR    PurchCrMemoLine@1130001 : Record 125;  BEGIN    PurchCrMemoLine.SETRANGE("Document No.",DocNo);    PurchCrMemoLine.SETRANGE("Prepayment Line",TRUE);    EXIT(NOT PurchCrMemoLine.ISEMPTY);  END;  LOCAL PROCEDURE GetTransactionRemainingAmount@1130016(TransactionNo@1130000 : Integer) TransactionAmount : Decimal;  VAR    VATEntry@1130001 : Record 254;  BEGIN    WITH VATEntry DO BEGIN      SETRANGE("Transaction No.",TransactionNo);      IF FINDSET THEN        REPEAT          TransactionAmount += "Remaining Unrealized Base" + "Remaining Unrealized Amount";        UNTIL NEXT = 0;    END;  END;  LOCAL PROCEDURE GetRemainingUnrealizedAmount@1130017(DocumentNo@1130000 : Code[20];PostingDate@1130001 : Date) : Decimal;  VAR    VATEntry@1130002 : Record 254;  BEGIN    VATEntry.SETCURRENTKEY("Document No.","Posting Date");    VATEntry.SETRANGE("Document No.",DocumentNo);    VATEntry.SETRANGE("Posting Date",PostingDate);    VATEntry.CALCSUMS("Remaining Unrealized Base","Remaining Unrealized Amount");    EXIT(VATEntry."Remaining Unrealized Base" + VATEntry."Remaining Unrealized Amount");  END;  LOCAL PROCEDURE IsPrepaymentIncluded@1130023(VATType@1130002 : 'Sale,Purchase';DocumentType@1130000 : ' ,Payment,Invoice,Credit Memo,Finance Charge Memo,Reminder,Refund,,,,Dishonored';DocumentNo@1130001 : Code[20]) : Boolean;  BEGIN    CASE VATType OF      VATType::Purchase:        IF DocumentType = DocumentType::"Credit Memo" THEN          EXIT(PurchCrMemoInclPrepmt(DocumentNo))        ELSE          EXIT(PurchInvInclPrepmt(DocumentNo));      VATType::Sale:        IF DocumentType = DocumentType::"Credit Memo" THEN          EXIT(SalesInvInclPrepmt(DocumentNo))        ELSE          EXIT(SalesCrMemoInclPrepmt(DocumentNo));    END;  END;// End of the added lines.      BEGIN      END.    }  }...
  4. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันCustUnrealizedVATในแบบทั่วไปงานสมุดรายวัน-ยูนิตบรรทัดการลงรายการบัญชี (12) ดัง:รหัสที่อยู่ 1

    ...SalesVATUnrealAccount@1010 : Code[20];        LastConnectionNo@1011 : Integer;        TotalPayments@1130000 : Decimal;        Type2@1130001 : 'Sale,Purchase';      BEGIN        PaidAmount := CustLedgEntry2."Amount (LCY)" - CustLedgEntry2."Remaining Amt. (LCY)";        VATEntry2.RESET;        VATEntry2.SETCURRENTKEY("Transaction No.");...

    รหัสแทนที่ 1

    ...SalesVATUnrealAccount@1010 : Code[20];        LastConnectionNo@1011 : Integer;        TotalPayments@1130000 : Decimal;        Type2@1130001 : 'Sale,Purchase';// Add the following line.       TransactionInclPrepmt@1130002 : Boolean;// End of the added line.      BEGIN        PaidAmount := CustLedgEntry2."Amount (LCY)" - CustLedgEntry2."Remaining Amt. (LCY)";        VATEntry2.RESET;        VATEntry2.SETCURRENTKEY("Transaction No.");...

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

    ...InsertSummarizedVAT;              LastConnectionNo := VATEntry2."Sales Tax Connection No.";            END;// Delete the following lines.           VATPart := VATEntry2.GetUnRealizedVATPart(             ROUND(SettledAmount / CustLedgEntry2.GetOriginalCurrencyFactor),             PaidAmount,             CustLedgEntry2."Original Amt. (LCY)",             TotalUnrealVATAmountFirst,             TotalUnrealVATAmountLast,             Type2::Sale,             CustLedgEntry2."Document Type",             CustLedgEntry2.Open,             CustLedgEntry2.Amount,             CustLedgEntry2."Remaining Amount",             TotalPayments);// End of the deleted lines.            IF VATPart > 0 THEN BEGIN              CASE VATEntry2."VAT Calculation Type" OF                VATEntry2."VAT Calculation Type"::"Normal VAT",...

    รหัสแทนที่ 2

    ...InsertSummarizedVAT;              LastConnectionNo := VATEntry2."Sales Tax Connection No.";            END;// Add the following lines.           VATPart :=             VATEntry2.GetUnRealizedVATPart(               ROUND(SettledAmount / CustLedgEntry2.GetOriginalCurrencyFactor),               PaidAmount,               CustLedgEntry2."Original Amt. (LCY)",               TotalUnrealVATAmountFirst,               TotalUnrealVATAmountLast,               Type2::Sale,               CustLedgEntry2."Document Type",               CustLedgEntry2.Open,               CustLedgEntry2.Amount,               CustLedgEntry2."Remaining Amount",               TotalPayments,               VATPart,               TransactionInclPrepmt);// End of the added lines.            IF VATPart > 0 THEN BEGIN              CASE VATEntry2."VAT Calculation Type" OF                VATEntry2."VAT Calculation Type"::"Normal VAT",...

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

    ...VATEntry2."Add.-Curr. Rem. Unreal. Base" * VATPart,                    AddCurrency."Amount Rounding Precision");              END;// Delete the following line.             TotalPayments := TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");// End of the deleted line.              IF VATAmount <> 0 THEN BEGIN                InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);                GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;...

    รหัสแทนที่ 3

    ...VATEntry2."Add.-Curr. Rem. Unreal. Base" * VATPart,                    AddCurrency."Amount Rounding Precision");              END;// Add the following lines.             IF TransactionInclPrepmt THEN               TotalPayments := TotalPayments - ROUND(TotalPayments * VATPart)             ELSE               TotalPayments :=                 TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");// End of the added lines.              IF VATAmount <> 0 THEN BEGIN                InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);                GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;...
  5. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันVendUnrealizedVATในแบบทั่วไปงานสมุดรายวัน-ยูนิตบรรทัดการลงรายการบัญชี (12) ดัง:รหัสที่อยู่ 1

    ...PurchReverseUnrealAccount@1012 : Code[20];        LastConnectionNo@1013 : Integer;        Type2@1130000 : 'Sale,Purchase';        TotalPayments@1130001 : Decimal;      BEGIN        VATEntry2.RESET;        VATEntry2.SETCURRENTKEY("Transaction No.");        VATEntry2.SETRANGE("Transaction No.",VendLedgEntry2."Transaction No.");...

    รหัสแทนที่ 1

    ...PurchReverseUnrealAccount@1012 : Code[20];        LastConnectionNo@1013 : Integer;        Type2@1130000 : 'Sale,Purchase';        TotalPayments@1130001 : Decimal;// Add the following line.       TransactionInclPrepmt@1130002 : Boolean;// End of the added line.      BEGIN        VATEntry2.RESET;        VATEntry2.SETCURRENTKEY("Transaction No.");        VATEntry2.SETRANGE("Transaction No.",VendLedgEntry2."Transaction No.");...

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

    ...IF LastConnectionNo <> VATEntry2."Sales Tax Connection No." THEN BEGIN              InsertSummarizedVAT;              LastConnectionNo := VATEntry2."Sales Tax Connection No.";            END;// Delete the following lines.           IF (TotalPayments <= 0) AND (VendLedgEntry2."Document Type" = VendLedgEntry2."Document Type"::Invoice) THEN             EXIT;           VATPart := VATEntry2.GetUnRealizedVATPart(             ROUND(SettledAmount / VendLedgEntry2.GetOriginalCurrencyFactor),             PaidAmount,             VendLedgEntry2."Original Amt. (LCY)",             TotalUnrealVATAmountFirst,             TotalUnrealVATAmountLast,             Type2::Purchase,             VendLedgEntry2."Document Type",             VendLedgEntry2.Open,             VendLedgEntry2.Amount,             VendLedgEntry2."Remaining Amount",             TotalPayments);// End of the deleted lines.            IF VATPart >= 0 THEN BEGIN              IF VATPart <> 0 THEN BEGIN                CASE VATEntry2."VAT Calculation Type" OF...

    รหัสแทนที่ 2

    ...IF LastConnectionNo <> VATEntry2."Sales Tax Connection No." THEN BEGIN              InsertSummarizedVAT;              LastConnectionNo := VATEntry2."Sales Tax Connection No.";            END;// Add the following lines.           IF ((TotalPayments <= 0) AND (NOT TransactionInclPrepmt)) AND              (VendLedgEntry2."Document Type" = VendLedgEntry2."Document Type"::Invoice)           THEN             EXIT;           VATPart :=             VATEntry2.GetUnRealizedVATPart(               ROUND(SettledAmount / VendLedgEntry2.GetOriginalCurrencyFactor),               PaidAmount,               VendLedgEntry2."Original Amt. (LCY)",               TotalUnrealVATAmountFirst,               TotalUnrealVATAmountLast,               Type2::Purchase,               VendLedgEntry2."Document Type",               VendLedgEntry2.Open,               VendLedgEntry2.Amount,               VendLedgEntry2."Remaining Amount",               TotalPayments,               VATPart,               TransactionInclPrepmt);// End of the added lines.            IF VATPart >= 0 THEN BEGIN              IF VATPart <> 0 THEN BEGIN                CASE VATEntry2."VAT Calculation Type" OF...

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

    ...PurchVATUnrealAccount := TaxJurisdiction."Unreal. Tax Acc. (Purchases)";                    END;                END;// Delete the following lines.               VATAmount := ROUND((VATEntry2."Remaining Unrealized Amount" * VATPart),GLSetup."Amount Rounding Precision");               VATBase := ROUND((VATEntry2."Remaining Unrealized Base"* VATPart),GLSetup."Amount Rounding Precision");               TotalPayments := TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");// End of the deleted lines.                IF VATAmount <> 0 THEN BEGIN                  InitGLEntry(PurchVATUnrealAccount,-VATAmount,0,FALSE,TRUE);                  GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;...

    รหัสแทนที่ 3

    ...PurchVATUnrealAccount := TaxJurisdiction."Unreal. Tax Acc. (Purchases)";                    END;                END;// Add the following lines.               VATAmount := ROUND(VATEntry2."Remaining Unrealized Amount" * VATPart,GLSetup."Amount Rounding Precision");               VATBase := ROUND(VATEntry2."Remaining Unrealized Base" * VATPart,GLSetup."Amount Rounding Precision");             IF TransactionInclPrepmt THEN               TotalPayments := TotalPayments - ROUND(TotalPayments * VATPart)             ELSE               TotalPayments :=                 TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");// End of the added lines.                IF VATAmount <> 0 THEN BEGIN                  InitGLEntry(PurchVATUnrealAccount,-VATAmount,0,FALSE,TRUE);                  GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;...

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

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

  • การแปลภาษาอิตาลีของ Microsoft Dynamics NAV 2009 R2

  • การแปลภาษาอิตาลีของ SP1 2009 นำทางของ Dynamics Microsoft

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

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

สถานะ

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

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

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

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

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