Votre Template de Données Comptes Clients
Oracle Fusion FinancialsVotre Template de Données Comptes Clients
- Ensemble complet d'attributs recommandés pour l'analyse des comptes clients
- Activités de processus clés et jalons à suivre
- Guide d'extraction spécifique au système pour Oracle Fusion Financials
Attributs des comptes clients
| Nom | Description | ||
|---|---|---|---|
| Nom de l'activité ActivityName | L'event ou l'action spécifique exécutée dans le processus des comptes clients. | ||
| Description Cet attribut décrit l'étape effectuée dans le processus, comme la création d'une facture, l'enregistrement d'un paiement ou l'ouverture d'un litige. Il définit le flow de la process map et permet la visualisation de la séquence des events. Les analystes utilisent ce champ pour identifier les variantes de processus, les boucles et les goulots d'étranglement. Il est essentiel pour déterminer l'adhésion aux procédures opérationnelles standard et pour calculer la fréquence d'events spécifiques comme le retravail ou les interventions manuelles. Pourquoi c'est important Requis pour définir le flux de processus et visualiser la séquence des events. Où obtenir Dérivé des tables d'historique des transactions (par exemple, AR_PAYMENT_SCHEDULES_ALL, RA_CUST_TRX_LINE_GL_DIST_ALL). Exemples Facture crééeRappel de Paiement EnvoyéPaiement Partiel EnregistréCas de litige ouvert | |||
| Numéro de facture InvoiceNumber | L'identifiant unique attribué à la transaction de facture dans Oracle Fusion. | ||
| Description Cet attribut sert de clé unique pour identifier les obligations financières au sein du module Comptes Clients. Il relie toutes les activities ultérieures, telles que les ajustements, les litiges et les paiements, à la transaction de vente originale. Dans l'analyse du process mining, cet attribut fonctionne comme l'ID de case. Il permet aux analystes de suivre le cycle de vie complet d'une créance depuis sa création jusqu'à son lettrage ou son amortissement complet, facilitant le calcul des temps de cycle et des variantes de processus. Pourquoi c'est important C'est l'unité d'analyse fondamentale pour le suivi du cycle de vie du crédit à l'encaissement. Où obtenir Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.TRX_NUMBER Exemples INV-2023-00110056789AR-99887755002211 | |||
| Timestamp de l'événement EventStartDateTime | La date et l'heure spécifiques auxquelles une activité a eu lieu. | ||
| Description Cet attribut enregistre le moment exact où une activity a eu lieu dans le système. Il est utilisé pour ordonner les events chronologiquement et constitue la base de tous les calculs temporels en process mining. En analysant les timestamps, l'entreprise peut calculer les temps de cycle entre les activities, comme la durée entre la création et l'envoi de la facture. Il est essentiel pour mesurer des KPI comme le Days Sales Outstanding et identifier les modèles temporels de comportement de paiement. Pourquoi c'est important Fondamental pour le calcul des durées, des délais d'exécution et des temps de cycle. Où obtenir Oracle Fusion Financials : Colonnes CREATION_DATE ou LAST_UPDATE_DATE dans diverses tables de transactions. Exemples 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Dernière mise à jour des données LastDataUpdate | Le timestamp de la dernière actualisation des données dans l'outil de mining. | ||
| Description Cet attribut indique la dernière date de synchronisation du jeu de données avec le système source Oracle. Il aide les utilisateurs à comprendre la fraîcheur de l'analyse et si les insights reflètent l'état actuel des opérations. Le suivi de ce champ est important pour s'assurer que les dashboards affichent des informations à jour, en particulier pour le suivi opérationnel des litiges ouverts ou des encaissements non appliqués. Pourquoi c'est important Fournit un contexte sur la fraîcheur et la fiabilité des données. Où obtenir Heure système au moment de l'extraction. Exemples 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| Système source SourceSystem | Le système d'enregistrement d'où proviennent les données. | ||
| Description Cet attribut identifie l'environnement logiciel à partir duquel les données de processus ont été extraites. Dans ce contexte, il confirme que les données proviennent de l'environnement Oracle Fusion Financials. Bien que souvent une valeur statique pour une extraction à partir d'un seul système, il devient crucial lors de la fusion de données de plusieurs instances ERP ou lors de l'intégration d'outils de recouvrement tiers. Il assure la lignée et la traçabilité des données dans les paysages de processus multi-systèmes. Pourquoi c'est important Assure la lignée des données et distingue les différentes instances ERP. Où obtenir Codé en dur lors de l'extraction ou configuré dans le pipeline de données. Exemples `Oracle Fusion Financials`Oracle Cloud ERP - USOracle Cloud ERP - EMEA | |||
| Date d'échéance DueDate | La date à laquelle le paiement est censé être reçu. | ||
| Description Cet attribut est la date limite de paiement calculée en fonction de la Date de Facture et des Conditions de Paiement. Il sert de point de référence pour déterminer si un paiement est en retard. Il est utilisé dans le KPI Pourquoi c'est important La référence primaire pour déterminer la délinquance et la performance en temps voulu. Où obtenir Oracle Fusion Financials : AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Exemples 2023-11-302023-12-152024-01-01 | |||
| Est Automatisé IsAutomated | Indicateur signalant si l'activité a été réalisée sans intervention humaine. | ||
| Description Cet attribut booléen détermine si une activity a été exécutée par un processus système (par exemple, AutoInvoice, AutoLockbox) ou par un utilisateur humain. C'est le moteur principal du KPI Pourquoi c'est important Métrique primaire pour la transformation numérique et la mesure de l'efficacité. Où obtenir Logique calculée basée sur le nom d'utilisateur (par exemple, si Utilisateur == 'BATCH_USER' alors vrai). Exemples truefaux | |||
| Montant de la facture InvoiceAmount | La valeur monétaire totale de la facture. | ||
| Description Cet attribut représente le montant initial dû sur la facture. Il sert de facteur de pondération principal pour de nombreuses analyses, permettant à l'entreprise de prioriser les transactions de grande valeur par rapport au volume de faible valeur. Dans le contexte du Pourquoi c'est important Apporte un poids financier à l'analyse et soutient la priorisation basée sur la valeur. Où obtenir Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Exemples 1500.00250.5010000.00 | |||
| Nom d'utilisateur UserName | L'utilisateur système qui a effectué l'activity. | ||
| Description Cet attribut enregistre l'identifiant de connexion ou le nom de la personne qui a exécuté l'activity spécifique (par exemple, enregistré la facture, rapproché le relevé bancaire). Il correspond au champ générique Pourquoi c'est important Permet le suivi des performances au niveau de l'utilisateur et l'analyse de la ségrégation des tâches. Où obtenir Oracle Fusion Financials : Colonnes CREATED_BY ou LAST_UPDATED_BY jointes aux tables utilisateur. Exemples sysadminjsmithtâche_de_traitement_par_lot_financier | |||
| Nom de l'agent de recouvrement CollectorName | Le nom de l'agent de recouvrement ou de la ressource assignée à la facture. | ||
| Description Cet attribut identifie l'employé ou le membre de l'équipe spécifique responsable du recouvrement du paiement de la facture. C'est la dimension clé pour le dashboard Pourquoi c'est important Clé pour l'analyse des performances des ressources et l'équilibrage de la charge de travail. Où obtenir Oracle Fusion Financials : AR_COLLECTORS.NAME associé au profil client. Exemples John SmithÉquipe de recouvrement AJane Doe | |||
| Nom du client CustomerName | Le nom de l'entité facturée dans la transaction. | ||
| Description Cet attribut identifie le client associé à la facture. Il est fondamental pour analyser les comportements de paiement, les fréquences de litiges et l'efficacité du recouvrement au niveau du client. Les analystes utilisent ce champ pour identifier les clients spécifiques qui paient fréquemment en retard ou soulèvent des litiges. Cette insight soutient le dashboard Pourquoi c'est important Essentiel pour l'analyse centrée sur le client et le profilage des risques. Où obtenir Oracle Fusion Financials : HZ_PARTIES.PARTY_NAME lié via BILL_TO_CUSTOMER_ID. Exemples Acme CorpGlobex CorporationSoylent Corp | |||
| Segment de clientèle CustomerSegment | La classification du client basée sur la taille, l'industrie ou le risque. | ||
| Description Cet attribut catégorise les clients en groupes tels que Stratégique, Entreprise, PME ou à Risque Élevé. Il est souvent dérivé de la classe client ou de la classe de profil dans Oracle Fusion. L'utilisation de cet attribut permet l'analyse des variantes de processus à travers différents segments de marché. Par exemple, il aide à vérifier si les clients Pourquoi c'est important Permet une analyse segmentée des stratégies de recouvrement et du risque. Où obtenir Oracle Fusion Financials : HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Exemples EntreprisePetite EntrepriseGouvernementRisque élevé | |||
| Type de transaction TransactionType | La classification du document de créance (Facture, Avoir, Note de Débit). | ||
| Description Cet attribut distingue les différents types de documents financiers. Les valeurs courantes incluent Facture, Avoir et Note de Débit. Cette distinction est vitale pour le dashboard Pourquoi c'est important Distingue les factures standard des ajustements et corrections. Où obtenir Oracle Fusion Financials : RA_CUST_TRX_TYPES_ALL.NAME Exemples FactureNote de créditNote de débitDébit compensatoire | |||
| Unité commerciale BusinessUnit | L'entité opérationnelle au sein de l'organisation responsable de la facture. | ||
| Description Cet attribut correspond à l'ID d'organisation dans Oracle Fusion, représentant l'unité commerciale ou la division spécifique qui détient la créance. Il permet la segmentation de la performance des processus à travers différentes parties de l'entreprise. La comparaison de KPI tels que le temps de résolution des litiges ou le DSO entre différentes unités commerciales aide la direction à identifier les équipes très performantes et à standardiser les meilleures pratiques. Il met également en évidence les unités qui pourraient nécessiter des ressources supplémentaires ou une réingénierie des processus. Pourquoi c'est important Dimension clé pour le benchmarking organisationnel et la comparaison des performances. Où obtenir Oracle Fusion Financials : HR_ORGANIZATION_UNITS.NAME lié via ORG_ID. Exemples Ventes Est USAServices EMEAFabrication APAC | |||
| Code de devise CurrencyCode | La devise dans laquelle le montant de la facture est libellé. | ||
| Description Cet attribut spécifie la devise (par exemple, USD, EUR) pour les montants financiers. Il est nécessaire pour interpréter correctement le Montant de la Facture et pour effectuer des conversions de devises si une devise de rapport global est requise. Pour les organisations mondiales, cet attribut aide à analyser la performance de recouvrement à travers différentes régions économiques et permet aux équipes financières de séparer les impacts des taux de change de la performance opérationnelle des processus. Pourquoi c'est important Contextualise les valeurs financières dans des environnements multi-devises. Où obtenir Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Exemples USDEURGBPJPY | |||
| Conditions de paiement PaymentTerms | Les conditions convenues pour le calendrier de paiement (par exemple, Net 30). | ||
| Description Cet attribut définit le délai de paiement convenu contractuellement. Il est utilisé pour calculer la date d'échéance ( Pourquoi c'est important Contextualise la vitesse de paiement par rapport aux accords contractuels. Où obtenir Oracle Fusion Financials : RA_TERMS.NAME Exemples Net 30Immédiat2 % sous 10 jours, net à 30 joursNet 60 | |||
| Date d'éligibilité à l'escompte DiscountEligibilityDate | La date limite à laquelle un client peut payer pour bénéficier d'un escompte pour paiement anticipé. | ||
| Description Cet attribut marque la date limite pour que le client puisse bénéficier de conditions telles que Pourquoi c'est important Soutient l'analyse de l'efficacité des incitations et l'accélération des flux de trésorerie. Où obtenir Oracle Fusion Financials : AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Exemples 2023-11-102023-12-05 | |||
| Délai moyen de recouvrement (DSO) DaysSalesOutstanding | Le nombre de jours entre la création et le lettrage de la facture. | ||
| Description Cet attribut calculé mesure la durée entre Pourquoi c'est important La métrique d'efficacité définitive pour les comptes clients. Où obtenir Calculé : Date(Facture apurée) - Date(Facture créée). Exemples 45 jours12 jours60 jours | |||
| Est un retravail IsRework | Indicateur signalant si la facture a subi des boucles de correction ou de litige. | ||
| Description Cet attribut booléen identifie si une facture a connu des activities associées à la correction d'erreurs, telles que Pourquoi c'est important Identifie le gaspillage et l'inefficacité dans le flux de processus. Où obtenir Calculé : Vrai si le cas contient 'Note de crédit émise' ou 'Cas de litige ouvert'. Exemples truefaux | |||
| Motif du litige DisputeReason | La catégorie ou le code de motif attribué lors de l'ouverture d'un litige. | ||
| Description Cet attribut capture la justification fournie lorsqu'une activity Pourquoi c'est important Critique pour l'analyse des causes profondes des paiements retardés et des retouches. Où obtenir Oracle Fusion Financials : RA_CM_REQUESTS.REASON_CODE ou AR_DISPUTE_HISTORY. Exemples Litige sur le PrixErreur FiscaleBiens non reçusFacturation en double | |||
| Région Region | Région géographique associée à l'unité commerciale ou au client. | ||
| Description Cet attribut mappe la transaction à une zone géographique plus large, telle que l'Amérique du Nord, l'EMEA ou l'APAC. Il est utile pour le reporting exécutif de haut niveau et pour le dashboard Pourquoi c'est important Fournit une segmentation géographique de haut niveau pour les rapports mondiaux. Où obtenir Oracle Fusion Financials : Dérivé de l'unité commerciale ou de l'adresse client. Exemples Amérique du NordEMEAAPACLATAM | |||
| Source de création CreationSource | L'origine de la facture, indiquant si elle était manuelle ou importée. | ||
| Description Cet attribut révèle comment la facture est entrée dans le système Oracle, par exemple Pourquoi c'est important Identifie le niveau d'automatisation en amont et l'origine des données. Où obtenir Oracle Fusion Financials : RA_BATCH_SOURCES_ALL.NAME Exemples AutoInvoiceManuelImplémentation de ProjetsGestion des commandes | |||
Activités des comptes clients
| Activité | Description | ||
|---|---|---|---|
| Facture apurée | L'état final où la facture est close dans le système, généralement parce que le solde est nul suite à un paiement, un avoir ou un ajustement. | ||
| Pourquoi c'est important Le timestamp de cet event est utilisé pour calculer le Days Sales Outstanding (DSO). Il représente la fin de l'instance de processus. Où obtenir Identifié lorsque le STATUT dans AR_PAYMENT_SCHEDULES_ALL passe à 'CL' (Clos). Capture Comparer le champ de statut avant/après Type d'événement inferred | |||
| Facture créée | Cette activity marque la création initiale de l'enregistrement de la facture dans le système. Elle capture le timestamp lorsque l'en-tête de transaction est enregistré pour la première fois dans les tables Oracle Receivables. | ||
| Pourquoi c'est important Établit le début du cycle de vie du processus et la base de référence pour les calculs de vieillissement. Essentiel pour calculer le temps de cycle total et le délai d'exécution avant l'expédition. Où obtenir Dérivé de la table RA_CUSTOMER_TRX_ALL en utilisant la colonne CREATION_DATE ou TRX_DATE. Capture Enregistré lors de l'insertion d'une ligne de transaction Type d'événement explicit | |||
| Facture expédiée | Représente la transmission de la facture au client par impression, e-mail ou XML. Cela marque le transfert de l'organisation au client. | ||
| Pourquoi c'est important Critique pour mesurer la performance de l'expédition des factures. L'écart entre la création et l'expédition retarde directement le cycle de recouvrement des liquidités. Où obtenir Déduit de PRINTING_ORIGINAL_DATE dans RA_CUSTOMER_TRX_ALL ou des logs spécifiques dans le Cadre de Messagerie Collaboratif Oracle si vous utilisez XML. Capture Comparer le champ de statut avant/après Type d'événement inferred | |||
| Facture terminée | Indique que le processus de création de facture est terminé et que la facture est prête à être traitée, imprimée et comptabilisée. Cela se produit lorsque le statut de la transaction passe d'incomplet à complet. | ||
| Pourquoi c'est important Distingue le temps de rédaction du temps de traitement. Les retards ici indiquent des goulots d'étranglement dans le processus interne de génération de factures. Où obtenir Identifié lorsque le COMPLETE_FLAG dans RA_CUSTOMER_TRX_ALL passe à 'Y'. Capture Comparer le champ de statut avant/après Type d'événement inferred | |||
| Paiement intégral reçu | Se produit lorsqu'une application de reçu réduit le solde de la facture à zéro. C'est l'événement de succès principal pour le processus de recouvrement. | ||
| Pourquoi c'est important Critique pour l'analyse des escomptes pour paiement anticipé. Le moment de cet événement détermine si l'argent a été encaissé dans la fenêtre d'escompte. Où obtenir Provient de AR_RECEIVABLE_APPLICATIONS_ALL où STATUS = Capture Dériver en comparant le champ X à Y Type d'événement calculated | |||
| Paiement Partiel Enregistré | Se produit lorsqu'un reçu est appliqué à la facture, mais que le montant est inférieur au solde total dû. Cela laisse la facture ouverte avec un solde réduit. | ||
| Pourquoi c'est important Une fréquence élevée indique un comportement de paiement fragmenté (KPI de fréquence des paiements partiels) qui augmente l'effort de rapprochement. Où obtenir Provient de AR_RECEIVABLE_APPLICATIONS_ALL où STATUS = Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Cas de litige ouvert | Marque l'ouverture d'un litige formel concernant la facture. Cela suspend les activités de recouvrement standard pendant l'enquête sur le problème. | ||
| Pourquoi c'est important Indicateur majeur de goulot d'étranglement. Des taux de litiges élevés suggèrent des problèmes de qualité en amont dans l'exécution ou l'exactitude de la facturation. Où obtenir Identifié par les enregistrements dans RA_CM_REQUESTS_ALL ou par des workflows spécifiques de demande de note de crédit liés à la facture. Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Engagement de Paiement Reçu | Enregistre un engagement du client à payer un montant spécifique avant une date donnée. Cela est généralement saisi manuellement par un agent de recouvrement lors de l'interaction client. | ||
| Pourquoi c'est important Clé pour l'analyse du comportement de paiement des clients. Les promesses non tenues indiquent un risque de crédit élevé et de potentielles créances irrécouvrables futures. Où obtenir Provient de la table IEX_PROMISE_DETAILS dans le module Collections. Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Extrait bancaire rapproché | Indique que le reçu appliqué à la facture a été rapproché avec une ligne de l'extrait bancaire. Cela confirme que l'argent a effectivement été crédité sur le compte bancaire. | ||
| Pourquoi c'est important Mesure l'automatisation de l'application des encaissements. L'écart entre l'enregistrement du paiement et le rapprochement bancaire représente de l'argent non confirmé. Où obtenir Joint de AR_CASH_RECEIPTS_ALL à CE_STATEMENT_LINES (Gestion de trésorerie) via la référence de rapprochement. Capture Comparer le champ de statut avant/après Type d'événement inferred | |||
| Facture ajustée | Capture les ajustements manuels au solde de la facture, tels que de petites radiations ou des ajustements de devise, distincts des notes de crédit. | ||
| Pourquoi c'est important Aide à identifier les fuites de revenus et les chemins de processus non standard où les soldes sont apurés sans paiement. Où obtenir Provient de la table AR_ADJUSTMENTS_ALL liée à la facture. Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Facture comptabilisée au GL | Enregistre l'événement où les écritures comptables de la facture sont finalisées et transférées au Grand Livre. Cela assure la conformité financière et la préparation à la clôture de période. | ||
| Pourquoi c'est important Bien que cela n'affecte pas la vue client, les retards ici ont un impact sur le cycle de clôture financière et la ponctualité des rapports. Où obtenir Dérivé de la GL_DATE dans la table RA_CUST_TRX_LINE_GL_DIST_ALL. Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Facture passée en perte | Un type d'ajustement spécifique où le solde restant est jugé irrécouvrable et passé en perte en tant que mauvaise créance. Il s'agit d'un état terminal négatif. | ||
| Pourquoi c'est important Critique pour le suivi de la santé financière. Sépare l'efficacité opérationnelle (rapidité de paiement) des problèmes de qualité de crédit. Où obtenir Provient de AR_ADJUSTMENTS_ALL où le type d'ajustement est classifié comme Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Litige résolu | Indique la conclusion de l'enquête sur le litige. Le résultat pourrait être l'approbation d'une note de crédit (litige valide) ou son rejet (litige non valide). | ||
| Pourquoi c'est important Nécessaire pour calculer le temps moyen de résolution des litiges. Des délais de résolution longs ont un impact négatif sur la satisfaction client et le DSO. Où obtenir Dérivé du changement de statut en 'APPROUVÉ' ou 'REJETÉ' dans RA_CM_REQUESTS_ALL. Capture Comparer le champ de statut avant/après Type d'événement inferred | |||
| Note de crédit émise | Capture la création d'une transaction de note de crédit appliquée à la facture. Cela réduit le solde dû, souvent en réponse à un litige ou à un retour. | ||
| Pourquoi c'est important Suit le taux de retravail des avoirs et la fuite de revenus. Des avoirs fréquents indiquent des erreurs de facturation systémiques. Où obtenir Provient de RA_CUSTOMER_TRX_ALL où TRX_TYPE est Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
| Rappel de Paiement Envoyé | Capture l'émission d'une lettre de relance ou d'un rappel de recouvrement au client. Cet événement est généré par le module Recouvrement avancé. | ||
| Pourquoi c'est important Essentiel pour analyser l'efficacité de la stratégie de recouvrement. La corrélation avec les paiements permet de déterminer quelles stratégies de rappel génèrent le recouvrement de trésorerie le plus rapide. Où obtenir Situé dans les tables IEX_DUNNING ou IEX_STRATEGY_WORK_ITEMS liées au compte client. Capture Enregistré lors de l'exécution de la transaction X Type d'événement explicit | |||
Guides d'extraction
Étapes
Accédez à la console Oracle BI Cloud Connector (BICC). Naviguez vers la section Gérer les offres et les magasins de données.
Configurez la connexion de stockage. Assurez-vous d'avoir une connexion valide à Oracle Universal Content Management (UCM) ou à un stockage d'objets externe (comme OCI Object Storage) où les fichiers CSV/Parquet extraits seront déposés.
Sélectionnez l'offre Financials. Localisez l'offre Financials pour accéder aux objets de vue des comptes clients.
Sélectionnez et configurez les objets de vue (VO). Vous devez sélectionner les objets de vue publics (PVO) spécifiques requis pour construire le journal d'événements. Les PVO essentiels incluent :
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (En-têtes de facture)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (Lignes de facture)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (Paiements et applications de notes de crédit)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (Ajustements et radiations)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (Promesses de paiement)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (Relances/Rappels)
Définissez les critères de filtre (élagage). Dans Gérer les planifications d'extraction ou dans la configuration PVO, définissez un filtre sur CreationDate ou LastUpdateDate pour extraire les données pertinentes pour votre période d'analyse (par exemple, les 12 derniers mois).
Planifiez l'extraction. Créez une planification de tâche pour exécuter ces extractions quotidiennement. Choisissez le chargement incrémentiel pour récupérer uniquement les données modifiées après le chargement complet initial.
Téléchargez et ingérez. Utilisez un script automatisé ou un outil d'intégration pour récupérer les fichiers depuis UCM/Object Storage et les charger dans vos tables de staging de l'entrepôt de données (par exemple, STG_AR_TRX_HEADER, STG_AR_APPLICATIONS).
Appliquez la logique de transformation. Exécutez le script SQL fourni dans la section Requête sur vos tables de staging pour aplatir les données relationnelles au format de journal d'événements ProcessMind.
Validez les types de données. Assurez-vous que les champs de date sont convertis en objets datetime et que les montants numériques gèrent correctement les décimales pendant la transformation.
Exportez au format CSV/Parquet. Exportez le jeu de résultats final de votre entrepôt de données sous forme de fichier unique.
Téléchargez vers ProcessMind. Importez le fichier, en mappant InvoiceNumber à l'ID de cas, ActivityName à l'Activité et EventStartDateTime à l'Horodatage.
Configuration
- Fréquence d'extraction : Quotidienne (Incrémentiel) recommandée pour capturer les derniers changements de statut.
- Chargement initial : Sélectionnez 'Extraction complète' pour la première exécution, puis passez à 'Incrémentiel' basé sur la Date de dernière mise à jour.
- PVO clés : TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtrage par date : Appliquez des filtres sur CreationDate >= '202X-01-01' pour limiter le volume.
- Taille de récupération : La valeur par défaut est généralement de 50 000 lignes ; ajustez en fonction de la bande passante du réseau si vous utilisez le téléchargement UCM.
- Clés primaires : Assurez-vous que votre entrepôt de données en aval gère les upserts en utilisant les clés primaires des PVO (généralement CustomerTrxId, ReceivableApplicationId, etc.) pour éviter les lignes en double.
- Historique d'audit : Les PVO BICC standard capturent l'état actuel. Pour un horodatage historique exact des changements de statut (comme Litige ouvert), l'activation des politiques d'audit dans Fusion et l'extraction des objets de vue d'audit peuvent être requises si les tables transactionnelles ne conservent pas l'historique.
a Exemple de requête 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 Étapes
Connectez-vous aux applications Oracle Fusion : Accédez à Outils > Rapports et analyses. Cliquez sur Parcourir le catalogue pour ouvrir l'interface d'Oracle BI Publisher.
Créer un modèle de données : Cliquez sur Nouveau (en haut à gauche) et sélectionnez Modèle de données. Il s'agit du conteneur de votre logique d'extraction SQL.
Définir un jeu de données SQL : Sous l'arborescence Modèle de données à gauche, cliquez sur Jeux de données, puis sélectionnez Nouveau jeu de données > Requête SQL.
Configurer la source de données : Nommez le jeu de données (par exemple,
ProcessMining_AR). SélectionnezApplicationDB_FSCM(Financials Supply Chain Management) comme Source de données. Cela garantit l'accès aux tables AR et RA requises.Coller la requête : Copiez le script SQL complet fourni dans la section Requête ci-dessous et collez-le dans la zone de texte Requête SQL. Ne modifiez pas la logique principale, sauf si vous devez renommer des Flexfields (DFF) spécifiques.
Définir les paramètres : La requête inclut un paramètre de remplacement
:p_start_datepour filtrer par date de création de transaction. Dans l'onglet Paramètres du modèle de données, créez un nouveau paramètre nommép_start_date, Type de données : Date, et définissez une valeur par défaut (par exemple,01-01-2023).Afficher les données : Cliquez sur l'onglet Données, saisissez une date valide pour le paramètre et cliquez sur Afficher. Assurez-vous que le résultat contient des lignes avec des colonnes comme
InvoiceNumber,ActivityNameetEventStartDateTime.Enregistrer le modèle de données : Enregistrez l'objet dans votre répertoire Dossiers partagés > Personnalisé (par exemple,
/Shared Folders/Custom/ProcessMining/AR_Extract_DM).Planifier/Exporter : Pour extraire de gros volumes, cliquez sur Créer un rapport en utilisant ce modèle de données. Dans l'éditeur de rapport, vérifiez que la mise en page est un tableau simple. Enregistrez le rapport. Ensuite, utilisez le Planificateur pour exécuter le rapport et exporter les données au format CSV ou XML.
Formatage final : Téléchargez le fichier de sortie. Si au format CSV, assurez-vous que le format de date est cohérent (ISO 8601 préféré). Téléchargez ce fichier dans ProcessMind en mappant
InvoiceNumbercomme ID de cas,ActivityNamecomme Activité etEventStartDateTimecomme Horodatage.
Configuration
- Source de données : Utilisez
ApplicationDB_FSCMpour accéder aux tables financières. - Filtre de date : La requête utilise
ra_customer_trx_all.creation_date >= :p_start_date. Configurez-la pour charger les données sur une fenêtre glissante (par exemple, les 12 derniers mois). - Performance : Pour les jeux de données dépassant 100 000 factures, envisagez d'ajouter une limite
ROWNUMpendant les tests ou de segmenter l'extraction par mois. - Filtrage par unité commerciale : Si votre organisation possède plusieurs unités commerciales et que vous n'en avez besoin que d'une, décommentez la ligne
AND trx.org_id = ...dans les clausesWhere. - Noms d'utilisateur : La requête résout les ID utilisateur
CREATED_BYen Noms d'utilisateur viaFND_USER. Assurez-vous que l'utilisateur d'extraction a la permission de lireFND_USER. - Recouvrement avancé : Les activités 'Rappel de paiement envoyé' et 'Promesse de paiement reçue' s'appuient sur les tables du module IEX (Recouvrement avancé). Si vous n'utilisez pas ce module, ces sections renverront simplement zéro ligne.
a Exemple de requête 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