Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

Este artigo aplica-se para o Microsoft Dynamics NAV para todos os idiomas.

Sintomas

No Microsoft Dynamics NAV, quando utiliza a folha de requisição para criar uma encomenda de compra ou quando criar manualmente uma encomenda de compra, envio directo e encomendas especiais não consideram as informações definidas na encomenda de venda relacionada. Por conseguinte, a descrição, Descrição 2 e o endereço de envio do cabeçalho de encomenda de venda e linhas não cumprir o indexado adquirido encomenda.
Este problema ocorre nos seguintes produtos:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2

Resolução

Informações sobre correção

Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde o próximo service pack do Microsoft Dynamics NAV 2009 ou a próxima versão do Microsoft Dynamics NAV que contenha esta correcção.

Nota Em casos especiais, os custos normalmente inerentes para suporte chamadas poderão ser anuladas se um técnico de suporte técnico do Microsoft Dynamics e produtos relacionados determina que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.



Informações de instalação

A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Nota Antes de instalar esta correcção, certifique-se de que todos os utilizadores de cliente do Microsoft Navision são registados no sistema. Isto inclui os utilizadores de clientes do Microsoft Navision Application Server (NAS). Deve ser o único usuário do cliente que tem sessão iniciada quando implementar esta correcção.

Para implementar esta correcção, tem de ter uma licença de desenvolvedor.

Recomendamos que a conta de utilizador na janela Logins do Windows ou na janela Logins de base de dados seja atribuída a ID de função "SUPER". Se a conta de utilizador não é possível atribuir o ID de função "SUPER", tem de verificar que a conta de utilizador tem as seguintes permissões:

  • A permissão Modificar para o objecto que estará a alterar.

  • A permissão executar para o objecto 5210 de ID de objecto de sistema e para o objecto 9015 de ID de objecto de sistema .



Nota Não tem de ter direitos para os arquivos de dados, excepto se tiver de efectuar a reparação de dados.

Alterações de código

