Ten artykuł dotyczy systemu Microsoft Dynamics NAV dla wszystkich ustawień regionalnych języka.
Objawy
W systemie Microsoft Dynamics NAV korzystając z arkusza zapotrzebowania do tworzenia zamówienia zakupu lub podczas ręcznego tworzenia zamówienia zakupu, dostawa bezpośrednia i zamówień specjalnych nie należy wziąć pod uwagę zdefiniowaną informacją na związanym z zamówienia sprzedaży. W związku z tym, opis, opis 2 i adres wysyłkowy z nagłówka zamówienia sprzedaży i wierszy nie po drodze ustalane zamówienia zakupu.
Ten problem występuje w następujących produktach:-
Microsoft Dynamics NAV 2009 z dodatkiem Service Pack 1 (SP1)
-
Microsoft Dynamics NAV 2009 R2
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.
Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Informacje dotyczące instalacji
Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.
Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Dotyczy to również użytkowników klienta Microsoft Navision Application Services (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę. Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską. Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:-
Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.
-
Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i dla obiektu 9015 identyfikator obiektu systemu .
Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.
Zmiany kodu
Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, wykonaj następujące kroki: Uwaga Przeczytaj podczas dostępu codeunit (333), ponieważ jest inny dla północnoamerykańskiej wersji W1. Tutaj są zarówno ze znacznikami dla rozpoczęcia i zakończenia każdej wersji.-
Zmień kod w tabeli Nagłówek zakupu (38) w następujący sposób:
-
Dodaj następującą stałą tekstu globalnego:
Text051@1091: TextConst "ENU = %1 pola zamówienia zakupu %2 musi być taka sama jak na sprzedaż zamówienia %3."; -
Dodaj następujące zmienne globalne:
-
Nazwa: NameAddressDetails; Typ danych: Tekst [512];
-
Nazwa: NameAddressDetails2; Typ danych: Tekst [512];
-
-
Dodaj następującą funkcję:
CheckAndAddShipToAdd@46 (SalesHeader@1000: rejestrowanie 36; ShowError@1001: Boolean): Boolean; VAR PurchLine2@1002: Rekord 39; Dodaj następujący kod dla funkcji:IF ShowError THEN BEGIN PurchLine2.RESET;
PurchLine2.SETRANGE("Document Type","Document Type"::Order); PurchLine2.SETRANGE("Document No.","No."); IF NOT PurchLine2.ISEMPTY THEN BEGIN IF "Ship-to Name" <>SalesHeader."Ship-to Name" THEN ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No."); IF "Ship-to Name 2" <>SalesHeader."Ship-to Name 2" THEN ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No."); IF ("Ship-to Address" <>SalesHeader."Ship-to Address") THEN ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No."); IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No."); IF ("Ship-to Post Code" <>SalesHeader."Ship-to Post Code") THEN ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No."); IF ("Ship-to City" <>SalesHeader."Ship-to City") THEN ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No."); IF ("Ship-to Contact" <>SalesHeader."Ship-to Contact") THEN ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No."); END ELSE BEGIN // no purchase line exists "Ship-to Name" := SalesHeader."Ship-to Name"; "Ship-to Name 2" := SalesHeader."Ship-to Name 2"; "Ship-to Address" := SalesHeader."Ship-to Address"; "Ship-to Address 2" := SalesHeader."Ship-to Address 2"; "Ship-to Post Code" := SalesHeader."Ship-to Post Code"; "Ship-to City" := SalesHeader."Ship-to City"; "Ship-to Contact" := SalesHeader."Ship-to Contact"; END; END ELSE BEGIN NameAddressDetails := SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" + SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" + SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" + SalesHeader."Ship-to Contact"; IF NameAddressDetails2 = '' THEN NameAddressDetails2 := NameAddressDetails; EXIT(NameAddressDetails2 = NameAddressDetails); END; -
Dodaj następującą funkcję:
DropShptSplOrderExists@48 (SalesHeader@1000: rejestrowanie 36): Boolean; VAR SalesLine2@1001: Rekord 37; Dodaj następujący kod dla funkcji:// returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order); SalesLine2.SETRANGE("Document No.",SalesHeader."No."); SalesLine2.SETRANGE("Drop Shipment",TRUE); IF NOT SalesLine2.ISEMPTY THEN EXIT(TRUE); SalesLine2.SETRANGE("Drop Shipment"); SalesLine2.SETRANGE("Special Order",TRUE); EXIT(NOT SalesLine2.ISEMPTY);
-
-
Zmień kod w funkcji InsertReqWkshLine w raporcie Pobierz zamówienia sprzedaży (698) w następujący sposób:
Istniejący kod... Quantity,
ROUND(SalesLine."Outstanding Quantity" * SalesLine."Qty. per Unit of Measure" / "Qty. per Unit of Measure",0.00001)); "Sales Order No." := SalesLine."Document No."; "Sales Order Line No." := SalesLine."Line No."; "Sell-to Customer No." := SalesLine."Sell-to Customer No."; SalesHeader.GET(1,SalesLine."Document No."); IF SpecOrder <>1 THEN "Ship-to Code" := SalesHeader."Ship-to Code"; "Item Category Code" := SalesLine."Item Category Code"; Nonstock := SalesLine.Nonstock; ...Kod zastępczy
... Quantity,
ROUND(SalesLine."Outstanding Quantity" * SalesLine."Qty. per Unit of Measure" / "Qty. per Unit of Measure",0.00001)); "Sales Order No." := SalesLine."Document No."; "Sales Order Line No." := SalesLine."Line No."; "Sell-to Customer No." := SalesLine."Sell-to Customer No."; // Add the following lines. Description := SalesLine.Description; "Description 2" := SalesLine."Description 2"; // End of the added lines. SalesHeader.GET(1,SalesLine."Document No."); IF SpecOrder <>1 THEN "Ship-to Code" := SalesHeader."Ship-to Code"; "Item Category Code" := SalesLine."Item Category Code"; Nonstock := SalesLine.Nonstock; ... -
Zmień kod w funkcji Kod zam.-Pobierz wydania upuść codeunit (76) w następujący sposób:
Istniejący kod... IF RECORDLEVELLOCKING THEN
LOCKTABLE; SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order); TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No."); TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code"); PurchLine.LOCKTABLE; IF NOT RECORDLEVELLOCKING THEN LOCKTABLE(TRUE,TRUE); // Only version check SalesLine.LOCKTABLE; ... PurchLine."Document Type" := PurchLine."Document Type"::Order; PurchLine."Document No." := "No."; PurchLine."Line No." := NextLineNo; CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine); PurchLine.Description := SalesLine.Description; PurchLine."Sales Order No." := SalesLine."Document No."; PurchLine."Sales Order Line No." := SalesLine."Line No."; PurchLine."Drop Shipment" := TRUE; EVALUATE(PurchLine."Inbound Whse. Handling Time",'<0D>'); PurchLine.VALIDATE("Inbound Whse. Handling Time"); ...Kod zastępczy
... IF RECORDLEVELLOCKING THEN
LOCKTABLE; SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order); TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No."); TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code"); // Add the following lines. IF DropShptSplOrderExists(SalesHeader) THEN CheckAndAddShipToAdd(SalesHeader,TRUE); // End of the added lines. PurchLine.LOCKTABLE; IF NOT RECORDLEVELLOCKING THEN LOCKTABLE(TRUE,TRUE); // Only version check SalesLine.LOCKTABLE; ... PurchLine."Document Type" := PurchLine."Document Type"::Order; PurchLine."Document No." := "No."; PurchLine."Line No." := NextLineNo; CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine); PurchLine.Description := SalesLine.Description; // Add the following line. PurchLine."Description 2" := SalesLine."Description 2"; // End of the added line. PurchLine."Sales Order No." := SalesLine."Document No."; PurchLine."Sales Order Line No." := SalesLine."Line No."; PurchLine."Drop Shipment" := TRUE; EVALUATE(PurchLine."Inbound Whse. Handling Time",'<0D>'); PurchLine.VALIDATE("Inbound Whse. Handling Time"); ... -
Zmień kod w funkcji GetDescriptionAndRcptName w codeunit ReqJnlManagement (330) w następujący sposób:
Istniejący kod... ReqLine.Type::"G/L Account":
IF GLAcc.GET(ReqLine."No.") THEN Description := GLAcc.Name ELSE Description := ''; // Delete the following lines. ReqLine.Type::Item: IF Item.GET(ReqLine."No.") THEN Description := Item.Description ELSE Description := ''; // End of the deleted lines. END; END; IF ReqLine."Vendor No." = '' THEN BuyFromVendorName := '' ...Kod zastępczy
... ReqLine.Type::"G/L Account":
IF GLAcc.GET(ReqLine."No.") THEN Description := GLAcc.Name ELSE Description := ''; END; END; IF ReqLine."Vendor No." = '' THEN BuyFromVendorName := '' ... -
Uwaga Codeunit (333) ma inny kod w wersji amerykańskiej wersji na całym świecie vs. Użyj właściwej sekcji dla instalacji.
Aby rozpocząć wersji północnoamerykańskiej codeunit (333), Zmień kod w ark.-Tworzenie zleceń w następujący sposób:-
Dodaj następujące zmiennej globalnej:
-
Nazwa: DropShptSpecialOrderExists;
-
Typ danych: Boolean;
-
-
Dodaj następujące zmienne lokalne w funkcji Insertpurchorderlinew:
-
Nazwa: SalesHeader; Typ danych: Rekord [36];
-
Nazwa: DropShptSplOrderDiffAddress; Typ danych: Boolean;
-
Nazwa: CreateNewRecord; Typ danych: Boolean;
-
-
Zmień kod w funkcji Insertpurchorderlineww następujący sposób:
Istniejący kod...// Delete the following lines.
WITH ReqLine2 DO BEGIN IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN EXIT; IF NOT PurchasingCode.GET("Purchasing Code") THEN PurchasingCode."Special Order" := FALSE; IF (PurchasingCode."Special Order" AND (PurchSetup."Combine Special Orders Default" = PurchSetup."Combine Special Orders Default"::"Always Combine") AND ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Location Code" <> "Location Code") OR (PurchOrderHeader."Currency Code" <>"Currency Code") OR (PrevPurchCode <>"Purchasing Code"))) OR (NOT PurchasingCode."Special Order" AND ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Location Code" <>"Location Code") OR (PurchOrderHeader."Sell-to Customer No." <>"Sell-to Customer No.") OR (PrevShipToCode <>"Ship-to Code") OR (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR (PurchOrderHeader."Currency Code" <> "Currency Code") OR (PrevPurchCode <>"Purchasing Code"))) THEN BEGIN InsertHeader(ReqLine2); LineCount := 0; NextLineNo := 0; PrevPurchCode := "Purchasing Code"; PrevShipToCode := "Ship-to Code"; END; IF (PurchasingCode."Special Order") AND (PurchSetup."Combine Special Orders Default" = PurchSetup."Combine Special Orders Default"::"Never Combine") AND ((PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Location Code" <> "Location Code") OR (PurchOrderHeader."Currency Code" <>"Currency Code") OR (PrevPurchCode <> "Purchasing Code")) THEN BEGIN InsertHeader(ReqLine2); END; // End of the deleted lines. LineCount := LineCount + 1; IF NOT PlanningResiliency THEN Window.UPDATE(4,LineCount); ...Kod zastępczy
...// Add the following lines.
WITH ReqLine2 DO BEGIN IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN EXIT; DropShptSpecialOrderExists := FALSE; IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader); IF DropShptSpecialOrderExists THEN DropShptSplOrderDiffAddress := NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE); END; IF NOT PurchasingCode.GET("Purchasing Code") THEN PurchasingCode."Special Order" := FALSE; CreateNewRecord := (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Location Code" <> "Location Code") OR (PurchOrderHeader."Currency Code" <> "Currency Code") OR (PrevPurchCode <>"Purchasing Code") OR DropShptSplOrderDiffAddress; IF PurchasingCode."Special Order" AND CreateNewRecord THEN BEGIN InsertHeader(ReqLine2); IF PurchSetup."Combine Special Orders Default" = PurchSetup."Combine Special Orders Default"::"Always Combine" THEN BEGIN LineCount := 0; NextLineNo := 0; PrevPurchCode := "Purchasing Code"; PrevShipToCode := "Ship-to Code"; END; END; IF NOT PurchasingCode."Special Order" AND (CreateNewRecord OR (PurchOrderHeader."Sell-to Customer No." <>"Sell-to Customer No.") OR (PrevShipToCode <>"Ship-to Code") OR (PurchOrderHeader."Order Address Code" <>"Order Address Code")) THEN BEGIN InsertHeader(ReqLine2); LineCount := 0; NextLineNo := 0; PrevPurchCode := "Purchasing Code"; PrevShipToCode := "Ship-to Code"; END; // End of the added lines. LineCount := LineCount + 1; IF NOT PlanningResiliency THEN Window.UPDATE(4,LineCount); ... -
Zmień kod w funkcji InsertHeader w następujący sposób:
Dodaj następujące zmienna lokalna:-
Nazwa: SalesHeader;
-
Typ danych: Rekord [36];
Istniejący kod
... WITH ReqLine2 DO BEGIN
OrderCounter := OrderCounter + 1; IF NOT PlanningResiliency THEN Window.UPDATE(3,OrderCounter); PurchSetup.GET; PurchSetup.TESTFIELD("Order Nos."); // Delete the following line. CLEAR(PurchOrderHeader); // End of the deleted line. PurchOrderHeader.INIT; PurchOrderHeader."Document Type" := PurchOrderHeader."Document Type"::Order; PurchOrderHeader."No." := ''; ... PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); END ELSE BEGIN PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); PurchOrderHeader.SetShipToForSpecOrder; END; PurchOrderHeader.MODIFY; COMMIT; IF RECORDLEVELLOCKING THEN LOCKTABLE; PurchOrderHeader.MARK(TRUE); END; ...Kod zastępczy
...WITH ReqLine2 DO BEGIN
OrderCounter := OrderCounter + 1; IF NOT PlanningResiliency THEN Window.UPDATE(3,OrderCounter); PurchSetup.GET; PurchSetup.TESTFIELD("Order Nos."); PurchOrderHeader.INIT; PurchOrderHeader."Document Type" := PurchOrderHeader."Document Type"::Order; PurchOrderHeader."No." := ''; ... PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); END ELSE BEGIN PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); PurchOrderHeader.SetShipToForSpecOrder; END; // Add the following lines. IF DropShptSpecialOrderExists THEN BEGIN SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No."); PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name"; PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2"; PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address"; PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2"; PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code"; PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City"; PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact"; END; // End of the added lines. PurchOrderHeader.MODIFY; COMMIT; IF RECORDLEVELLOCKING THEN LOCKTABLE; PurchOrderHeader.MARK(TRUE); END; ... -
Aby rozpocząć wersji W1 codeunit (333), Zmień kod w ark.-Utwórz zamówienie w następujący sposób:
-
Dodaj następujące zmiennej globalnej:
-
Nazwa: DropShptSpecialOrderExists;
-
Typ danych: Boolean;
-
-
Dodaj następujące zmienne lokalne w funkcji Insertpurchorderlinew:
-
Nazwa: SalesHeader; Typ danych: Rekord [36];
-
Nazwa: DropShptSplOrderDiffAddress; Typ danych: Boolean;
-
-
Zmień kod w funkcji Insertpurchorderlineww następujący sposób:
Istniejący kod... WITH ReqLine2 DO BEGIN
IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN EXIT; IF (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Sell-to Customer No."<> "Sell-to Customer No.") OR (PrevShipToCode <> "Ship-to Code") OR (PurchOrderHeader."Order Address Code" <>"Order Address Code") OR (PurchOrderHeader."Currency Code" <>"Currency Code") OR // Delete the following line. (PrevPurchCode <>"Purchasing Code") // End of the deleted line. THEN BEGIN InsertHeader(ReqLine2); LineCount := 0; NextLineNo := 0; PrevPurchCode := "Purchasing Code"; PrevShipToCode := "Ship-to Code"; END; ...Kod zastępczy
... WITH ReqLine2 DO BEGIN
IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN EXIT; // Add the following lines. DropShptSpecialOrderExists := FALSE; IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader); IF DropShptSpecialOrderExists THEN DropShptSplOrderDiffAddress := NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE); END; // End of the added lines. IF (PurchOrderHeader."Buy-from Vendor No." <>"Vendor No.") OR (PurchOrderHeader."Sell-to Customer No."<> "Sell-to Customer No.") OR (PrevShipToCode <> "Ship-to Code") OR (PurchOrderHeader."Order Address Code" <>"Order Address Code") OR (PurchOrderHeader."Currency Code" <>"Currency Code") OR // Add the following lines. (PrevPurchCode <> "Purchasing Code") OR (DropShptSplOrderDiffAddress) // End of the added lines. THEN BEGIN InsertHeader(ReqLine2); LineCount := 0; NextLineNo := 0; PrevPurchCode := "Purchasing Code"; PrevShipToCode := "Ship-to Code"; END; ... -
Zmień kod w funkcji InsertHeader w następujący sposób:
Dodaj następujące zmienna lokalna:-
Nazwa: SalesHeader;
-
Typ danych: Rekord [36];
Istniejący kod
... END ELSE BEGIN
PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); PurchOrderHeader.SetShipToForSpecOrder; END; PurchOrderHeader.MODIFY; COMMIT; IF RECORDLEVELLOCKING THEN LOCKTABLE; PurchOrderHeader.MARK(TRUE); END; ...Kod zastępczy
... END ELSE BEGIN
PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code"); PurchOrderHeader.SetShipToForSpecOrder; END; // Add the following lines. IF DropShptSpecialOrderExists THEN BEGIN IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name"; PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2"; PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address"; PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2"; PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code"; PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City"; PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact"; END; // End of the added lines. PurchOrderHeader.MODIFY; COMMIT; IF RECORDLEVELLOCKING THEN LOCKTABLE; PurchOrderHeader.MARK(TRUE); END; ... -
-
-
Zmień kod w funkcji EnterPurchaseItemCrossRef w codeunit Integracji Dist. (5702) w następujący sposób:
Istniejący kod... IF Found THEN BEGIN
"Cross-Reference No." := ItemCrossReference."Cross-Reference No."; "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure"; "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type"; // Delete the following lines. IF ItemCrossReference.Description <>'' THEN BEGIN Description := ItemCrossReference.Description; "Description 2" := ''; END; END ELSE BEGIN "Cross-Reference No." := ''; "Cross-Reference Type" := "Cross-Reference Type"::" "; "Cross-Reference Type No." := ''; IF "Variant Code" <>'' THEN BEGIN ItemVariant.GET("No.","Variant Code"); Description := ItemVariant.Description; "Description 2" := ItemVariant."Description 2"; END ELSE BEGIN Item.GET("No."); Description := Item.Description; "Description 2" := Item."Description 2"; END; // End of the deleted lines. GetItemTranslation; END; END; ...Kod zastępczy
... IF Found THEN BEGIN
"Cross-Reference No." := ItemCrossReference."Cross-Reference No."; "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure"; "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type"; // Add the following lines. "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No."; END ELSE BEGIN "Cross-Reference No." := ''; "Cross-Reference Type" := "Cross-Reference Type"::" "; "Cross-Reference Type No." := ''; // End of the added lines. GetItemTranslation; END; END; ... -
Zmień kod w funkcji GetSpecialOrders w codeunit Integracji Dist. (5702) w następujący sposób:
Istniejący kod... IF RECORDLEVELLOCKING THEN
LOCKTABLE; SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order); TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No."); TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code"); // Delete the following line. PurchHeader.SetShipToForSpecOrder; // End of the deleted line. PurchLine.LOCKTABLE; IF NOT RECORDLEVELLOCKING THEN LOCKTABLE(TRUE,TRUE); // Only version check SalesLine.LOCKTABLE; ...Kod zastępczy
... IF RECORDLEVELLOCKING THEN
LOCKTABLE; SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Order); TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No."); TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code"); // Add the following lines. IF DropShptSplOrderExists(SalesHeader) THEN CheckAndAddShipToAdd(SalesHeader,TRUE); // End of the added lines. PurchLine.LOCKTABLE; IF NOT RECORDLEVELLOCKING THEN LOCKTABLE(TRUE,TRUE); // Only version check SalesLine.LOCKTABLE; ... -
Zmień kod w funkcji TransfldsFromSalesToPurchLine w codeunit Zarz dokumentu kopii (6620) w następujący sposób:
Istniejący kod... "Expected Receipt Date" := FromSalesLine."Shipment Date";
"Bin Code" := FromSalesLine."Bin Code"; VALIDATE(Quantity,FromSalesLine."Outstanding Quantity"); VALIDATE("Return Reason Code",FromSalesLine."Return Reason Code"); VALIDATE("Direct Unit Cost"); END; ...Kod zastępczy
... "Expected Receipt Date" := FromSalesLine."Shipment Date";
"Bin Code" := FromSalesLine."Bin Code"; VALIDATE(Quantity,FromSalesLine."Outstanding Quantity"); VALIDATE("Return Reason Code",FromSalesLine."Return Reason Code"); VALIDATE("Direct Unit Cost"); // Add the following lines. Description := FromSalesLine.Description; "Description 2" := FromSalesLine."Description 2"; // End of the added lines. END; ...
Wymagania wstępne
Musi mieć jedną z następujących produktów, w celu zastosowania tej poprawki:
-
Microsoft Dynamics NAV 2009 z dodatkiem Service Pack 1 (SP1)
-
Microsoft Dynamics NAV 2009 R2
Informacje dotyczące usuwania
Nie można usunąć tej poprawki.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Powiązane artykuły
VSTF DynamicsNAV SE: 238210
Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania w celu uzyskania innych informacji.