Съобщение за грешка "A Tax Detail record cannot be found within the following parameters:/Tax Jurisdiction Code:[code], Tax GroupCode:[group code], Effective Date:<=[date]" при отпечатване на фактура за продажби в NA версията на Microsoft Dynamics NAV 2009

Отнася се за
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1

Тази статия се отнася за Microsoft Dynamics NAV за следните страни и езикови променливи.

  • Английски (Канада) (en-ca)
  • Английски (САЩ) (en-us)
  • Испански (Мексико) (es-mx)
  • Френски (Канада) (fr-ca)

Симптоми

Да предположим, че публикувате фактура за продажби, в която има данъчен регионален код, указан в северноамериканската версия на Microsoft Dynamics 2009. Добавяте нова данъчна юрисдикция към кода на данъчната област. В тази ситуация, когато отпечатвате публикуваната фактура за продажби, получавате следното съобщение за грешка:

Забележка

Запис с данъчни подробности не може да бъде намерен в рамките на следните параметри:/Код на данъчна юрисдикция:код, Данъчна групаКод:код на група, Дата на влизане в сила: <=дата.

Този проблем възниква в следните продукти:

  • Северноамериканската версия на Microsoft Dynamics NAV 2009 R2
  • Северноамериканската версия на Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Решение

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

            
          

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

                
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:

  1. Променете кода във функцията AddSalesInvoiceLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddSalesInvoiceLines@1020003(DocNo@1020004 : Code[20]);
        VAR
          SalesInvoiceHeader@1020000 : Record 112;
          SalesInvoiceLine@1020001 : Record 113;
          InsertRec@1020002 : Boolean;
        BEGIN
          SalesInvoiceHeader.GET(DocNo);
          SalesInvoiceHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(SalesInvoiceHeader."Tax Area Code") THEN
            EXIT;
          SetUpCurrency(SalesInvoiceHeader."Currency Code");
    ...
    

    Код за подмяна

        PROCEDURE AddSalesInvoiceLines@1020003(DocNo@1020004 : Code[20]);
        VAR
          SalesInvoiceHeader@1020000 : Record 112;
          SalesInvoiceLine@1020001 : Record 113;
          InsertRec@1020002 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE;
    
          SalesInvoiceHeader.GET(DocNo);
          SalesInvoiceHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(SalesInvoiceHeader."Tax Area Code") THEN
            EXIT;
          SetUpCurrency(SalesInvoiceHeader."Currency Code");
    ...
    
  2. Променете кода във функцията AddSalesCrMemoLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddSalesCrMemoLines@1020006(DocNo@1020000 : Code[20]);
        VAR
          SalesCrMemoHeader@1020001 : Record 114;
          SalesCrMemoLine@1020002 : Record 115;
          InsertRec@1020003 : Boolean;
        BEGIN
          SalesCrMemoHeader.GET(DocNo);
          SalesCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(SalesCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    

    Код за подмяна

        PROCEDURE AddSalesCrMemoLines@1020006(DocNo@1020000 : Code[20]);
        VAR
          SalesCrMemoHeader@1020001 : Record 114;
          SalesCrMemoLine@1020002 : Record 115;
          InsertRec@1020003 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE; 
    
          SalesCrMemoHeader.GET(DocNo);
          SalesCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(SalesCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    
  3. Променете кода във функцията AddPurchInvoiceLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddPurchInvoiceLines@1020008(DocNo@1020000 : Code[20]);
        VAR
          PurchInvHeader@1020001 : Record 122;
          PurchInvLine@1020002 : Record 123;
          InsertRec@1020003 : Boolean;
        BEGIN
          PurchInvHeader.GET(DocNo);
          PurchInvHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(PurchInvHeader."Tax Area Code") THEN
            EXIT;
    ...
    

    Код за подмяна

        PROCEDURE AddPurchInvoiceLines@1020008(DocNo@1020000 : Code[20]);
        VAR
          PurchInvHeader@1020001 : Record 122;
          PurchInvLine@1020002 : Record 123;
          InsertRec@1020003 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE; 
    
          PurchInvHeader.GET(DocNo);
          PurchInvHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(PurchInvHeader."Tax Area Code") THEN
            EXIT;
    ...
    
  4. Променете кода във функцията AddPurchCrMemoLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddPurchCrMemoLines@1020004(DocNo@1020000 : Code[20]);
        VAR
          PurchCrMemoHeader@1020001 : Record 124;
          PurchCrMemoLine@1020002 : Record 125;
          InsertRec@1020003 : Boolean;
        BEGIN
          PurchCrMemoHeader.GET(DocNo);
          PurchCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(PurchCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    

    Код за подмяна

        PROCEDURE AddPurchCrMemoLines@1020004(DocNo@1020000 : Code[20]);
        VAR
          PurchCrMemoHeader@1020001 : Record 124;
          PurchCrMemoLine@1020002 : Record 125;
          InsertRec@1020003 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE;
    
          PurchCrMemoHeader.GET(DocNo);
          PurchCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(PurchCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    
  5. Променете кода във функцията AddServInvoiceLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddServInvoiceLines@1480008(DocNo@1020000 : Code[20]);
        VAR
          ServInvHeader@1020001 : Record 5992;
          ServInvLine@1020002 : Record 5993;
          InsertRec@1020003 : Boolean;
        BEGIN
          ServInvHeader.GET(DocNo);
          ServInvHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(ServInvHeader."Tax Area Code") THEN
            EXIT;
    ...
    

    Код за подмяна

        PROCEDURE AddServInvoiceLines@1480008(DocNo@1020000 : Code[20]);
        VAR
          ServInvHeader@1020001 : Record 5992;
          ServInvLine@1020002 : Record 5993;
          InsertRec@1020003 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE; 
    
          ServInvHeader.GET(DocNo);
          ServInvHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(ServInvHeader."Tax Area Code") THEN
            EXIT;
    ...
    
  6. Променете кода във функцията AddServCrMemoLines в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

        PROCEDURE AddServCrMemoLines@1480004(DocNo@1020000 : Code[20]);
        VAR
          ServCrMemoHeader@1020001 : Record 5994;
          ServCrMemoLine@1020002 : Record 5995;
          InsertRec@1020003 : Boolean;
        BEGIN
          ServCrMemoHeader.GET(DocNo);
          ServCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(ServCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    

    Код за подмяна

        PROCEDURE AddServCrMemoLines@1480004(DocNo@1020000 : Code[20]);
        VAR
          ServCrMemoHeader@1020001 : Record 5994;
          ServCrMemoLine@1020002 : Record 5995;
          InsertRec@1020003 : Boolean;
        BEGIN
    
          // Add the following line.
          Posted := TRUE; 
    
          ServCrMemoHeader.GET(DocNo);
          ServCrMemoHeader.TESTFIELD("Prices Including VAT",FALSE);
          IF NOT GetSalesTaxCountry(ServCrMemoHeader."Tax Area Code") THEN
            EXIT;
    ...
    
  7. Променете кода във функцията EndSalesTaxCalculation в кодовата единица за изчисляване на данък продажби (398), както следва:
    Съществуващ код

    ...
                TaxDetail.SETRANGE("Tax Type",TaxDetail."Tax Type"::"Excise Tax");
                IF TaxDetail.FIND('+') THEN BEGIN
                  TaxDetailFound := TRUE;
                  "Tax Type" := "Tax Type"::"Excise Tax";
                  INSERT;
                  "Tax Type" := "Tax Type"::"Sales and Use Tax"; 
                END;
    
                // Delete the following line.
                IF NOT TaxDetailFound THEN
    
                  ERROR(
                    Text1020002,
                    TaxDetail.TABLECAPTION,
                    FIELDCAPTION("Tax Jurisdiction Code"),"Tax Jurisdiction Code",
                    FIELDCAPTION("Tax Group Code"),"Tax Group Code",
                    TaxDetail.FIELDCAPTION("Effective Date"),TaxDetail.GETFILTER("Effective Date"));
              UNTIL NEXT = 0;
            RESET;
    ...
    

    Код за подмяна

    ...
                TaxDetail.SETRANGE("Tax Type",TaxDetail."Tax Type"::"Excise Tax");
                IF TaxDetail.FIND('+') THEN BEGIN
                  TaxDetailFound := TRUE;
                  "Tax Type" := "Tax Type"::"Excise Tax";
                  INSERT;
                  "Tax Type" := "Tax Type"::"Sales and Use Tax"; // NA0012
                END;
    
                // Add the following line.
                IF NOT TaxDetailFound AND NOT Posted THEN
    
                  ERROR(
                    Text1020002,
                    TaxDetail.TABLECAPTION,
                    FIELDCAPTION("Tax Jurisdiction Code"),"Tax Jurisdiction Code",
                    FIELDCAPTION("Tax Group Code"),"Tax Group Code",
                    TaxDetail.FIELDCAPTION("Effective Date"),TaxDetail.GETFILTER("Effective Date"));
              UNTIL NEXT = 0;
            RESET;
    ...
    

Предварителни изисквания

Трябва да имате инсталиран един от следните продукти, за да приложите тази гореща корекция:

  • Северноамериканската версия на Microsoft Dynamics NAV 2009 R2
  • Северноамериканската версия на Microsoft Dynamics NAV 2009 Service Pack 1

Информация за премахване

Не можете да премахнете тази гореща корекция.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Забележка: Това е статия "FAST PUBLISH", създадена директно от организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.