Du kan inte skapa en försäljningsorder från en försäljningsoffert för en kund som använder förbetalning när försäljningsofferten använder radtypen Rubrik eller "Börja-totalt" eller "Slutsumma" i den schweiziska versionen av Microsoft Dynamics NAV 2009

Gäller för
Dynamics NAV 2009

Den här artikeln gäller Microsoft Dynamics NAV för följande länder och språkspråk.

  • Franska (Schweiz) (fr-ch)
  • Tyska (Schweiz) (gr-ch)
  • Italienska (Schweiz) (it-ch)

Symptom

Anta att du har en kund som använder förskottsbetalning i den schweiziska versionen av Microsoft Dynamics NAV 2009. Sedan skapar du en offert där fältet Typ är inställt på Rubrik eller Startsumma eller Slutsumma för kunden. I det här fallet får du följande felmeddelande när du skapar en försäljningsorder från offerten genom att klicka på Skapa order:

Obs

Du måste ange Nej. i Sales Line Document Type='Order',Document No.='DocumentNumber',Line No.='LineNumber'.

Det här problemet uppstår i följande produkter:

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 R2
  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 Service Pack 1

      

Lösning

Snabbkorrigeringsinformation

En snabbkorrigering som stöds är nu tillgänglig från Microsoft. Det är dock bara avsett att åtgärda problemet som beskrivs i den här artikeln. Använd den bara på system som har det här specifika problemet. Den här snabbkorrigeringen kan få ytterligare tester. Om du inte drabbas hårt av det här problemet rekommenderar vi därför att du väntar på nästa Microsoft Dynamics NAV 2009 Service Pack eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.

Obs! I särskilda fall kan avgifter som vanligtvis uppkommer för supportsamtal avbrytas om en teknisk supporttekniker för Microsoft Dynamics och relaterade produkter fastställer att en specifik uppdatering löser problemet. De vanliga supportkostnaderna gäller för ytterligare supportfrågor och problem som inte är berättigade till den aktuella uppdateringen.

            
          

Installationsinformation

Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.

Obs! Innan du installerar den här snabbkorrigeringen kontrollerar du att alla Microsoft Navision-klientanvändare loggas ut från systemet. Detta omfattar användare av Microsoft Navision Application Services (NAS). Du bör vara den enda klientanvändare som är inloggad när du implementerar snabbkorrigeringen.

Om du vill implementera den här snabbkorrigeringen måste du ha en utvecklarlicens.

Vi rekommenderar att användarkontot i fönstret Windows-inloggningar eller i fönstret Databasinloggningar tilldelas roll-ID:t "SUPER". Om användarkontot inte kan tilldelas superroll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Behörigheten Ändra för det objekt som du kommer att ändra.
  • Körbehörigheten för systemobjekt-ID 5210-objektet och för 9015-objektet Systemobjekt-ID.

                
Obs! Du behöver inte ha rättigheter till datakällorna om du inte behöver utföra datareparation.

Kodändringar

