Khai báo 349 cho thấy kết quả không chính xác nếu bạn sử dụng hai VAT prod đăng các nhóm trong phiên bản tiếng Tây Ban Nha của Microsoft Dynamics NAV 5.0 Gói dịch vụ 1

Bài viết này áp dụng cho Microsoft Dynamics NAV cho ngôn ngữ tiếng Tây Ban Nha (es) bản địa.

Nếu bạn sử dụng hai VAT prod đăng các nhóm trong phiên bản tiếng Tây Ban Nha của Microsoft Dynamics NAV 5.0 Gói dịch vụ 1 (SP1), khai báo 349 cho thấy một kết quả không chính xác. Sự cố này xảy ra cho dù bạn sử dụng dịch vụ EU trong thiết lập đăng VAT hay không.

Triệu chứng

Thông tin cập nhật nóng

Hotfix được hỗ trợ hiện có sẵn từ Microsoft. Tuy nhiên, nó chỉ là nhằm sửa chữa vấn đề được mô tả trong bài viết này. Áp dụng nó chỉ cho hệ thống đang gặp này cụ thể vấn đề. Hotfix này có thể nhận được thử nghiệm bổ sung. Do đó, nếu bạn không bị ảnh hưởng nghiêm trọng bởi sự cố này, chúng tôi khuyên bạn nên đợi gói dịch vụ Microsoft Dynamics NAV 5.0 tiếp theo hoặc phiên bản Microsoft Dynamics NAV tiếp theo có chứa hotfix này.

Lưu ý Trong trường hợp đặc biệt, các khoản phí thường phát sinh đối với các cuộc gọi hỗ trợ có thể bị hủy nếu Chuyên gia Hỗ trợ Kỹ thuật dành cho Microsoft Dynamics và các sản phẩm liên quan xác định rằng một bản cập nhật cụ thể sẽ giải quyết sự cố của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các câu hỏi và sự cố hỗ trợ bổ sung không đủ điều kiện cho bản cập nhật cụ thể được đề cập.

Giải pháp

Thông tin cài đặt

Microsoft chỉ cung cấp các ví dụ lập trình để minh họa mà không cần bảo hành dù là rõ ràng hay ngụ ý. Điều này bao gồm, nhưng không giới hạn ở, bảo hành ngụ ý về khả năng bán được hoặc sự thích hợp cho một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen thuộc với ngôn ngữ lập trình đang được chứng minh và với các công cụ được sử dụng để tạo và gỡ lỗi thủ tục. Các kỹ sư hỗ trợ của Microsoft có thể giúp giải thích chức năng của một quy trình cụ thể, nhưng họ sẽ không sửa đổi các ví dụ này để cung cấp chức năng bổ sung hoặc quy trình xây dựng để đáp ứng các yêu cầu cụ thể của bạn.

Lưu ý Trước khi bạn cài đặt hotfix này, hãy xác minh rằng tất cả người dùng máy khách Microsoft Navision đã được đăng xuất khỏi hệ thống. Điều này bao gồm người dùng máy khách Dịch vụ Ứng dụng Microsoft Navision (NAS). Bạn nên là người dùng khách duy nhất đăng nhập khi bạn thực hiện hotfix này.

Để thực hiện hotfix này, bạn phải có giấy phép nhà phát triển.

Chúng tôi khuyên bạn nên gán tài khoản người dùng trong cửa sổ Đăng nhập Windows hoặc trong cửa sổ Đăng nhập Cơ sở dữ liệu. Nếu tài khoản người dùng không thể được gán ID vai trò "SIÊU", bạn phải xác minh rằng tài khoản người dùng có các quyền sau đây:

  • Quyền Sửa đổi đối với đối tượng mà bạn sẽ thay đổi.
  • Quyền Thực thi đối với đối tượng ID Đối tượng Hệ thống 5210 và đối với đối tượng ID Đối tượng Hệ thống 9015.

            
Lưu ý Bạn không phải có quyền đối với các kho dữ liệu trừ khi bạn phải thực hiện sửa chữa dữ liệu.

Thay đổi mã

