การประกาศ VAT ของสเปน 349 จะส่งออกยอดเงินในสกุลเงินที่ใช้ในเอกสาร แม้ว่าคุณจะใช้โปรแกรมแก้ไขด่วน 254942 ใน Microsoft Dynamics NAV

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

บทความนี้ใช้กับ Microsoft Dynamics NAV สําหรับภาษาสเปน (es) ภาษาท้องถิ่น

อาการ

สมมติว่า คุณใช้ 2547942 โปรแกรมแก้ไขด่วนใน Microsoft Dynamics NAV อย่างไรก็ตาม การรายงานภาษี VAT ของสเปน 349 ยังคงส่งออกยอดเงินในสกุลเงินที่ใช้ในเอกสารแทนสกุลเงินท้องถิ่น ถ้าลูกค้าหรือผู้ขายไม่มีรหัสสกุลเงินในบัตร แต่มีการลงรายการบัญชีเอกสารรวมทั้งสกุลเงิน ยอดเงินที่ส่งออกในการประกาศ 349 ไม่ถูกต้อง เนื่องจากยอดเงินที่ส่งออกเป็นยอดเงินในสกุลเงินที่ใช้ในเอกสารแทนสกุลเงินท้องถิ่นที่ผู้ใช้จําเป็นต้องรายงานไปยังหน่วยงานจัดเก็บภาษี

ปัญหานี้เกิดขึ้นในผลิตภัณฑ์ต่อไปนี้:

  • Microsoft Dynamics NAV 2013
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

การแก้ปัญหา

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

โปรแกรมแก้ไขด่วนที่ได้รับการสนับสนุนจาก Microsoft พร้อมใช้งานแล้ว อย่างไรก็ตาม มีไว้เพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นําไปใช้กับระบบที่พบปัญหานี้โดยเฉพาะเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณไม่ได้รับผลกระทบอย่างร้ายแรงจากปัญหานี้ เราขอแนะนําให้คุณรอ Service Pack 2013 Microsoft Dynamics NAV ถัดไป หรือ Microsoft Dynamics NAV เวอร์ชันถัดไปที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้

หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมสําหรับการโทรติดต่อฝ่ายสนับสนุนตามปกติอาจถูกยกเลิกถ้าผู้เชี่ยวชาญฝ่ายสนับสนุนทางเทคนิคสําหรับ Microsoft Dynamics และผลิตภัณฑ์ที่เกี่ยวข้องระบุว่าการอัปเดตเฉพาะจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนปกติจะใช้กับคําถามและปัญหาการสนับสนุนเพิ่มเติมที่ไม่มีคุณสมบัติสําหรับการอัปเดตเฉพาะที่สงสัย

          

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

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

หมายเหตุ ก่อนที่คุณจะติดตั้งโปรแกรมแก้ไขด่วนนี้ ตรวจสอบว่าผู้ใช้ไคลเอนต์ Microsoft Navision ทั้งหมดออกจากระบบ ซึ่งรวมถึงผู้ใช้ไคลเอนต์ Microsoft Navision Application Services (NAS) คุณควรเป็นผู้ใช้ไคลเอนต์เท่านั้นที่เข้าสู่ระบบเมื่อคุณใช้โปรแกรมแก้ไขด่วนนี้

เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้

เราขอแนะนําให้ใช้บัญชีผู้ใช้ในหน้าต่าง ล็อกอินของ Windows หรือในหน้าต่าง ล็อกอินของฐานข้อมูล ถูกกําหนด ID บทบาท "SUPER" หากบัญชีผู้ใช้ไม่สามารถกําหนดรหัสบทบาท "SUPER" ได้ คุณต้องตรวจสอบว่าบัญชีผู้ใช้มีสิทธิ์ต่อไปนี้:

  • สิทธิ์ในการปรับเปลี่ยนสําหรับวัตถุที่คุณจะเปลี่ยนแปลง
  • สิทธิ์ Execute สําหรับวัตถุ System Object ID 5210 และสําหรับวัตถุ System Object ID 9015

                
หมายเหตุ คุณไม่มีสิทธิ์ในที่เก็บข้อมูล เว้นแต่คุณจะต้องดําเนินการซ่อมแซมข้อมูล