Obs! Testa alltid korrigeringar av kod i en kontrollerad miljö innan du tillämpar korrigeringarna på produktionsdatorerna.
Lös problemet genom att följa de här stegen:

  1. Ändra koden i tabellen Försäljningsrad (37) enligt följande::
    Befintlig kod 1

    ...
    // Delete the following line.
    IF NOT (Type IN [Type::" ",Type::Title..Type::"New Page"]) THEN BEGIN
    ...
    

    Ersättningskod 1

    ...
    // Add the following line.
    IF IsTypeQuantitative THEN BEGIN
    ...
    

    Befintlig kod 2

    ...
    // Delete the following line.
    IF (NOT (Type IN [Type::"G/L Account"..Type::"Charge (Item)"])) AND (Quantity <> 0) THEN
    ...
    

    Ersättningskod 2

    ...
    // Add the following line.
    IF NOT IsTypeQuantitative AND (Quantity <> 0) THEN
    ...
    

    Befintlig kod 3

    ...
    // Delete the following line.
    IF ("Prepayment %" <> 0) AND (Type <> Type::" ") THEN BEGIN
    ...
    

    Ersättningskod 3

    ...
    // Add the following line.
    IF ("Prepayment %" <> 0) AND IsTypeQuantitative THEN BEGIN
    ...
    

    Befintlig kod 4

    ...
    // Delete the following line.IF NOT (Type IN[Type::"G/L Account"..Type::"Charge (Item)"]) THEN
    ...
    

    Ersättningskod 4

    ...
    // Add the following line.
    IF NOT IsTypeQuantitative THEN BEGIN
    ...
    

    Befintlig kod 5

    ...
    // Delete the following line.
    IF (Type IN[Type::"G/L Account"..Type::"Charge (Item)"]) AND ("No." <> '') THEN BEGIN
    ...
    

    Ersättningskod 5

    ...
    // Add the following line.
    IF IsTypeQuantitative AND ("No." <> '') THEN BEGIN
    ...
    

    Befintlig kod 6

    ...
    PROCEDURE RoundLineAmount@1150000(_Amount@1150000 : Decimal) : Decimal;
    VAR
    SalesSetup@1150001 : Record 311;
    BEGIN
    GLSetup.GET;
    IF ("Currency Code" = '') OR ("Currency Code" = GLSetup."LCY Code") THEN BEGIN
    SalesSetup.GET;
    SalesSetup.TESTFIELD("Line Amt. Round LCY");
    _Amount := ROUND(_Amount,SalesSetup."Line Amt. Round LCY");
    END;
    EXIT(_Amount);
    END;
    BEGIN
    ...
    

    Ersättningskod 6

    ...
    PROCEDURE RoundLineAmount@1150000(_Amount@1150000 : Decimal) : Decimal;
    VAR
    SalesSetup@1150001 : Record 311;
    BEGIN
    GLSetup.GET;
    IF ("Currency Code" = '') OR ("Currency Code" = GLSetup."LCY Code") THEN BEGIN
    SalesSetup.GET;
    SalesSetup.TESTFIELD("Line Amt. Round LCY");
    _Amount := ROUND(_Amount,SalesSetup."Line Amt. Round LCY");
    END;
    EXIT(_Amount);
    END;
    
    // Add the following lines.
    PROCEDURE IsTypeQuantitative@1150010() : Boolean;
    BEGIN
    EXIT(Type IN [Type::"G/L Account"..Type::"Charge (Item)"]);
    END;
    // End of the lines.
    
    BEGIN
    ...
    

    Befintlig kod 7

    ...
    // Delete the following line.
    IF Type <> Type::" " THEN
    
    Quantity := TempSalesLine.Quantity;
    ...
    

    Ersättningskod 7

    ...
    // Add the following line.
    IF IsTypeQuantitative THEN
    
    Quantity := TempSalesLine.Quantity;
    ...
    

    Befintlig kod 8

    ...
    // Delete the following line.
    IF NOT "System-Created Entry" AND ("Document Type" = "Document Type"::Order) AND (Type <> Type::" ") THEN
    
    "Prepayment %" := SalesHeader."Prepayment %";...
    

    Ersättningskod 8

    ...
    // Add the following line.
    IF NOT "System-Created Entry" AND ("Document Type" = "Document Type"::Order) AND IsTypeQuantitative THEN
    
    "Prepayment %" := SalesHeader."Prepayment %";
    ...
    

    Befintlig kod 9

    ...
    // Delete the following line.
    IF ("Shipment Date" < WORKDATE) AND (Type <> Type::" ") THEN
    
    IF NOT (HideValidationDialog OR HasBeenShown) AND GUIALLOWED THEN BEGIN
    ...
    

    Ersättningskod 9

    ...
    // Add the following line.
    IF ("Shipment Date" < WORKDATE) AND IsTypeQuantitative THEN
    
    IF NOT (HideValidationDialog OR HasBeenShown) AND GUIALLOWED THEN BEGIN
    ...
    

    Befintlig kod 10

    ...
    // Delete the following line.
    IF Type <> Type::" " THEN
    
    UpdateAmounts;
    ...
    

    Ersättningskod 10

    ...
    // Add the following line.
    IF IsTypeQuantitative THEN
    
    UpdateAmounts;
    ...
    

    Befintlig kod 11

    ...
    // Delete the following line.
    IF Type = Type::" " THEN
    
    EXIT(TRUE);
    ...
    

    Ersättningskod 11

    ...
    // Add the following line.
    IF NOT IsTypeQuantitative THEN
    
    EXIT(TRUE);
    ...
    
  2. Ändra koden i QuoteMgt-koduniten (3010801) enligt följande:
    Befintlig kod

    ...
    // Delete the following lines.
    IF (Type IN [Type::"G/L Account"..Type::"Charge (Item)"]) AND
    ("No." <> '')
    THEN BEGIN
    // End of the lines.
    ...
    

    Ersättningskod

    ...
    // Add the following line.
    IF IsTypeQuantitative AND ("No." <> '') THEN BEGIN
    ...
    

Krav

Du måste ha någon av följande produkter installerade för att kunna använda den här snabbkorrigeringen:

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 R2
  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 Service Pack 1

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Obs! Det här är en "FAST PUBLISH"-artikel som skapats direkt från Microsofts supportorganisation. Den information som finns häri tillhandahålls i befintligt format som svar på framväxande problem. Till följd av hur snabbt materialet blir tillgängligt kan materialet innehålla typografiska fel och kan komma att revideras när som helst utan föregående meddelande. Se användningsvillkor för andra överväganden.