Magazijnposten worden niet bijgewerkt met alle artikeltraceringsregels in een projectdagboek boekt u een item in het projectdagboek op een opslaglocatie in Microsoft Dynamics NAV 2009

Sjabloon: CPR - sjabloon voor Navision Code Fix

BUG #: 140208 (Contentbeheer)

Dit artikel is van toepassing op Microsoft Dynamics NAV voor alle landen en alle taalinstellingen.

Symptomen

Stel u hebt een projectdagboek vereffend met meer dan één artikeltraceringsregels voor een artikel in de Microsoft Dynamics NAV 2009. Wanneer u het artikel in het projectdagboek op een opslaglocatie boekt, worden alleen de magazijnposten bijgewerkt met de laatste regel die is opgegeven voor artikeltracering. Daarom is er een gebrek aan evenwicht van het artikel tussen het magazijn en de artikelposten.
Dit probleem treedt op in de volgende producten:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)


Oplossing

Informatie over de hotfix

Een ondersteunde hotfix is nu beschikbaar bij Microsoft. Het is echter alleen bedoeld om het probleem dat wordt beschreven in dit artikel. Pas deze alleen toe op systemen waarop dit specifieke probleem zich voordoet. Deze hotfix moet wellicht extra worden getest. Als u geen ernstige problemen ondervindt, is het daarom raadzaam te wachten op het volgende servicepack voor Microsoft Dynamics NAV of de volgende Microsoft Dynamics NAV versie waarin deze hotfix is opgenomen.

Opmerking In speciale gevallen kunnen kosten die verbonden zijn aan ondersteuningsoproepen ondersteuning worden geannuleerd als een medewerker van Technical Support voor Microsoft Dynamics en verwante producten bepaalt dat een specifieke update de oplossing van uw probleem. De normale ondersteuningskosten blijven gelden voor extra ondersteuningsvragen die niet in aanmerking voor de specifieke update in kwestie komen.

Als deze hotfix niet is geboekt voor openbare downloaden (wat betekent dat een openbare URL voor deze hotfix is niet opgenomen in dit artikel), verdeling technische lead, escalation teamlid of goedkeuring manager vereist en de volgende informatie is van toepassing:

  • To receive the hotfix, klanten moeten als ze problemen hebben dat wordt vermeld in de sectie 'Symptomen'.

  • U moet bijhouden welke klanten u deze en sturen met het volgende servicepack leveren, wanneer dit beschikbaar komt (als u een servicepack wordt gepubliceerd).

Deze hotfix is opgenomen in een servicepack voor Microsoft Dynamics NAV 2009 niet gepland.



Informatie over de installatie

Microsoft verstrekt programmeervoorbeelden uitsluitend ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend met de programmeertaal die wordt aangetoond en met de hulpprogramma's die worden gebruikt bent voor het maken van en naar procedures voor foutopsporing. Ondersteuningstechnici van Microsoft kunnen voor uitleg over de functionaliteit van een bepaalde procedure, maar zij zullen deze voorbeelden bieden extra functionaliteit of desgewenst uw specifieke vereisten niet wijzigen.

Opmerking Voordat u deze hotfix hebt geïnstalleerd, controleert u of dat alle gebruikers van Microsoft Navision-clients zijn afgemeld bij het systeem. Dit geldt ook voor gebruikers van Microsoft Navision Application Services (NAS)-clients. U moet de alleen clientgebruiker die is aangemeld wanneer u deze hotfix gaat implementeren.

Als u deze hotfix gaat implementeren, hebt u een ontwikkelaarslicentie voor.

Is raadzaam dat de gebruikersaccount in het venster Windows-aanmeldingen of Databaseaanmeldingen de rol-id 'SUPER'. Als de gebruikersaccount kan worden toegewezen als de ID 'SUPER' rol, moet u controleren of de gebruikersaccount de volgende machtigingen heeft:

  • De machtiging wijzigen voor het object dat u wijzigt.

  • De machtiging uitvoeren voor het object System Object ID 5210 en voor het object System Object ID 9015 .



Opmerking Er geen rechten voor de opgeslagen gegevens hebben, tenzij u gegevens herstellen.

Codewijzigingen

