貴社の売掛金データテンプレート
貴社の売掛金データテンプレート
- AR分析に推奨される属性の包括的なセット
- 監視すべき主要なプロセス活動とマイルストーン
- Oracle Fusion Financials向けのシステム固有のデータ抽出ガイド。
売掛金属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 売掛金プロセスで実行された特定のイベントまたはアクション。 | ||
| 説明 この属性は、請求書の作成、支払いの計上、異議申し立ての開始など、プロセス内で実行されたステップを記述します。これにより、プロセスマップのフローが定義され、イベントのシーケンスを可視化できます。 アナリストは、このフィールドを使用してプロセスバリアント、ループ、およびボトルネックを特定します。標準作業手順への順守を判断し、再作業や手動介入などの特定のイベントの頻度を計算するために不可欠です。 その重要性 プロセスフローを定義し、イベントのシーケンスを可視化するために必要です。 取得元 取引履歴テーブル(例:AR_PAYMENT_SCHEDULES_ALL、RA_CUST_TRX_LINE_GL_DIST_ALL)から導出されます。 例 請求書作成支払いリマインダー送付済み一部入金紛争ケース開始 | |||
| イベントのタイムスタンプ EventStartDateTime | `アクティビティ`が`発生`した`特定`の`日付`と`時刻`です。 | ||
| 説明 この属性は、システム内で活動が行われた正確な瞬間を記録します。イベントを時系列で並べ替えるために使用され、プロセスマイニングにおけるすべての時間ベースの計算の基礎となります。 タイムスタンプを分析することで、企業は請求書作成から発送までの期間など、活動間のサイクルタイムを計算できます。これは、売掛金回収日数(DSO)のようなKPIを測定し、支払い行動の時間的パターンを特定するために不可欠です。 その重要性 期間、リードタイム、サイクルタイムの計算の基礎となります。 取得元 Oracle Fusion Financials: 様々な取引テーブルにわたるCREATION_DATEまたはLAST_UPDATE_DATE列。 例 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| 請求書番号 InvoiceNumber | Oracle Fusionで請求書取引に割り当てられた一意の識別子。 | ||
| 説明 この属性は、売掛金モジュール内の財務上の義務を識別するための一意のキーとして機能します。調整、異議申し立て、支払いなど、すべての後続活動を元の販売取引にリンクします。 プロセスマイニング分析では、この属性はケースIDとして機能します。これにより、アナリストは売掛金が作成されてから完全に消し込まれるか償却されるまでのエンドツーエンドのライフサイクルを追跡し、サイクルタイムとプロセスバリアントの計算を容易にします。 その重要性 与信から現金化までのライフサイクルを追跡するための基本的な分析単位です。 取得元 Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.TRX_NUMBER 例 INV-2023-00110056789AR-99887755002211 | |||
| ソースシステム SourceSystem | データが生成された記録システム。 | ||
| 説明 この属性は、プロセスデータが抽出されたソフトウェア環境を識別します。このコンテキストでは、データがOracle Fusion Financials環境からのものであることを確認します。 単一システムからの抽出では多くの場合静的な値ですが、複数のERPインスタンスからのデータを統合する場合や、サードパーティの回収ツールを連携させる場合には不可欠となります。これにより、複数システムにわたるプロセスランドスケープにおけるデータリネージと追跡可能性が保証されます。 その重要性 データの出所を保証し、異なるERPインスタンスを区別します。 取得元 抽出時にハードコードされるか、データパイプラインで構成されます。 例 Oracle Fusion FinancialsOracle Cloud ERP - 米国Oracle Cloud ERP - EMEA | |||
| 最終データ更新 LastDataUpdate | データがマイニングツールで最後に更新されたときのタイムスタンプ。 | ||
| 説明 この属性は、データセットが最後にソースのOracleシステムと同期された時期を示します。これにより、ユーザーは分析の最新性を理解し、インサイトが現在の業務状況を反映しているかどうかを確認できます。 このフィールドの監視は、特に未解決の異議申し立てや未適用現金などの運用監視において、ダッシュボードが最新情報を表示していることを確認するために重要です。 その重要性 データ鮮度と信頼性に関するコンテキストを提供します。 取得元 抽出時のシステム時刻。 例 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| ビジネスユニット BusinessUnit | 組織内で請求書を担当する運用エンティティ。 | ||
| 説明 この属性は、Oracle Fusionの組織IDにマッピングされ、売掛金を所有する特定の事業部門または部署を表します。これにより、企業内の異なる部門間でプロセスパフォーマンスをセグメント化することが可能になります。 異なる事業部門間で異議申し立て解決時間やDSOなどのKPIを比較することで、リーダーシップは高パフォーマンスのチームを特定し、ベストプラクティスを標準化するのに役立ちます。また、追加のリソースやプロセス再設計が必要な部門も浮き彫りになります。 その重要性 組織のベンチマーキングとパフォーマンス比較のための主要なディメンション。 取得元 Oracle Fusion Financials: ORG_IDを介してリンクされたHR_ORGANIZATION_UNITS.NAME。 例 米国東部セールスEMEAサービスAPAC製造 | |||
| ユーザー名 UserName | アクティビティを実行したシステムユーザー。 | ||
| 説明 この属性は、特定のアクティビティ(例:請求書の計上、銀行取引明細書の照合)を実行した人物のログインIDまたは名前を記録します。汎用的な「User(ユーザー)」フィールドにマッピングされます。 このデータは、コンプライアンス監査や「Collection Agent Throughput(回収担当者のスループット)」ダッシュボードにとって不可欠です。これにより、機械主導のアクション(多くの場合「System(システム)」ユーザーによって実行される)と人間のアクションを区別でき、自動化分析をサポートします。 その重要性 ユーザーレベルのパフォーマンス追跡と職務分掌分析を可能にします。 取得元 Oracle Fusion Financials: ユーザーテーブルに結合されたCREATED_BYまたはLAST_UPDATED_BY列。 例 システム管理者jsmithfinance_batch_job | |||
| 取引タイプ TransactionType | 未収金ドキュメントの分類(請求書、クレジットメモ、デビットメモ)。 | ||
| 説明 この属性は、異なる種類の財務文書を区別します。一般的な値には、請求書(Invoice)、クレジットメモ(Credit Memo)、デビットメモ(Debit Memo)などがあります。この区別は、「Credit Memo Volume and Rework(クレジットメモの発生件数と再作業)」ダッシュボードにとって極めて重要です。 この属性でフィルタリングすることで、アナリストはクレジットメモによって引き起こされる再作業ループを特定したり、主要な請求フローに特化して分析したりできます。これにより、売掛金業務の構成を理解するのに役立ちます。 その重要性 標準請求書を調整および修正から区別します。 取得元 Oracle Fusion Financials: RA_CUST_TRX_TYPES_ALL.NAME 例 請求書クレジットメモデビットメモチャージバック | |||
| 回収担当者名 CollectorName | 請求書に割り当てられた回収担当者またはリソースの名前。 | ||
| 説明 この属性は、請求書の支払いを回収する責任を負う特定の従業員またはチームメンバーを識別します。「Collection Agent Throughput(回収担当者のスループット)」ダッシュボードの主要なディメンションです。 このフィールドのデータにより、組織は担当者ごとの生産性を測定し、トレーニングの必要性を特定し、ワークロードのバランスを取ることができます。これにより、説明責任が促進され、財務チーム全体の回収活動の標準化に役立ちます。 その重要性 リソースパフォーマンス分析とワークロードバランス調整の鍵となります。 取得元 Oracle Fusion Financials: 顧客プロファイルに関連付けられたAR_COLLECTORS.NAME。 例 John Smith回収チームAジェーン・ドウ | |||
| 支払期日 DueDate | 支払いが受領される予定の日付。 | ||
| 説明 この属性は、請求書日付と支払条件に基づいて計算される支払い期限です。支払いが遅延しているかどうかを判断するための基準点となります。 「Collection Reminder Timing Variance(回収リマインダータイミングのばらつき)」KPIで使用され、チームが期限に対してどれだけ積極的に行動しているかを測定します。また、未収金を期日内または延滞として分類するための閾値としても使用されます。 その重要性 延滞と期限内パフォーマンスを判断するための主要な基準。 取得元 Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DUE_DATE 例 2023-11-302023-12-152024-01-01 | |||
| 自動化 IsAutomated | アクティビティが人の介入なしに実行されたかどうかを示すフラグ。 | ||
| 説明 このブール型属性は、活動がシステムプロセス(例:AutoInvoice、AutoLockbox)によって実行されたか、人間によって実行されたかを判断します。「Cash Application Automation Rate」KPIの主要な推進要因です。 自動化された活動と手動の活動の比率を時系列で追跡することで、組織はデジタルトランスフォーメーションイニシアチブの成功を検証し、依然として頑固に手作業で行われている特定のプロセスステップを特定できます。 その重要性 デジタルトランスフォーメーションと効率性測定のための主要な指標です。 取得元 ユーザー名に基づく計算ロジック(例:User == 'BATCH_USER'の場合にtrue)。 例 truefalse | |||
| 請求金額 InvoiceAmount | 請求書の合計金額。 | ||
| 説明 この属性は、請求書の元の未収金額を表します。多くの分析における主要な重み付け因子として機能し、企業が高価値の取引を低価値の量よりも優先できるようにします。 「Unapplied Credits and Leakage View(未適用クレジットと漏洩ビュー)」のコンテキストでは、このフィールドは未解決項目の財務的影響を定量化するのに役立ちます。また、加重平均売掛金回収日数(Days Sales Outstanding)を計算するためにも使用され、プロセス効率に関するより財務中心的な視点を提供します。 その重要性 分析に財務的な重みを与え、価値に基づいた優先順位付けをサポートします。 取得元 Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL 例 1500.00250.5010000.00 | |||
| 顧客セグメント CustomerSegment | 規模、業種、またはリスクに基づいた顧客の分類。 | ||
| 説明 この属性は、顧客をStrategic(戦略的)、Enterprise(大企業)、SME(中小企業)、またはHigh Risk(高リスク)といったグループに分類します。これは、Oracle Fusionの顧客クラスまたはプロファイルクラスから派生することがよくあります。 この属性を使用することで、異なる市場セグメント間でのプロセスバリアントの分析が可能になります。例えば、Strategic顧客が意図された質の高いサービスを受けているか、あるいはHigh Risk顧客が支払いコンプライアンスについて厳密に監視されているかを確認するのに役立ちます。 その重要性 回収戦略とリスクのセグメント別分析を可能にします。 取得元 Oracle Fusion Financials: HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID。 例 エンタープライズ中小企業政府高リスク | |||
| 顧客名 CustomerName | 取引で請求されたエンティティの名前。 | ||
| 説明 この属性は、請求書に関連付けられた顧客を識別します。顧客レベルでの支払い行動、異議申し立ての頻度、および回収効率を分析するための基本となります。 アナリストは、このフィールドを使用して、頻繁に支払いが遅れたり異議申し立てをしたりする特定の顧客を特定します。このインサイトは、「Customer Payment Behavior Analysis(顧客支払い行動分析)」ダッシュボードをサポートし、個々の顧客プロファイルに合わせて信用条件や回収戦略を調整するのに役立ちます。 その重要性 顧客中心の分析とリスクプロファイリングに不可欠です。 取得元 Oracle Fusion Financials: BILL_TO_CUSTOMER_IDを介してリンクされたHZ_PARTIES.PARTY_NAME。 例 アクメ株式会社グロベックス・コーポレーションソイレント社 | |||
| 作成元 CreationSource | 請求書の発生源。手動で入力されたか、インポートされたかを示します。 | ||
| 説明 この属性は、請求書がManual Entry(手動入力)、AutoInvoice(自動請求)、または特定の外部フィードを介してOracleシステムにどのように入力されたかを示します。これは「Channel(チャネル)」汎用マッピングのプロキシです。 これは「Cash Application Automation Monitor(キャッシュアプリケーション自動化モニター)」にとって非常に重要です。完全にデジタル化されたプロセスと手動設定が必要なプロセスを区別するのに役立ちます。Manual Entryの量が多い場合は、上流統合の不足やシステム欠陥を示している可能性があります。 その重要性 上流の自動化レベルとデータ発生元を特定します。 取得元 Oracle Fusion Financials: RA_BATCH_SOURCES_ALL.NAME 例 AutoInvoice手動プロジェクト実装受注管理 | |||
| 割引適用可能日 DiscountEligibilityDate | 顧客が早期支払割引を受けるために支払うことができる最終日。 | ||
| 説明 この属性は、2/10 Net 30(10日以内に支払われた場合に2%割引)のような条件を利用できる顧客の最終期限を示します。「Early Payment Discount Analytics(早期支払割引分析)」ダッシュボードに必要です。 この日付に対する支払いを分析することで、「Early Payment Discount Capture Rate(早期支払割引利用率)」が明らかになります。これにより、企業は割引戦略がキャッシュフローを効果的に加速させているのか、それとも顧客に無視されているのかを理解するのに役立ちます。 その重要性 インセンティブの有効性分析とキャッシュフロー加速をサポートします。 取得元 Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE 例 2023-11-102023-12-05 | |||
| 地域 Region | 事業部門または顧客に関連付けられた地理的地域。 | ||
| 説明 この属性は、取引を北米、EMEA、APACなどのより広範な地理的地域にマッピングします。これは、高レベルのエグゼクティブ報告や「DSO and Cash Cycle Trends(DSOおよびキャッシュサイクル動向)」ダッシュボードに役立ちます。 地域分析は、支払い行動における文化的差異(例:南欧における標準支払条件が米国よりも長いなど)を考慮するのに役立ち、グローバルKPIが正しい地域コンテキストで解釈されることを保証します。 その重要性 グローバルレポート作成のための高レベルな地理的セグメンテーションを提供します。 取得元 Oracle Fusion Financials: 事業単位または顧客住所から導出。 例 北米EMEAAPACLATAM | |||
| 売掛金回転日数 DaysSalesOutstanding | 請求書作成から消込までの日数。 | ||
| 説明 この計算された属性は、Invoice Created(請求書作成)からInvoice Cleared(請求書消込)までの期間を測定します。「Average Days Sales Outstanding(平均売掛金回収日数)」KPIの直接的な計算値です。 これはダッシュボードで動的に計算することも可能ですが、ケースレベルで事前計算された属性として持つことで、フィルタリングやセグメンテーションが容易になります(例:DSOが60日を超えるすべてのケースを表示)。 その重要性 売掛金業務における決定的な効率性指標。 取得元 計算式: Date(請求書消込済み) - Date(請求書作成済み)。 例 45日間12日間60日間 | |||
| 手戻り IsRework | 請求書が修正または紛争ループを経たかどうかを示すフラグ。 | ||
| 説明 このブール型属性は、請求書がCredit Memo Issued(クレジットメモ発行済み)やInvoice Adjusted(請求書調整済み)など、エラー修正に関連する活動を経験したかどうかを識別します。「Credit Memo Volume and Rework(クレジットメモの発生件数と再作業)」ダッシュボードをサポートします。 再作業ケースを特定することは、「ハッピーパス」プロセスを問題のあるプロセスから分離するのに役立ちます。再作業率が高いことは、マスターデータまたは販売注文入力プロセスにおける上流のデータ品質問題の先行指標です。 その重要性 プロセスフローにおける無駄と非効率を特定します。 取得元 計算式: ケースに「クレジットメモ発行済み」または「紛争ケース開始」が含まれる場合にTrue。 例 truefalse | |||
| 支払条件 PaymentTerms | 支払いタイミングに関する合意された条件(例:Net 30)。 | ||
| 説明 この属性は、契約で合意された支払い期間を定義します。期日(Due Date)の計算に使用され、「Collection Strategy Effectiveness(回収戦略効果)」ダッシュボードに不可欠です。 顧客ごとの支払条件の差異は、DSOの違いを説明できます。この属性により、アナリストはパフォーマンスデータを正規化し、Net 60の顧客がNet 30の顧客と比較して「支払いが遅い顧客」として不当にフラグ付けされないようにします。 その重要性 契約上の合意に対する支払い速度を文脈化します。 取得元 Oracle Fusion Financials: RA_TERMS.NAME 例 支払条件:正味30日即時2/10 Net 30支払条件:正味60日 | |||
| 紛争理由 DisputeReason | 異議申し立てが開始された際に割り当てられるカテゴリまたは理由コード。 | ||
| 説明 この属性は、Dispute Case Opened(異議申し立て開始)活動が発生した際に提供される根拠を記録します。一般的な値には、Pricing Error(価格エラー)、Quantity Mismatch(数量不一致)、またはDamaged Goods(破損品)などが考えられます。 「Dispute Lifecycle and Bottlenecks(異議申し立てライフサイクルとボトルネック)」ダッシュボードでこの属性を分析することは、支払い遅延の根本原因を特定するのに役立ちます。Pricing Errorが頻繁に発生する場合、企業は回収プロセスだけでなく、上流の営業見積プロセスを調査する必要があると判断できます。 その重要性 支払い遅延と手戻りの根本原因分析に不可欠です。 取得元 Oracle Fusion Financials: RA_CM_REQUESTS.REASON_CODEまたはAR_DISPUTE_HISTORY。 例 価格に関する異議申し立て税金エラー商品未受領重複請求 | |||
| 通貨コード CurrencyCode | 請求書金額の通貨単位。 | ||
| 説明 この属性は、金融金額の通貨(例:USD、EUR)を指定します。請求金額を正しく解釈し、グローバルな報告通貨が必要な場合に通貨換算を行うために必要です。 グローバル組織にとって、この属性は異なる経済地域における回収パフォーマンスを分析するのに役立ち、財務チームが運用プロセスパフォーマンスから為替の影響を分離することを可能にします。 その重要性 多通貨環境における財務価値を文脈化します。 取得元 Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE 例 USDEURGBPJPY | |||
売掛金活動
| アクティビティ | 説明 | ||
|---|---|---|---|
| 一部入金 | 請求書に対して入金処理が行われたものの、その金額が未収残高の合計を下回る場合に発生します。この場合、請求書は残高が減少した状態で未消込として残ります。 | ||
| その重要性 高頻度は、照合作業を増加させる断片的な支払い行動(一部支払い頻度KPI)を示します。 取得元 STATUS = 'APP' かつ AMOUNT_APPLIED < AMOUNT_DUE_REMAINING のAR_RECEIVABLE_APPLICATIONS_ALLから取得。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 全額支払い受領済み | 入金処理によって請求書残高がゼロになったときに発生します。これは回収プロセスの主要な成功イベントです。 | ||
| その重要性 早期支払割引分析に不可欠です。このイベントのタイミングにより、割引期間内に現金が回収されたかどうかが決まります。 取得元 STATUS = 'APP' かつ AMOUNT_DUE_REMAINING が 0 のAR_RECEIVABLE_APPLICATIONS_ALLから取得。 取得 項目XとYを比較して派生 イベントタイプ calculated | |||
| 請求書 消込済み | 支払い、クレジットメモ、または調整により残高がゼロになったことによって、システム内で請求書がクローズされる最終状態。 | ||
| その重要性 このイベントのタイムスタンプは、売掛金回収日数(DSO)を計算するために使用されます。これはプロセスインスタンスの終了を表します。 取得元 AR_PAYMENT_SCHEDULES_ALLのSTATUSが「CL」(クローズ済み)に変わったときに識別されます。 取得 ステータスフィールドを前後で比較 イベントタイプ inferred | |||
| 請求書作成 | この活動は、システム内で請求書レコードが最初に作成されたことを示します。Oracle Receivablesテーブルにトランザクションヘッダーが初めて保存されたときのタイムスタンプをキャプチャします。 | ||
| その重要性 プロセスライフサイクルの開始と、滞留計算のベースラインを確立します。総サイクル時間と発送までのリードタイムを計算するために不可欠です。 取得元 RA_CUSTOMER_TRX_ALLテーブルのCREATION_DATEまたはTRX_DATE列から導出されます。 取得 取引行が挿入されたときにログ記録されます イベントタイプ explicit | |||
| 請求書完了済み | 請求書作成プロセスが完了し、請求書が処理、印刷、および転記の準備ができたことを示します。これは、トランザクションステータスが「未完了」から「完了」に変わるときに発生します。 | ||
| その重要性 起草時間と処理時間を区別します。ここでの遅延は、内部の請求書生成プロセスにおけるボトルネックを示します。 取得元 RA_CUSTOMER_TRX_ALLのCOMPLETE_FLAGが「Y」に遷移したときに識別されます。 取得 ステータスフィールドを前後で比較 イベントタイプ inferred | |||
| 請求書発送済み | 請求書が印刷、メール、またはXMLを介して顧客に送信されることを表します。これは、組織から顧客への引き渡しを意味します。 | ||
| その重要性 請求書発送パフォーマンスの測定に不可欠です。作成と発送の間のギャップは、キャッシュコレクションサイクルを直接遅延させます。 取得元 RA_CUSTOMER_TRX_ALLのPRINTING_ORIGINAL_DATE、またはXMLを使用している場合はOracle Collaboration Messaging Frameworkの特定のログから推測されます。 取得 ステータスフィールドを前後で比較 イベントタイプ inferred | |||
| GLへの請求書転記済み | 請求書の会計仕訳が確定し、総勘定元帳に転送されるイベントを記録します。これにより、財務上のコンプライアンスと期末決算の準備が確保されます。 | ||
| その重要性 顧客視点には影響しませんが、ここでの遅延は財務締めサイクルと報告の適時性に影響を与えます。 取得元 RA_CUST_TRX_LINE_GL_DIST_ALLテーブルのGL_DATEから導出されます。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| クレジットメモ発行済み | 請求書に適用されるクレジットメモ取引の作成を捕捉します。これにより、未収残高が減少し、多くの場合、紛争や返品に対応して行われます。 | ||
| その重要性 クレジットメモの再作業率と収益漏れを追跡します。頻繁なクレジットメモは、体系的な請求エラーを示唆しています。 取得元 TRX_TYPEがCredit MemoでRELATED_CUSTOMER_TRX_IDが請求書と一致するRA_CUSTOMER_TRX_ALLから取得。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 支払いリマインダー送付済み | 顧客への督促状または回収リマインダーの発行を捕捉します。このイベントはAdvanced Collectionsモジュールによって生成されます。 | ||
| その重要性 回収戦略の有効性分析に不可欠です。これを支払いと関連付けることで、どのリマインダー戦略が最も迅速な現金回収をもたらすかを判断するのに役立ちます。 取得元 顧客アカウントにリンクされたIEX_DUNNINGまたはIEX_STRATEGY_WORK_ITEMSテーブルにあります。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 支払い約束受領済み | 特定の金額を特定の日までに支払うという顧客からの約束を記録します。これは通常、回収担当者が顧客とのやり取り中に手動で入力します。 | ||
| その重要性 顧客の支払い行動分析の鍵となります。約束違反は高い信用リスクと将来の不良債権の可能性を示唆します。 取得元 回収モジュールのIEX_PROMISE_DETAILSテーブルから取得。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 紛争ケース開始 | 請求書に関する正式な異議申し立てが開始されたことを示します。これにより、問題が調査されている間、通常の回収活動は停止されます。 | ||
| その重要性 主要なボトルネック指標です。高い異議申し立て率は、履行や請求の正確性における上流工程の品質問題を強く示唆しています。 取得元 RA_CM_REQUESTS_ALLのレコード、または請求書にリンクされた特定のクレジットメモ要求ワークフローによって識別されます。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 紛争解決済み | 紛争調査の結論を示します。結果は、クレジットメモの承認(有効な紛争)または却下(無効な紛争)である可能性があります。 | ||
| その重要性 平均異議申し立て解決時間の計算に必要です。解決に時間がかかることは、顧客満足度やDSO(売掛金回収日数)に悪影響を及ぼします。 取得元 RA_CM_REQUESTS_ALLにおけるステータスの「承認済み」または「却下済み」への変更から導出されます。 取得 ステータスフィールドを前後で比較 イベントタイプ inferred | |||
| 請求書償却済み | 残りの残高が回収不能と見なされ、不良債権として償却される特定のタイプの調整です。これは負の最終状態です。 | ||
| その重要性 財務健全性監視に不可欠です。運用効率(支払い速度)を信用品質の問題から分離します。 取得元 調整タイプが「償却」に分類される、または不良債権口座にリンクされたAR_ADJUSTMENTS_ALLから取得。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 請求書調整済み | 少額の償却や通貨調整など、クレジットメモとは異なる請求残高への手動調整を捕捉します。 | ||
| その重要性 支払いなしで残高が消し込まれる、収益漏洩や非標準プロセスパスの特定に役立ちます。 取得元 請求書にリンクされたAR_ADJUSTMENTS_ALLテーブルから取得。 取得 トランザクションX実行時にログ記録 イベントタイプ explicit | |||
| 銀行取引明細書と照合済み | 請求書に適用された入金が、銀行取引明細書の明細と照合されたことを示します。これにより、実際に現金が銀行口座に入金されたことが確認されます。 | ||
| その重要性 キャッシュアプリケーションの自動化を測定します。支払い計上と銀行照合の間の乖離は、未確認の現預金を表します。 取得元 AR_CASH_RECEIPTS_ALLからCE_STATEMENT_LINES(現金管理)に、照合参照を介して結合されます。 取得 ステータスフィールドを前後で比較 イベントタイプ inferred | |||
抽出ガイド
ステップ
Oracle BI Cloud Connector (BICC) コンソールにアクセスします。「オファリングとデータストアの管理」セクションに移動します。
ストレージ接続を構成します。抽出されたCSV/Parquetファイルが保存されるOracle Universal Content Management (UCM) または外部オブジェクトストレージ(OCI Object Storageなど)への有効な接続があることを確認してください。
Financialsオファリングを選択します。Financialsオファリングを見つけて、売掛金ビューオブジェクトにアクセスします。
ビューオブジェクト(VO)の選択と構成。イベントログを構築するために必要な特定のパブリックビューオブジェクト(PVO)を選択する必要があります。必須のPVOは次のとおりです。
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (請求書ヘッダー)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (請求書明細)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (支払いとCM適用)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (調整と償却)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (支払い約束)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (督促/リマインダー)
フィルター条件(プルーニング)の定義。抽出スケジュールの管理またはPVO構成内で、分析期間(例:過去12ヶ月間)に関連するデータを抽出するためにCreationDateまたはLastUpdateDateにフィルターを設定します。
抽出のスケジュール設定。これらの抽出を毎日実行するジョブスケジュールを作成します。初期のフルロード後、変更されたデータのみを取得するために増分ロードを選択します。
ダウンロードと取り込み。自動スクリプトまたは統合ツールを使用して、UCM/オブジェクトストレージからファイルを取得し、データウェアハウスのステージングテーブル(例:STG_AR_TRX_HEADER, STG_AR_APPLICATIONS)にロードします。
変換ロジックの適用。クエリセクションで提供されているSQLスクリプトをステージングテーブルに対して実行し、リレーショナルデータをProcessMindイベントログ形式にフラット化します。
データ型の検証。変換中に日付フィールドがdatetimeオブジェクトにキャストされ、数値が小数点を正しく処理することを確認してください。
CSV/Parquetへのエクスポート。データウェアハウスから最終結果セットを単一ファイルとしてエクスポートします。
ProcessMindへのアップロード。ファイルをインポートし、InvoiceNumberをCase IDに、ActivityNameをActivityに、EventStartDateTimeをTimestampにマッピングします。
設定
- 抽出頻度: 最新のステータス変更を捕捉するために、日次(増分)を推奨します。
- 初期ロード: 初回実行時は「Full Extract」を選択し、その後は最終更新日に基づいて「Incremental」に切り替えてください。
- 主要PVO: TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO。
- 日付フィルタリング: ボリュームを制限するために、CreationDate >= '202X-01-01' でフィルターを適用してください。
- フェッチサイズ: 通常は50000行がデフォルトです。UCMダウンロードを使用する場合は、ネットワーク帯域幅に基づいて調整してください。
- 主キー: ダウンストリームのデータウェアハウスが、PVO主キー(通常はCustomerTrxId、ReceivableApplicationIdなど)を使用してupsertを処理し、重複行を防ぐことを確認してください。
- 監査履歴: 標準BICC PVOは現在の状態を捕捉します。ステータス変更(紛争発生など)の正確な履歴タイムスタンプについては、トランザクションテーブルに履歴が保持されない場合、Fusionで監査ポリシーを有効にし、監査ビューオブジェクトを抽出する必要がある場合があります。
a クエリ例 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 ステップ
Oracle Fusion Applicationsにログインします: ツール > レポートと分析に移動します。カタログの参照をクリックして、Oracle BI Publisherインターフェースを開きます。
データモデルの作成: 左上の新規をクリックし、データモデルを選択します。これはSQL抽出ロジックのコンテナです。
SQLデータセットの定義: 左側のデータモデルツリーの下にあるデータセットをクリックし、新規データセット > SQLクエリを選択します。
データソースの構成: データセットに名前を付けます(例:
ProcessMining_AR)。データソースとしてApplicationDB_FSCM(財務サプライチェーン管理)を選択します。これにより、必要なARおよびRAテーブルへのアクセスが保証されます。クエリの貼り付け: 以下に示すクエリセクションの完全なSQLスクリプトをコピーし、SQLクエリテキストボックスに貼り付けます。特定のフレックスフィールド(DFF)の名前を変更する必要がある場合を除き、コアロジックは変更しないでください。
パラメータの設定: クエリには、取引作成日でフィルタリングするためのプレースホルダー
:p_start_dateが含まれています。データモデルのパラメータタブで、p_start_dateという名前の新しいパラメータを作成し、データ型を日付に設定し、デフォルト値(例:01-01-2023)を設定します。データ表示: データタブをクリックし、パラメータに有効な日付を入力して表示をクリックします。出力に
InvoiceNumber、ActivityName、EventStartDateTimeなどの列を持つ行が含まれていることを確認してください。データモデルの保存: オブジェクトを共有フォルダ > カスタムディレクトリ(例:
/Shared Folders/Custom/ProcessMining/AR_Extract_DM)に保存します。スケジュール/エクスポート: 大量のデータを抽出するには、このデータモデルを使用してレポートの作成をクリックします。レポートエディタで、レイアウトがシンプルなテーブルであることを確認します。レポートを保存します。その後、スケジューラを使用してレポートを実行し、データをCSVまたはXMLとして出力します。
最終フォーマット: 出力ファイルをダウンロードします。CSVの場合、日付形式が一貫していること(ISO 8601を推奨)を確認してください。このファイルをProcessMindにアップロードし、
InvoiceNumberをCase ID、ActivityNameをActivity、EventStartDateTimeをTimestampにマッピングします。
設定
- データソース:
ApplicationDB_FSCMを使用して財務テーブルにアクセスします。 - 日付フィルター: クエリは
ra_customer_trx_all.creation_date >= :p_start_dateを使用します。これをローリングウィンドウ(例: 過去12ヶ月)でデータをロードするように設定します。 - パフォーマンス: 100,000件を超える請求書のデータセットの場合、テスト中に
ROWNUM制限を追加するか、月ごとに抽出を分割することを検討してください。 - 事業部門フィルタリング: 貴社が複数の事業部門を持ち、そのうち1つのみが必要な場合、
Where句のAND trx.org_id = ...行のコメントを解除してください。 - ユーザー名: クエリは
CREATED_BYユーザーIDをFND_USERを介してユーザー名に解決します。抽出ユーザーがFND_USERを読み取る権限を持っていることを確認してください。 - Advanced Collections: アクティビティ「支払リマインダー送信済み」および「支払約束受領済み」は、IEX(Advanced Collections)モジュールテーブルに依存しています。このモジュールを使用しない場合、これらのセクションは単純にゼロ行を返します。
a クエリ例 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