"Sales Shipment [Shipment_No], line no. [Line_No] не се копира, защото пълното количество в публикувания ред на документа вече е приложено ръчно", когато изпълните функцията "Копиране на документ" при частично възвръщаемост на продажбите в Microsoft Dynamics NAV

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

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

Симптоми

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

Забележка

Sales Shipment Shipment_No, line no. Line_No не се копира, защото пълното количество в публикувания ред на документа вече е приложено ръчно.

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

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

Решение

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

Поддържа гореща поправка вече се предлага от 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. Изтрийте следните глобални променливи в кодовата единица за копиране на документ Mgt. (6620):

    Text030@1025 : TextConst 'ENU=%1 %2, line no. %3 is not copied because the full quantity on the posted document line is already manually applied.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
    SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    
    
  2. Добавете следните глобални променливи в кодовата единица за копиране на документа Mgt. (6620):

    Text030@1025 : TextConst 'ENU=One or more return document lines were not copied. This is because quantities on the posted document line are already fully or partially applied and therefore the Exact Cost Reversing Link could not be created.';
    Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';
     SomeAreFixed@1045 : Boolean;
    CopyDimensions@1050 : Boolean;
    WarningDone@1051 : Boolean;
    LinesApplied@1052 : Boolean;
    
    
  3. Променете кода във функцията SplitPstdSalesLinesPerILE в кодовата единица Mgt. за копиране на документ (6620), както следва:
    Съществуващ код 1

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Delete the following lines.
                 ERROR(Text030,"Document Type","Document No.","Document Line No.");
               FromSalesLineBuf := FromSalesLine; 
               IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                 IF FromSalesLine."Quantity (Base)" > 0 THEN
                   FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                 ELSE
                   FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                 IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                   FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                 ELSE
                   FromSalesLineBuf.Quantity :=
                     ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
               END;
               FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
               FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
               FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
               FromSalesLineBuf."Line No." := NextLineNo;
               NextLineNo := NextLineNo + 1;
               FromSalesLineBuf."Document No." := "Document No.";
               IF GetSalesDocType(ItemLedgEntry) IN
                  [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
               THEN
                 FromSalesLineBuf."Shipment Line No." := 1;
    
               IF NOT FromShptOrRcpt THEN
                 UpdateRevSalesLineAmount(
                   FromSalesLineBuf,OrgQtyBase,
                   FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
               FromSalesLineBuf.INSERT;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

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

    ...
                IF "Shipped Qty. Not Returned" = 0 THEN
    
    // Add the following lines.
                 LinesApplied := TRUE;
               IF "Shipped Qty. Not Returned" < 0 THEN BEGIN
                 FromSalesLineBuf := FromSalesLine;
    
                 IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN
                   IF FromSalesLine."Quantity (Base)" > 0 THEN
                     FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"
                   ELSE
                     FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";
                   IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN
                     FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"
                   ELSE
                     FromSalesLineBuf.Quantity :=
                       ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);
                 END;
                 FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";
                 FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;
                 FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";
                 FromSalesLineBuf."Line No." := NextLineNo;
                 NextLineNo := NextLineNo + 1;
                 FromSalesLineBuf."Document No." := "Document No.";
                 IF GetSalesDocType(ItemLedgEntry) IN
                    [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]
                 THEN
                   FromSalesLineBuf."Shipment Line No." := 1;
    
                 IF NOT FromShptOrRcpt THEN
                   UpdateRevSalesLineAmount(
                     FromSalesLineBuf,OrgQtyBase,
                     FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");
    
                 FromSalesLineBuf.INSERT;
               END;
    // End of the lines.
    
              UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);
    ...
    
    

    Съществуващ код 2

    ...
                MissingExCostRevLink := TRUE;
            END;
    ...
    
    

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

    ...
                MissingExCostRevLink := TRUE;
    
    // Add the following line.
             CheckUnappliedLines(LinesApplied,MissingExCostRevLink);
    
            END;
    ...
    
    
  4. Променете кода във функцията SplitPstdPurchLinesPerILE в кодовата единица Mgt. за копиране на документа (6620), както следва:
    Съществуващ код 1

    ...
            ApplyRec@1011 : Record 339;
    
    // Delete the following line.
           AllAreFixed@1012 : Boolean;
    
          BEGIN
    ...
    
    

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

    ...
            ApplyRec@1011 : Record 339;
          BEGIN
    ...
    
    

    Съществуващ код 2

    ...
              REPEAT
    
    // Delete the following lines.
               IF "Remaining Quantity" = 0 THEN BEGIN
                 AllAreFixed := TRUE;
                 ApplyRec.AppliedOutbndEntryExists("Entry No.",FALSE);
                 IF ApplyRec.FINDFIRST THEN
                   REPEAT
                     AllAreFixed := AllAreFixed AND ApplyRec.Fixed;
                   UNTIL ApplyRec.NEXT = 0;
                 IF AllAreFixed THEN
                   ERROR(Text030,"Document Type","Document No.","Document Line No.");
               END;
    // End of the lines.
    
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

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

    ...
              REPEAT
                IF NOT ApplyFully THEN BEGIN
    ...
    
    

    Съществуващ код 3

    ...
            END;
    ...
    
    

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

    ...
            END;
    
    // Add the following line.
           CheckUnappliedLines(SkippedLine,MissingExCostRevLink);
    
    ...
    
    
  5. Променете кода във функцията CheckUnappliedLines в кодовата единица за копиране на документ Mgt. (6620), както следва:
    Съществуващ код

    ...
          BEGIN
    ...
    
    

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

    ...
    
    // Add the following lines.
         LOCAL PROCEDURE CheckUnappliedLines@86(SkippedLine@1000 : Boolean;VAR MissingExCostRevLink@1001 : Boolean);
         BEGIN
           IF SkippedLine AND MissingExCostRevLink THEN BEGIN
             IF NOT WarningDone THEN
               MESSAGE(Text030);
             MissingExCostRevLink := FALSE;
             WarningDone := TRUE;
           END;
         END;
    
    // End of the lines.
    
          BEGIN
    ...
    
    

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

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

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

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

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

Състояние

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

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