Opmerking Altijd test code worden opgelost in een testomgeving voordat u de correcties in de productieomgeving.
Voor dit probleem als volgt: de volgende lokale variabelen maken:

  1. Een nieuwe globale variabele in de tabel projectdagboekregel (210) toevoegen en geef vervolgens de variabele:

    • Naam: WMSManagement

    • Gegevenstype: Codeunit

    • Subtype: WMS Management (7302)

  2. De volgende code in de TableRelation -eigenschap van de Opslaglocatie (5403) veld in de tabel projectdagboekregel (210) verwijderen:

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Wijziging de code in de trigger OnValidate voor opslaglocatie (5403) veld in de tabel projectdagboekregel (210) als volgt:
    Bestaande code

    ...// Delete the following lines.
    TESTFIELD("Location Code");
    CheckItemAvailable;
    // End of the lines.
    ...

    Nieuwe code

    ...// Add the following lines.
    TESTFIELD("Location Code");
    IF "Bin Code" <> '' THEN BEGIN
    GetLocation("Location Code");
    Location.TESTFIELD("Bin Mandatory");
    END;
    TESTFIELD(Type,Type::Item);
    CheckItemAvailable;
    WMSManagement.FindBinContent("Location Code","Bin Code","No.","Variant Code",'')
    // End of the lines.
    ...
  4. Voeg een nieuwe lokale variabele in de Code van de opslaglocatie - OnLookup triggerin de tabel projectdagboekregel (210) en geef de variabele als volgt:

    • Naam: BinCode

    • Gegevenstype: Code

    • Lengte: 20

  5. Voeg de volgende code in de trigger Opslaglocatie - OnLookup in de tabel projectdagboekregel (210):

    TESTFIELD("Location Code");TESTFIELD(Type,Type::Item);
    BinCode := WMSManagement.BinContentLookUp("Location Code","No.","Variant Code",'',"Bin Code");
    IF BinCode <> '' THEN
    VALIDATE("Bin Code",BinCode);
  6. Wijzig de waarde in de eigenschap OptionString van het veld Brondocument (25) in de tabel dagboekregel magazijn (7311) op het volgende:
    OptionString=, S. Order, factuur S., S. creditnota, retourorder S., P. Order, factuur blz., blz.-creditnota, retourorder P., Inb. Overdracht, Outb. Transfer, Prod.-ordernr. Verbruik Item Jnl.-inventarisatie. Verz., herindelingsdagboeksjabloon. Verz., verbruik verz. uitvoer verz., stuklijst verz., serviceorder, Job dagb.

  7. Wijzig de waarde in de eigenschap OptionString van het veld Referentiedocument (60) in de tabel dagboekregel magazijn (7311) op het volgende:
    OptionString= , ontvangstvolgnr, blz. Inv. geboekt geboekt, geboekt retour. ontvangstvolgnr, blz.-creditnota, geboekte verzending, geboekte S. facturen, geboekte verzending retour., S. creditnota, geboekte T. ontvangst, geboekte verzending, T., geboekt geboekt Item journaal, Prod., opslag, Pick, verplaatsing, Stuklijstdagboek, projectdagboek

  8. Wijzig de waarde in de eigenschap OptionString van het veld brondocument (25) in de tabel Magazijnpost (7312) op het volgende:
    OptionString=, S. Order, factuur S., S. creditnota, retourorder S., P. Order, factuur blz., blz.-creditnota, retourorder P., Inb. Overdracht, Outb. Transfer, Prod.-ordernr. Verbruik Item Jnl.-inventarisatie. Verz., herindelingsdagboeksjabloon. Verz., verbruik verz., Verz., stuklijst verz. Serv. uitvoerorder, Job dagb.

  9. Wijzig de waarde in de eigenschap OptionString van het veld referentiedocument (60) in de tabel Magazijnpost (7312) op het volgende:
    OptionString= , ontvangstvolgnr, blz. Inv. geboekt geboekt, geboekt retour. ontvangstvolgnr, blz.-creditnota, geboekte verzending, geboekte S. facturen, geboekte verzending retour., S. creditnota, geboekte T. ontvangst, geboekte verzending, T., geboekt geboekt Item journaal, Prod., opslag, Pick, verplaatsing, Stuklijstdagboek, projectdagboek

  10. De eigenschap Visible van het besturingselement vestiging (60) in het projectdagboek formulier (201) als volgt wijzigen:
    Bestaande code

    Visible = Yes

    Nieuwe code

    Visible = No
  11. Het veld Opslaglocatie tussen het veld en het veld Werksoort in de vorm van het projectdagboek (201) toevoegen en geeft u het veld zoals volgen:

    ...{ 61 ;Label ;0 ;0 ;0 ;0 ;ParentControl=60;
    InColumnHeading=Yes }

    // Add the following lines.
    { 102 ;TextBox ;35507;1650 ;1700 ;440 ;ParentControl=1;
    InColumn=Yes;
    SourceExpr="Bin Code" }
    { 103 ;Label ;0 ;0 ;0 ;0 ;ParentControl=102;
    InColumnHeading=Yes }
    // End of the lines.

    { 48 ;TextBox ;11430;2530 ;1650 ;440 ;ParentControl=1;
    ...
  12. Voeg een nieuwe globale variabele in taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

    • Naam: locatie

    • Gegevenstype: Record

    • Subtype: locatie (14)

  13. Maak een nieuwe GetLocation functie in Project verz.-regel doorboeken (1012) als volgt:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Voeg de volgende code in de functie GetLocation in de taak verz.-regel doorboeken (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Maak een nieuwe PostWhseJnlLine functie in Project verz.-regel doorboeken (1012) als volgt:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Maak de volgende lokale variabelen in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012):

    1. Het toevoegen van een lokale variabele in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

      • Naam: WarehouseJournalLine

      • Gegevenstype: Record

      • Subtype: magazijndagboekregel (7311)

    2. Het toevoegen van een lokale variabele in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

      • Naam: TempWarehouseJournalLine

      • Gegevenstype: tijdelijke Record

      • Subtype: magazijndagboekregel (7311)

    3. Het toevoegen van een lokale variabele in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

      • Naam: ItemTrackingManagement

      • Gegevenstype: Codeunit

      • Subtype: Item Tracking Management (6500)

    4. Het toevoegen van een lokale variabele in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

      • Naam: WMSManagement

      • Gegevenstype: Codeunit

      • Subtype: WMS Management (7302)

    5. Het toevoegen van een lokale variabele in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012), en geef vervolgens de variabele:

      • Naam: WhseJnlRegisterLine

      • Gegevenstype: Codeunit

      • Subtype: mag.-verzending. Verz.-regel registreren (7301)

  17. Voeg de volgende code in de functie PostWhseJnlLine in de taak verz.-regel doorboeken (1012) als volgt:

    WITH ItemJnlLine DO BEGINIF "Entry Type" IN ["Entry Type"::Consumption,"Entry Type"::Output] THEN
    EXIT;
    Quantity := OriginalQuantity;
    "Quantity (Base)" := OriginalQuantityBase;
    GetLocation("Location Code");
    IF Location."Bin Mandatory" THEN
    IF WMSManagement.CreateWhseJnlLine(ItemJnlLine,0,WarehouseJournalLine,FALSE,FALSE) THEN BEGIN
    TempTrackingSpecification.MODIFYALL("Source Type",DATABASE::"Job Journal Line");
    ItemTrackingManagement.SplitWhseJnlLine(WarehouseJournalLine,TempWarehouseJournalLine,TempTrackingSpecification,FALSE);
    IF TempWarehouseJournalLine.FIND('-') THEN
    REPEAT
    WMSManagement.CheckWhseJnlLine(TempWarehouseJournalLine,1,0,FALSE);
    WhseJnlRegisterLine.RUN(TempWarehouseJournalLine);
    UNTIL TempWarehouseJournalLine.NEXT = 0;
    END;
    END;
  18. Voeg een nieuwe lokale variabele in de Code -functie in het project verz.-regel doorboeken (1012), en geef vervolgens de variabele:

    • Naam: TempTrackingSpecification

    • Gegevenstype: tijdelijke Record

    • Subtype: Traceringsspecificatie (336)

  19. Voeg een nieuwe lokale variabele in de Code -functie in het project verz.-regel doorboeken (1012), en geef vervolgens de variabele:

    • Naam: ItemJnlLine2

    • Gegevenstype: Record

    • Subtype: artikeldagboekregel (83)

  20. Wijzig de code in de functie van de Code in het project verz.-regel doorboeken (1012) als volgt:
    Bestaande code 1

    ...ItemJnlLine.INIT;
    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Nieuwe code 1

    ...ItemJnlLine.INIT;

    // Add the following line.
    ItemJnlLine."Line No." := "Line No.";

    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Bestaande code 2

    ...ItemLedgEntry.LOCKTABLE;
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);
    END;
    ...

    Vervangende code 2

    ...ItemLedgEntry.LOCKTABLE;

    // Add the following line.
    ItemJnlLine2 := ItemJnlLine;

    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);

    // Add the following lines.
    ItemJnlPostLine.CollectTrackingSpecification(TempTrackingSpecification);
    PostWhseJnlLine(ItemJnlLine2,ItemJnlLine2.Quantity,ItemJnlLine2."Quantity (Base)",TempTrackingSpecification);
    // End of the lines.
    ...
  21. Wijzig de waarde in de eigenschap OptionString van de parameter van het Document waarnaar wordt verwezen in de functie GetSourceDocument in het magazijninventarisatiedagboek. Management codeunit (5775) het volgende:
    OptionString=, S. Order, factuur S., S. creditnota, retourorder S., P. Order, factuur blz., blz.-creditnota, retourorder P., Inb. Overdracht, Outb. Transfer, Prod.-ordernr. Verbruik Item Jnl.-inventarisatie. Verz., herindelingsdagboeksjabloon. Verz., verbruik verz., Verz., stuklijst verz. Serv. uitvoerorder, Job dagb.

  22. Wijzig de code in de functie GetSourceDocument in het magazijninventarisatiedagboek. Management codeunit (5775) als volgt:
    Bestaande code

    ...EXIT;
    END;
    END;
    ERROR(Text000);
    ...

    Nieuwe code

    ...EXIT;
    END;

    // Add the following lines.
    DATABASE::"Job Journal Line":
    BEGIN
    SourceDocument := SourceDocument::"Job Jnl.";
    EXIT;
    END;
    // End of the lines.

    END;
    ERROR(Text000);
    ...
  23. De code in de functie CreateWhseJnlLine in de codeunit WMS Management (7302) als volgt wijzigen:
    Bestaande code

    ...WhseJnlLine."Source Line No." := "Line No.";
    END;
    WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Delete the following line.
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal";

    WhseJnlLine."Reference No." := "Document No.";
    ...

    Nieuwe code

    ...WhseJnlLine."Source Line No." := "Line No.";

    // Add the following lines.
    END ELSE
    IF "Job No." <> '' THEN BEGIN
    WhseJnlLine."Source Type" := DATABASE::"Job Journal Line";
    WhseJnlLine."Source Subtype" := ItemJnlTemplateType;
    WhseMgt.GetSourceDocument(WhseJnlLine."Source Document",WhseJnlLine."Source Type",WhseJnlLine."Source Subtype");
    WhseJnlLine."Source No." := "Document No.";
    WhseJnlLine."Source Line No." := "Line No.";
    // End of the lines.
    END;WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...ine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...

Vereisten

Hebt u een van de volgende producten geïnstalleerd om deze hotfix:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)

Informatie over verwijderen

U kunt deze hotfix niet verwijderen.

Referenties

VSTF DynamicsNAVSE: 235403

Status

Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Opmerking Dit is een 'Snel publiceren' artikel dat rechtstreeks door het ondersteuningsteam van Microsoft is gemaakt. De informatie wordt geleverd zoals het is in reactie op de opkomende problemen. Omdat het artikel snel beschikbaar moest zijn, kunnen de materialen typografische fouten bevatten en op elk gewenst moment zonder voorafgaande kennisgeving worden gewijzigd. Zie de Gebruiksvoorwaarden voor andere overwegingen.

Auteur: nhaman
Schrijver: v-zhipen
Tech Reviewer: nhaman
Editor:

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

×