Il Suo Template dati per la gestione di resi e rimborsi
Il Suo Template dati per la gestione di resi e rimborsi
- Campi dati consigliati da raccogliere
- Passaggi chiave del processo da monitorare
- Indicazioni per l'estrazione dei dati
Attributi della gestione dei resi e dei rimborsi
| Nome | Descrizione | ||
|---|---|---|---|
| ID del caso di reso ReturnCaseId | L'identificativo univoco del caso di reso e rimborso di un cliente, che collega tutte le attività correlate. | ||
| Descrizione Il Return Case ID funge da identificativo principale per ogni singola istanza del processo di reso. Collega tutte le attività associate a uno specifico reso o a una specifica richiesta di rimborso del cliente, dalla creazione iniziale del Return Order fino alla chiusura definitiva. Nell'analisi dei processi, questo ID è fondamentale per ricostruire il percorso end-to-end di ogni reso. Consente di monitorare l'intero ciclo di vita, misurare i tempi di ciclo complessivi e analizzare le differenze tra i vari casi. Tutti gli eventi, i dati e le metriche vengono aggregati e correlati utilizzando questo identificativo. Perché è importante È l'identificativo essenziale del caso che collega tutte le fasi del processo, rendendo possibile tracciare e analizzare ogni reso dall'inizio alla fine. Dove reperirlo In genere corrisponde al numero di Return Material Authorization (RMA) oppure al numero del Sales Order di tipo 'Returned Order' nel modulo 'Sales and marketing'. Si trova in tabelle come 'SalesTable', dove 'SalesType' è 'Returned Order'. Esempi RMA-001234RMA-001235RMA-001236 | |||
| Ora dell'evento EventTime | Il timestamp che indica quando si è verificata una specifica attività o un determinato evento. | ||
| Descrizione Event Time, ovvero il timestamp, registra la data e l'ora esatte in cui si è svolta un'attività. Ogni attività nell'Event Log dispone di un timestamp corrispondente, che definisce l'ordine cronologico degli eventi. Questo attributo è fondamentale per tutte le analisi di Process Mining basate sul tempo. Viene utilizzato per calcolare i tempi di ciclo tra le attività, identificare i tempi di attesa e i colli di bottiglia, misurare la durata complessiva del caso e verificare la Conformità agli accordi sul livello di servizio (SLA). L'accuratezza dei timestamp incide direttamente sull'affidabilità di qualsiasi analisi delle prestazioni. Perché è importante Questo timestamp è essenziale per calcolare tutte le metriche basate sulla durata, come i tempi di ciclo e di attesa, fondamentali per l'analisi delle prestazioni. Dove reperirlo Corrisponde ai campi relativi alla data di creazione o modifica presenti in varie tabelle, come 'SalesTable.createdDateTime' per la creazione dell'ordine o 'WMSJournalTrans.createdDateTime' per i giornali di magazzino. Esempi 2023-10-26T10:00:00Z2023-10-26T14:30:15Z2023-10-27T09:05:42Z | |||
| Nome dell'attività ActivityName | Il nome dello specifico evento aziendale o task che si è verificato nel processo di reso e rimborso. | ||
| Descrizione Questo attributo descrive una fase o un evento specifico del ciclo di vita del reso e del rimborso, come 'Return Order Created', 'Item Received' o 'Credit Note Posted'. Ogni attività rappresenta un punto distinto del processo registrato nel sistema. L'analisi della sequenza e della frequenza di queste attività costituisce il nucleo del Process Mining. Consente di visualizzare le mappe di processo, identificare i colli di bottiglia tra le fasi e individuare le varianti di processo comuni e meno frequenti. L'insieme delle attività definisce l'ambito del processo analizzato. Perché è importante Definisce le fasi del processo, consentendo di visualizzare il flusso di processo e identificare colli di bottiglia, rilavorazioni e deviazioni. Dove reperirlo Si tratta di un attributo concettuale derivato dagli eventi di sistema. Può essere generato mappando le modifiche di stato in tabelle come 'SalesTable' e 'WMSJournalTable' oppure specifici Event Log su nomi comprensibili per gli utenti. Esempi Ordine di reso creatoArticolo ricevutoCodice di disposizione applicatoNota di credito registrata | |||
| Canale del reso ReturnChannel | Il metodo o il canale attraverso il quale il cliente ha avviato il reso. | ||
| Descrizione Questo attributo specifica il canale utilizzato dal cliente per avviare il processo di reso, ad esempio 'Portale online', 'In negozio', 'Chiamata al servizio clienti' o 'Posta'. Segmentare l'analisi del processo per canale di reso aiuta a valutare le prestazioni e l'efficienza di ciascun canale. Un'azienda può confrontare tempi di ciclo, costi e soddisfazione dei clienti tra i diversi canali, così da individuare le best practice e le aree in cui investire o apportare miglioramenti. È un elemento fondamentale per la Dashboard 'Return Channel Utilization Performance'. Perché è importante Consente di confrontare le prestazioni dei diversi canali di reso, aiutando a ottimizzare quelli più efficienti e convenienti. Dove reperirlo Queste informazioni possono essere memorizzate nell'intestazione del Return Order ('SalesTable') oppure derivate dall'utente che ha creato l'ordine. Potrebbero essere necessarie logiche personalizzate o un campo dedicato. Esempi Portale webChiosco in negozioAssistenza clienti | |||
| Codice del motivo del reso ReturnReasonCode | Il motivo indicato dal cliente per la restituzione dell'articolo. | ||
| Descrizione Il Return Reason Code registra il motivo dichiarato dal cliente per il reso, come 'Articolo difettoso', 'Taglia errata', 'Non conforme alla descrizione' o 'Non più necessario'. Queste informazioni vengono generalmente raccolte all'avvio del reso. Analizzare i motivi dei resi è fondamentale per l'analisi delle cause principali. Aiuta le aziende a individuare problemi di qualità dei prodotti, descrizioni inesatte o errori logistici. Gli insight ottenuti da questi dati possono guidare miglioramenti nella progettazione dei prodotti, nel marketing e nelle attività della supply chain, riducendo i resi futuri. Perché è importante Fornisce indicazioni essenziali sulle cause dei resi, consentendo di analizzare le cause principali, ridurre il tasso di reso e migliorare la soddisfazione dei clienti. Dove reperirlo In genere viene memorizzato a livello di riga del Return Order. Occorre cercare i campi relativi al codice del motivo nella tabella 'SalesLine' per gli ordini di reso. Esempi DEFECTWRONG_ITEMNO_LONGER_WANTEDDAMAGED_IN_TRANSIT | |||
| Codice di disposizione DispositionCode | Un codice che indica il risultato dell'ispezione dell'articolo e l'azione successiva da intraprendere. | ||
| Descrizione Il Disposition Code viene assegnato durante il controllo qualità di un articolo restituito. Determina la fase successiva del processo, come 'Credit', 'Replace', 'Scrap' o 'Return to Customer'. Questo attributo rappresenta un punto decisionale fondamentale nel processo dei resi. Analizzare i dati per codice di disposizione consente alle aziende di comprendere gli esiti dei resi, monitorare l'impatto finanziario della rottamazione degli articoli e valutare l'efficienza dei diversi percorsi di risoluzione, come la sostituzione rispetto al rimborso. Perché è importante Questo codice determina il percorso che seguirà un caso di reso dopo l'ispezione, rendendolo fondamentale per analizzare le varianti di processo e i relativi risultati aziendali. Dove reperirlo È un campo fondamentale del modulo di gestione della qualità. È associato all'elaborazione del Quality Order o dell'Inspection Order. Esempi CRDTREPL-DSCRAPRTV | |||
| ID prodotto ProductId | L'identificativo univoco del prodotto restituito. | ||
| Descrizione Il Product ID, spesso rappresentato dallo Stock Keeping Unit (SKU), identifica lo specifico articolo restituito dal cliente. Ogni riga del Return Order è associata a un Product ID. Analizzare i resi per prodotto è essenziale per individuare gli articoli con tassi di reso elevati. Ciò può segnalare problemi di controllo qualità, descrizioni dei prodotti inesatte o difetti di produzione. Questa analisi aiuta a dare priorità alle verifiche e ai miglioramenti relativi ai prodotti. Perché è importante Consente di analizzare i resi per singolo prodotto, aiutando a individuare articoli con problemi di qualità o volumi elevati di restituzione. Dove reperirlo Corrisponde al campo 'ItemId' nella tabella 'SalesLine' del Return Order. Esempi SKU-A-123SKU-B-456SKU-C-789 | |||
| Utente responsabile ResponsibleUser | L'utente o il dipendente che ha eseguito una specifica attività o ne è responsabile. | ||
| Descrizione Questo attributo identifica la persona responsabile dell'esecuzione di una fase del processo. Può trattarsi dell'addetto di magazzino che ha ricevuto l'articolo, dell'ispettore della qualità o dell'impiegato dell'ufficio finanziario che ha registrato la nota di credito. Analizzare il processo per utente aiuta a comprendere la distribuzione del carico di lavoro, individuare le persone con le migliori prestazioni e rilevare eventuali esigenze formative. Può inoltre essere utilizzato per esaminare i casi gestiti da specifiche persone o team e garantire un'adeguata separazione dei compiti. Perché è importante Consente di analizzare la distribuzione del carico di lavoro e le prestazioni dei singoli o dei team, nonché di individuare opportunità di formazione o di allocazione delle risorse. Dove reperirlo Si trova nei campi 'created by' o 'modified by' dei record delle transazioni, come 'SalesTable.createdBy' o gli ID utente collegati nelle tabelle dei giornali. Esempi Alice.WBob.JChris.P | |||
| Conforme alla policy IsPolicyAdherent | Un indicatore che segnala se l'approvazione del reso è conforme alle policy di reso stabilite. | ||
| Descrizione Questo è un attributo booleano calcolato che indica se un reso soddisfa tutti i criteri definiti nella policy aziendale sui resi. Può basarsi su fattori quali il periodo utile per il reso, la condizione dell'articolo o il motivo del reso. Questo attributo supporta direttamente la Dashboard 'Return Approval Compliance Overview' e il KPI 'Compliant Return Approval Rate'. Consente all'azienda di quantificare la Conformità alle policy, individuare i casi approvati in deroga e analizzare le cause e la frequenza di tali eccezioni. È fondamentale per la governance e il controllo dei costi. Perché è importante Misura direttamente la Conformità alle regole aziendali, aiutando a individuare e ridurre le approvazioni di reso non conformi che possono causare perdite di ricavi. Dove reperirlo È un attributo derivato. La logica dovrebbe essere costruita confrontando gli attributi del reso, ad esempio la data del reso rispetto alla data di acquisto e il motivo del reso, con regole aziendali predefinite. Esempi truefalse | |||
| Data obiettivo SLA del rimborso RefundSlaTargetDate | La data entro la quale il caso di reso e rimborso dovrebbe essere completamente risolto. | ||
| Descrizione Questo attributo definisce la scadenza dell'Accordo sul livello di servizio (SLA) per la risoluzione di un caso di reso. È la data entro la quale il cliente dovrebbe ricevere una risoluzione definitiva, come un rimborso registrato o una sostituzione spedita. Questa data obiettivo è essenziale per monitorare le prestazioni rispetto agli impegni di servizio. Viene utilizzata per calcolare il KPI 'Resolution SLA Adherence Rate' e alimentare la Dashboard 'Refund Resolution SLA Performance'. Confrontando questa data con la data effettiva di completamento del processo, l'azienda può individuare le violazioni degli SLA e gestire proattivamente i casi in sospeso da più tempo. Perché è importante È il parametro di riferimento per misurare le prestazioni del processo, consentendo di monitorare la Conformità agli SLA e individuare i casi in ritardo. Dove reperirlo Potrebbe non essere un campo standard. Spesso viene calcolato sommando alla data di creazione del reso un periodo SLA predefinito, ad esempio 14 giorni. Potrebbe essere memorizzato in un campo personalizzato. Esempi 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
| ID cliente CustomerId | L'identificativo univoco del cliente che ha avviato il reso. | ||
| Descrizione Il Customer ID è l'identificativo univoco dell'account cliente associato al reso. Collega la transazione di reso a uno specifico cliente nel CRM o nel database clienti. Analizzare i resi per cliente consente di individuare quelli con un'attività di reso insolitamente elevata, che potrebbe indicare comportamenti fraudolenti o un'insoddisfazione ricorrente. Può inoltre essere utilizzato per segmentare i clienti, ad esempio offrendo servizi di reso premium ai clienti di maggior valore. Perché è importante Collega il processo di reso a uno specifico cliente, consentendo un'analisi a livello cliente e l'individuazione di schemi di reso o potenziali frodi. Dove reperirlo È il campo 'CustAccount' di 'SalesTable' per il Return Order. Esempi CUST-00045CUST-00192CUST-00315 | |||
| ID della nota di credito CreditNoteId | L'identificativo univoco del documento di nota di credito creato per un rimborso. | ||
| Descrizione Quando viene elaborato un rimborso, viene generato un documento finanziario noto come nota di credito o credit memo. Questo attributo memorizza l'ID univoco del documento. L'ID fornisce un collegamento diretto tra il processo operativo di reso e i dati finanziari del sistema contabile. È utile per le attività di audit e per analisi approfondite delle discrepanze finanziarie, consentendo all'analista di tracciare un caso di reso fino alla specifica transazione finanziaria che lo ha regolato. Perché è importante Collega il processo operativo di reso alla transazione finanziaria corrispondente, un elemento fondamentale per l'audit e la riconciliazione finanziaria. Dove reperirlo Il numero della nota di credito si trova in genere nel campo 'InvoiceId' della tabella 'CustInvoiceJour', dove il tipo di transazione è 'Credit note'. Può essere ricollegato al Return Order. Esempi CN-10056CN-10057CN-10058 | |||
| ID magazzino WarehouseId | L'identificativo del magazzino o della sede in cui viene ricevuto l'articolo restituito. | ||
| Descrizione Questo attributo identifica lo specifico magazzino fisico o centro resi che elabora l'articolo restituito. Sedi diverse possono avere processi, risorse o livelli di prestazione differenti. Analizzare il processo per magazzino consente di confrontare le prestazioni tra le diverse sedi. Può aiutare a individuare le strutture più efficienti nell'elaborazione dei resi, evidenziare i colli di bottiglia regionali e supportare le decisioni sull'allocazione delle risorse e sulla standardizzazione dei processi nella rete logistica. Perché è importante Consente di confrontare le prestazioni dei diversi magazzini o centri resi, aiutando a individuare colli di bottiglia regionali o best practice. Dove reperirlo Queste informazioni sono memorizzate nel campo 'InventLocationId' delle transazioni relative all'inventario, come il giornale di arrivo ('WMSJournalTable') o 'SalesLine'. Esempi WH-EASTWH-WESTCENTRAL-DC | |||
| Importo del rimborso richiesto RequestedRefundAmount | Il valore monetario complessivo del rimborso richiesto dal cliente. | ||
| Descrizione Questo attributo rappresenta l'importo iniziale del rimborso richiesto o previsto all'inizio del processo di reso. In genere si basa sul prezzo di acquisto originale degli articoli restituiti. Questo valore costituisce la base per la 'Refund Amount Discrepancy Analysis'. Confrontando l'importo richiesto con quello effettivamente rimborsato, l'azienda può individuare discrepanze dovute a costi di reintegro, rimborsi parziali per articoli danneggiati o altri adeguamenti. Ciò aiuta a monitorare l'accuratezza finanziaria e il rispetto delle policy. Perché è importante Costituisce il valore di riferimento per misurare l'accuratezza finanziaria, confrontandolo con l'importo effettivamente rimborsato. Dove reperirlo In genere corrisponde all'importo della riga o all'importo totale della riga dell'ordine di vendita originale restituita, disponibile in 'SalesLine.LineAmount'. Esempi 99.99150.0024.50 | |||
| Importo effettivo del rimborso ActualRefundAmount | Il valore monetario finale del rimborso erogato al cliente. | ||
| Descrizione Questo attributo rappresenta l'importo finale e confermato rimborsato al cliente. Il valore viene registrato quando la nota di credito viene creata e registrata. È un attributo fondamentale per l'analisi finanziaria e viene utilizzato direttamente nella Dashboard 'Refund Amount Discrepancy Analysis' e nel KPI 'Refund Amount Accuracy Rate'. Analizzare questi dati aiuta a comprendere l'impatto finanziario dei resi e gli eventuali adeguamenti apportati durante il processo. Perché è importante Rappresenta l'impatto finanziario effettivo del reso ed è fondamentale per calcolare l'accuratezza dei rimborsi e comprendere i risultati finanziari. Dove reperirlo Questo valore si trova nei dettagli della transazione della nota di credito registrata. È correlato alle tabelle 'CustTrans' e 'CustInvoiceJour' relative alla nota di credito. Esempi 99.99135.000.00 | |||
| Ora di fine EndTime | Il timestamp che indica quando è stata completata una specifica attività. | ||
| Descrizione End Time rappresenta il timestamp di completamento di un'attività. Mentre StartTime indica l'inizio, EndTime ne indica la conclusione, consentendo di calcolare il tempo di elaborazione di quello specifico task. Questo attributo è fondamentale per un'analisi dettagliata delle prestazioni, soprattutto per i task con una durata misurabile, come 'Item Inspection'. Confrontando StartTime ed EndTime, gli analisti possono misurare con precisione il tempo di elaborazione effettivo dei task e distinguerlo dal tempo di attesa tra un task e l'altro. Ciò aiuta a individuare le inefficienze all'interno delle singole attività, non soltanto tra attività consecutive. Perché è importante Consente di calcolare il tempo di elaborazione effettivo delle singole attività, aiutando a distinguere il tempo di attesa dal tempo di lavoro reale. Dove reperirlo Spesso deve essere derivato. Ad esempio, può corrispondere al 'modifiedDateTime' della modifica di stato che conclude un'attività oppure allo StartTime dell'attività successiva. Esempi 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
| Sistema di origine SourceSystem | Il sistema informativo dal quale sono stati estratti i dati degli eventi. | ||
| Descrizione Questo attributo identifica il sistema informativo di origine da cui provengono i dati. In questo contesto, sarà principalmente 'Microsoft Dynamics 365'. Nelle organizzazioni più grandi, un processo può estendersi su più sistemi. Specificare il sistema di origine per ogni evento è fondamentale per la governance dei dati, la risoluzione dei problemi di estrazione e la comprensione dell'ecosistema tecnologico del processo. Conferma l'origine dei dati analizzati. Perché è importante Fornisce un contesto essenziale sull'origine dei dati, indispensabile per la governance e la convalida dei dati e per comprendere l'ecosistema dei sistemi che supportano il processo. Dove reperirlo In genere è un valore statico aggiunto durante il processo di estrazione, trasformazione e caricamento (ETL) dei dati per indicare l'origine del dataset. Esempi Microsoft Dynamics 365 F&OD365-PROD | |||
| Stato del Return Order ReturnOrderStatus | Lo stato complessivo del Return Order al momento dell'evento. | ||
| Descrizione Questo attributo indica lo stato corrente dell'intestazione del Return Order, come 'Aperto', 'Fatturato' o 'Annullato'. Fornisce una visione di alto livello della posizione del caso nel suo ciclo di vita. Mentre le attività descrivono le singole fasi del processo, lo stato complessivo è utile per filtrare e segmentare i casi. Ad esempio, un analista potrebbe voler concentrarsi solo sui casi 'Aperti' per comprendere il carico di lavoro corrente oppure analizzare il flusso di processo dei casi che alla fine vengono 'Annullati'. Perché è importante Fornisce una sintesi di alto livello dello stato del caso, utile per filtrare i casi e comprendere esiti come gli annullamenti. Dove reperirlo Queste informazioni si trovano nel campo 'SalesStatus' o 'DocumentStatus' di 'SalesTable'. Esempi Ordine apertoConsegnatoFatturatoAnnullato | |||
| Stato SLA SlaStatus | Indica se il caso è stato risolto entro l'obiettivo previsto dall'Accordo sul livello di servizio. | ||
| Descrizione Questo attributo calcolato fornisce un semplice stato di Conformità allo SLA, generalmente 'In orario' o 'In ritardo'. Viene determinato confrontando il timestamp dell'attività finale, ad esempio 'Return Order Closed', con 'RefundSlaTargetDate'. Questo attributo semplifica la reportistica delle prestazioni in Dashboard come 'Refund Resolution SLA Performance'. Invece di richiedere agli utenti di confrontare le date, fornisce uno stato diretto e facilmente comprensibile. Consente di filtrare e aggregare rapidamente i dati per calcolare il 'Resolution SLA Adherence Rate' complessivo. Perché è importante Fornisce un indicatore immediato della Conformità allo SLA, semplificando il filtraggio dei casi in ritardo e l'analisi delle cause principali dei ritardi. Dove reperirlo È un attributo derivato, calcolato confrontando il timestamp dell'attività di risoluzione finale con l'attributo 'RefundSlaTargetDate'. Esempi Nei tempi previstiIn ritardo | |||
| Tipo di reso ReturnType | Classifica il reso in base all'esito previsto, ad esempio Rimborso o Sostituzione. | ||
| Descrizione Questo attributo classifica il caso di reso in base al tipo di risoluzione richiesto dal cliente o offerto dall'azienda. I tipi più comuni includono un 'Rimborso' monetario, la sostituzione con un articolo di 'Sostituzione' oppure una 'Riparazione'. Questa classificazione è utile per analizzare i diversi percorsi di processo. Il processo di emissione di un rimborso è significativamente diverso da quello di spedizione di un articolo sostitutivo. Segmentare i dati per Return Type consente un'analisi più accurata dei tempi di ciclo e dei colli di bottiglia specifici di ciascun percorso di risoluzione. Perché è importante Consente di segmentare l'analisi in base all'esito previsto, poiché i processi di rimborso e sostituzione presentano fasi e tempi di ciclo differenti. Dove reperirlo Potrebbe essere un campo personalizzato nell'intestazione del Return Order oppure essere derivato dal codice di disposizione o da transazioni successive, come la creazione di un sales order sostitutivo. Esempi RimborsoSostituzioneCredito del negozio | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Il timestamp che indica l'ultima volta in cui sono stati aggiornati i dati del processo. | ||
| Descrizione Questo attributo registra la data e l'ora dell'ultima estrazione dei dati dal sistema di origine e del loro aggiornamento nello strumento di Process Mining. Fornisce un riferimento per valutare l'aggiornamento dei dati analizzati. Conoscere l'ora dell'ultimo aggiornamento dei dati è importante per comprenderne la tempestività. Aiuta gli utenti a interpretare correttamente Dashboard e KPI, indicando se si stanno esaminando dati in tempo reale o un'istantanea relativa a un momento specifico. È un elemento fondamentale per il monitoraggio operativo. Perché è importante Indica l'aggiornamento dei dati, consentendo agli analisti di sapere quanto siano attuali le informazioni ricavate dal processo. Dove reperirlo È un attributo di metadati generato e memorizzato durante la pipeline di acquisizione dei dati, che rappresenta in genere il timestamp del completamento del job ETL. Esempi 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
Attività della gestione dei resi e dei rimborsi
| Attività | Descrizione | ||
|---|---|---|---|
| Articolo ricevuto | Segna la ricezione fisica dell'articolo restituito presso il magazzino o il centro resi designato. Viene acquisito quando il giornale di arrivo associato all'ordine di reso viene registrato. | ||
| Perché è importante Si tratta di una milestone fondamentale, che trasferisce il processo dall'azione del cliente all'elaborazione interna. Costituisce il punto di partenza per calcolare tutti i tempi di gestione interna, come quelli relativi all'ispezione e alla disposizione. Dove reperirlo Il timestamp di registrazione del WMS Journal o dell'Item Arrival Journal associato alla riga del ReturnOrder. Questo aggiorna le transazioni di inventario allo stato 'Registered' o 'Received'. Acquisizione Evento di registrazione dell'Item Arrival Journal collegato alla riga dell'ordine di reso. Tipo di evento explicit | |||
| Codice di disposizione applicato | Questa attività rappresenta il completamento dell'ispezione e la decisione su come gestire l'articolo restituito. Alla riga del reso viene assegnato un codice di disposizione, come 'Credit', 'Scrap' o 'Replace'. | ||
| Perché è importante Si tratta di un punto decisionale fondamentale, che determina il percorso successivo del processo, ovvero rimborso, sostituzione o rifiuto. I ritardi in questa fase possono incidere significativamente sul tempo complessivo di risoluzione. Dove reperirlo Questo evento viene acquisito quando il campo DispositionCode viene valorizzato nella transazione di inventario della riga dell'ordine di reso o nel giornale correlato. Acquisizione Evento di aggiornamento in cui viene impostato un DispositionCode per la riga dell'ordine di reso. Tipo di evento explicit | |||
| Nota di credito registrata | La nota di credito viene registrata ufficialmente nei libri contabili, rendendo il credito disponibile al cliente. Questo segna il completamento dell'azione di rimborso dal punto di vista dell'azienda. | ||
| Perché è importante Si tratta di una milestone finanziaria fondamentale, che conferma l'elaborazione del rimborso nel sistema. Spesso è un'attività chiave per misurare la Conformità agli SLA dei rimborsi. Dove reperirlo Il timestamp di registrazione del giornale delle fatture relativo all'ordine di reso, che finalizza la nota di credito. Lo stato dell'ordine di reso passa a 'Invoiced'. Acquisizione Registrazione del giornale delle fatture dell'ordine di reso. Tipo di evento explicit | |||
| Ordine di reso creato | Questa attività segna l'avvio del processo di reso, durante il quale nel sistema viene creato un Return Material Authorization (RMA) o un Return Order. Si tratta di un evento esplicito acquisito al momento della creazione di un nuovo record ReturnOrder in Dynamics 365. | ||
| Perché è importante Questo è l'evento iniziale principale dell'intero processo di reso. Analizzare il tempo che intercorre tra questa attività e le altre consente di misurare il lead time complessivo del processo e di individuare i colli di bottiglia nelle fasi iniziali. Dove reperirlo Questo evento viene acquisito dal timestamp di creazione dell'intestazione del ReturnOrder. In genere si trova in SalesTable, dove SalesType è 'Returned Order'. Acquisizione Evento di creazione del record SalesTable con SalesType = 'Returned Order'. Tipo di evento explicit | |||
| Return Order chiuso | Il Return Order ha raggiunto lo stato finale: tutte le transazioni fisiche e finanziarie sono state completate. Ciò avviene generalmente dopo la registrazione della nota di credito o la spedizione dell'articolo sostitutivo. | ||
| Perché è importante Questo è l'evento finale principale di un processo di reso completato con successo. La durata dalla creazione fino a questo momento rappresenta il tempo di ciclo complessivo del caso. Dove reperirlo Dedotto dalla modifica del campo di stato del ReturnOrder al valore terminale, ad esempio 'Fatturato' o 'Chiuso'. Ciò indica che non sono previste ulteriori elaborazioni. Acquisizione Modifica del campo SalesTable.Status o SalesTable.DocumentStatus a uno stato finale. Tipo di evento inferred | |||
| Articolo sostitutivo spedito | Il packing slip dell'articolo sostitutivo viene registrato, a indicare che l'articolo è stato spedito al cliente. Questo segna il completamento del processo di evasione della sostituzione. | ||
| Perché è importante Si tratta di una tappa fondamentale nella variante di sostituzione, che rappresenta l'adempimento dell'obbligo dell'azienda nei confronti del cliente. È essenziale per monitorare i tempi di ciclo delle sostituzioni. Dove reperirlo La data di registrazione del giornale del packing slip relativo al sales order sostitutivo. Questo aggiorna lo stato dell'ordine a 'Consegnato'. Acquisizione Registrazione del packing slip relativo al sales order sostitutivo. Tipo di evento explicit | |||
| Giornale di arrivo creato | Questa attività indica che il magazzino si aspetta l'arrivo dell'articolo restituito. Consiste nella creazione di un giornale di arrivo, che prepara il sistema alla ricezione fisica della merce. | ||
| Perché è importante Questo passaggio separa la preparazione logistica dalla ricezione fisica effettiva. Aiuta ad analizzare la preparazione del magazzino e a pianificare l'arrivo dei resi. Dove reperirlo Creazione di un record in WMSJournalTable con JournalType 'Arrival'. Il giornale è collegato alla riga dell'ordine di reso. Acquisizione Timestamp di creazione del record WMSJournalTable relativo al reso. Tipo di evento explicit | |||
| Nota di credito creata | Viene generata una nota di credito sulla base di una disposizione 'Credit', autorizzando il rimborso al cliente. Questo rappresenta l'avvio formale della fase di regolazione finanziaria del processo. | ||
| Perché è importante Questa attività segna l'approvazione del rimborso finanziario. Il tempo che intercorre tra la disposizione e la creazione della nota di credito evidenzia i ritardi amministrativi nell'avvio del rimborso. Dove reperirlo Può essere dedotto dalla creazione di un nuovo record SalesTable con valore negativo, collegato all'ordine di reso originale, oppure dall'esecuzione del batch job 'Create credit note'. Acquisizione Creazione di una nota di credito, spesso mediante la registrazione della fattura dell'ordine di reso. Tipo di evento explicit | |||
| Ordine di reso confermato | Rappresenta la conferma formale dell'ordine di reso nel sistema e spesso attiva la logica delle fasi successive. In genere viene acquisito come azione esplicita o modifica dello stato nell'intestazione del ReturnOrder. | ||
| Perché è importante La conferma è un passaggio fondamentale prima dell'avvio della logistica. I ritardi tra la creazione e la conferma possono indicare arretrati amministrativi o di sistema. Dove reperirlo Può essere identificato dalla registrazione del giornale 'Confirmation' per l'ordine di reso o da una modifica del campo DocumentStatus in SalesTable. Acquisizione Esecuzione della funzione 'Confirm sales order' per l'ordine di reso. Tipo di evento explicit | |||
| Ordine di sostituzione creato | Viene creato un nuovo ordine di vendita per inviare al cliente un articolo sostitutivo. Questa attività si verifica quando l'azione di disposizione è 'Replace and Credit' o 'Replace and Scrap'. | ||
| Perché è importante Questa attività avvia la variante del processo di sostituzione. Monitorare questo percorso separatamente da quello del rimborso è essenziale per comprendere la complessità e i costi delle sostituzioni. Dove reperirlo Creazione di un nuovo record SalesTable per l'articolo sostitutivo, spesso generato automaticamente e collegato all'ordine di reso originale. Acquisizione Creazione di un nuovo Sales Order collegato al Return Order tramite l'azione di disposizione. Tipo di evento explicit | |||
| Quality Order generato | Viene creato un Quality Order formale, a indicare che l'articolo restituito deve essere sottoposto a un processo di ispezione strutturato. Ciò è comune nei casi in cui i resi richiedano test dettagliati o verifiche rispetto agli standard di qualità. | ||
| Perché è importante Questa attività segna l'inizio di un processo di ispezione formale. Monitorare il tempo a partire da questo punto aiuta a misurare l'efficienza e la durata del Workflow di controllo qualità. Dove reperirlo Timestamp di creazione di un record in InventQualityOrderTable collegato all'ordine di reso. Acquisizione Creazione di un record InventQualityOrderTable. Tipo di evento explicit | |||
| Return Order annullato | Il Return Order viene annullato prima del completamento. Ciò può avvenire su richiesta del cliente oppure se l'articolo non è mai stato restituito. | ||
| Perché è importante Rappresenta una conclusione alternativa e non riuscita del processo. Analizzare le cause degli annullamenti dei resi può fornire indicazioni sul comportamento dei clienti o sulle inefficienze del processo. Dove reperirlo Dedotto dalla modifica del campo di stato del ReturnOrder a 'Annullato'. Si tratta di uno stato terminale distinto da quello di un ordine chiuso correttamente. Acquisizione Modifica del campo SalesTable.Status a 'Annullato'. Tipo di evento inferred | |||
Guide all'estrazione
Passaggi
- Prerequisito: registri un'applicazione in Azure Active Directory. Prima di collegarsi all'API di Dynamics 365, deve registrare un'applicazione nel tenant Azure AD. Conceda a questa applicazione le autorizzazioni delegate per accedere a Dynamics 365 Finance & Operations, ad esempio
Financials.ReadWrite.Allo un'autorizzazione personalizzata. - Configuri l'ID dell'applicazione in Dynamics 365. In Dynamics 365, acceda a System administration > Setup > Azure Active Directory applications. Aggiunga l'ID applicazione (client) della registrazione dell'app Azure AD e lo associ a un account utente dotato dei ruoli di sicurezza necessari per leggere le entità dati richieste.
- Ottenga un token di accesso OAuth 2.0. Scriva uno script, ad esempio in PowerShell o Python, per autenticarsi sull'endpoint della piattaforma Microsoft Identity. Utilizzi le credenziali dell'applicazione (ID client e segreto) per richiedere un token di accesso per l'URL della risorsa Dynamics 365.
- Individui l'URL dell'ambiente Dynamics 365. Individui l'URL di base del Suo ambiente Dynamics 365. L'endpoint della Web API avrà in genere il seguente formato:
https://[YourD365FinanceAndOpsURL].dynamics.com/data. - Costruisca ed esegua le richieste API OData. Per ciascuna delle 12 attività richieste, costruisca un URL specifico per una richiesta OData GET. Utilizzi
$selectper recuperare solo le colonne necessarie e$filterper specificare l'intervallo di date e le eventuali condizioni sullo stato. Il token di autenticazione ottenuto al passaggio 3 deve essere incluso come token Bearer nell'header di autorizzazione di ogni richiesta. - Sviluppi uno script di estrazione. Crei uno script che scorra l'elenco delle richieste OData. Lo script deve gestire l'autenticazione, eseguire ogni richiesta GET e memorizzare i dati JSON risultanti. Presti attenzione ai limiti dell'API e introduca, se necessario, pause tra le richieste.
- Gestisca la paginazione dell'API. Dynamics 365 suddivide in pagine i risultati di grandi dimensioni. Lo script deve verificare la presenza della proprietà
@odata.nextLinknella risposta. Se presente, dovrà inviare una richiesta successiva a quell'URL per recuperare la pagina seguente, continuando finché non viene più fornito alcunnextLink. - Trasformi e unisca i dati. Elabori la risposta JSON di ciascuna delle 12 chiamate API. Per ogni attività, crei un record standardizzato contenente
ReturnCaseId,ActivityName,EventTimee gli altri Attributi. Ad esempio, per l'evento 'Return Order Created', associReturnOrderNumberaReturnCaseId, impostiActivityNamesu 'Return Order Created' e associcreatedDateTimeaEventTime. Combini i record trasformati di tutte le chiamate in un unico elenco o una singola tabella. - Pulisca e standardizzi i timestamp. Si assicuri che tutti i valori
EventTimeutilizzino un formato coerente, preferibilmente UTC, ad esempioYYYY-MM-DDTHH:MM:SSZ. Gestisca secondo necessità i record con timestamp mancanti o non validi. - Esporti l'Event Log finale. Una volta raccolti tutti i dati e trasformati in un unico dataset, lo esporti in un file CSV. Si assicuri che le intestazioni delle colonne corrispondano ai requisiti di ProcessMind:
ReturnCaseId,ActivityName,EventTime,ResponsibleUser,DispositionCodee così via. Il file sarà quindi pronto per il caricamento.
Configurazione
- URL dell'endpoint API: l'URL di base della Sua istanza Dynamics 365 Finance & Operations, nel formato
https://[YourEnvironmentName].dynamics.com/data. - Applicazione Azure AD: è necessario registrare un'applicazione in Azure AD con un ID client e un segreto. L'applicazione deve disporre delle autorizzazioni API necessarie per accedere alle entità dati di Dynamics 365.
- Filtro per intervallo di date: è fondamentale applicare un filtro per intervallo di date in ogni chiamata API, utilizzando il parametro OData
$filtersu un campo data pertinente, comecreatedDateTimeomodifiedDateTime. Per iniziare, è consigliabile utilizzare gli ultimi 3-6 mesi di dati, così da mantenere l'estrazione gestibile. - Filtro per società: per estrarre i dati di una specifica entità giuridica, includa il parametro di query
cross-company=true, quindi utilizzi$filtersul campodataAreaId. Ad esempio:?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]'. - Preferenza per la paginazione: utilizzi l'header
Prefer: odata.maxpagesize=[value]nelle richieste per controllare il numero di record restituiti per pagina. Un valore compreso tra 1000 e 5000 è comune e aiuta a prevenire i timeout dell'API per le entità di grandi dimensioni. - Limitazione delle richieste API: tenga conto dei limiti di protezione del servizio API di Dynamics 365. Lo script di estrazione dovrebbe gestire le risposte
429 (Too Many Requests), in genere implementando un backoff esponenziale oppure un semplice meccanismo di pausa e nuovo tentativo.
a Query di esempio graphql
/*
This is a conceptual guide representing multiple, distinct OData API calls.
You will need a script (e.g., Python, PowerShell) to execute these calls sequentially,
authenticate with a bearer token, handle pagination, and union the results into a single file.
Replace [YourD365URL], [StartDate], [EndDate], and [YourCompanyCode] with your specific values.
*/
// Base URL for all requests
const string BaseUrl = "https://[YourD365URL].dynamics.com/data";
const string CompanyFilter = "?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]' and ";
const string DateFilterCreated = "createdDateTime ge [StartDate]T00:00:00Z and createdDateTime le [EndDate]T23:59:59Z";
const string DateFilterModified = "modifiedDateTime ge [StartDate]T00:00:00Z and modifiedDateTime le [EndDate]T23:59:59Z";
// 1. Return Order Created
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}{DateFilterCreated}&$select=ReturnOrderNumber,createdDateTime,createdby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser, ReturnReasonCodeId -> ReturnReasonCode
// 2. Return Order Confirmed
// This often updates the header status. We look for a modification time on confirmed orders.
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Confirmed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Confirmed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 3. Arrival Journal Created
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}{DateFilterCreated}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,createdDateTime,createdby
// Note: This requires post-processing to link JournalNumber to a ReturnCaseId via InventTransactionId.
// Mapping: Link via InventTrans -> ReturnCaseId, 'Arrival Journal Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 4. Item Received (Arrival Journal Posted)
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}JournalPosted eq 'Yes' and {DateFilterModified}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,modifiedDateTime,modifiedby
// Mapping: Link via InventTrans -> ReturnCaseId, 'Item Received' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 5. Quality Order Generated
GET {BaseUrl}/InventQualityOrders{CompanyFilter}{DateFilterCreated}&$select=QualityOrderId,InventTransId,createdDateTime,CreatedByUserId,ItemId
// Mapping: Link via InventTransId -> ReturnCaseId, 'Quality Order Generated' -> ActivityName, createdDateTime -> EventTime, CreatedByUserId -> ResponsibleUser, ItemId -> ProductId
// 6. Disposition Code Applied
// This is a status change on the return line.
GET {BaseUrl}/ReturnOrderLines{CompanyFilter}ReturnDispositionCodeId ne '' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnDispositionCodeId,ItemId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Disposition Code Applied' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser, ReturnDispositionCodeId -> DispositionCode, ItemId -> ProductId
// 7. Credit Note Created
// Look for sales orders with type 'Returned Order' that are not yet invoiced.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderProcessingStatus eq 'Open' and SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 8. Credit Note Posted
// Look for posted invoice journals linked to a return order.
GET {BaseUrl}/SalesInvoiceJournalHeaders{CompanyFilter}SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,InvoiceDate,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Posted' -> ActivityName, InvoiceDate -> EventTime, createdby -> ResponsibleUser
// 9. Replacement Order Created
// Disposition code on the return line triggers a replacement order.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderOriginType eq 'ReturnOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby,ReturnOrderNumber
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Replacement Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 10. Replacement Item Shipped
// Check for posted packing slips related to the replacement sales order.
GET {BaseUrl}/SalesPackingSlipJournals{CompanyFilter}{DateFilterCreated}&$select=SalesOrderNumber,DeliveryDate,createdby
// Note: This requires linking SalesOrderNumber back to the original ReturnOrderNumber for the ReturnCaseId.
// Mapping: Link SalesOrderNumber -> ReturnCaseId, 'Replacement Item Shipped' -> ActivityName, DeliveryDate -> EventTime, createdby -> ResponsibleUser
// 11. Return Order Closed
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Closed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Closed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 12. Return Order Cancelled
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Canceled' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Cancelled' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser Passaggi
- Abiliti l'endpoint TDS: si assicuri che l'endpoint Tabular Data Stream (TDS) sia abilitato per il Suo ambiente Dynamics 365 Dataverse. Un amministratore di sistema può abilitarlo nel centro di amministrazione Power Platform, in Environment > Settings > Features.
- Individui l'URL dell'ambiente: trovi l'URL del Suo ambiente. In genere ha il formato
yourorg.crm.dynamics.com. Il nome del server dell'endpoint TDS sarà questo URL con la porta 5558, ad esempioyourorg.crm.dynamics.com,5558. - Si colleghi con un client SQL: utilizzi un client SQL che supporti TDS, come SQL Server Management Studio (SSMS) o Azure Data Studio.
- Esegua l'autenticazione: si colleghi al server utilizzando il Suo account Azure Active Directory, dotato delle autorizzazioni appropriate, in genere System Administrator o System Customizer, nell'ambiente Dataverse.
- Prepari la query: copi la query SQL completa fornita nella sezione
querydi questo documento in una nuova finestra del Suo client SQL. - Imposti i parametri: individui i segnaposto nella query. Sostituisca
'{StartDate}'e'{EndDate}'con l'intervallo di date desiderato per l'estrazione, ad esempio'2023-01-01'e'2023-12-31'. Aggiorni inoltre gli eventuali valori segnaposto relativi ai codici di stato o ai codici di esito in base alla configurazione specifica di Dynamics 365. - Esegua la query: esegua la query modificata sul database Dataverse. Il tempo di esecuzione varierà in base al volume dei dati e all'intervallo di date selezionato.
- Esamini i risultati: al termine della query, verifichi che il dataset restituito contenga le colonne previste:
ReturnCaseId,ActivityName,EventTimee gli Attributi consigliati. - Esporti l'Event Log: esporti i risultati della query in un file CSV. La maggior parte dei client SQL dispone di una funzione integrata per salvare direttamente i risultati in un file. Si assicuri di salvare il file con codifica UTF-8.
- Carichi il file in ProcessMind: il file CSV esportato è ora pronto per essere caricato in ProcessMind come nuovo Event Log per l'analisi di Process Mining.
Configurazione
- Prerequisiti: deve disporre di un account utente con almeno l'accesso in lettura alle tabelle Dataverse pertinenti, ad esempio SalesTable, SalesLine e CustInvoiceJour. Le autorizzazioni sono generalmente gestite tramite ruoli di sicurezza come System Administrator oppure un ruolo personalizzato con autorizzazioni sufficienti sulle tabelle.
- Endpoint TDS: l'endpoint TDS di Dataverse deve essere abilitato per l'ambiente. Questa funzionalità consente di eseguire query SQL dirette e in sola lettura sul database Dataverse.
- Intervallo di date: la query include i segnaposto
'{StartDate}'e'{EndDate}'. Per l'analisi iniziale, si consiglia un intervallo di 3-6 mesi, così da ottenere un dataset rappresentativo senza causare problemi di prestazioni. - Filtro per società: la query, così com'è scritta, verrà eseguita su tutte le entità giuridiche a cui l'utente ha accesso. Per analizzare una singola società, rimuova il commento e aggiunga una clausola
WHEREche filtri il campoDATAAREAIDin ogni parte dell'istruzioneUNION ALL, ad esempioAND st.DATAAREAID = '[YourCompanyID]'. - Segnaposto per la logica personalizzata: la query contiene segnaposto come
[YourReplaceCode1]per i codici di esito e note sul collegamento degli ordini sostitutivi. Questi elementi devono essere configurati in base al processo aziendale specifico e alla configurazione di Dynamics 365. - Prestazioni: le query dirette sull'endpoint TDS possono essere lente per dataset di grandi dimensioni. La connessione è ottimizzata per le query analitiche, ma join complesse su milioni di righe possono causare un timeout. Si consiglia di applicare filtri temporali rigorosi.
a Query di esempio sql
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Created' AS ActivityName,
st.CREATEDDATETIME AS EventTime,
st.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Confirmed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.DOCUMENTSTATUS = 1 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Arrival Journal Created' AS ActivityName,
wjt.CREATEDDATETIME AS EventTime,
wjt.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Item Received' AS ActivityName,
wjt.POSTEDDATETIME AS EventTime,
wjt.POSTEDUSERID AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND wjt.POSTEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Quality Order Generated' AS ActivityName,
iqot.CREATEDDATETIME AS EventTime,
iqot.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Disposition Code Applied' AS ActivityName,
iqot.VALIDATEDDATETIME AS EventTime,
iqot.VALIDATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND iqot.VALIDATEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Created' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Posted' AS ActivityName,
cij.CREATEDDATETIME AS EventTime,
cij.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN CUSTINVOICEJOUR cij ON st.SALESID = cij.SALESID AND st.DATAAREAID = cij.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Order Created' AS ActivityName,
replacement_so.CREATEDDATETIME AS EventTime,
replacement_so.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
replacement_sl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN SALESLINE replacement_sl ON replacement_so.SALESID = replacement_sl.SALESID AND replacement_so.DATAAREAID = replacement_sl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Item Shipped' AS ActivityName,
cpsj.CREATEDDATETIME AS EventTime,
cpsj.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
cpsl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN CUSTPACKINGSLIPJOUR cpsj ON replacement_so.SALESID = cpsj.SALESID AND replacement_so.DATAAREAID = cpsj.DATAAREAID
JOIN CUSTPACKINGSLIPTRANS cpsl ON cpsj.PACKINGSLIPID = cpsl.PACKINGSLIPID AND cpsj.SALESID = cpsl.SALESID AND cpsj.DATAAREAID = cpsl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Closed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Cancelled' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'; È pronto per iniziare?
Utilizzi questo Template per semplificare la raccolta dei dati e iniziare a individuare gli insight necessari per migliorare il processo di resi e rimborsi. Inizi oggi il percorso verso elaborazioni più rapide e una maggiore soddisfazione dei clienti.
Elimini i ritardi nella gestione di resi e rimborsi: ottimizzi oggi il Suo processo
Riduca del 30% i tempi di ciclo e aumenti la soddisfazione dei clienti.
Non è richiesta alcuna carta di credito. La configurazione richiede pochi minuti.