Il Suo Template Dati Contabilità Clienti
Il Suo Template Dati Contabilità Clienti
- Set completo di attributi raccomandati per l'analisi AR
- Attività e milestone chiave del processo da monitorare
- Guida all'estrazione specifica del sistema per Oracle Fusion Financials
Attributi dei Crediti Commerciali
| Nome | Descrizione | ||
|---|---|---|---|
| Nome attività ActivityName | Lo specifico event o l'azione eseguita nel processo di contabilità clienti. | ||
| Descrizione Questo attributo descrive il passaggio intrapreso nel processo, come la creazione di una fattura, la registrazione di un pagamento o l'apertura di una contestazione. Definisce il flusso della mappa di processo e consente la visualizzazione della sequenza degli event. Gli analisti utilizzano questo campo per identificare varianti di processo, loop e bottleneck. È essenziale per determinare l'aderenza alle procedure operative standard e per calcolare la frequenza di event specifici come rilavorazioni o interventi manuali. Perché è importante Necessario per definire il process flow e visualizzare la sequenza degli event. Dove trovare Derivato da tabelle di cronologia delle transazioni (es. AR_PAYMENT_SCHEDULES_ALL, RA_CUST_TRX_LINE_GL_DIST_ALL). Esempi Fattura CreataSollecito di Pagamento InviatoPagamento Parziale RegistratoContestazione Aperta | |||
| Numero fattura InvoiceNumber | L'identificatore unico assegnato alla transazione della fattura in Oracle Fusion. | ||
| Descrizione Questo attributo serve come chiave unica per identificare gli obblighi finanziari all'interno del modulo Contabilità Clienti. Collega tutte le activity successive, come aggiustamenti, contestazioni e pagamenti, alla transazione di vendita originale. Nell'analisi di process mining, questo attributo funziona come Case ID. Consente agli analisti di tracciare il ciclo di vita end-to-end di un credito dal momento in cui viene creato fino a quando non è completamente liquidato o svalutato, facilitando il calcolo dei tempi di ciclo e delle varianti di processo. Perché è importante È l'unità fondamentale di analisi per tracciare il ciclo "credit-to-cash". Dove trovare Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.TRX_NUMBER Esempi INV-2023-00110056789AR-99887755002211 | |||
| Timestamp Evento EventStartDateTime | La data e l'ora specifiche in cui si è verificata un'attività. | ||
| Descrizione Questo attributo registra il momento esatto in cui un'activity ha avuto luogo all'interno del sistema. Viene utilizzato per ordinare gli event cronologicamente ed è la base per tutti i calcoli basati sul tempo nel process mining. Analizzando i timestamps, l'azienda può calcolare i tempi di ciclo tra le activity, come la durata tra la creazione e l'invio della fattura. È fondamentale per misurare i KPI come i Days Sales Outstanding e identificare schemi temporali nel comportamento di pagamento. Perché è importante Fondamentale per il calcolo di durata, lead time e tempi di ciclo. Dove trovare Oracle Fusion Financials: Colonne CREATION_DATE o LAST_UPDATE_DATE tra le varie tabelle di transazione. Esempi 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Sistema di Origine SourceSystem | Il sistema di riferimento da cui sono originati i dati. | ||
| Descrizione Questo attributo identifica l'ambiente software da cui sono stati estratti i dati di processo. In questo contesto, conferma che i dati provengono dall'ambiente Oracle Fusion Financials. Sebbene spesso sia un valore statico per un'estrazione da un singolo sistema, diventa cruciale quando si fondono dati da più istanze ERP o quando si integrano strumenti di riscossione di terze parti. Assicura la data lineage e la tracciabilità in landscape di processo multisistema. Perché è importante Assicura la lineage dei dati e distingue tra diverse istanze ERP. Dove trovare Hardcoded durante l'estrazione o configurato nella data pipeline. Esempi Oracle Fusion FinancialsOracle Cloud ERP - USOracle Cloud ERP - EMEA | |||
| Ultimo `Data Update` LastDataUpdate | Il timestamp dell'ultima rinfrescata dei dati nello strumento di mining. | ||
| Descrizione Questo attributo indica quando il set di dati è stato sincronizzato l'ultima volta con il sistema sorgente Oracle. Aiuta gli utenti a comprendere la freschezza dell'analisi e se gli insight riflettono lo stato attuale delle operazioni. Monitorare questo campo è importante per garantire che i dashboards mostrino informazioni aggiornate, specialmente per il monitoraggio operativo di contestazioni aperte o liquidità non applicata. Perché è importante Fornisce contesto sulla freschezza e l'affidabilità dei dati. Dove trovare Ora di sistema al momento dell'estrazione. Esempi 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| Data di Scadenza DueDate | La data entro cui si prevede di ricevere il pagamento. | ||
| Descrizione Questo attributo è la scadenza per il pagamento calcolata in base alla Data Fattura e ai Termini di Pagamento. Serve come punto di riferimento per determinare se un pagamento è in ritardo. È utilizzato nel KPI 'Variazione Tempistica Solleciti di Riscossione' per misurare quanto proattivamente il team agisce rispetto alla scadenza. È anche la soglia per classificare i crediti come correnti o scaduti nei report di invecchiamento. Perché è importante Il punto di riferimento primario per determinare la morosità e le prestazioni di puntualità. Dove trovare Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Esempi 2023-11-302023-12-152024-01-01 | |||
| È Automatizzato IsAutomated | Flag che indica se l'attività è stata eseguita senza intervento umano. | ||
| Descrizione Questo attributo booleano determina se un'activity è stata eseguita da un processo di sistema (ad es. AutoInvoice, AutoLockbox) o da un utente umano. È il driver primario per il KPI 'Tasso di Automazione dell'Applicazione della Cassa'. Monitorando il rapporto tra activity automatizzate e manuali nel tempo, l'organizzazione può convalidare il successo delle iniziative di trasformazione digitale e identificare specifici passaggi di processo che rimangono ostinatamente manuali. Perché è importante Metrica primaria per la trasformazione digitale e la misurazione dell'efficienza. Dove trovare Logica calcolata basata su UserName (es. se User == 'BATCH_USER' allora vero). Esempi truefalse | |||
| Importo Fattura InvoiceAmount | Il valore monetario totale della fattura. | ||
| Descrizione Questo attributo rappresenta l'importo originale dovuto sulla fattura. Serve come fattore di ponderazione primario per molte analisi, consentendo all'azienda di dare priorità alle transazioni di alto valore rispetto al volume di basso valore. Nel contesto della 'Visualizzazione Crediti Non Applicati e Perdite', questo campo aiuta a quantificare l'impatto finanziario degli elementi irrisolti. Viene anche utilizzato per calcolare i Days Sales Outstanding medi ponderati, fornendo una visione più finanziario-centrica dell'efficienza del processo. Perché è importante Fornisce peso finanziario all'analisi e supporta la prioritizzazione basata sul valore. Dove trovare Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Esempi 1500.00250.5010000.00 | |||
| Nome cliente CustomerName | Il nome dell'entità fatturata nella transazione. | ||
| Descrizione Questo attributo identifica il cliente associato alla fattura. È fondamentale per analizzare i comportamenti di pagamento, le frequenze delle contestazioni e l'efficacia della riscossione a livello di cliente. Gli analisti utilizzano questo campo per individuare clienti specifici che pagano frequentemente in ritardo o sollevano contestazioni. Questo insight supporta il dashboard 'Analisi del Comportamento di Pagamento del Cliente' e aiuta a personalizzare i termini di credito e le strategie di riscossione in base ai profili dei singoli clienti. Perché è importante Essenziale per l'analisi incentrata sul cliente e la profilazione del rischio. Dove trovare Oracle Fusion Financials: HZ_PARTIES.PARTY_NAME collegato tramite BILL_TO_CUSTOMER_ID. Esempi Acme CorpGlobex CorporationSoylent Corp | |||
| Nome Esattore CollectorName | Il nome dell'agente di riscossione o della risorsa assegnata alla fattura. | ||
| Descrizione Questo attributo identifica il dipendente o membro del team specifico responsabile della riscossione del pagamento della fattura. È la dimensione chiave per il dashboard 'Produttività Agente di Riscossione'. I dati di questo campo consentono all'organizzazione di misurare la produttività per agente, identificare le esigenze di formazione e bilanciare i carichi di lavoro. Favorisce la responsabilità e aiuta a standardizzare gli sforzi di riscossione in tutto il team finanziario. Perché è importante Chiave per l'analisi delle performance delle risorse e il bilanciamento del carico di lavoro. Dove trovare Oracle Fusion Financials: AR_COLLECTORS.NAME associato al Profilo Cliente. Esempi John SmithTeam Riscossioni AJane Doe | |||
| Nome Utente UserName | L'utente di sistema che ha eseguito l'activity. | ||
| Descrizione Questo attributo registra l'ID di login o il nome della persona che ha eseguito la specifica activity (ad es. registrato la fattura, abbinato l'estratto conto bancario). Si mappa al campo generico 'User'. Questi dati sono vitali per l'auditing di conformità e per il dashboard 'Produttività Agente di Riscossione'. Consente la separazione delle azioni guidate dalla macchina (spesso eseguite da un utente 'System') dalle azioni umane, supportando l'analisi dell'automazione. Perché è importante Consente il tracciamento delle performance a livello utente e l'analisi della segregazione delle funzioni. Dove trovare Oracle Fusion Financials: Colonne CREATED_BY o LAST_UPDATED_BY unite alle tabelle utente. Esempi sysadminjsmithfinance_batch_job | |||
| Segmento cliente CustomerSegment | La classificazione del cliente basata su dimensione, settore o rischio. | ||
| Descrizione Questo attributo categorizza i clienti in gruppi come Strategico, Enterprise, PMI o Alto Rischio. È spesso derivato dalla classe cliente o dalla classe di profilo in Oracle Fusion. L'uso di questo attributo consente l'analisi delle varianti di processo tra diversi segmenti di mercato. Ad esempio, aiuta a verificare se i clienti 'Strategici' stanno ricevendo il servizio di alta qualità previsto o se i clienti 'Alto Rischio' sono monitorati attentamente per la conformità dei pagamenti. Perché è importante Consente un'analisi segmentata delle strategie di riscossione e del rischio. Dove trovare Oracle Fusion Financials: HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Esempi AziendaPiccola ImpresaGovernoAlto Rischio | |||
| Tipo di Transazione TransactionType | La classificazione del documento contabile (Fattura, Nota di Credito, Nota di Debito). | ||
| Descrizione Questo attributo distingue tra diversi tipi di documenti finanziari. Valori comuni includono Fattura, Nota di Credito e Nota di Debito. Questa distinzione è vitale per il dashboard 'Volume e Rilavoro delle Note di Credito'. Filtrando su questo attributo, gli analisti possono isolare i loop di rilavoro causati dalle note di credito o concentrarsi specificamente sul flusso principale di fatturazione. Aiuta a comprendere la composizione del carico di lavoro dei crediti. Perché è importante Distingue le fatture standard dalle rettifiche e dalle correzioni. Dove trovare Oracle Fusion Financials: RA_CUST_TRX_TYPES_ALL.NAME Esempi FatturaNota di CreditoNota di DebitoChargeback | |||
| Unità aziendale BusinessUnit | L'entità operativa all'interno dell'organizzazione responsabile della fattura. | ||
| Descrizione Questo attributo mappa all'ID Organizzazione in Oracle Fusion, rappresentando la specifica unità aziendale o divisione che possiede il credito. Consente la segmentazione delle prestazioni di processo tra diverse parti dell'azienda. Confrontare KPI come il Tempo di Risoluzione delle Contestazioni o il DSO tra diverse unità aziendali aiuta la direzione a identificare team ad alte prestazioni e a standardizzare le migliori pratiche. Evidenzia anche le unità che potrebbero richiedere risorse aggiuntive o una reingegnerizzazione del processo. Perché è importante Dimensione chiave per il benchmarking organizzativo e il confronto delle performance. Dove trovare Oracle Fusion Financials: HR_ORGANIZATION_UNITS.NAME collegato tramite ORG_ID. Esempi Vendite Est USAServizi EMEAProduzione APAC | |||
| Codice Valuta CurrencyCode | La valuta in cui è denominato l'importo della fattura. | ||
| Descrizione Questo attributo specifica la valuta (ad es. USD, EUR) per gli importi finanziari. È necessario per interpretare correttamente l'Importo della Fattura e per eseguire conversioni di valuta se è richiesta una valuta di reporting globale. Per le organizzazioni globali, questo attributo aiuta ad analizzare le prestazioni di riscossione in diverse regioni economiche e consente ai team finanziari di separare gli impatti del forex dalle prestazioni del processo operativo. Perché è importante Contestualizza i valori finanziari in ambienti multi-valuta. Dove trovare Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Esempi USDEURGBPJPY | |||
| Data di Idoneità allo Sconto DiscountEligibilityDate | La data finale entro cui un cliente può pagare per ricevere uno sconto per pagamento anticipato. | ||
| Descrizione Questo attributo segna la scadenza entro cui il cliente può usufruire di termini come '2/10 Net 30' (sconto del 2% se pagato entro 10 giorni). È richiesto per il dashboard 'Analisi Sconti Pagamento Anticipato'. Analizzare i pagamenti rispetto a questa data rivela il 'Tasso di Acquisizione Sconti Pagamento Anticipato'. Aiuta l'azienda a capire se le sue strategie di sconto stanno effettivamente accelerando il cash flow o se vengono ignorate dai clienti. Perché è importante Supporta l'analisi dell'efficacia degli incentivi e l'accelerazione del cash flow. Dove trovare Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Esempi 2023-11-102023-12-05 | |||
| Days Sales Outstanding DaysSalesOutstanding | Il numero di giorni tra la creazione e la liquidazione della fattura. | ||
| Descrizione Questo attributo calcolato misura la durata da 'Invoice Created' a 'Invoice Cleared'. È il calcolo diretto per il KPI 'Days Sales Outstanding Medio'. Sebbene questo possa essere calcolato dinamicamente nei dashboards, averlo come attributo pre-calcolato a livello di case consente una più facile filtrazione e segmentazione (ad es. mostrando tutti i case in cui DSO > 60 giorni). Perché è importante La metrica di efficienza definitiva per la Contabilità Clienti. Dove trovare Calcolato: Data(Fattura Saldata) - Data(Fattura Creata). Esempi 45 giorni12 giorni60 giorni | |||
| È una Rilavorazione IsRework | Flag che indica se la fattura ha subito cicli di correzione o contestazione. | ||
| Descrizione Questo attributo booleano permette di individuare se una fattura è stata interessata da attività di correzione, quali 'Credit Memo Issued' o 'Invoice Adjusted'. L'attributo è a supporto della dashboard 'Credit Memo Volume and Rework'. Identificare i casi di rework aiuta a isolare il percorso ideale ('happy path') dai flussi problematici. Un'elevata incidenza di rilavorazioni indica spesso problemi di qualità dei dati a monte, a livello di master data o nelle procedure di inserimento degli ordini di vendita. Perché è importante Identifica sprechi e inefficienze nel flusso di processo. Dove trovare Calcolato: Vero se il caso contiene 'Nota di Credito Emessa' o 'Contestazione Aperta'. Esempi truefalse | |||
| Fonte di Creazione CreationSource | L'origine della fattura, che indica se è stata manuale o importata. | ||
| Descrizione Questo attributo rivela how la fattura è entrata nel sistema Oracle, ad esempio tramite 'Manual Entry', 'AutoInvoice' o feed esterni specifici. È un proxy per il mapping generico 'Channel'. Questo è cruciale per il 'Cash Application Automation Monitor'. Aiuta a distinguere tra processi che sono completamente digital e quelli che richiedono una configurazione manuale. Elevati volumi di 'Manual Entry' possono indicare una mancanza di integrazione a monte o carenze del sistema. Perché è importante Identifica il livello di automazione a monte e l'origine dei dati. Dove trovare Oracle Fusion Financials: RA_BATCH_SOURCES_ALL.NAME Esempi AutoInvoiceManualeImplementazione ProgettiGestione Ordini | |||
| Motivo Contestazione DisputeReason | La categoria o il codice motivo assegnato quando viene aperta una contestazione. | ||
| Descrizione Questo attributo cattura la giustificazione fornita quando si verifica un'activity 'Dispute Case Opened'. Valori comuni potrebbero includere 'Errore di Prezzo', 'Disallineamento Quantità' o 'Merci Danneggiate'. Analizzare questo attributo nel dashboard 'Dispute Lifecycle and Bottlenecks' aiuta a identificare le cause profonde dei ritardi di pagamento. Se 'Errore di Prezzo' è frequente, l'azienda sa che deve indagare il processo di quotazione delle vendite a monte piuttosto che solo il processo di riscossione. Perché è importante Critico per l'analisi delle cause profonde di pagamenti ritardati e rilavorazioni. Dove trovare Oracle Fusion Financials: RA_CM_REQUESTS.REASON_CODE o AR_DISPUTE_HISTORY. Esempi Contestazione PrezzoErrore FiscaleMerci Non RicevuteDoppia Fatturazione | |||
| Regione Region | Regione geografica associata alla business unit o al cliente. | ||
| Descrizione Questo attributo mappa la transazione a un'area geografica più ampia, come Nord America, EMEA o APAC. È utile per la reportistica esecutiva di alto livello e per il dashboard 'DSO e Tendenze del Ciclo di Cassa'. L'analisi regionale aiuta a tenere conto delle differenze culturali nei comportamenti di pagamento (ad esempio, termini di pagamento standard più lunghi nell'Europa meridionale rispetto agli Stati Uniti) e assicura che i KPI globali siano interpretati con il corretto contesto locale. Perché è importante Fornisce una segmentazione geografica di alto livello per la reportistica globale. Dove trovare Oracle Fusion Financials: Derivato dall'Unità Aziendale o dall'Indirizzo Cliente. Esempi Nord AmericaEMEAAPACLATAM | |||
| Termini di Pagamento PaymentTerms | Le condizioni concordate per la tempistica del pagamento (es. Net 30). | ||
| Descrizione Questo attributo definisce il termine di pagamento concordato contrattualmente. Viene utilizzato per calcolare la Due Date ed è essenziale per il dashboard 'Efficacia della Strategia di Riscossione'. Le variazioni nei termini di pagamento tra i clienti possono spiegare le differenze nel DSO. Questo attributo consente agli analisti di normalizzare i dati sulle prestazioni, assicurando che un cliente con Net 60 termini non venga ingiustamente etichettato come 'pagatore lento' rispetto a uno con Net 30 termini. Perché è importante Contestualizza la velocità di pagamento rispetto agli accordi contrattuali. Dove trovare Oracle Fusion Financials: RA_TERMS.NAME Esempi Netto 30Immediato2/10 Netto 30Netto 60 | |||
Attività dei Crediti Commerciali
| Activity | Descrizione | ||
|---|---|---|---|
| Fattura Compensata | Lo stato finale in cui la fattura è chiusa nel sistema, solitamente perché il saldo è zero a causa di pagamento, nota di credito o aggiustamento. | ||
| Perché è importante Il timestamp per questo event viene utilizzato per calcolare i Days Sales Outstanding (DSO). Rappresenta la fine dell'istanza del processo. Dove trovare Identificato quando lo STATUS in AR_PAYMENT_SCHEDULES_ALL cambia in 'CL' (Chiuso). Acquisisci Confrontare il campo stato prima/dopo Tipo di evento inferred | |||
| Fattura Completata | Indica che il processo di creazione della fattura è terminato e la fattura è pronta per essere elaborata, stampata e contabilizzata. Ciò si verifica quando lo stato della transazione cambia da incompleto a completo. | ||
| Perché è importante Distingue tra tempo di redazione e tempo di elaborazione. I ritardi qui indicano colli di bottiglia nel processo interno di generazione della fatturazione. Dove trovare Identificato quando il COMPLETE_FLAG in RA_CUSTOMER_TRX_ALL passa a 'Y'. Acquisisci Confrontare il campo stato prima/dopo Tipo di evento inferred | |||
| Fattura Creata | Questa activity segna la creazione iniziale della registrazione della fattura nel sistema. Cattura il timestamp in cui l'intestazione della transazione viene salvata per la prima volta nelle tabelle di Oracle Receivables. | ||
| Perché è importante Stabilisce l'inizio del ciclo di vita del processo e la base per i calcoli di invecchiamento. Essenziale per calcolare il tempo di ciclo totale e il lead time per la spedizione. Dove trovare Derivato dalla tabella RA_CUSTOMER_TRX_ALL utilizzando la colonna CREATION_DATE o TRX_DATE. Acquisisci Registrato all'inserimento della riga di transazione Tipo di evento explicit | |||
| Fattura spedita | Rappresenta la trasmissione della fattura al cliente tramite stampa, email o XML. Questo segna il passaggio di consegne dall'organizzazione al cliente. | ||
| Perché è importante Critico per la misurazione delle performance di spedizione della fatturazione. Il divario tra creazione e spedizione ritarda direttamente il ciclo di riscossione del contante. Dove trovare Deducibile da PRINTING_ORIGINAL_DATE in RA_CUSTOMER_TRX_ALL o da log specifici nel Oracle Collaboration Messaging Framework se si utilizza XML. Acquisisci Confrontare il campo stato prima/dopo Tipo di evento inferred | |||
| Pagamento Completo Ricevuto | Si verifica quando l'applicazione di una ricevuta riduce il saldo della fattura a zero. Questo è l'evento di successo primario per il processo di riscossione. | ||
| Perché è importante Critico per l'analisi degli sconti per pagamento anticipato. La tempistica di questo evento determina se il contante è stato incassato entro la finestra di sconto. Dove trovare Originato da AR_RECEIVABLE_APPLICATIONS_ALL dove STATUS = 'APP' e il risultante AMOUNT_DUE_REMAINING è 0. Acquisisci Derivare dal confronto del campo X con Y Tipo di evento calculated | |||
| Pagamento Parziale Registrato | Si verifica quando una ricevuta viene applicata alla fattura, ma l'importo è inferiore al saldo totale in sospeso. Ciò lascia la fattura aperta con un saldo ridotto. | ||
| Perché è importante L'alta frequenza indica un comportamento di pagamento frammentato (KPI di Frequenza Pagamenti Parziali) che aumenta lo sforzo di riconciliazione. Dove trovare Originato da AR_RECEIVABLE_APPLICATIONS_ALL dove STATUS = 'APP' e AMOUNT_APPLIED < AMOUNT_DUE_REMAINING. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Contestazione Aperta | Segna l'inizio di una contestazione formale riguardante la fattura. Ciò sospende le attività di riscossione standard mentre la questione viene indagata. | ||
| Perché è importante Indicatore chiave di bottleneck. Tassi elevati di contestazione suggeriscono problemi di qualità a monte nell'evasione o nell'accuratezza della fatturazione. Dove trovare Identificato dai record in RA_CM_REQUESTS_ALL o da specifici workflow di Richiesta Nota di Credito collegati alla fattura. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Disputa Risolta | Indica la conclusione dell'indagine sulla contestazione. L'esito potrebbe essere l'approvazione di una nota di credito (contestazione valida) o il rifiuto (contestazione non valida). | ||
| Perché è importante Necessario per il calcolo del Tempo Medio di Risoluzione delle Contestazioni. Tempi di risoluzione lunghi influiscono negativamente sulla soddisfazione del cliente e sul DSO. Dove trovare Derivato dal cambiamento di stato in 'APPROVED' o 'REJECTED' in RA_CM_REQUESTS_ALL. Acquisisci Confrontare il campo stato prima/dopo Tipo di evento inferred | |||
| Estratto Conto Abbinato | Indica che la ricevuta applicata alla fattura è stata riconciliata con una riga sull'estratto conto bancario. Questo conferma che il contante è effettivamente arrivato sul conto bancario. | ||
| Perché è importante Misura l'automazione dell'applicazione della cassa. Il divario tra la registrazione del pagamento e l'abbinamento bancario rappresenta liquidità non confermata. Dove trovare Unito da AR_CASH_RECEIPTS_ALL a CE_STATEMENT_LINES (Cash Management) tramite il riferimento di riconciliazione. Acquisisci Confrontare il campo stato prima/dopo Tipo di evento inferred | |||
| Fattura Registrata in Contabilità Generale | Registra l'event in cui le voci contabili della fattura sono finalizzate e trasferite al General Ledger. Ciò assicura la conformità finanziaria e la prontezza per la chiusura del periodo. | ||
| Perché è importante Pur non influendo sulla vista cliente, i ritardi qui influiscono sul ciclo di chiusura finanziaria e sulla tempestività della reportistica. Dove trovare Derivato da GL_DATE nella tabella RA_CUST_TRX_LINE_GL_DIST_ALL. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Fattura Rettificata | Registra le rettifiche manuali al saldo della fattura, come piccole cancellazioni o rettifiche di valuta, distinte dalle note di credito. | ||
| Perché è importante Aiuta a identificare le perdite di entrate e i percorsi di processo non standard in cui i saldi vengono saldati senza pagamento. Dove trovare Originato dalla tabella AR_ADJUSTMENTS_ALL collegata alla fattura. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Fattura Stornata | Un tipo specifico di rettifica in cui il saldo residuo è considerato inesigibile e viene cancellato come credito inesigibile. Questo è uno stato terminale negativo. | ||
| Perché è importante Critico per il monitoraggio della salute finanziaria. Separa l'efficienza operativa (velocità di pagamento) dai problemi di qualità del credito. Dove trovare Originato da AR_ADJUSTMENTS_ALL dove il tipo di aggiustamento è classificato come 'Svalutazione' o collegato a un conto Crediti Insoluti. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Nota di Credito Emessa | Registra la creazione di una transazione di nota di credito applicata alla fattura. Questo riduce il saldo dovuto, spesso in risposta a una contestazione o a un reso. | ||
| Perché è importante Traccia il Tasso di Rilavoro delle Note di Credito e la perdita di ricavi. Le note di credito frequenti indicano errori di fatturazione sistemici. Dove trovare Originato da RA_CUSTOMER_TRX_ALL dove TRX_TYPE è Nota di Credito e RELATED_CUSTOMER_TRX_ID corrisponde alla fattura. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Promessa di Pagamento Ricevuta | Registra un impegno del cliente a pagare un importo specifico entro una data specifica. Questo viene tipicamente inserito manualmente da un agente di riscossione durante l'interazione con il cliente. | ||
| Perché è importante Chiave per l'analisi del comportamento di pagamento dei clienti. Le promesse non mantenute indicano un alto rischio di credito e potenziali futuri crediti inesigibili. Dove trovare Originato dalla tabella IEX_PROMISE_DETAILS nel modulo Riscossioni. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
| Sollecito di Pagamento Inviato | Registra l'emissione di una lettera di sollecito o di un promemoria di riscossione al cliente. Questo evento è generato dal modulo Advanced Collections. | ||
| Perché è importante Essenziale per analizzare l'efficacia della Strategia di Riscossione. Correlare questo con i pagamenti aiuta a determinare quali strategie di promemoria producono il recupero di cassa più rapido. Dove trovare Situato nelle tabelle IEX_DUNNING o IEX_STRATEGY_WORK_ITEMS collegate al conto cliente. Acquisisci Registrato quando la transazione X è stata eseguita Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
Acceda alla Console di Oracle BI Cloud Connector (BICC). Navighi alla sezione Manage Offerings and Data Stores.
Configuri la Storage Connection. Si assicuri di avere una connessione valida a Oracle Universal Content Management (UCM) o a un Object Storage esterno (come OCI Object Storage) dove verranno depositati i file CSV/Parquet estratti.
Selezioni l'Offerta Financials. Individui l'offerta Financials per accedere agli Accounts Receivable View Objects.
Selezioni e Configuri i View Objects (VO). Deve selezionare i Public View Objects (PVO) specifici necessari per costruire l'event log. I PVO essenziali includono:
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (Invoice Headers)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (Invoice Lines)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (Payments and CM Applications)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (Adjustments and Write-offs)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (Promises to Pay)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (Dunning/Reminders)
Definisca i Criteri di Filtro (Pruning). In Manage Extract Schedules o all'interno della configurazione PVO, imposti un filtro su CreationDate o LastUpdateDate per estrarre i dati rilevanti per il Suo periodo di analisi (es. ultimi 12 mesi).
Pianifichi l'Estrazione. Crei una pianificazione del job per eseguire queste estrazioni quotidianamente. Scelga Caricamento Incrementale per recuperare solo i dati modificati dopo il Caricamento Completo iniziale.
Scarichi e Ingestisca. Utilizzi uno script automatizzato o uno strumento di integrazione per prelevare i file da UCM/Object Storage e caricarli nelle Sue tabelle di staging del data warehouse (es. STG_AR_TRX_HEADER, STG_AR_APPLICATIONS).
Applichi la Logica di Trasformazione. Esegua lo script SQL fornito nella sezione Query sulle Sue tabelle di staging per appiattire i dati relazionali nel formato di event log di ProcessMind.
Convalida dei Tipi di Dati. Si assicuri che i campi data siano convertiti in oggetti datetime e che gli importi numerici gestiscano correttamente i decimali durante la trasformazione.
Esporti in CSV/Parquet. Esporti il set di risultati finale dal Suo data warehouse come un unico file.
Carichi su ProcessMind. Importi il file, mappando InvoiceNumber come Case ID, ActivityName come Activity e EventStartDateTime come Timestamp.
Configurazione
- Frequenza di Estrazione: Quotidiana (Incrementale) raccomandata per acquisire le ultime modifiche di stato.
- Caricamento Iniziale: Selezioni 'Full Extract' per la prima esecuzione, quindi passi a 'Incremental' basato sulla Last Update Date.
- PVO chiave: TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtro Data: Applichi filtri su CreationDate >= '202X-01-01' per limitare il volume.
- Dimensione del Fetch: Il valore predefinito è solitamente 50000 righe; lo regoli in base alla larghezza di banda di rete se utilizza il download UCM.
- Chiavi Primarie: Si assicuri che il Suo data warehouse a valle gestisca gli upsert utilizzando le chiavi primarie PVO (solitamente CustomerTrxId, ReceivableApplicationId, ecc.) per prevenire righe duplicate.
- Cronologia di Audit: I PVO BICC standard catturano lo stato corrente. Per una datazione storica esatta dei cambiamenti di stato (come Dispute Opened), potrebbe essere necessario abilitare le Audit Policies in Fusion ed estrarre gli Audit View Objects se le tabelle transazionali non persistono la cronologia.
a Query di Esempio config
/*
Transformation Script for Oracle BICC Data
Assumes raw BICC PVO CSVs are loaded into a SQL Staging Area with tables named:
- STG_AR_TRX_HEADER (TransactionHeaderExtractPVO)
- STG_AR_APPLICATIONS (ReceiptApplicationExtractPVO)
- STG_AR_ADJUSTMENTS (AdjustmentExtractPVO)
- STG_IEX_PROMISES (PromiseDetailExtractPVO)
- STG_IEX_STRATEGY (StrategyWorkItemExtractPVO)
- STG_CE_STMTS (BankStatementLineExtractPVO - Optional/Advanced)
*/
WITH Base_Log AS (
/* 1. Invoice Created */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Created' AS ActivityName,
CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
(Quantity * UnitSellingPrice) AS InvoiceAmount,
TrxClass AS TransactionType,
CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE TrxClass IN ('INV', 'DM')
UNION ALL
/* 2. Invoice Completed */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
TrxDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE CompleteFlag = 'Y'
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 3. Invoice Dispatched */
/* Using PrintingOriginalDate as proxy for dispatch */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
PrintingOriginalDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE PrintingOriginalDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
GlDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
'System' AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE GlDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 5. Payment Reminder Sent */
/* Links via Customer or Account, mapped back to Trx via Collections Strategy logic */
/* Simplified join assumption based on Trx Id availability in Work Item */
SELECT
H.TrxNumber AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
W.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
H.TrxClass AS TransactionType,
W.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_IEX_STRATEGY W
JOIN STG_AR_TRX_HEADER H ON W.ObjectPk1 = H.CustomerTrxId
WHERE W.WorkItemTemplateName LIKE '%Reminder%'
UNION ALL
/* 6. Promise to Pay Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
P.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
P.PromiseAmount AS InvoiceAmount,
H.TrxClass AS TransactionType,
P.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_IEX_PROMISES P
JOIN STG_AR_TRX_HEADER H ON P.CustTrxId = H.CustomerTrxId
UNION ALL
/* 7. Dispute Case Opened */
/* Triggered when dispute amount is updated/created */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
DisputeDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL
UNION ALL
/* 8. Dispute Resolved */
/* Approximated by update date when dispute amount returns to 0 after being positive */
/* Note: Accurate dispute history requires Audit Trail extraction. This is a best-effort proxy based on header state. */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL AND DisputeAmount = 0
UNION ALL
/* 9. Credit Memo Issued (Applied) */
SELECT
H.TrxNumber AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CM' -- Credit Memo application
UNION ALL
/* 10. Partial Payment Posted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Partial Payment Posted' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND (H.AmountDueRemaining > 0) -- Invoice still has balance
UNION ALL
/* 11. Full Payment Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Full Payment Received' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND H.AmountDueRemaining = 0 -- Invoice fully paid
UNION ALL
/* 12. Bank Statement Matched */
/* Requires joining Receipt Application -> Cash Receipt -> Bank Statement Line */
/* Placeholder logic assuming availability of Bank Statement PVO data */
SELECT
H.TrxNumber AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
BSL.StatementDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
BSL.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
BSL.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
-- Join to Receipt then to Bank Stmt would happen here
JOIN STG_CE_STMTS BSL ON APP.CashReceiptId = BSL.ReferenceId -- Simplified Join
WHERE APP.ApplicationType = 'CASH'
UNION ALL
/* 13. Invoice Adjusted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Adjusted' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType != 'WRITE_OFF'
UNION ALL
/* 14. Invoice Written Off */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Written Off' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType = 'WRITE_OFF'
UNION ALL
/* 15. Invoice Cleared */
/* The moment the invoice balance hits 0 */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE AmountDueRemaining = 0
)
SELECT
InvoiceNumber,
ActivityName,
EventStartDateTime,
SourceSystem,
GETDATE() AS LastDataUpdate,
BusinessUnit,
CustomerName,
Currency,
InvoiceAmount,
TransactionType,
UserName,
IsAutomated
FROM Base_Log
WHERE EventStartDateTime IS NOT NULL
ORDER BY InvoiceNumber, EventStartDateTime Fasi
Accedere alle Applicazioni Oracle Fusion: Navighi su Tools > Reports and Analytics. Clicchi su Browse Catalog per aprire l'interfaccia di Oracle BI Publisher.
Creare un Data Model: Clicchi su New (in alto a sinistra) e selezioni Data Model. Questo è il contenitore per la logica di estrazione SQL.
Definire un SQL Data Set: Sotto l'albero del Data Model a sinistra, clicchi su Data Sets, quindi selezioni New Data Set > SQL Query.
Configurare la Data Source: Nomini il data set (es.
ProcessMining_AR). SelezioniApplicationDB_FSCM(Financials Supply Chain Management) come Data Source. Questo assicura l'accesso alle tabelle AR e RA richieste.Incollare la Query: Copi lo script SQL completo fornito nella sezione Query sottostante e lo incolli nella casella di testo SQL Query. Non modifichi la logica principale a meno che non debba rinominare specifici Flexfield (DFF).
Impostare i Parametri: La query include un placeholder
:p_start_dateper il filtraggio per data di creazione della transazione. Nella tab Parameters del Data Model, crei un nuovo parametro chiamatop_start_date, Data Type: Date, e imposti un valore predefinito (es.01-01-2023).Visualizzare i Dati: Clicchi sulla tab Data, inserisca una data valida per il parametro e clicchi su View. Si assicuri che l'output contenga righe con colonne come
InvoiceNumber,ActivityNameeEventStartDateTime.Salvare il Data Model: Salvi l'oggetto nella Sua directory Shared Folders > Custom (es.
/Shared Folders/Custom/ProcessMining/AR_Extract_DM).Pianificare/Esportare: Per estrarre grandi volumi, clicchi su Create Report utilizzando questo Data Model. Nell'editor del report, verifichi che il layout sia una tabella semplice. Salvi il report. Quindi, utilizzi lo Scheduler per eseguire il report e esportare i dati come CSV o XML.
Formattazione Finale: Scarichi il file di output. Se è CSV, si assicuri che il formato della data sia coerente (preferito ISO 8601). Carichi questo file su ProcessMind mappando
InvoiceNumbercome Case ID,ActivityNamecome Activity eEventStartDateTimecome Timestamp.
Configurazione
- Data Source: Utilizzi
ApplicationDB_FSCMper accedere alle tabelle Financials. - Filtro Data: La query utilizza
ra_customer_trx_all.creation_date >= :p_start_date. La configuri per caricare i dati in una finestra scorrevole (es. ultimi 12 mesi). - Performance: Per dataset che superano le 100.000 fatture, consideri di aggiungere un limite
ROWNUMdurante i test o di suddividere l'estrazione per mese. - Filtraggio per Business Unit: Se la Sua organizzazione ha più Business Unit e ne necessita solo una, decommenti la riga
AND trx.org_id = ...nelle clausoleWhere. - Nomi Utente: La query risolve gli ID utente
CREATED_BYin Nomi Utente tramiteFND_USER. Si assicuri che l'utente di estrazione abbia i permessi per leggereFND_USER. - Advanced Collections: Le attività 'Payment Reminder Sent' e 'Promise to Pay Received' si basano sulle tabelle del modulo IEX (Advanced Collections). Se non utilizza questo modulo, queste sezioni restituiranno semplicemente zero righe.
a Query di Esempio sql
/* 1. Invoice Created */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Created' AS ActivityName,
trx.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 2. Invoice Completed */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
trx.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
trx.complete_flag = 'Y'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 3. Invoice Dispatched */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
COALESCE(trx.printing_original_date, trx.printing_last_printed, trx.last_update_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
(trx.printing_original_date IS NOT NULL OR trx.printing_count > 0)
AND trx.creation_date >= :p_start_date
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
MAX(dist.gl_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_line_gl_dist_all dist ON trx.customer_trx_id = dist.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
WHERE
dist.account_class = 'REC'
AND dist.posting_control_id != -3
AND trx.creation_date >= :p_start_date
GROUP BY
trx.trx_number,
hou.name,
party.party_name,
trx.invoice_currency_code,
ps.amount_due_original,
type.name
UNION ALL
/* 5. Payment Reminder Sent (Advanced Collections) */
SELECT
trx.trx_number AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
dun.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
iex_dunning_transactions dun
JOIN ar_payment_schedules_all ps ON dun.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON dun.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 6. Promise to Pay Received */
SELECT
trx.trx_number AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
pp.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
iex_promise_details pp
JOIN ar_payment_schedules_all ps ON pp.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON pp.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 7. Dispute Case Opened */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
req.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 8. Dispute Resolved */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
req.last_update_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.last_updated_by = u.user_id
WHERE
req.status_code IN ('APPROVED', 'REJECTED')
AND trx.creation_date >= :p_start_date
UNION ALL
/* 9. Credit Memo Issued */
SELECT
trx.trx_number AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
cm.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all cm
JOIN ra_customer_trx_all trx ON cm.previous_customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON cm.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 10 & 11. Partial and Full Payment */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN ps.status = 'CL' AND app.amount_applied = app.amount_applied_from THEN 'Full Payment Received'
WHEN ps.status = 'CL' AND ps.amount_due_remaining = 0 AND app.application_rule = '60' THEN 'Full Payment Received'
ELSE 'Partial Payment Posted'
END AS ActivityName,
app.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_receivable_applications_all app
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON app.created_by = u.user_id
WHERE
app.status = 'APP'
AND app.application_type = 'CASH'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 12. Bank Statement Matched */
SELECT
trx.trx_number AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
recon.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ce_statement_reconcils_all recon
JOIN ar_cash_receipt_history_all crh ON recon.reference_id = crh.cash_receipt_history_id
JOIN ar_cash_receipts_all cr ON crh.cash_receipt_id = cr.cash_receipt_id
JOIN ar_receivable_applications_all app ON cr.cash_receipt_id = app.cash_receipt_id
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON recon.created_by = u.user_id
WHERE
recon.status_flag = 'M'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 13 & 14. Invoice Adjusted and Written Off */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN adj.adjustment_type = 'W' THEN 'Invoice Written Off'
ELSE 'Invoice Adjusted'
END AS ActivityName,
adj.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_adjustments_all adj
JOIN ar_payment_schedules_all ps ON adj.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON adj.created_by = u.user_id
WHERE
adj.status = 'A'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 15. Invoice Cleared (Final Close) */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
ps.gl_date_closed AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ar_payment_schedules_all ps
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
WHERE
ps.status = 'CL'
AND ps.gl_date_closed IS NOT NULL
AND trx.creation_date >= :p_start_date