Nota Sempre o código de ensaio corrige num ambiente controlado antes de aplicar as correcções para os computadores de produção.
Para resolver este problema, siga estes passos:
Nota Deve ler quando aceder a codeunit (333), uma vez que é diferente para norte-americana versão W1. Ambos estão aqui com tags de início e paragem de cada versão.

  1. Altere o código da tabela de Cabeçalho de compras (38) do seguinte modo:

    1. Adicione a seguinte constante global do texto:
      Text051@1091: TextConst ' ENU = %1 campo na encomenda de compra %2 tem de ser a mesma que a encomenda de vendas %3.»;

    2. Adicione as seguintes variáveis globais:

      • Nome: NameAddressDetails; Tipo de dados: Texto [512];

      • Nome: NameAddressDetails2; Tipo de dados: Texto [512];

    3. Adicione a seguinte função:
      CheckAndAddShipToAdd@46 (SalesHeader@1000: gravar 36; ShowError@1001: Boolean): boleano;

      VAR PurchLine2@1002: Registo 39;
      Adicione o seguinte código para a função:

      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;

    4. Adicione a seguinte função:
      DropShptSplOrderExists@48 (SalesHeader@1000: 36 de registo): boleano;

      VAR SalesLine2@1001: Registo 37. o;

      Adicione o seguinte código para a função:

      // 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);

  2. Altere o código na função InsertReqWkshLine no relatório Obter Encomendas Venda (698) do seguinte modo:
    Código existente

    ...    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;
    ...

    Código de substituição

    ...        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;
    ...
  3. Alterar o código de função código no Compr.-obter a guia de remessa largar codeunit (76), da seguinte forma:
    Código existente

    ...      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");
    ...

    Código de substituição

    ...   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");
    ...
  4. Altere o código na função GetDescriptionAndRcptName na codeunit ReqJnlManagement (330) do seguinte modo:
    Código existente

    ...       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 := ''
    ...

    Código de substituição

    ...         ReqLine.Type::"G/L Account":
    IF GLAcc.GET(ReqLine."No.") THEN
    Description := GLAcc.Name
    ELSE
    Description := '';
    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    BuyFromVendorName := ''
    ...
  5. Nota Codeunit (333) tem código diferente na versão norte-americana do vs versão em todo o mundo. Utilize a secção correcta para a instalação.

    Para começar a versão norte-americana codeunit (333), altere o código de Folha Req.-efectuar encomendas do seguinte modo:

    1. Adicione a seguinte variável global:

      • Nome: DropShptSpecialOrderExists;

      • Tipo de dados: Boleano;

    2. Adicione as seguintes variáveis locais na função InsertPurchOrderLine:

      • Nome: SalesHeader; Tipo de dados: Registo (36);

      • Nome: DropShptSplOrderDiffAddress; Tipo de dados: Boleano;

      • Nome: CreateNewRecord; Tipo de dados: Boleano;

    3. Altere o código na função InsertPurchOrderLineda seguinte forma:
      Código existente

      ...// 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);
      ...

      Código de substituição

      ...// 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);
      ...
    4. Altere o código na função InsertHeader da seguinte forma:
      Adicione a seguinte variável local:

      • Nome: SalesHeader;

      • Tipo de dados: Registo (36);

      Código existente

      ...   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;
      ...

      Código de substituição

      ...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;
      ...

    Para começar a versão de W1 codeunit (333), altere o código de Folha Req.-Criar encomenda do seguinte modo:

    1. Adicione a seguinte variável global:

      • Nome: DropShptSpecialOrderExists;

      • Tipo de dados: Boleano;

    2. Adicione as seguintes variáveis locais na função InsertPurchOrderLine:

      • Nome: SalesHeader; Tipo de dados: Registo (36);

      • Nome: DropShptSplOrderDiffAddress; Tipo de dados: Boleano;

    3. Altere o código na função InsertPurchOrderLineda seguinte forma:
      Código existente

      ...   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;
      ...

      Código de substituição

      ...  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;
      ...
    4. Altere o código na função InsertHeader da seguinte forma:
      Adicione a seguinte variável local:

      • Nome: SalesHeader;

      • Tipo de dados: Registo (36);

      Código existente

      ...    END ELSE BEGIN
      PurchOrderHeader.VALIDATE("Location Code",ReqLine2."Location Code");
      PurchOrderHeader.SetShipToForSpecOrder;
      END;

      PurchOrderHeader.MODIFY;
      COMMIT;
      IF RECORDLEVELLOCKING THEN
      LOCKTABLE;
      PurchOrderHeader.MARK(TRUE);
      END;
      ...

      Código de substituição

      ... 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;
      ...
  6. Altere o código na função EnterPurchaseItemCrossRef na codeunit Dist integração (5702) do seguinte modo:
    Código existente

    ...   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;
    ...

    Código de substituição

    ...       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;
    ...
  7. Altere o código na função GetSpecialOrders na codeunit Dist integração (5702) do seguinte modo:
    Código existente

    ...    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;
    ...

    Código de substituição

    ...    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;
    ...
  8. Altere o código na função TransfldsFromSalesToPurchLine na codeunit Manutenção do documento de cópia (6620) do seguinte modo:
    Código existente

    ...  "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;
    ...

    Código de substituição

    ...  "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;
    ...


Pré-requisitos

Tem de ter um dos seguintes produtos instalado para aplicar esta correcção:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

  • Microsoft Dynamics NAV 2009 R2



Informações de remoção

Não é possível remover esta correcção.

Estado

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

VSTF DynamicsNAV SE: 238210

Nota Este é um artigo "Publicação rápida" criado diretamente a partir da organização de suporte da Microsoft. As informações contidas neste documento são fornecidas como-se em resposta a questões emergentes. Como resultado da urgência na sua disponibilização, os materiais podem incluir erros tipográficos e podem ser revistos em qualquer altura sem aviso prévio. Para outras considerações, consulte os Termos de utilização .

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×