Movimenti di magazzino non vengono aggiornati con tutte le righe di tracciabilità articolo nelle registrazioni commesse quando si registra un articolo nelle registrazioni commesse a una collocazione in Microsoft Dynamics NAV 2009

Modello: CPR - Navision codice correzione modello

BUG #: 140208 (manutenzione del contenuto)

In questo articolo si applica a Microsoft Dynamics NAV per tutti i paesi e tutte le lingue.

Sintomi

Si supponga di disporre di un giornale di registrazione di processo che dispone di uno o più righe tracciabilità articolo per un elemento in Microsoft Dynamics NAV 2009. Quando si registra l'articolo nelle registrazioni commesse a una collocazione, i movimenti di magazzino vengono aggiornati solo con l'ultima riga di tracciabilità articolo che viene immesso. È quindi uno squilibrio dell'elemento tra il magazzino e movimenti contabili.
Questo problema si verifica nei seguenti prodotti:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)


Risoluzione

Informazioni sull'hotfix

Un hotfix supportato è ora disponibile da Microsoft. Tuttavia, è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo ai sistemi in cui si verificano questo problema specifico. Questo hotfix potrebbe essere sottoposto ad ulteriori test. Pertanto, se il problema non causa gravi difficoltà, consiglia di attendere il prossimo service pack di Microsoft Dynamics NAV o versione successiva di Microsoft Dynamics NAV contenente tale hotfix.

Nota: In casi particolari, le spese normalmente addebitate per le chiamate potrebbero essere annullate qualora un aggiornamento del supporto tecnico di Microsoft Dynamics e prodotti correlati di supporto determina che uno specifico aggiornamento risolverà il problema. I costi di supporto normale verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Se questo hotfix non è registrato per il download pubblico (ovvero che un URL pubblico per questo hotfix non viene fornito in questo articolo), la distribuzione richiede responsabile tecnico, team o approvazione del responsabile e applicano le seguenti informazioni:

  • Per ottenere l'hotfix è necessario computer sia presente il bug descritto nella sezione "Sintomi".

  • È necessario tenere traccia dei clienti è inviata, al fine di fornire loro il prossimo service pack quando diventa disponibile (se viene rilasciato un service pack).

L'aggiornamento in questione non verrà incluso in un service pack di Microsoft Dynamics NAV 2009.



Informazioni sull'installazione

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, ma non limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire la procedura di debug. I tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun caso possono modificare questi esempi per fornire funzionalità aggiuntive o creare procedure atte a soddisfare specifiche esigenze.

Nota: Prima di installare questo hotfix, verificare che tutti gli utenti di client Microsoft Navision siano disconnessi dal sistema. Include gli utenti client Microsoft Navision Application Services (NAS). Dovrebbe essere il solo l'utente client connesso quando si implementa questo hotfix.

Per implementare questo hotfix, è necessario disporre di una licenza di sviluppatore.

È consigliabile che l'account utente nella finestra Login Windows o Login Database assegnare l'ID di ruolo "SUPER". Se l'account utente non può essere assegnato l'ID ruolo "SUPER", è necessario verificare che l'account utente disponga delle autorizzazioni seguenti:

  • Autorizzazione alla modifica dell'oggetto che si desidera modificare.

  • L'autorizzazione di esecuzione per l'oggetto System Object ID 5210 e object ID 9015 oggetto di sistema .



Nota: Non è necessario disporre dei diritti per gli archivi dati a meno che non è necessario eseguire il ripristino di dati.

Modifiche al codice

