Votre modèle de données pour les créances clients
Votre modèle de données pour les créances clients
- Ensemble complet d’attributs recommandés pour l’analyse des créances clients
- Activités et jalons clés du processus à suivre
- Instructions d’extraction propres à Oracle Fusion Financials
Attributs des créances clients
| Nom | Description | ||
|---|---|---|---|
| Horodatage de l’événement EventStartDateTime | Date et heure précises auxquelles une activité a eu lieu. | ||
| Description Cet attribut enregistre le moment exact où une activité s’est déroulée dans le système. Il sert à classer les événements par ordre chronologique et constitue la base de tous les calculs temporels en Process Mining. L’analyse des horodatages permet à l’entreprise de calculer les temps de cycle entre les activités, par exemple le délai entre la création et l’envoi d’une facture. Elle est essentielle pour mesurer des indicateurs comme le délai moyen de paiement client et repérer les tendances temporelles des comportements de paiement. Pourquoi est-ce important ? Indispensable au calcul des durées, des délais et des temps de cycle. Où trouver ces données Oracle Fusion Financials : colonnes CREATION_DATE ou LAST_UPDATE_DATE de différentes tables de transactions. Exemples 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Nom de l’activité ActivityName | Événement ou action précis réalisé dans le processus de gestion des créances clients. | ||
| Description Cet attribut décrit l’étape du processus, par exemple la création d’une facture, la comptabilisation d’un paiement ou l’ouverture d’un litige. Il définit le flux du processus et permet de visualiser la séquence des événements. Les analystes s’appuient sur ce champ pour repérer les variantes, les boucles et les goulots d’étranglement. Il est essentiel pour vérifier le respect des procédures opérationnelles standard et calculer la fréquence d’événements précis, comme les reprises ou les interventions manuelles. Pourquoi est-ce important ? Nécessaire pour définir le flux du processus et visualiser la séquence des événements. Où trouver ces données Dérivé des tables d’historique des transactions, par exemple AR_PAYMENT_SCHEDULES_ALL et RA_CUST_TRX_LINE_GL_DIST_ALL. Exemples Facture crééeRelance de paiement envoyéePaiement partiel comptabiliséLitige ouvert | |||
| Numéro de facture InvoiceNumber | Identifiant unique attribué à la transaction de facture dans Oracle Fusion. | ||
| Description Cet attribut sert de clé unique pour identifier les créances dans le module Accounts Receivable. Il relie toutes les activités ultérieures, comme les ajustements, les litiges et les paiements, à la transaction de vente d’origine. Dans une analyse de Process Mining, cet attribut fait office d’ID de cas. Il permet de suivre le cycle de vie complet d’une créance, de sa création à son apurement intégral ou à son passage en perte, et de calculer les temps de cycle et les variantes du processus. Pourquoi est-ce important ? Il s’agit de l’unité d’analyse fondamentale pour suivre le cycle allant du crédit à l’encaissement. Où trouver ces données Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.TRX_NUMBER Exemples INV-2023-00110056789AR-99887755002211 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage de la dernière actualisation des données dans l’outil de Process Mining. | ||
| Description Cet attribut indique la date de la dernière synchronisation des données avec le système Oracle source. Il aide les utilisateurs à évaluer l’actualité de l’analyse et à vérifier si les résultats reflètent l’état actuel des opérations. Il est important de surveiller ce champ pour s’assurer que les Dashboards affichent des informations à jour, notamment pour le suivi opérationnel des litiges ouverts ou des encaissements non imputés. Pourquoi est-ce important ? Indique le degré d’actualité et de fiabilité des données. Où trouver ces données Heure du système au moment de l’extraction. Exemples 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| Système source SourceSystem | Système de référence d’où proviennent les données. | ||
| Description Cet attribut identifie l’environnement logiciel dont les données du processus ont été extraites. Dans ce contexte, il confirme que les données proviennent de l’environnement Oracle Fusion Financials. Souvent statique lorsque l’extraction provient d’un seul système, cet attribut devient essentiel lors de la fusion de données issues de plusieurs instances ERP ou de l’intégration d’outils de recouvrement tiers. Il garantit la traçabilité de l’origine des données dans les paysages de processus multi-systèmes. Pourquoi est-ce important ? Garantit la traçabilité de l’origine des données et permet de distinguer les différentes instances ERP. Où trouver ces données Renseigné en dur lors de l’extraction ou configuré dans le pipeline de données. Exemples Oracle Fusion FinancialsOracle Cloud ERP - États-UnisOracle Cloud ERP - EMEA | |||
| Automatisé IsAutomated | Indique si l’activité a été effectuée sans intervention humaine. | ||
| Description Cet attribut booléen indique si l’activité a été exécutée par un processus système, par exemple AutoInvoice ou AutoLockbox, ou par un utilisateur. Il constitue la principale mesure du KPI « Taux d’automatisation de l’affectation des paiements ». En suivant dans le temps la part des activités automatisées par rapport aux activités manuelles, l’entreprise peut évaluer les résultats de ses initiatives de transformation numérique et repérer les étapes qui restent manuelles. Pourquoi est-ce important ? Métrique principale pour mesurer la transformation numérique et l’efficacité. Où trouver ces données Logique calculée à partir de UserName (par exemple, si User == 'BATCH_USER', alors vrai). Exemples truefalse | |||
| Date d’échéance DueDate | Date à laquelle le paiement est attendu au plus tard. | ||
| Description Cet attribut correspond à la date limite de paiement, calculée à partir de la date de facture et des conditions de paiement. Il sert de référence pour déterminer si un paiement est en retard. Il est utilisé dans le KPI « Écart de délai des relances » pour mesurer si l’équipe intervient suffisamment tôt par rapport à l’échéance. Il sert également de seuil pour classer les créances comme non échues ou en retard dans les rapports d’ancienneté. Pourquoi est-ce important ? Référence principale pour déterminer les retards de paiement et le respect des échéances. Où trouver ces données Oracle Fusion Financials : AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Exemples 2023-11-302023-12-152024-01-01 | |||
| Montant de la facture InvoiceAmount | Montant total de la facture. | ||
| Description Cet attribut correspond au montant initial dû sur la facture. Il sert de principal facteur de pondération dans de nombreuses analyses et permet à l’entreprise de donner la priorité aux transactions de montant élevé plutôt qu’au volume de transactions de faible montant. Dans la vue « Crédits non imputés et pertes de revenus », ce champ permet de quantifier l’incidence financière des éléments non résolus. Il sert également à calculer le délai moyen de paiement client pondéré, pour évaluer l’efficacité des processus en tenant compte de leur poids financier. Pourquoi est-ce important ? Donne une pondération financière à l’analyse et facilite la hiérarchisation selon la valeur. Où trouver ces données Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Exemples 1500.00250.5010000.00 | |||
| Nom d’utilisateur UserName | Utilisateur système ayant effectué l’activité. | ||
| Description Cet attribut enregistre l’identifiant de connexion ou le nom de la personne qui a effectué l’activité concernée, par exemple la comptabilisation d’une facture ou le rapprochement d’un relevé bancaire. Il correspond au champ générique « Utilisateur ». Ces données sont indispensables aux audits de conformité et au Dashboard « Volume de traitement par agent de recouvrement ». Elles permettent de distinguer les actions effectuées par un système, souvent sous le compte « Système », de celles réalisées par une personne, et facilitent ainsi l’analyse de l’automatisation. Pourquoi est-ce important ? Permet de suivre les performances par utilisateur et d’analyser la séparation des tâches. Où trouver ces données Oracle Fusion Financials : colonnes CREATED_BY ou LAST_UPDATED_BY, reliées aux tables des utilisateurs. Exemples sysadminjsmithfinance_batch_job | |||
| Nom de l’agent de recouvrement CollectorName | Nom de l’agent ou de la ressource chargé du recouvrement de la facture. | ||
| Description Cet attribut identifie l’employé ou le membre de l’équipe chargé de recouvrer le paiement de la facture. Il constitue la dimension clé du Dashboard « Volume de traitement par agent de recouvrement ». Les données de ce champ permettent à l’organisation de mesurer la productivité de chaque agent, de repérer les besoins de formation et de répartir la charge de travail. Elles contribuent à clarifier les responsabilités et à uniformiser les efforts de recouvrement au sein de l’équipe financière. Pourquoi est-ce important ? Essentiel à l’analyse de la performance des ressources et à l’équilibrage de la charge de travail. Où trouver ces données Oracle Fusion Financials : AR_COLLECTORS.NAME associé au profil client. Exemples John SmithÉquipe de recouvrement AJane Doe | |||
| Nom du client CustomerName | Nom de l’entité facturée dans le cadre de la transaction. | ||
| Description Cet attribut identifie le client associé à la facture. Il est essentiel pour analyser les comportements de paiement, la fréquence des litiges et l’efficacité du recouvrement à l’échelle du client. Les analystes utilisent ce champ pour repérer les clients qui paient souvent en retard ou contestent fréquemment leurs factures. Ces informations alimentent le Dashboard « Analyse du comportement de paiement des clients » et aident à adapter les conditions de crédit et les stratégies de recouvrement au profil de chaque client. Pourquoi est-ce important ? Essentiel à l’analyse centrée sur le client et à l’évaluation des risques. Où trouver ces données Oracle Fusion Financials : HZ_PARTIES.PARTY_NAME, associé via BILL_TO_CUSTOMER_ID. Exemples Acme CorpGlobex CorporationSoylent Corp | |||
| Segment de clientèle CustomerSegment | Classification du client selon sa taille, son secteur d’activité ou son niveau de risque. | ||
| Description Cet attribut répartit les clients en catégories telles que stratégique, grande entreprise, PME ou risque élevé. Il est souvent dérivé de la classe ou de la catégorie de profil client dans Oracle Fusion. Cet attribut permet d’analyser les variantes du processus selon les segments de marché. Il aide, par exemple, à vérifier si les clients stratégiques bénéficient du niveau de service personnalisé prévu ou si les clients à risque élevé font l’objet d’un suivi attentif de leurs paiements. Pourquoi est-ce important ? Permet d’analyser les stratégies de recouvrement et les risques par segment. Où trouver ces données Oracle Fusion Financials : HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Exemples Grande entreprisePetite entrepriseAdministration publiqueRisque élevé | |||
| Type de transaction TransactionType | Classification du document de créance : facture, avoir ou note de débit. | ||
| Description Cet attribut distingue les différents types de documents financiers. Les valeurs courantes comprennent les factures, les avoirs et les notes de débit. Cette distinction est essentielle pour le Dashboard « Volume d’avoirs et reprises ». En filtrant les données selon cet attribut, les analystes peuvent isoler les boucles de reprise liées aux avoirs ou se concentrer sur le flux principal de facturation. Cela permet de mieux comprendre la composition de la charge de travail liée aux créances clients. Pourquoi est-ce important ? Permet de distinguer les factures standard des ajustements et des corrections. Où trouver ces données Oracle Fusion Financials : RA_CUST_TRX_TYPES_ALL.NAME Exemples FactureAvoirNote de débitFacturation complémentaire | |||
| Unité opérationnelle BusinessUnit | Entité opérationnelle de l’organisation responsable de la facture. | ||
| Description Cet attribut correspond à l’ID d’organisation dans Oracle Fusion et désigne l’unité opérationnelle ou la division à laquelle appartient la créance. Il permet de comparer les performances des processus entre les différentes entités de l’entreprise. La comparaison d’indicateurs comme le temps de résolution des litiges ou le délai moyen de paiement client entre les unités opérationnelles aide la direction à repérer les équipes les plus performantes et à uniformiser les bonnes pratiques. Elle met également en évidence les unités qui pourraient avoir besoin de ressources supplémentaires ou d’une refonte de leurs processus. Pourquoi est-ce important ? Dimension essentielle pour comparer les performances et établir des références entre les entités de l’organisation. Où trouver ces données Oracle Fusion Financials : HR_ORGANIZATION_UNITS.NAME, associé via ORG_ID. Exemples Ventes, est des États-UnisServices, EMEAIndustrie manufacturière, Asie-Pacifique | |||
| Code de devise CurrencyCode | Devise dans laquelle le montant de la facture est exprimé. | ||
| Description Cet attribut précise la devise, par exemple USD ou EUR, dans laquelle les montants sont exprimés. Il est nécessaire pour interpréter correctement le montant de la facture et effectuer des conversions si les rapports doivent être établis dans une devise commune. Pour les organisations internationales, cet attribut permet d’analyser les performances de recouvrement dans différentes régions économiques et aux équipes financières de distinguer les effets de change des performances opérationnelles des processus. Pourquoi est-ce important ? Précise le contexte des valeurs financières dans les environnements multidevises. Où trouver ces données Oracle Fusion Financials : RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Exemples USDEURGBPJPY | |||
| Conditions de paiement PaymentTerms | Conditions convenues pour le délai de paiement (par exemple, paiement à 30 jours). | ||
| Description Cet attribut définit le délai de paiement convenu par contrat. Il sert à calculer la date d’échéance et est indispensable au Dashboard « Efficacité de la stratégie de recouvrement ». Les différences de conditions de paiement entre clients peuvent expliquer les écarts de DSO. Cet attribut permet aux analystes de comparer les performances sur une base cohérente : un client bénéficiant d’un délai de 60 jours n’est ainsi pas considéré à tort comme un mauvais payeur par rapport à un client soumis à un délai de 30 jours. Pourquoi est-ce important ? Permet de comparer les délais de paiement aux conditions contractuelles. Où trouver ces données Oracle Fusion Financials : RA_TERMS.NAME Exemples Paiement à 30 joursImmédiat2 % sous 10 jours, net à 30 joursPaiement à 60 jours | |||
| Date limite pour bénéficier de l’escompte DiscountEligibilityDate | Dernière date à laquelle le client peut payer pour bénéficier d’un escompte pour paiement anticipé. | ||
| Description Cet attribut indique la date limite à laquelle le client peut bénéficier de conditions telles que « 2 % sous 10 jours, net à 30 jours » (2 % de remise si le paiement est effectué sous 10 jours). Il est nécessaire au Dashboard « Analyse des escomptes pour paiement anticipé ». La comparaison des paiements à cette date permet de calculer le taux de recours aux escomptes pour paiement anticipé. L’entreprise peut ainsi déterminer si sa politique d’escompte accélère effectivement les encaissements ou si les clients n’en tiennent pas compte. Pourquoi est-ce important ? Permet d’évaluer l’efficacité des incitations et leur effet sur les encaissements. Où trouver ces données Oracle Fusion Financials : AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Exemples 2023-11-102023-12-05 | |||
| Motif du litige DisputeReason | Catégorie ou code de motif attribué à l’ouverture d’un litige. | ||
| Description Cet attribut indique le motif fourni lors de l’activité « Litige ouvert ». Les valeurs courantes peuvent être « Erreur de prix », « Écart de quantité » ou « Marchandise endommagée ». L’analyse de cet attribut dans le Dashboard « Cycle de vie des litiges et goulots d’étranglement » aide à déterminer les causes des retards de paiement. Si les « Erreurs de prix » sont fréquentes, l’entreprise peut examiner le processus de devis en amont plutôt que de se limiter au recouvrement. Pourquoi est-ce important ? Essentiel pour analyser les causes des retards de paiement et des reprises. Où trouver ces données Oracle Fusion Financials : RA_CM_REQUESTS.REASON_CODE ou AR_DISPUTE_HISTORY. Exemples Litige sur le prixErreur fiscaleMarchandise non reçueFacturation en double | |||
| Région Region | Région géographique associée à l’unité opérationnelle ou au client. | ||
| Description Cet attribut associe la transaction à une zone géographique plus vaste, comme l’Amérique du Nord, l’EMEA ou l’Asie-Pacifique. Il est utile pour les rapports de synthèse destinés à la direction et pour le Dashboard « Tendances du DSO et du cycle de trésorerie ». L’analyse par région tient compte des différences de pratiques de paiement, par exemple des délais habituellement plus longs en Europe du Sud qu’aux États-Unis. Elle permet aussi d’interpréter les KPI mondiaux en fonction du contexte local. Pourquoi est-ce important ? Permet de segmenter les données par grandes zones géographiques pour les rapports internationaux. Où trouver ces données Oracle Fusion Financials : dérivé de l’unité opérationnelle ou de l’adresse du client. Exemples Amérique du NordEMEAAsie-PacifiqueAmérique latine | |||
| Reprise IsRework | Indique si la facture a fait l’objet de corrections ou de cycles de litige. | ||
| Description Cet attribut booléen indique si une facture a donné lieu à des activités de correction d’erreurs, telles que « Avoir émis » ou « Facture ajustée ». Il est utilisé dans le Dashboard « Volume des avoirs et reprises ». Le repérage des cas avec reprise permet de distinguer les processus qui suivent le « Parcours nominal » de ceux qui posent problème. Un taux élevé de reprises signale souvent des problèmes de qualité des données de référence ou de saisie des commandes en amont. Pourquoi est-ce important ? Met en évidence les tâches inutiles et les inefficacités du flux de processus. Où trouver ces données Calculé : vrai si le cas contient « Avoir émis » ou « Litige ouvert ». Exemples truefalse | |||
| Source de création CreationSource | Origine de la facture, indiquant si elle a été saisie manuellement ou importée. | ||
| Description Cet attribut indique comment la facture a été intégrée au système Oracle : par exemple, par « Saisie manuelle », « AutoInvoice » ou au moyen de flux externes spécifiques. Il sert d’équivalent au champ générique « Canal ». Cet attribut est essentiel pour le Dashboard « Suivi de l’automatisation de l’affectation des paiements ». Il permet de distinguer les processus entièrement numériques de ceux qui nécessitent une configuration manuelle. Un volume élevé de factures en « Saisie manuelle » peut révéler un manque d’intégration en amont ou des lacunes du système. Pourquoi est-ce important ? Indique le degré d’automatisation en amont et l’origine des données. Où trouver ces données Oracle Fusion Financials : RA_BATCH_SOURCES_ALL.NAME Exemples AutoInvoiceManuelMise en œuvre des projetsGestion des commandes | |||
Activités liées aux créances clients
| Activité | Description | ||
|---|---|---|---|
| Facture apurée | État final dans lequel la facture est clôturée dans le système, généralement parce que le solde est nul à la suite d’un paiement, d’un avoir ou d’un ajustement. | ||
| Pourquoi est-ce important ? L’horodatage de cet événement sert à calculer le délai moyen de paiement client. Il marque la fin de l’instance du processus. Où trouver ces données Identifié lorsque STATUS passe à « CL » (Closed) dans AR_PAYMENT_SCHEDULES_ALL. Données à recueillir Comparer le champ de statut avant et après Type d’événement inferred | |||
| Facture créée | Cette activité marque la création initiale de l’enregistrement de facture dans le système. Elle indique l’horodatage de la première sauvegarde de l’en-tête de transaction dans les tables Oracle Receivables. | ||
| Pourquoi est-ce important ? Cet événement marque le début du cycle de vie du processus et sert de référence pour le calcul de l’ancienneté. Il est essentiel au calcul du temps de cycle total et du délai d’envoi. Où trouver ces données Dérivé de la table RA_CUSTOMER_TRX_ALL, à partir de la colonne CREATION_DATE ou TRX_DATE. Données à recueillir Enregistré lors de l’insertion de la ligne de transaction Type d’événement explicit | |||
| Facture envoyée | Correspond à l’envoi de la facture au client par courrier, e-mail ou XML. Cet événement marque le transfert de la facture de l’organisation au client. | ||
| Pourquoi est-ce important ? Cet indicateur est essentiel pour mesurer la performance d’envoi des factures. Tout délai entre la création et l’envoi retarde directement le cycle de recouvrement. Où trouver ces données Déduit de PRINTING_ORIGINAL_DATE dans RA_CUSTOMER_TRX_ALL ou des journaux spécifiques d’Oracle Collaboration Messaging Framework en cas d’utilisation de XML. Données à recueillir Comparer le champ de statut avant et après Type d’événement inferred | |||
| Facture finalisée | Indique que la création de la facture est terminée et que celle-ci peut être traitée, imprimée et comptabilisée. Cet événement survient lorsque le statut de la transaction passe d’incomplet à complet. | ||
| Pourquoi est-ce important ? Permet de distinguer le temps de préparation de la durée de traitement. Les retards à cette étape signalent des goulots d’étranglement dans le processus interne de génération des factures. Où trouver ces données Identifié lorsque COMPLETE_FLAG passe à « Y » dans RA_CUSTOMER_TRX_ALL. Données à recueillir Comparer le champ de statut avant et après Type d’événement inferred | |||
| Paiement intégral reçu | Survient lorsqu’un encaissement ramène le solde de la facture à zéro. Il s’agit du principal événement de réussite du processus de recouvrement. | ||
| Pourquoi est-ce important ? Cet indicateur est essentiel à l’analyse des escomptes pour paiement anticipé. La date de cet événement permet de vérifier si le paiement a été reçu pendant la période d’escompte. Où trouver ces données Dérivé de AR_RECEIVABLE_APPLICATIONS_ALL, lorsque STATUS = 'APP' et que AMOUNT_DUE_REMAINING est égal à 0. Données à recueillir Déduire en comparant le champ X au champ Y Type d’événement calculated | |||
| Paiement partiel comptabilisé | Survient lorsqu’un encaissement est imputé à la facture, mais que son montant est inférieur au solde total dû. La facture reste alors ouverte, avec un solde réduit. | ||
| Pourquoi est-ce important ? Une fréquence élevée indique des paiements fractionnés (indicateur de fréquence des paiements partiels), qui augmentent le travail de rapprochement. Où trouver ces données Dérivé de AR_RECEIVABLE_APPLICATIONS_ALL, lorsque STATUS = 'APP' et AMOUNT_APPLIED < AMOUNT_DUE_REMAINING. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Avoir émis | Enregistre la création d’une transaction d’avoir imputée à la facture. Celle-ci réduit le solde dû, souvent à la suite d’un litige ou d’un retour. | ||
| Pourquoi est-ce important ? Permet de suivre le taux de reprises liées aux avoirs et les pertes de revenus. Des avoirs fréquents peuvent révéler des erreurs de facturation systémiques. Où trouver ces données Dérivé de RA_CUSTOMER_TRX_ALL, lorsque TRX_TYPE correspond à Credit Memo et que RELATED_CUSTOMER_TRX_ID correspond à la facture. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Facture ajustée | Enregistre les ajustements manuels du solde de la facture, comme les petites créances abandonnées ou les ajustements de change, à distinguer des avoirs. | ||
| Pourquoi est-ce important ? Aide à repérer les pertes de revenus et les parcours de processus non standard où les soldes sont apurés sans paiement. Où trouver ces données Dérivé de la table AR_ADJUSTMENTS_ALL associée à la facture. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Facture comptabilisée dans le grand livre | Enregistre la finalisation des écritures comptables de la facture et leur transfert dans le grand livre. Cette étape contribue au respect des exigences financières et prépare la clôture de la période. | ||
| Pourquoi est-ce important ? Même si ces délais ne sont pas visibles par le client, ils ont une incidence sur le cycle de clôture financière et la rapidité de production des rapports. Où trouver ces données Dérivé de GL_DATE dans la table RA_CUST_TRX_LINE_GL_DIST_ALL. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Facture passée en perte | Type d’ajustement particulier : le solde restant est jugé irrécouvrable et passé en perte. Il s’agit d’un état final défavorable. | ||
| Pourquoi est-ce important ? Cet indicateur est essentiel au suivi de la santé financière. Il permet de distinguer l’efficacité opérationnelle, mesurée par la rapidité des paiements, des problèmes de qualité du crédit. Où trouver ces données Dérivé de AR_ADJUSTMENTS_ALL, lorsque le type d’ajustement est « Write-off » ou qu’il est associé à un compte de créances irrécouvrables. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Litige ouvert | Marque l’ouverture d’un litige officiel concernant la facture. Les activités de recouvrement habituelles sont suspendues pendant l’examen du dossier. | ||
| Pourquoi est-ce important ? Indicateur important de goulot d’étranglement. Un taux élevé de litiges peut révéler des problèmes de qualité en amont, liés à l’exécution des commandes ou à l’exactitude de la facturation. Où trouver ces données Identifié dans les enregistrements de RA_CM_REQUESTS_ALL ou dans les flux de travail de demande d’avoir associés à la facture. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Litige résolu | Indique la fin de l’examen du litige. Celui-ci peut aboutir à l’approbation d’un avoir si le litige est fondé, ou à son rejet dans le cas contraire. | ||
| Pourquoi est-ce important ? Nécessaire au calcul du temps moyen de résolution des litiges. Des délais de résolution longs nuisent à la satisfaction client et au délai moyen de paiement client. Où trouver ces données Dérivé du changement de statut vers « APPROVED » ou « REJECTED » dans RA_CM_REQUESTS_ALL. Données à recueillir Comparer le champ de statut avant et après Type d’événement inferred | |||
| Promesse de paiement reçue | Enregistre l’engagement du client à régler un montant précis avant une date donnée. En général, un agent de recouvrement saisit cet engagement manuellement lors d’un échange avec le client. | ||
| Pourquoi est-ce important ? Cet indicateur est essentiel à l’analyse du comportement de paiement des clients. Les promesses non tenues signalent un risque de crédit élevé et un risque accru de créances irrécouvrables. Où trouver ces données Dérivé de la table IEX_PROMISE_DETAILS du module Collections. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Relance de paiement envoyée | Enregistre l’envoi au client d’une lettre de relance ou d’un rappel de paiement. Cet événement est généré par le module Advanced Collections. | ||
| Pourquoi est-ce important ? Cet indicateur est essentiel pour analyser l’efficacité de la stratégie de recouvrement. Le rapprochement de ces données avec les paiements permet de déterminer quelles stratégies de relance accélèrent le recouvrement. Où trouver ces données Présent dans les tables IEX_DUNNING ou IEX_STRATEGY_WORK_ITEMS associées au compte client. Données à recueillir Enregistré lors de l’exécution de la transaction X Type d’événement explicit | |||
| Relevé bancaire rapproché | Indique que l’encaissement imputé à la facture a été rapproché d’une ligne du relevé bancaire. Cela confirme que les fonds ont bien été crédités sur le compte bancaire. | ||
| Pourquoi est-ce important ? Mesure le niveau d’automatisation de l’affectation des paiements. Le délai entre la comptabilisation du paiement et son rapprochement bancaire correspond à des fonds dont la réception n’est pas encore confirmée. Où trouver ces données Jointure entre AR_CASH_RECEIPTS_ALL et CE_STATEMENT_LINES (Cash Management) au moyen de la référence de rapprochement. Données à recueillir Comparer le champ de statut avant et après Type d’événement inferred | |||
Guides d’extraction
Étapes
Accédez à la console Oracle BI Cloud Connector (BICC). Ouvrez la section Manage Offerings and Data Stores.
Configurez la connexion de stockage. Vérifiez que vous disposez d’une connexion valide à Oracle Universal Content Management (UCM) ou à un stockage d’objets externe, comme OCI Object Storage, où seront déposés les fichiers CSV/Parquet extraits.
Sélectionnez l’offre Financials. Recherchez cette offre pour accéder aux View Objects des créances clients.
Sélectionnez et configurez les View Objects (VO). Choisissez les Public View Objects (PVO) nécessaires à la création du journal d’événements. Les PVO essentiels comprennent :
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (en-têtes de facture)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (lignes de facture)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (paiements et affectations de notes de crédit)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (ajustements et abandons de créances)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (promesses de paiement)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (relances)
Définissez les critères de filtrage (réduction du volume). Dans Manage Extract Schedules ou dans la configuration du PVO, appliquez un filtre sur CreationDate ou LastUpdateDate pour extraire les données correspondant à la période d’analyse, par exemple les 12 derniers mois.
Planifiez l’extraction. Créez une planification quotidienne pour ces extractions. Choisissez Incremental Load afin de ne récupérer que les données modifiées après le chargement initial complet.
Téléchargez et ingérez les fichiers. Utilisez un script automatisé ou un outil d’intégration pour récupérer les fichiers depuis UCM ou Object Storage et les charger dans les tables de préparation de votre entrepôt de données, par exemple STG_AR_TRX_HEADER et STG_AR_APPLICATIONS.
Appliquez les règles de transformation. Exécutez le script SQL fourni dans la section Query sur vos tables de préparation afin de convertir les données relationnelles au format du journal d’événements ProcessMind.
Vérifiez les types de données. Lors de la transformation, convertissez les champs de date en objets datetime et vérifiez que les montants numériques conservent correctement leurs décimales.
Exportez au format CSV/Parquet. Exportez le résultat final de votre entrepôt de données dans un fichier unique.
Importez le fichier dans ProcessMind. Associez InvoiceNumber à Case ID, ActivityName à Activity et EventStartDateTime à Timestamp.
Configuration
- Fréquence d’extraction : une extraction incrémentielle quotidienne est recommandée pour récupérer les dernières modifications de statut.
- Chargement initial : sélectionnez « Full Extract » pour la première exécution, puis passez à « Incremental » en vous basant sur Last Update Date.
- PVO clés : TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtrage par date : appliquez un filtre CreationDate >= '202X-01-01' pour limiter le volume.
- Taille de récupération : la valeur par défaut est généralement de 50000 lignes. Ajustez-la selon la bande passante réseau si vous utilisez le téléchargement UCM.
- Clés primaires : vérifiez que votre entrepôt de données en aval gère les opérations de mise à jour ou d’insertion à l’aide des clés primaires des PVO, généralement CustomerTrxId, ReceivableApplicationId, etc., afin d’éviter les doublons.
- Historique d’audit : les PVO BICC standard enregistrent l’état actuel. Pour obtenir l’horodatage exact des changements de statut passés, comme l’ouverture d’un litige, il peut être nécessaire d’activer les politiques d’audit dans Fusion et d’extraire les Audit View Objects si les tables transactionnelles ne conservent pas l’historique.
a Exemple de requête sql
/*
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 à Oracle Fusion Applications : accédez à Tools > Reports and Analytics. Cliquez sur Browse Catalog pour ouvrir l’interface Oracle BI Publisher.
Créez un modèle de données : cliquez sur Nouveau (en haut à gauche), puis sélectionnez Données. Ce conteneur accueillera la logique d’extraction SQL.
Définissez un jeu de données SQL : dans l’arborescence Modèle de données à gauche, cliquez sur Data Sets, puis sélectionnez New Data Set > SQL Query.
Configurez 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. Vous pourrez ainsi accéder aux tables AR et RA nécessaires.Collez la requête : copiez le script SQL complet fourni dans la section Query ci-dessous et collez-le dans le champ de texte SQL Query. Ne modifiez pas la logique principale, sauf si vous devez renommer certains Flexfields (DFF).
Définissez les paramètres : la requête contient le paramètre fictif
:p_start_datepour filtrer les transactions selon leur date de création. Dans l’onglet Parameters du modèle de données, créez un paramètre nommép_start_date, choisissez Date comme type de données et définissez une valeur par défaut, par exemple01-01-2023.Affichez les données : cliquez sur l’onglet Données, saisissez une date valide pour le paramètre, puis cliquez sur Afficher. Vérifiez que le résultat contient des lignes avec des colonnes telles que
InvoiceNumber,ActivityNameetEventStartDateTime.Enregistrez le modèle de données : enregistrez l’objet dans le répertoire Shared Folders > Personnalisé, par exemple
/Shared Folders/Custom/ProcessMining/AR_Extract_DM.Planifiez l’exportation : pour extraire de grands volumes, cliquez sur Create Report à partir de ce modèle de données. Dans l’éditeur de rapports, vérifiez que la mise en page est un simple tableau, puis enregistrez le rapport. Utilisez ensuite le Scheduler pour l’exécuter et exporter les données au format CSV ou XML.
Mettez en forme le fichier final : téléchargez le fichier de sortie. S’il s’agit d’un CSV, vérifiez que le format des dates est cohérent, de préférence ISO 8601. Importez le fichier dans ProcessMind en associant
InvoiceNumberà Case ID,ActivityNameà Activity etEventStartDateTimeà Timestamp.
Configuration
- Source de données : utilisez
ApplicationDB_FSCMpour accéder aux tables Financials. - Filtre de date : la requête utilise
ra_customer_trx_all.creation_date >= :p_start_date. Configurez ce paramètre pour charger les données sur une période glissante, par exemple les 12 derniers mois. - Performances : pour les jeux de données de plus de 100 000 factures, envisagez d’ajouter une limite
ROWNUMpendant les tests ou de répartir l’extraction par mois. - Filtrage par unité opérationnelle : si votre organisation compte plusieurs unités opérationnelles 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 associe les identifiants utilisateur
CREATED_BYaux noms d’utilisateur viaFND_USER. Vérifiez que le compte utilisé pour l’extraction peut lireFND_USER. - Advanced Collections : les activités « Payment Reminder Sent » et « Promise to Pay Received » utilisent les tables du module IEX (Advanced Collections). Si vous n’utilisez pas ce module, ces sections ne renverront aucune 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 Prêt à commencer ?
Appliquez ce modèle à votre environnement Oracle Fusion pour transformer vos données financières en analyses concrètes. Notre équipe peut vous aider à faire correspondre vos règles métier à ces normes.
Accélérez dès aujourd’hui le recouvrement de vos créances clients
Réduisez le délai moyen de paiement client de 15 à 20 jours et comblez dès maintenant les écarts de trésorerie.
Aucune carte bancaire requise. Configuration en 5 minutes.