การเปลี่ยนแปลงโค้ด

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

  1. เปลี่ยนรหัสในฟังก์ชัน GetPostedCountryLocCode ดังนี้:
    รหัสที่มีอยู่ 1

    ...
                                REPEAT
                                  IF SalesInvLines."Location Code" <> '' THEN BEGIN
                                    IF Location.GET(SalesInvLines."Location Code") THEN
                                      EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                    IF EUCountryLinesLocationCode THEN BEGIN
    
    // Delete the following line.
                                      AmountToIncludeIn349 := AmountToIncludeIn349 + SalesInvLines.Amount;
    
                                      IF GetCountryfromLocation(SalesInvLines."Location Code") <> CountryCode THEN
                                        LocationDifferentCountryCode := TRUE;
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
    ...
    
    

    รหัสทดแทน 1

    ...
                                REPEAT
                                  IF SalesInvLines."Location Code" <> '' THEN BEGIN
                                    IF Location.GET(SalesInvLines."Location Code") THEN
                                      EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                    IF EUCountryLinesLocationCode THEN BEGIN
    
    // Add the following lines.
                                      AmountToIncludeIn349 +=
                                        GetExportedAmountIn349(SalesInvHeader."Currency Code",
                                        SalesInvHeader."Currency Factor",SalesInvLines."Line Amount");
    // End of the lines.
    
                                      IF GetCountryfromLocation(SalesInvLines."Location Code") <> CountryCode THEN
                                        LocationDifferentCountryCode := TRUE;
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
    ...
    
    

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

    ...
                                      TempSalesInvLines.INSERT;
                                    END;
                                  END ELSE
                                    IF CompInforShipToCountryCode THEN BEGIN
                                      EUCountryLinesLocationCode := TRUE;
    
    // Delete the following line.
                                      AmountToIncludeIn349 := AmountToIncludeIn349 + SalesInvLines.Amount;
    
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
                                UNTIL SalesInvLines.NEXT = 0;
                            END;
    ...
    
    

    รหัสทดแทน 2

    ...
                                      TempSalesInvLines.INSERT;
                                    END;
                                  END ELSE
                                    IF CompInforShipToCountryCode THEN BEGIN
                                      EUCountryLinesLocationCode := TRUE;
    
    // Add the following lines.
                                      AmountToIncludeIn349 +=
                                        GetExportedAmountIn349(SalesInvHeader."Currency Code",
                                        SalesInvHeader."Currency Factor",SalesInvLines."Line Amount");
    // End of the lines.
    
                                      TempSalesInvLines := SalesInvLines;
                                      TempSalesInvLines.INSERT;
                                    END;
                                UNTIL SalesInvLines.NEXT = 0;
                            END;
    ...
    
    

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

    ...
                              REPEAT
                                IF PurchInvLines."Location Code" <> '' THEN BEGIN
                                  IF Location.GET(PurchInvLines."Location Code") THEN
                                    EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                  IF EUCountryLinesLocationCode THEN BEGIN
    
    // Delete the following line.
                                    AmountToIncludeIn349 := AmountToIncludeIn349 + PurchInvLines.Amount;
    
                                    IF GetCountryfromLocation(PurchInvLines."Location Code") <> CountryCode THEN
                                      LocationDifferentCountryCode := TRUE;
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
    ...
    

    รหัสทดแทน 3

    ...
                              REPEAT
                                IF PurchInvLines."Location Code" <> '' THEN BEGIN
                                  IF Location.GET(PurchInvLines."Location Code") THEN
                                    EUCountryLinesLocationCode := FindEUCountryRegionCode(Location."Country/Region Code");
                                  IF EUCountryLinesLocationCode THEN BEGIN
    
    // Add the following lines.
                                    AmountToIncludeIn349 +=
                                      GetExportedAmountIn349(PurchInvHeader."Currency Code",
                                      PurchInvHeader."Currency Factor",PurchInvLines."Line Amount");
    // End of the lines.
    
                                    IF GetCountryfromLocation(PurchInvLines."Location Code") <> CountryCode THEN
                                      LocationDifferentCountryCode := TRUE;
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
    ...
    
    

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

    ...
                                    TempPurchInvLines.INSERT;
                                  END;
                                END ELSE
                                  IF CompInforShipToCountryCode THEN BEGIN
                                    EUCountryLinesLocationCode := TRUE;
    
    // Delete the following line.
                                    AmountToIncludeIn349 := AmountToIncludeIn349 + PurchInvLines.Amount;
    
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
                              UNTIL PurchInvLines.NEXT = 0;
                          END;
    ...
    
    

    รหัสทดแทน 4

    ...
                                    TempPurchInvLines.INSERT;
                                  END;
                                END ELSE
                                  IF CompInforShipToCountryCode THEN BEGIN
                                    EUCountryLinesLocationCode := TRUE;
    
    // Add the following lines.
                                    AmountToIncludeIn349 +=
                                      GetExportedAmountIn349(PurchInvHeader."Currency Code",
                                      PurchInvHeader."Currency Factor",PurchInvLines."Line Amount");
    // End of the lines.
    
                                    TempPurchInvLines := PurchInvLines;
                                    TempPurchInvLines.INSERT;
                                  END;
                              UNTIL PurchInvLines.NEXT = 0;
                          END;
    ...
    
    
  2. เปลี่ยนโค้ดในฟังก์ชัน GetExportedAmountIn349 ดังนี้:
    รหัสที่มีอยู่

    ...
          BEGIN
            IF DeliveryOperationCode = DeliveryOperationCode::" " THEN
              DeliveryOperationCode := DeliveryOperationCode::E;
          END;
    
          BEGIN
          END.
        }
        RDLDATA
        {
    ...
    
    

    รหัสทดแทน

    ...
          BEGIN
            IF DeliveryOperationCode = DeliveryOperationCode::" " THEN
              DeliveryOperationCode := DeliveryOperationCode::E;
          END;
    
    // Add the following lines.  
          LOCAL PROCEDURE GetExportedAmountIn349@1100014(CurrencyCode@1100008 : Code[20];CurrencyFactor@1100009 : Decimal;LineAmount@1100010 : Decimal) : Decimal;
          VAR
            Currency@1100001 : Record 4;
          BEGIN
            IF CurrencyCode <> '' THEN BEGIN
              Currency.GET(CurrencyCode);
              EXIT(ROUND(LineAmount / CurrencyFactor,Currency."Amount Rounding Precision"))
            END;
            EXIT(LineAmount);
          END;
    
    // End of the lines.
    
          BEGIN
          END.
        }
        RDLDATA
        {
    ...
    
    

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

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

  • Microsoft Dynamics NAV 2013
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

ลบข้อมูลออก

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

สถานะ

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

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