Condividi tramite


Consolidare le operazioni di magazzino

Nel tempo, la tabella delle transazioni di inventario (InventTrans) continuerà a crescere e a consumare più spazio nel database. Pertanto, le query eseguite sulla tabella diventeranno gradualmente più lente. Questo articolo descrive come utilizzare la funzionalità Consolidamento delle transazioni di inventario per consolidare i dati sulle transazioni di inventario e contribuire a migliorare le prestazioni del sistema.

Nota

Solo le transazioni di inventario aggiornate finanziariamente possono essere consolidate in un periodo contabile chiuso selezionato. Per essere consolidate, le transazioni di inventario in uscita aggiornate finanziariamente devono avere uno stato di emissione di Venduto e le transazioni di inventario in entrata devono avere uno stato di entrata di Acquistato.

Quando consolidi le transazioni di inventario, tutte le transazioni correlate vengono spostate nella tabella InventTransArchive . Le transazioni di uscita di inventario e le transazioni di entrata di inventario vengono consolidate separatamente, in base alla combinazione dell'ID articolo (itemId) e dell'ID dimensione inventariale (inventDimId) e vengono inserite nel riepilogo transazioni in emissione e in entrata riepilogate.

Se una combinazione itemId e inventDimId contiene solo una transazione di entrata o di uscita, la transazione non verrà consolidata.

Nota

Dopo aver consolidato le transazioni di inventario, puoi ottimizzare ulteriormente lo spazio di archiviazione e le prestazioni del sistema utilizzando la funzione Archivia con Dataverse conservazione a lungo termine funzione per spostare InventTransArchive registra in un Microsoft Azure data Lake. Per ulteriori informazioni, consulta Archiviare i dati delle transazioni di inventario in Dynamics 365 Supply Chain Management.

Attiva la funzionalità nel tuo sistema

Se il tuo sistema non include già la funzionalità descritta in questo articolo, vai a Gestione funzionalità e attiva Consolidamento delle transazioni di inventario funzione. Questa funzione non può essere disabilitata dopo essere stata abilitata.

Cose da considerare prima di consolidare le transazioni di inventario

Prima di consolidare le transazioni di inventario, dovresti considerare i seguenti scenari aziendali, perché saranno interessati dall'operazione:

  • Quando controlli le transazioni di magazzino da documenti correlati, come le righe dell'ordine di acquisto, queste vengono visualizzate come consolidate. Per rivedere le transazioni consolidate, devi andare a Gestione inventario > Attività periodiche > Pulizia > Consolidamento delle transazioni di inventario.
  • La chiusura dell'inventario non può essere annullata per i periodi consolidati.
  • La conversione dei costi standard non può essere eseguita per periodi consolidati.
  • I report sull'inventario che provengono dalle transazioni di inventario vengono influenzati quando si consolidano le transazioni di inventario. Questi report includono il report sull'aging delle scorte e i rapporti sui valori di inventario.
  • Le previsioni dell'inventario potrebbero essere influenzate se eseguite durante l'orizzonte temporale dei periodi consolidati.

Prerequisiti

Le transazioni di magazzino possono essere consolidate solo durante i periodi in cui sono soddisfatte le seguenti condizioni:

  • Il periodo contabile deve essere chiuso.
  • La chiusura dell'inventario deve essere eseguita a partire dalla data di consolidamento del periodo in questione.
  • Il periodo deve essere almeno un anno prima della data di inizio periodo del consolidamento.
  • Non devono esistere ricalcoli di inventario.

Consolida le tue transazioni di inventario

Per consolidare le transazioni di inventario, attenersi alla seguente procedura.

  1. Vai a Gestione inventario>Attività periodiche>Pulizia>Consolidamento delle transazioni di inventario.

    Viene visualizzata la pagina Consolidamento delle transazioni di inventario che mostra un elenco di record di processo consolidati.

  2. Nel riquadro azioni, selezionare Consolidamento delle transazioni di inventario per creare un consolidamento delle transazioni di inventario.

  3. Nella finestra di dialogo Consolidamento transazioni di inventario , nella scheda veloce Parametri , impostare i seguenti campi:

    • Dalla data nel periodo contabile chiuso : seleziona la prima data della transazione da includere nel consolidamento.
    • Ad oggi nel periodo contabile chiuso : seleziona la data della transazione più recente da includere nel consolidamento.

    Nota

    Solo i periodi che soddisfano i prerequisiti saranno selezionabili.

  4. Nella Scheda dettaglio Esecuzione in background, impostare i dettagli dell'elaborazione batch come necessario. Seguire i passaggi usuali per i processi batch in Microsoft Dynamics 365 Supply Chain Management.

  5. Selezionare OK.

  6. Viene visualizzato un messaggio che richiede di confermare se si desidera continuare. Leggere attentamente il messaggio, quindi selezionare per continuare.

    Si riceve un messaggio che informa che il processo di consolidamento delle transazioni di inventario è stato aggiunto alla coda batch. Il lavoro inizia a consolidare le transazioni di inventario dal periodo selezionato.