Lưu ý Luôn kiểm tra các bản sửa lỗi mã trong môi trường được kiểm soát trước khi bạn áp dụng các bản sửa lỗi cho máy tính sản xuất của bạn.
Để giải quyết vấn đề này, hãy làm theo các bước sau:

  1. Thay đổi mã trong mục Mục Dữ liệu số 5 trong báo cáo Khai báo Thực hiện 349 (88)) như sau:
    Mã hiện có 1

    ...
                  SectionType=GroupFooter;
                  SectionWidth=15600;
                  SectionHeight=423;
    
                  // Delete the following line.
                  OnPostSection=BEGIN
    
                                  CustVendCountry.GET("Country/Region Code");
                                  CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits");
                                  OpTriang := ' ';
    ...
    
    

    Mã thay thế 1

    ...
                  SectionType=GroupFooter;
                  SectionWidth=15600;
                  SectionHeight=423;
    
                  // Add the following lines.
                  OnPostSection=VAR
                                  SalesInvLine@1100300 : Record 113;
                                  SalesInvHeader@1100301 : Record 112;
                                BEGIN
                  // End of the lines.
    
                                  CustVendCountry.GET("Country/Region Code");
                                  CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits");
                                  OpTriang := ' ';
    ...
    
    

    Mã hiện có 2

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                  Customer2.RESET;
                                  Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã thay thế 2

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                  Customer2.RESET;
                                  Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã hiện có 3

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                  Customer2.RESET;
                                  Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã thay thế 3

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                 // Add the following lines.
                                  NoTaxableNormalAmount := 0;
                                  NoTaxableAmountOpTri := 0;
                                  NoTaxableAmountEUService := 0;
                                 // End of the lines.
    
                                  Customer2.RESET;
                                  Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã hiện có 4

    ...
                                              RectPeriod := '0';
                                        UNTIL CustVendWarning349.NEXT = 0;
                                      //END;
                                    UNTIL Customer2.NEXT = 0;
    
                                    IF "VAT Registration No." <> '' THEN BEGIN
    ...
    
    

    Mã thay thế 4

    ...
                                              RectPeriod := '0';
                                        UNTIL CustVendWarning349.NEXT = 0;
                                      //END;
    
                                     // Add the following lines.
                                      SalesInvLine.RESET;
                                      SalesInvLine.SETRANGE("Bill-to Customer No.",Customer2."No.");
                                      SalesInvLine.SETRANGE("Posting Date",FromDate,ToDate);
                                      SalesInvLine.SETRANGE("VAT Calculation Type",SalesInvLine."VAT Calculation Type"::"No Taxable VAT");
                                      SalesInvLine.SETFILTER("Gen. Prod. Posting Group", FilterString);
                                      IF SalesInvLine.FINDSET THEN
                                        REPEAT
                                          IF VATPostingSetup.GET(SalesInvLine."VAT Bus. Posting Group",SalesInvLine."VAT Prod. Posting Group") THEN
                                            IF VATPostingSetup."EU Service" THEN
                                              NoTaxableAmountEUService := NoTaxableAmountEUService + SalesInvLine."Line Amount"
                                            ELSE
                                              IF SalesInvHeader.GET(SalesInvLine."Document No.") THEN
                                                IF SalesInvHeader."EU 3-Party Trade" THEN
                                                  NoTaxableAmountOpTri := NoTaxableAmountOpTri + SalesInvLine."Line Amount"
                                                ELSE
                                                  NoTaxableNormalAmount := NoTaxableNormalAmount + SalesInvLine."Line Amount"
                                        UNTIL SalesInvLine.NEXT = 0;
                                     // End of the lines.
    
                                    UNTIL Customer2.NEXT = 0;
    
                                    IF "VAT Registration No." <> '' THEN BEGIN
    ...
    
    

    Mã hiện có 5

    ...
                                    IF "VAT Registration No." <> '' THEN BEGIN
                                      IF NormalAmount < 0 THEN
                                        NormalAmount := -NormalAmount;
                                      IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13);
                                        Txt :=
    ...
    
    

    Mã thay thế 5

    ...
                                    IF "VAT Registration No." <> '' THEN BEGIN
                                      IF NormalAmount < 0 THEN
                                        NormalAmount := -NormalAmount;
    
                                      // Add the following line.
                                      NormalAmount := NormalAmount + NoTaxableNormalAmount;
    
                                      IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13);
                                        Txt :=
    ...
    
    

    Mã hiện có 6

    ...
                                      END;
                                      IF AmountOpTri < 0 THEN
                                        AmountOpTri := -AmountOpTri;
                                      IF CorrIncludedForOpTriAmount OR (AmountOpTri <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountOpTri),3,13);
                                        Txt :=
    ...
    
    

    Mã thay thế 6

    ...
                                      END;
                                      IF AmountOpTri < 0 THEN
                                        AmountOpTri := -AmountOpTri;
    
                                      // Add the following line.
                                      AmountOpTri := AmountOpTri + NoTaxableAmountOpTri;
    
                                      IF CorrIncludedForOpTriAmount OR (AmountOpTri <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountOpTri),3,13);
                                        Txt :=
    ...
    
    

    Mã hiện có 7

    ...
                                      END;
                                      IF AmountEUService < 0 THEN
                                        AmountEUService := -AmountEUService;
                                      IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13);
                                        CustVendCountry.GET(Customer2."Country/Region Code");
    ...
    
    

    Mã thay thế 7

    ...
                                      END;
                                      IF AmountEUService < 0 THEN
                                        AmountEUService := -AmountEUService;
    
                                      // Add the following line.
                                      AmountEUService := AmountEUService + NoTaxableAmountEUService;
    
                                      IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13);
                                        CustVendCountry.GET(Customer2."Country/Region Code");
    ...
    
    
  2. Thay đổi mã trong mục Mục Dữ liệu số 6 trong báo cáo Khai báo Thực hiện 349 (88) như sau:
    Mã hiện có 1

    ...
                  SectionType=GroupFooter;
                  SectionWidth=15600;
                  SectionHeight=423;
    
                  // Delete the following line.
                  OnPostSection=BEGIN
    
                                  CustVendCountry.GET("Country/Region Code");
                                  CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits");
                                  OpTriang := ' ';
    ...
    
    

    Mã thay thế 1

    ...
                  SectionType=GroupFooter;
                  SectionWidth=15600;
                  SectionHeight=423;
    
                  // Add the following lines.
                  OnPostSection=VAR
                                  PurchInvLine@1100302 : Record 123;
                                BEGIN
                  // End of the lines.
    
                                  CustVendCountry.GET("Country/Region Code");
                                  CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits");
                                  OpTriang := ' ';
    ...
    
    

    Mã hiện có 2

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                  Vendor2.RESET;
                                  Vendor2.SETRANGE(Vendor2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã thay thế 2

    ...
                                  AccumOrigDeclAmountEUService := 0;
                                  AccumPrevDeclAmountTri := 0;
                                  AccumOrigDeclAmountTri := 0;
    
                                  // Add the following lines.
                                  NoTaxableNormalAmount := 0;
                                  NoTaxableAmountEUService := 0;
                                  // End of the lines.
    
                                  Vendor2.RESET;
                                  Vendor2.SETRANGE(Vendor2."VAT Registration No.","VAT Registration No.");
    ...
    
    

    Mã hiện có 3

    ...
                                              RectPeriod := '0';
                                        UNTIL CustVendWarning349.NEXT = 0;
                                      END;
                                    UNTIL Vendor2.NEXT = 0;
    
                                    IF "VAT Registration No." <> '' THEN BEGIN
    ...
    
    

    Mã thay thế 3

    ...
                                              RectPeriod := '0';
                                        UNTIL CustVendWarning349.NEXT = 0;
                                      END;
    
                                      // Add the following lines.
                                      PurchInvLine.RESET;
                                      PurchInvLine.SETRANGE("Pay-to Vendor No.",Vendor2."No.");
                                      PurchInvLine.SETRANGE("Posting Date",FromDate,ToDate);
                                      PurchInvLine.SETRANGE("VAT Calculation Type",PurchInvLine."VAT Calculation Type"::"No Taxable VAT");
                                      PurchInvLine.SETFILTER("Gen. Prod. Posting Group", FilterString);
                                      IF PurchInvLine.FINDSET THEN
                                        REPEAT
                                          IF VATPostingSetup.GET(PurchInvLine."VAT Bus. Posting Group",PurchInvLine."VAT Prod. Posting Group") THEN
                                            IF VATPostingSetup."EU Service" THEN
                                              NoTaxableAmountEUService := NoTaxableAmountEUService + PurchInvLine."Line Amount"
                                            ELSE
                                              NoTaxableNormalAmount := NoTaxableNormalAmount + PurchInvLine."Line Amount"
                                        UNTIL PurchInvLine.NEXT = 0;
                                      // End of the lines.
    
                                    UNTIL Vendor2.NEXT = 0;
    
                                    IF "VAT Registration No." <> '' THEN BEGIN
    ...
    
    

    Mã hiện có 4

    ...
                                    IF "VAT Registration No." <> '' THEN BEGIN
                                      IF NormalAmount < 0 THEN
                                        NormalAmount := -NormalAmount;
                                      IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13);
                                        Txt :=
    ...
    
    

    Mã thay thế 4

    ...
                                    IF "VAT Registration No." <> '' THEN BEGIN
                                      IF NormalAmount < 0 THEN
                                        NormalAmount := -NormalAmount;
    
                                     // Add the following line.
                                      NormalAmount := NormalAmount + NoTaxableNormalAmount;
    
                                      IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13);
                                        Txt :=
    ...
    
    

    Mã hiện có 5

    ...
                                      END;
                                      IF AmountEUService < 0 THEN
                                        AmountEUService := -AmountEUService;
                                      IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13);
                                        CustVendCountry.GET(Customer2."Country/Region Code");
    ...
    
    

    Mã thay thế 5

    ...
                                      END;
                                      IF AmountEUService < 0 THEN
                                        AmountEUService := -AmountEUService;
    
                                     // Add the following line.
                                      AmountEUService := AmountEUService + NoTaxableAmountEUService;
    
                                      IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN
                                        TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13);
                                        CustVendCountry.GET(Customer2."Country/Region Code");
    ...
    
    
  3. Thay đổi mã trong các biến toàn cầu trong báo cáo Thực hiện 349 Khai báo (88) như sau:
    Mã hiện có

    ...
            CorrIncludedForNormalAmount@1100063 : Boolean;
            CorrIncludedForOpTriAmount@1100070 : Boolean;
            CorrIncludedForEUServiceAmount@1100071 : Boolean;
    
          PROCEDURE FormatTextAmt@1100101(Amount@1100100 : Decimal) : Text[15];
          VAR
    ...
    
    

    Mã thay thế

    ...
            CorrIncludedForNormalAmount@1100063 : Boolean;
            CorrIncludedForOpTriAmount@1100070 : Boolean;
            CorrIncludedForEUServiceAmount@1100071 : Boolean;
    
           // Add the following lines.
            NoTaxableNormalAmount@1100304 : Decimal;
            NoTaxableAmountOpTri@1100305 : Decimal;
            NoTaxableAmountEUService@1100306 : Decimal;
            VATPostingSetup@1100307 : Record 325;
            // End of the lines.
    
          PROCEDURE FormatTextAmt@1100101(Amount@1100100 : Decimal) : Text[15];
          VAR
    ...
    
    

          

Điều kiện tiên quyết

Bạn phải cài đặt phiên bản tiếng Tây Ban Nha của Microsoft Dynamics NAV 5.0 Gói Dịch vụ 1 để áp dụng cập nhật nóng này.

Loại bỏ thông tin

Bạn không thể loại bỏ hotfix này.

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".

Trạng thái

Lưu ý Đây là bài viết "PHÁT HÀNH NHANH" được tạo trực tiếp từ trong tổ chức hỗ trợ của Microsoft. Thông tin có trong tài liệu này được cung cấp tương tự để đáp ứng các vấn đề mới xuất hiện. Do tốc độ làm cho nó có sẵn, các tài liệu có thể bao gồm lỗi đánh máy và có thể được sửa đổi bất cứ lúc nào mà không cần thông báo. Hãy xem Điều khoản Sử dụng để biết những điều cần cân nhắc khác.