您的应收账款数据模板
您的应收账款数据模板
- 应收账款分析所需属性一览
- 需要监控的核心流程活动和节点
- Oracle Fusion Financials专用数据提取指南
应收账款属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间戳 EventStartDateTime | 活动发生的具体日期和时间。 | ||
| 说明 此属性记录活动在系统中发生的准确时间,用于按时间顺序排列事件,也是流程挖掘中所有时间计算的基础。 通过分析时间戳,企业可以计算活动之间的周期时间,例如从创建发票到发送发票所需的时长。这对于衡量应收账款周转天数等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 | |||
| 活动名称 ActivityName | 应收账款流程中执行的具体事件或操作。 | ||
| 说明 此属性描述流程中执行的步骤,例如创建发票、过账付款或发起争议。它定义流程图中的流程走向,并用于展示事件顺序。 分析人员可使用此字段识别流程变体、循环和瓶颈。它对于判断流程是否遵循标准操作规程,以及计算返工或人工干预等特定事件的发生频率至关重要。 重要性 用于定义流程走向并展示事件顺序。 获取途径 取自交易历史记录表,例如AR_PAYMENT_SCHEDULES_ALL、RA_CUST_TRX_LINE_GL_DIST_ALL。 示例 发票已创建已发送付款提醒部分付款已过账争议案例已创建 | |||
| 最近一次数据更新 LastDataUpdate | 流程挖掘工具最近一次刷新数据的时间戳。 | ||
| 说明 此属性表示数据集最近一次与源Oracle系统同步的时间,帮助用户了解分析数据的新旧程度,以及分析结果是否反映当前运营情况。 监控此字段有助于确保仪表板显示最新信息,尤其是在监控未结争议或未核销收款时。 重要性 说明数据的新鲜度和可靠性。 获取途径 提取时的系统时间。 示例 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| 源系统 SourceSystem | 数据来源所在的记录系统。 | ||
| 说明 此属性用于标识提取流程数据的软件环境。在此场景中,它确认数据来自Oracle Fusion Financials环境。 如果数据仅从单一系统提取,此属性通常为固定值;但在合并多个ERP实例的数据或集成第三方催收工具时,它就十分重要。它有助于确保多系统流程全貌中的数据沿袭和可追溯性。 重要性 确保数据沿袭,并区分不同的ERP实例。 获取途径 在提取过程中硬编码,或在数据管道中配置。 示例 Oracle Fusion FinancialsOracle Cloud ERP - USOracle Cloud ERP - EMEA | |||
| 业务单元 BusinessUnit | 组织内负责该发票的运营实体。 | ||
| 说明 此属性对应Oracle Fusion中的Organization ID,表示拥有该应收款项的具体业务单元或部门。它支持按企业不同部门细分流程绩效。 比较不同业务单元的争议解决时间或应收账款周转天数等KPI,有助于管理层识别绩效较好的团队并推广最佳实践,也能发现可能需要增加资源或重新设计流程的部门。 重要性 用于组织间基准比较和绩效对比的关键维度。 获取途径 Oracle Fusion Financials:通过ORG_ID关联HR_ORGANIZATION_UNITS.NAME。 示例 美国东部销售部欧洲、中东和非洲服务部亚太制造部 | |||
| 交易类型 TransactionType | 应收单据的分类,例如发票、贷项通知单或借项通知单。 | ||
| 说明 此属性用于区分不同类型的财务单据,常见值包括发票、贷项通知单和借项通知单。对于“贷项通知单数量与返工”仪表板,此区分至关重要。 按此属性筛选,分析人员可以单独查看由贷项通知单引发的返工循环,或聚焦于主要开票流程,从而了解应收账款工作量的构成。 重要性 区分标准发票与调整、更正单据。 获取途径 Oracle Fusion Financials:RA_CUST_TRX_TYPES_ALL.NAME 示例 发票贷项通知单借项通知单扣款 | |||
| 催收专员姓名 CollectorName | 负责该发票催收工作的专员或资源的姓名。 | ||
| 说明 此属性用于识别负责催收该发票款项的具体员工或团队成员,是“催收专员处理量”仪表板的关键维度。 此字段的数据可帮助企业衡量每位专员的工作效率、识别培训需求并平衡工作量。它还能明确责任,并帮助财务团队统一催收工作方式。 重要性 用于分析资源绩效和平衡工作量的关键数据。 获取途径 Oracle Fusion Financials:与客户档案关联的AR_COLLECTORS.NAME。 示例 John SmithA组催收团队Jane Doe | |||
| 到期日 DueDate | 预计收到付款的截止日期。 | ||
| 说明 此属性是根据发票日期和付款条款计算出的付款截止日期,可用于判断付款是否逾期。 “催收提醒时间偏差”KPI会用此日期衡量团队是否在截止日期前及时采取行动。账龄报告也以此为界,将应收款项划分为未到期或逾期。 重要性 判断逾期情况和按时付款表现的主要基准。 获取途径 Oracle Fusion Financials:AR_PAYMENT_SCHEDULES_ALL.DUE_DATE 示例 2023-11-302023-12-152024-01-01 | |||
| 发票金额 InvoiceAmount | 发票的货币总额。 | ||
| 说明 此属性表示发票的原始应付金额,是许多分析的主要加权因素,可帮助企业优先处理高金额交易。 在“未核销贷项与收入流失视图”中,此字段有助于量化未解决事项的财务影响。它还可用于计算加权平均应收账款周转天数,从财务角度更全面地评估流程效率。 重要性 为分析提供财务权重,并支持按金额优先排序。 获取途径 Oracle Fusion Financials:RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL 示例 1500.00250.5010000.00 | |||
| 客户名称 CustomerName | 交易中被开票实体的名称。 | ||
| 说明 此属性用于识别与发票关联的客户,是分析客户层面的付款行为、争议频率和催收成效的基础。 分析人员可利用此字段找出经常延迟付款或提出争议的客户。这些信息可用于“客户付款行为分析”仪表板,也有助于根据客户情况调整信用条款和催收策略。 重要性 是以客户为中心进行分析和风险评估的必要数据。 获取途径 Oracle Fusion Financials:通过BILL_TO_CUSTOMER_ID关联HZ_PARTIES.PARTY_NAME。 示例 Acme CorpGlobex CorporationSoylent Corp | |||
| 客户细分 CustomerSegment | 根据规模、行业或风险对客户进行的分类。 | ||
| 说明 此属性将客户划分为战略客户、企业客户、中小企业或高风险客户等类别。通常根据Oracle Fusion中的客户类别或客户档案类别得出。 利用此属性可以分析不同市场细分中的流程变体。例如,可据此核实战略客户是否获得预期的专属服务,或高风险客户的付款合规情况是否受到密切监控。 重要性 支持按客户细分分析催收策略和风险。 获取途径 Oracle Fusion Financials:HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID。 示例 企业版小型企业政府高风险 | |||
| 是否自动执行 IsAutomated | 标记活动是否在无人干预的情况下执行。 | ||
| 说明 此布尔属性用于判断活动由系统流程(例如AutoInvoice、AutoLockbox)还是人工用户执行,是“现金应用自动化率”KPI的主要依据。 持续跟踪自动化活动与手动活动的比例,企业可以评估数字化转型举措的成效,并找出仍需手动处理的具体流程步骤。 重要性 衡量数字化转型和效率的主要指标。 获取途径 根据UserName计算,例如:如果User == 'BATCH_USER',则为true。 示例 truefalse | |||
| 用户名 UserName | 执行该活动的系统用户。 | ||
| 说明 此属性记录执行特定活动的人员登录ID或姓名,例如过账发票或匹配银行对账单。它映射到通用“用户”字段。 此数据对于合规审计和“催收专员处理量”仪表板至关重要。它有助于区分机器执行的操作(通常由“系统”用户完成)和人工操作,从而支持自动化分析。 重要性 支持按用户跟踪绩效并分析职责分离情况。 获取途径 Oracle Fusion Financials:将CREATED_BY或LAST_UPDATED_BY列与用户表关联。 示例 系统管理员jsmith财务批处理作业 | |||
| 争议原因 DisputeReason | 发起争议时指定的类别或原因代码。 | ||
| 说明 此属性记录发生“争议案件已创建”活动时提供的理由。常见值包括“定价错误”、“数量不符”或“货物损坏”。 在“争议生命周期与瓶颈”仪表板中分析此属性,有助于找出付款延迟的根本原因。如果“定价错误”频繁出现,企业就应调查上游销售报价流程,而不只是催收流程。 重要性 对于分析付款延迟和返工的根本原因至关重要。 获取途径 Oracle Fusion Financials:RA_CM_REQUESTS.REASON_CODE或AR_DISPUTE_HISTORY。 示例 价格争议税务错误未收到货物重复开票 | |||
| 付款条款 PaymentTerms | 双方约定的付款期限条件,例如Net 30。 | ||
| 说明 此属性定义合同约定的付款期限,用于计算到期日,也是“催收策略成效”仪表板的重要依据。 不同客户的付款条款可能导致应收账款周转天数(DSO)存在差异。此属性可帮助分析人员统一绩效数据的比较口径,避免将Net 60条款的客户与Net 30条款的客户相比时,误判前者付款迟缓。 重要性 结合合同约定分析付款速度。 获取途径 Oracle Fusion Financials:RA_TERMS.NAME 示例 Net 30立即付款2/10 Net 30Net 60 | |||
| 创建来源 CreationSource | 发票的来源,用于说明发票是手动创建还是导入。 | ||
| 说明 此属性显示发票如何进入Oracle系统,例如通过“手动录入”、“AutoInvoice”或特定外部数据源导入。它可作为通用“渠道”映射的替代指标。 此属性对“现金应用自动化监控”至关重要,有助于区分完全数字化的流程和需要手动设置的流程。“手动录入”数量较多,可能意味着上游集成不足或系统存在缺陷。 重要性 用于识别上游自动化程度和数据来源。 获取途径 Oracle Fusion Financials:RA_BATCH_SOURCES_ALL.NAME 示例 AutoInvoice手动项目实施订单管理 | |||
| 地区 Region | 与业务单元或客户相关的地理区域。 | ||
| 说明 此属性将交易归入更广泛的地理区域,例如北美、欧洲、中东和非洲(EMEA)或亚太地区(APAC)。它适用于高层管理报告和“应收账款周转天数与现金周期趋势”仪表板。 地区分析有助于考虑不同地区的付款习惯差异,例如南欧的标准付款期限通常比美国更长,并确保结合当地情况解读全球KPI。 重要性 为全球报告提供高层级的地理区域划分。 获取途径 Oracle Fusion Financials:根据业务单元或客户地址推导。 示例 北美欧洲、中东和非洲亚太地区拉丁美洲 | |||
| 折扣适用截止日 DiscountEligibilityDate | 客户可享受提前付款折扣的最后日期。 | ||
| 说明 此属性标记客户享受“2/10 Net 30”等条款优惠的截止日期,即在10天内付款可享受2%的折扣。它是“提前付款折扣分析”仪表板所需的数据。 将付款日期与此日期进行比较,可计算“提前付款折扣获取率”,帮助企业了解折扣策略是否有效加快现金回流,或客户是否未予采用。 重要性 支持分析激励措施的成效及其对加快现金回流的作用。 获取途径 Oracle Fusion Financials:AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE 示例 2023-11-102023-12-05 | |||
| 是否返工 IsRework | 标记发票是否经历更正或争议循环。 | ||
| 说明 此布尔属性用于识别发票是否经历过与错误更正相关的活动,例如“已开具贷项通知单”或“已调整发票”。它支持“贷项通知单数量与返工”仪表板。 识别返工案例有助于区分理想路径流程和存在问题的流程。返工率偏高通常意味着主数据或销售订单录入等上游流程的数据质量存在问题。 重要性 用于识别流程中的浪费和低效环节。 获取途径 计算规则:案例中包含“已开具贷项通知单”或“争议案件已创建”时为True。 示例 truefalse | |||
| 货币代码 CurrencyCode | 发票金额所使用的货币。 | ||
| 说明 此属性指定财务金额所用的货币,例如USD、EUR。正确解读发票金额,以及在需要时转换为全球报告货币,都离不开此属性。 对于跨国企业,此属性有助于比较不同经济区域的催收绩效,并帮助财务团队区分汇率影响与运营流程绩效。 重要性 为多币种环境中的财务金额提供背景信息。 获取途径 Oracle Fusion Financials:RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE 示例 USDEURGBPJPY | |||
应收账款活动
| 活动 | 说明 | ||
|---|---|---|---|
| 发票已创建 | 此活动表示系统中首次创建发票记录。它记录交易表头首次保存到Oracle应收账款表中的时间戳。 | ||
| 重要性 标志着流程生命周期的开始,并为账龄计算提供基准。对于计算总周期时间和发票发送前的处理周期至关重要。 获取途径 取自RA_CUSTOMER_TRX_ALL表中的CREATION_DATE或TRX_DATE列。 采集 插入交易行时记录 事件类型 explicit | |||
| 发票已发送 | 表示通过打印、电子邮件或XML向客户发送发票,标志着发票从企业移交给客户。 | ||
| 重要性 这是衡量开票发送绩效的关键指标。从创建到发送之间的延迟会直接拖慢现金回收周期。 获取途径 可根据RA_CUSTOMER_TRX_ALL中的PRINTING_ORIGINAL_DATE推断;若使用XML,也可依据Oracle Collaboration Messaging Framework中的特定日志推断。 采集 比较变更前后的状态字段 事件类型 inferred | |||
| 发票已完成 | 表示发票创建流程已结束,发票可以进入处理、打印和过账环节。交易状态从未完成变为已完成时,即发生此事件。 | ||
| 重要性 用于区分起草时间和处理时间。此处出现延误,可能表明内部开票流程存在瓶颈。 获取途径 当RA_CUSTOMER_TRX_ALL中的COMPLETE_FLAG变为“Y”时识别。 采集 比较变更前后的状态字段 事件类型 inferred | |||
| 发票已结清 | 表示发票在系统中已关闭,通常是因为付款、贷项通知单或调整使余额归零。 | ||
| 重要性 此事件的时间戳用于计算应收账款周转天数(DSO),也代表流程实例的结束时间。 获取途径 当AR_PAYMENT_SCHEDULES_ALL中的STATUS变为“CL”(Closed)时识别。 采集 比较变更前后的状态字段 事件类型 inferred | |||
| 已收到全额付款 | 收款核销后发票余额降为零时发生。这是催收流程的主要成功事件。 | ||
| 重要性 这是分析提前付款折扣的关键数据。此事件的时间决定款项是否在折扣期限内收回。 获取途径 取自AR_RECEIVABLE_APPLICATIONS_ALL,其中STATUS = 'APP'且核销后的AMOUNT_DUE_REMAINING为0。 采集 通过比较字段X和Y得出 事件类型 calculated | |||
| 部分付款已过账 | 当收款已核销至发票,但金额低于未结余额总额时发生。发票仍保持未结状态,但余额有所减少。 | ||
| 重要性 发生频率较高,说明付款较为零散(部分付款频率KPI),会增加对账工作量。 获取途径 取自AR_RECEIVABLE_APPLICATIONS_ALL,其中STATUS = 'APP'且AMOUNT_APPLIED < AMOUNT_DUE_REMAINING。 采集 执行交易X时记录 事件类型 explicit | |||
| 争议已解决 | 表示争议调查已结束。处理结果可能是批准贷项通知单申请(争议成立),也可能是驳回申请(争议不成立)。 | ||
| 重要性 这是计算平均争议解决时间所必需的数据。解决时间过长会损害客户满意度,并推高应收账款周转天数。 获取途径 根据RA_CM_REQUESTS_ALL中的状态变为“APPROVED”或“REJECTED”识别。 采集 比较变更前后的状态字段 事件类型 inferred | |||
| 争议案例已创建 | 标志着针对发票的正式争议已启动。调查期间,常规催收活动会暂停。 | ||
| 重要性 这是重要的瓶颈指标。争议率偏高,可能说明履约或开票准确性等上游环节存在质量问题。 获取途径 可通过RA_CM_REQUESTS_ALL中的记录,或与发票关联的特定贷项通知单申请工作流识别。 采集 执行交易X时记录 事件类型 explicit | |||
| 发票已核销 | 这是一种特定的调整类型,表示剩余余额被认定为无法收回,并作为坏账核销。这是一个负向终止状态。 | ||
| 重要性 这是监控财务健康状况的关键数据,有助于区分运营效率(付款速度)与信用质量问题。 获取途径 取自AR_ADJUSTMENTS_ALL,其中调整类型归类为“Write-off”,或关联至坏账账户。 采集 执行交易X时记录 事件类型 explicit | |||
| 发票已调整 | 记录对发票余额进行的手动调整,例如小额核销或汇率调整,与贷项通知单有所区别。 | ||
| 重要性 有助于发现收入流失,以及无需付款即可结清余额的非标准流程路径。 获取途径 取自与发票关联的AR_ADJUSTMENTS_ALL表。 采集 执行交易X时记录 事件类型 explicit | |||
| 发票已过账至总账 | 记录发票会计分录完成并转入总账的事件,确保财务合规并为期末结账做好准备。 | ||
| 重要性 虽然不会影响客户看到的状态,但此处的延误会影响财务结账周期和报告时效。 获取途径 取自RA_CUST_TRX_LINE_GL_DIST_ALL表中的GL_DATE。 采集 执行交易X时记录 事件类型 explicit | |||
| 已与银行对账单匹配 | 表示已核销至发票的收款与银行对账单中的一行完成对账,确认款项已实际到账。 | ||
| 重要性 用于衡量收款核销自动化程度。从付款过账到银行匹配之间的时间差,代表尚未确认到账的资金。 获取途径 通过对账参考信息,将AR_CASH_RECEIPTS_ALL与CE_STATEMENT_LINES(Cash Management)关联。 采集 比较变更前后的状态字段 事件类型 inferred | |||
| 已发送付款提醒 | 记录向客户发出催款函或催收提醒的情况。此事件由Advanced Collections模块生成。 | ||
| 重要性 这是分析催收策略成效的关键数据。将其与付款情况关联,有助于判断哪些提醒策略能最快收回款项。 获取途径 位于与客户账户关联的IEX_DUNNING或IEX_STRATEGY_WORK_ITEMS表中。 采集 执行交易X时记录 事件类型 explicit | |||
| 已收到付款承诺 | 记录客户承诺在指定日期前支付指定金额的情况。通常由催收专员在与客户沟通时手动录入。 | ||
| 重要性 这是分析客户付款行为的关键数据。客户未履行承诺,可能意味着信用风险较高,未来发生坏账的可能性也更大。 获取途径 取自Collections模块中的IEX_PROMISE_DETAILS表。 采集 执行交易X时记录 事件类型 explicit | |||
| 贷项通知单已开具 | 记录针对发票创建贷项通知单交易的情况。贷项通知单会减少应付余额,通常用于处理争议或退货。 | ||
| 重要性 用于跟踪贷项通知单返工率和收入流失。频繁开具贷项通知单可能表明开票存在系统性错误。 获取途径 取自RA_CUSTOMER_TRX_ALL,其中TRX_TYPE为Credit Memo,且RELATED_CUSTOMER_TRX_ID与该发票匹配。 采集 执行交易X时记录 事件类型 explicit | |||
数据提取指南
步骤
进入Oracle BI Cloud Connector(BICC)控制台,打开“管理产品和数据存储”部分。
配置存储连接。确保已连接Oracle Universal Content Management(UCM)或外部对象存储(例如OCI Object Storage),以便保存提取的CSV/Parquet文件。
选择Financials产品。找到Financials产品,以访问应收账款视图对象。
选择并配置视图对象(VO)。选择构建事件日志所需的特定公共视图对象(PVO)。主要PVO包括:
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO(发票抬头)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO(发票行)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO(收款和贷项通知单应用)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO(调整和核销)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO(付款承诺)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO(催款/提醒)
设置筛选条件(数据裁剪)。在“管理提取计划”中或PVO配置内,根据CreationDate或LastUpdateDate设置筛选条件,提取分析周期内的数据(例如最近12个月)。
安排提取计划。创建每日运行的作业计划。首次完整加载后,选择增量加载,仅获取发生变化的数据。
下载并导入数据。使用自动化脚本或集成工具,从UCM/对象存储获取文件,并将其加载到数据仓库的暂存表中(例如STG_AR_TRX_HEADER、STG_AR_APPLICATIONS)。
应用转换逻辑。针对暂存表运行查询部分提供的SQL脚本,将关系型数据展平为ProcessMind事件日志格式。
验证数据类型。确保日期字段转换为datetime对象,并在转换过程中正确处理数值金额的小数位。
导出为CSV/Parquet。从数据仓库将最终结果集导出为单个文件。
上传至ProcessMind。导入文件,并将InvoiceNumber映射为Case ID、ActivityName映射为Activity、EventStartDateTime映射为Timestamp。
配置
- 提取频率:建议每日增量提取,以获取最新状态变化。
- 初始加载:首次运行时选择“完整提取”,之后根据Last Update Date切换为“增量提取”。
- 关键PVO:TransactionHeaderExtractPVO、ReceiptApplicationExtractPVO、AdjustmentExtractPVO、StrategyWorkItemExtractPVO。
- 日期筛选:使用CreationDate >= '202X-01-01'筛选数据,以控制数据量。
- 获取数量:默认通常为50000行;如果通过UCM下载,可根据网络带宽调整。
- 主键:确保下游数据仓库使用PVO主键执行更新或插入(通常为CustomerTrxId、ReceivableApplicationId等),以免产生重复行。
- 审计历史:标准BICC PVO记录当前状态。若要准确记录状态变化的历史时间(例如争议开启时间),而事务表未保留历史记录,则可能需要在Fusion中启用审计策略并提取审计视图对象。
查询示例 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 步骤
登录Oracle Fusion Applications:依次进入工具 > 报告和分析。点击浏览目录,打开Oracle BI Publisher界面。
创建数据模型:点击左上角的新建,选择数据模型。该模型用于承载SQL提取逻辑。
定义SQL数据集:在左侧的数据模型树中点击数据集,然后选择新建数据集 > SQL查询。
配置数据源:为数据集命名(例如
ProcessMining_AR)。选择ApplicationDB_FSCM(Financials Supply Chain Management)作为数据源,以便访问所需的AR和RA表。粘贴查询:复制下方查询部分提供的完整SQL脚本,并粘贴到SQL查询文本框中。除非需要重命名特定的Flexfield(DFF),否则不要修改核心逻辑。
设置参数:查询使用占位符
:p_start_date筛选交易创建日期。在数据模型的参数选项卡中新建参数p_start_date,数据类型设为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访问Financials表。 - 日期筛选:查询使用
ra_customer_trx_all.creation_date >= :p_start_date。请将其配置为滚动时间窗口加载数据(例如最近12个月)。 - 性能:如果数据集超过100,000张发票,可在测试时添加
ROWNUM限制,或按月分批提取。 - 业务单元筛选:如果您的组织有多个业务单元,但只需提取其中一个,请取消
Where子句中AND trx.org_id = ...行的注释。 - 用户名:查询通过
FND_USER将CREATED_BY用户ID解析为用户名。请确保提取用户有权读取FND_USER。 - 高级收款:“发送付款提醒”和“收到付款承诺”活动依赖IEX(高级收款)模块表。如果您未使用此模块,这些部分将不会返回任何行。
查询示例 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 立即加快应收账款回收
将DSO缩短15至20天,及时解决现金流缺口。
无需信用卡,5分钟即可完成设置。