Visualizza le transazioni di inventario consolidate

La pagina Consolidamento delle transazioni di inventario mostra la cronologia completa del consolidamento. Ogni riga della griglia mostra informazioni quali la data di creazione del consolidamento, l'utente che lo ha creato e il suo stato.

Nell'elenco a discesa nella parte superiore della pagina selezionare uno dei seguenti valori per filtrare i consolidamenti visualizzati nella griglia:

  • Attivo : mostra solo i consolidamenti attivi.
  • Tutti : mostra tutti i consolidamenti.

Per ciascun consolidamento nella griglia vengono fornite le seguenti informazioni:

  • Attivo : un segno di spunta indica che il consolidamento è attivo.
  • Dalla data : la data della transazione più vecchia che può essere inclusa nel consolidamento.
  • Ad oggi – La data della transazione più recente che può essere inclusa nel consolidamento.
  • Pianificato da : l'account utente che ha creato il consolidamento.
  • Eseguito : la data in cui è stato creato il consolidamento.
  • Interrompi aggiornamento corrente : un segno di spunta indica che il consolidamento è in corso, ma è stato sospeso.
  • Stato : lo stato di elaborazione del consolidamento. I valori possibili sono In attesa, In corso e Finito.

La barra degli strumenti sopra la griglia fornisce i seguenti pulsanti che è possibile utilizzare per lavorare con un consolidamento selezionato:

  • Transazioni consolidate : visualizza tutti i dettagli del consolidamento selezionato. La pagina Transazioni consolidate visualizzata mostra tutte le transazioni nel consolidamento.

    Per visualizzare ulteriori informazioni su una transazione specifica nella pagina Transazioni consolidate , selezionarla nella griglia, quindi, nel riquadro azioni, selezionare Dettagli della transazione consolidata. La pagina Dettagli transazione consolidata visualizzata mostra informazioni quali la registrazione nel registro, i relativi riferimenti nel registro secondario e le dimensioni finanziarie.

  • Pausa : mette in pausa un consolidamento selezionato attualmente in fase di elaborazione. La pausa diventa effettiva solo dopo la generazione dell'attività di archiviazione. Pertanto, potrebbe esserci un breve ritardo prima della sospensione dell'archiviazione. Se un consolidamento è in pausa, viene visualizzato un segno di spunta nel campo Interrompi aggiornamento corrente .

  • Riprendi : riprende l'elaborazione per un consolidamento selezionato attualmente in pausa.

Estendere il codice per supportare i campi personalizzati

Se la tabella InventTrans contiene uno o più campi personalizzati, potrebbe essere necessario estendere il codice per supportarli, a seconda di come vengono denominati.

  • Se i campi personalizzati della tabella InventTrans hanno gli stessi nomi di campo della tabella InventtransArchive , significa che sono mappati 1:1. Pertanto, è possibile inserire semplicemente i campi personalizzati nel gruppo di campi InventoryArchiveFields della tabella inventTrans.
  • Se i nomi dei campi personalizzati nella tabella InventTrans non corrispondono ai nomi dei campi nella tabella InventtransArchive, è necessario aggiungere il codice per mapparli. Ad esempio, se si dispone di un campo di sistema chiamato InventTrans.CreatedDateTime, è necessario creare un campo nella tabella InventTransArchive con un nome diverso (come InventtransArchive.InventTransCreatedDateTime) e aggiungere le estensioni alle classi InventTransArchiveProcessTask e InventTransArchiveSqlStatementHelper, come illustrato nel codice di esempio seguente.

Nel seguente codice di esempio viene illustrato un modo per aggiungere l'estensione richiesta alla classe InventTransArchiveProcessTask.

[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{

    protected void addInventTransFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTrans, ModifiedBy))
            .add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));

        next addInventTransFields(_selectionObject);
    }


    protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
            .add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));

        next addInventTransArchiveFields(_selectionObject);
    }
}

Nel seguente codice di esempio viene illustrato un modo per aggiungere l'estensione richiesta alla classe InventTransArchiveSqlStatementHelper.

[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
    private str     inventTransModifiedBy;  
    private str     inventTransCreatedBy;
    private str     inventTransCreatedDateTime;

    protected void initialize()
    {
        next initialize();
        inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
        inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
        inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
    }

    protected str buildInventTransArchiveSelectionFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransArchiveSelectionFieldsStatement();
        
        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
        }

        return ret;
    }

    protected str buildInventTransTargetFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransTargetFieldsStatement();

        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransModifiedBy);
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedBy);
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedDateTime);
        }

        return ret;
    }
}