Инструментът за промяна на ставката на ДДС не разглежда филтри в редове на документи в Microsoft Dynamics NAV

Отнася се за
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

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

Симптоми

Когато изпълните инструмента за промяна на ставката на ДДС, за който е зададен филтър в Microsoft Dynamics NAV, филтърът не се разглежда в редовете на документа. 
Този проблем възниква в следните продукти:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Решение

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

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

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

          

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

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

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

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

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

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

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

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

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

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

    ...
    SalesLine.SETRANGE("Document No.",SalesHeader."No.");
    IF SalesLine.FINDSET THEN
    REPEAT
    IF LineInScope(SalesLine."Gen. Prod. Posting Group",SalesLine."VAT Prod. Posting Group",ConvertGenProdPostingGroup,
    ConvertVATProdPostingGroup) THEN BEGIN
    
    // Delete the following line.
    IF (SalesLine."Shipment No." = '') AND (SalesLine."Return Receipt No." = '') THEN BEGIN
    
    IF SalesLine.Quantity = SalesLine."Outstanding Quantity" THEN BEGIN
    RecRef.GETTABLE(SalesLine);
    
    IF SalesHeader."Prices Including VAT" THEN
    SalesLineOld := SalesLine;
    ...
    

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

    ...
    SalesLine.SETRANGE("Document No.",SalesHeader."No.");
    IF SalesLine.FINDSET THEN
    REPEAT
    IF LineInScope(SalesLine."Gen. Prod. Posting Group",SalesLine."VAT Prod. Posting Group",ConvertGenProdPostingGroup,
    ConvertVATProdPostingGroup) THEN BEGIN
    
    // Add the following lines.
    IF (SalesLine."Shipment No." = '') AND (SalesLine."Return Receipt No." = '') AND IncludeLine(SalesLine.Type,
    SalesLine."No.") THEN BEGIN
    // End of the lines.
    
    IF SalesLine.Quantity = SalesLine."Outstanding Quantity" THEN BEGIN
    RecRef.GETTABLE(SalesLine);
    
    IF SalesHeader."Prices Including VAT" THEN
    SalesLineOld := SalesLine;
    ...
    
  2. Променете кода във функцията UpdatePurchase в ДДС Промяна на кодовата единица за преобразуване (550) по следния начин:
    Съществуващ код

    ...
    PurchaseLine.SETRANGE("Document No.",PurchaseHeader."No.");
    IF PurchaseLine.FINDSET THEN
    REPEAT
    IF LineInScope(PurchaseLine."Gen. Prod. Posting Group",PurchaseLine."VAT Prod. Posting Group",
    ConvertGenProdPostingGroup,ConvertVATProdPostingGroup) THEN BEGIN
    
    // Delete the following line.
    IF (PurchaseLine."Receipt No." = '') AND (PurchaseLine."Return Shipment No." = '') THEN BEGIN
    
    IF PurchaseLine.Quantity = PurchaseLine."Outstanding Quantity" THEN BEGIN
    IF PurchaseHeader."Prices Including VAT" THEN
    PurchaseLineOld := PurchaseLine;
    
    RecRef.GETTABLE(PurchaseLine);
    ...
    

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

    ...
    PurchaseLine.SETRANGE("Document No.",PurchaseHeader."No.");
    IF PurchaseLine.FINDSET THEN
    REPEAT
    IF LineInScope(PurchaseLine."Gen. Prod. Posting Group",PurchaseLine."VAT Prod. Posting Group",
    ConvertGenProdPostingGroup,ConvertVATProdPostingGroup) THEN BEGIN
    
    // Add the following lines.
    IF (PurchaseLine."Receipt No." = '') AND (PurchaseLine."Return Shipment No." = '') AND IncludeLine(PurchaseLine.Type
    ,PurchaseLine."No.")THEN BEGIN
    // End of the lines.
    
    IF PurchaseLine.Quantity = PurchaseLine."Outstanding Quantity" THEN BEGIN
    IF PurchaseHeader."Prices Including VAT" THEN
    PurchaseLineOld := PurchaseLine;
    
    RecRef.GETTABLE(PurchaseLine);
    ...
    
  3. Променете кода във функцията UpdateService в Промяна на кодовата единица за преобразуване на ставката на ДДС (550) по следния начин:
    Съществуващ код

    ...
    LastDocNo := '';
    IF FIND('-') THEN
    REPEAT
    IF LineInScope("Gen. Prod. Posting Group","VAT Prod. Posting Group",ConvertGenProdPostingGroup,ConvertVATProdPostingGroup)
    THEN BEGIN
    
    // Delete the following line.
    IF CanUpdateService(ServiceLine) THEN BEGIN
    
    IF Quantity = "Outstanding Quantity" THEN BEGIN
    IF LastDocNo <> ServiceHeader."No." THEN BEGIN
    ServiceHeader.GET("Document Type","Document No.");
    LastDocNo := ServiceHeader."No.";
    END;
    ...
    

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

    ...
    LastDocNo := '';
    IF FIND('-') THEN
    REPEAT
    IF LineInScope("Gen. Prod. Posting Group","VAT Prod. Posting Group",ConvertGenProdPostingGroup,ConvertVATProdPostingGroup)
    THEN BEGIN
    
    // Add the following line.
    IF CanUpdateService(ServiceLine) AND IncludeServiceLine(Type,"No.") THEN BEGIN
    
    IF Quantity = "Outstanding Quantity" THEN BEGIN
    IF LastDocNo <> ServiceHeader."No." THEN BEGIN
    ServiceHeader.GET("Document Type","Document No.");
    LastDocNo := ServiceHeader."No.";
    END;
    ...
    
  4. Променете кода във функцията CopyFromServiceDocDimToLine във форматирането на ДДС Промяна на кодовата единица за преобразуване (550) по следния начин:
    Съществуващ код

    ...
    DocDim.INSERT;
    UNTIL FromDocDim.NEXT = 0;
    END;
    END;
    
    // Delete the following line.
    BEGIN
    END.
    }
    }
    

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

    ...
    DocDim.INSERT;
    UNTIL FromDocDim.NEXT = 0;
    END;
    END;
    
    // Add the following lines.
    PROCEDURE IncludeLine@25(Type@1000 : ' ,G/L Account,Item,Resource';No@1001 : Code[20]) : Boolean;
    BEGIN
    CASE Type OF
    Type::"G/L Account":
    EXIT(IncludeGLAccount(No));
    Type::Item:
    EXIT(IncludeItem(No));
    Type::Resource:
    EXIT(IncludeRes(No));
    END;
    EXIT(TRUE);
    END;
    
    PROCEDURE IncludeGLAccount@26(No@1000 : Code[20]) : Boolean;
    VAR
    GLAccount@1001 : Record 15;
    BEGIN
    IF VATRateChangeSetup."Account Filter" = '' THEN
    EXIT(TRUE);
    GLAccount."No." := No;
    GLAccount.SETFILTER("No.",VATRateChangeSetup."Account Filter");
    EXIT(GLAccount.FIND);
    END;
    
    ROCEDURE IncludeItem@28(No@1000 : Code[20]) : Boolean;
    VAR
    Item@1001 : Record 27;
    BEGIN
    IF VATRateChangeSetup."Item Filter" = '' THEN
    EXIT(TRUE);
    Item."No." := No;
    Item.SETFILTER("No.",VATRateChangeSetup."Item Filter");
    EXIT(Item.FIND);
    END;
    
    PROCEDURE IncludeRes@29(No@1000 : Code[20]) : Boolean;
    VAR
    Res@1001 : Record 156;
    BEGIN
    IF VATRateChangeSetup."Resource Filter" = '' THEN
    EXIT(TRUE);
    Res."No." := No;
    Res.SETFILTER("No.",VATRateChangeSetup."Resource Filter");
    EXIT(Res.FIND);
    END;
    
    PROCEDURE IncludeServiceLine@30(Type@1000 : ' ,Item,Resource,Cost,G/L Account';No@1001 : Code[20]) : Boolean;
    BEGIN
    CASE Type OF
    Type::"G/L Account":
    EXIT(IncludeGLAccount(No));
    Type::Item:
    EXIT(IncludeItem(No));
    Type::Resource:
    EXIT(IncludeRes(No));
    END;
    EXIT(TRUE);
    END;
    
    BEGIN
    {
    
    END.
    }
    }
    

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

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

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

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

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

Състояние

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

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