Nota: Sempre il codice di test consente di correggere in un ambiente controllato prima di applicare le correzioni per i computer di produzione.
Per risolvere questo problema, attenersi alla seguente procedura: creare le seguenti variabili locali:

  1. Aggiungere una nuova variabile globale nella tabella riga delle registrazioni commesse (210) e quindi specificare la variabile come segue:

    • Nome: WMSManagement

    • Tipo di dati: Codeunit

    • Sottotipo: Gestione WMS (7302)

  2. Elimina il codice riportato di seguito nella proprietà TableRelation del Codice collocazione campo (5403) nella tabella riga delle registrazioni commesse (210):

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Modifica il codice del trigger OnValidate per codice collocazione campo (5403) nella tabella riga delle registrazioni commesse (210) i seguenti:
    Codice esistente

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

    Codice di sostituzione

    ...// 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. Aggiungere una nuova variabile locale il Codice di collocazione - OnLookup triggerin nella tabella riga delle registrazioni commesse (210) e quindi specificare la variabile come segue:

    • Nome: BinCode

    • Tipo di dati: codice

    • Lunghezza: 20

  5. Aggiungere il codice seguente nel Codice di collocazione - OnLookup trigger nella tabella riga delle registrazioni commesse (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. Modificare il valore della proprietà OptionString del campo del Documento di origine (25) nella tabella riga di giornale di registrazione magazzino (7311) come segue:
    OptionString=, S. ordine, fattura di s, S. nota di credito, reso, ordine, fattura pag, credito, ordine reso pag, Trasf. Entrata, Trasf. Trasferimento, ordine di produzione. Elemento Reg., il consumo, INV. Reg., Registrazioni Riclass. Reg., consumo Reg., Reg., DBA Reg., Serv ordine di uscita, il processo batch Reg.

  7. Modificare il valore della proprietà OptionString del Documento di riferimento campo (60) nella tabella riga di giornale di registrazione magazzino (7311) come segue:
    OptionString= , registrato Vend., registrata pag Fatt., registrata Rtrn. vend., registrata pag nota credito, spedizione registrata, registrata S. Fatt., Rtrn. spedizione registrata, registrata S. nota credito, carico Reg. T., T. spedizione registrata, articolo del giornale di registrazione, Cat., stoccaggio, prelievo, movimento, registrazione DB, registrazioni commesse

  8. Modificare il valore della proprietà OptionString del campo del documento di origine (25) nella tabella Movimento Warehouse (7312) nel modo seguente:
    OptionString=, S. ordine, fattura di s, S. nota di credito, reso, ordine, fattura pag, credito, ordine reso pag, Trasf. Entrata, Trasf. Trasferimento, ordine di produzione. Elemento Reg., il consumo, INV. Reg., Registrazioni Riclass. Reg., consumo Reg., Reg., DBA Reg., Assist ordine di uscita, il processo batch Reg.

  9. Modificare il valore della proprietà OptionString del campo documento di riferimento (60) nella tabella Movimento Warehouse (7312) nel modo seguente:
    OptionString= , registrato Vend., registrata pag Fatt., registrata Rtrn. vend., registrata pag nota credito, spedizione registrata, registrata S. Fatt., Rtrn. spedizione registrata, registrata S. nota credito, carico Reg. T., T. spedizione registrata, articolo del giornale di registrazione, Cat., stoccaggio, prelievo, movimento, registrazione DB, registrazioni commesse

  10. Modificare la proprietà Visible del controllo COD (60) nel modulo registrazioni commesse (201) come segue:
    Codice esistente

    Visible = Yes

    Codice di sostituzione

    Visible = No
  11. Aggiungere il campo Codice collocazione tra il campo Codice ubicazione e il campo Codice tipo lavoro nel modulo registrazioni commesse (201) e quindi specificare il campo come seguire:

    ...{ 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. Aggiungere una nuova variabile globale nel processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

    • Nome: posizione

    • Tipo di dati: Record

    • Sottotipo: posizione (14)

  13. Creare una nuova funzione GetLocation nel processo batch Reg., Registra riga codeunit (1012) come segue:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Aggiungere il seguente codice nella funzione GetLocation il processo batch Reg., Registra riga codeunit (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Creare una nuova funzione di PostWhseJnlLine nel processo batch Reg., Registra riga codeunit (1012) come segue:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Creare le seguenti variabili locali nella funzione PostWhseJnlLine il processo batch Reg., Registra riga codeunit (1012):

    1. Aggiungere una variabile locale nella funzione PostWhseJnlLine il processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

      • Nome: WarehouseJournalLine

      • Tipo di dati: Record

      • Sottotipo: riga di registrazioni di magazzino (7311)

    2. Aggiungere una variabile locale nella funzione PostWhseJnlLine il processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

      • Nome: TempWarehouseJournalLine

      • Tipo di dati: Record TEMPORANEO

      • Sottotipo: riga di registrazioni di magazzino (7311)

    3. Aggiungere una variabile locale nella funzione PostWhseJnlLine il processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

      • Nome: ItemTrackingManagement

      • Tipo di dati: Codeunit

      • Sottotipo: gestione di tracciabilità degli articoli (6500)

    4. Aggiungere una variabile locale nella funzione PostWhseJnlLine il processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

      • Nome: WMSManagement

      • Tipo di dati: Codeunit

      • Sottotipo: Gestione WMS (7302)

    5. Aggiungere una variabile locale nella funzione PostWhseJnlLine il processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

      • Nome: WhseJnlRegisterLine

      • Tipo di dati: Codeunit

      • Sottotipo: Whse. Reg., Registra riga (7301)

  17. Aggiungere il seguente codice nella funzione PostWhseJnlLine il processo batch Reg., Registra riga codeunit (1012) come segue:

    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. Aggiungere una nuova variabile locale in funzione di codice nel processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

    • Nome: TempTrackingSpecification

    • Tipo di dati: Record TEMPORANEO

    • Sottotipo: Specifica tracciabilità (336)

  19. Aggiungere una nuova variabile locale in funzione di codice nel processo batch Reg.-Post riga codeunit (1012), quindi specificare la variabile come segue:

    • Nome: ItemJnlLine2

    • Tipo di dati: Record

    • Sottotipo: riga di registrazione magazzino (83)

  20. Modificare il codice nella funzione di codice nel processo batch Reg., Registra riga codeunit (1012) i seguenti:
    Codice esistente 1

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

    Codice sostitutivo 1

    ...ItemJnlLine.INIT;

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

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

    Codice esistente 2

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

    Codice di sostituzione 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. Modificare il valore della proprietà OptionString del parametro nella funzione GetSourceDocument Whse documento di riferimento. Codeunit di gestione (5775) al seguente:
    OptionString=, S. ordine, fattura di s, S. nota di credito, reso, ordine, fattura pag, credito, ordine reso pag, Trasf. Entrata, Trasf. Trasferimento, ordine di produzione. Elemento Reg., il consumo, INV. Reg., Registrazioni Riclass. Reg., consumo Reg., Reg., DBA Reg., Assist ordine di uscita, il processo batch Reg.

  22. Modificare il codice nella funzione GetSourceDocument whse. Codeunit di gestione (5775) i seguenti:
    Codice esistente

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

    Codice di sostituzione

    ...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. Modificare il codice nella funzione CreateWhseJnlLine della codeunit Gestione WMS (7302) come seguire:
    Codice esistente

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

    Codice di sostituzione

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

Prerequisiti

Deve avere uno dei seguenti prodotti per applicare questo hotfix:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Informazioni sulla rimozione

Non è possibile rimuovere questo hotfix.

Riferimenti

VSTF DynamicsNAVSE: 235403

Stato

Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".

Nota: Si tratta di un articolo a "Pubblicazione Veloce" creato direttamente all'interno dell'organizzazione di supporto Microsoft. Le informazioni contenute nel presente documento sono fornite così come sono in risposta a problemi urgenti. Per la velocità in rendendo disponibili, i materiali possono includere errori tipografici e possono essere modificati in qualsiasi momento senza preavviso. Per altre considerazioni, vedere Condizioni di utilizzo .

Autore: nhaman
Autore: v-zhipen
Revisore tecnico: nhaman
Editor:

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

×