您的退货和退款处理数据模板
您的退货和退款处理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- NetSuite数据提取指南
退货与退款处理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间戳 EventTimestamp | 活动发生的准确日期和时间,是流程时间顺序的基础。 | ||
| 说明 事件时间戳记录活动实际发生的准确时刻。该数据对于正确排列事件顺序以及所有基于时间的分析都至关重要。它用于计算活动之间的时长、案例总周期时间和等待时间,是绩效监控、瓶颈分析和SLA一致性检查的基础。时间戳必须准确,才能确保流程挖掘洞察可靠。 为什么重要 此属性提供事件的时间顺序,是发现流程路径并计算周期时间、等待时间等各项绩效指标的必要条件。 获取位置 此信息通常来自NetSuite记录中的“Date Created”或“Last Modified Date”字段,或来自与交易关联的System Notes子列表中的时间戳。 示例 2023-10-26T10:00:00Z2023-10-26T14:35:10Z2023-10-27T09:12:05Z | |||
| 活动名称 ActivityName | 退货流程中发生的具体业务事件或步骤名称,例如“Item Inspected”或“Refund Processed”。 | ||
| 说明 Activity Name描述退货与退款生命周期中的具体步骤或里程碑。系统根据时间戳对这些事件排序,以构建流程路径。分析活动的顺序和频率,有助于识别最常见的流程路径、步骤之间的瓶颈,以及返工或重复活动。示例包括“Return Authorization Created”“Item Received”和“Credit Memo Approved”。 为什么重要 此属性定义流程步骤,对于可视化流程图、分析流程变体,以及识别瓶颈或返工循环至关重要。 获取位置 此属性通常根据Return Authorization和Credit Memo等交易记录的状态变化,或系统备注、自定义事件日志中记录的具体用户操作生成。 示例 创建退货授权已收到商品商品已检查退款已处理退货授权已关闭 | |||
| 退货案例ID ReturnCaseId | 用于标识单个客户退货或退款案例的唯一标识符,可关联从发起到关闭的所有相关活动。 | ||
| 说明 Return Case ID是跟踪退货端到端历程的主要标识符。每个唯一ID对应一个退货授权,可对商品接收、检查和退款处理等所有相关事件进行全面分析。在流程挖掘中,该ID对于重建每笔退货的完整流程至关重要,有助于计算周期时间并识别案例级偏差。 为什么重要 这是流程挖掘的基础属性,可将所有独立事件连接成连贯的端到端流程实例,从而分析流程路径和绩效。 获取位置 通常是NetSuite中Return Authorization记录的Internal ID或Transaction ID。 示例 RMA-0012345RMA-0012346RMA-0012347 | |||
| 上次数据更新 LastDataUpdate | 表示此流程数据最近一次刷新或更新时间的时间戳。 | ||
| 说明 此属性记录数据集最近一次从源系统更新的时间,是说明分析数据新鲜度的重要元数据。在仪表板中展示该信息,有助于管理用户预期,并确保决策建立在对数据时效性充分了解的基础上。 为什么重要 说明数据的新鲜度,有助于用户信任分析结果,并了解其与当前运营状态的相关性。 获取位置 此时间戳在数据提取、转换和加载(ETL)过程中生成并添加。 示例 2024-05-21T02:00:00Z2024-05-22T02:00:00Z | |||
| 源系统 SourceSystem | 提取数据的系统,用于跟踪数据来源。 | ||
| 说明 此属性用于标识流程数据的来源。在此场景中,通常为“NetSuite”。在可能合并多个系统数据的环境中,指定源系统有助于确保数据血缘清晰、可追溯。 为什么重要 标识数据来源,对于数据治理、问题排查,以及整合多个系统数据以获得完整流程视图的场景至关重要。 获取位置 这是一个静态值(“NetSuite”),通常在数据提取和转换过程中添加。 示例 NetSuiteNetSuite ERP | |||
| 处理人员 ProcessingAgent | 在退货流程中执行具体活动的员工或用户。 | ||
| 说明 Processing Agent用于标识负责执行特定任务的人员,例如批准退货或检查商品。此属性对于用户级绩效分析至关重要,有助于识别高绩效员工、发现培训需求,以及分析团队内的工作量分配不均。按处理人员分析活动,是“Departmental Return Process Performance”仪表板的关键。 为什么重要 支持个人和团队绩效分析、工作量平衡及培训需求识别,直接影响运营效率。 获取位置 数据可来自NetSuite交易中的“Created By”“Approved By”等字段,或System Notes子列表中的用户字段。 示例 Alice JohnsonBob WilliamsCharlie Brown | |||
| 实际退款金额 ActualRefundAmount | 实际退还给客户的最终金额。 | ||
| 说明 此属性表示记入客户账户或实际退还给客户的金额,记录在Credit Memo或退款交易中。由于重新入库费、运费或损坏商品的部分退款等调整,该金额可能与申请金额不同。此属性对于财务报告和计算“Refund Amount Discrepancy Rate”KPI至关重要。 为什么重要 反映退货的实际财务影响,对于财务对账和退款准确性分析至关重要。 获取位置 此值来自根据Return Authorization生成的Credit Memo交易中的“Total”字段。 示例 99.99140.000.00 | |||
| 退货状态 ReturnAuthorizationStatus | 退货授权的当前状态,例如“Pending Approval”“Approved”或“Closed”。 | ||
| 说明 此属性表示退货案例在生命周期中的当前状态,是了解退货进度和划分案例的重要依据。例如,分析案例处于“Pending Receipt”状态的时长,可以发现运输延迟;而“Pending Approval”状态持续时间过长,则可能表明存在内部瓶颈。该属性还用于确定退货的最终结果,例如“Closed”或“Rejected”。 为什么重要 展示每笔退货在流程中的当前阶段,从而支持案例分布、状态持续时间和流程结果分析。 获取位置 对应NetSuiteReturn Authorization记录中的“Status”或类似字段。 示例 待审批待收货已批准已拒绝已关闭 | |||
| 退货类型 ReturnType | 根据客户提供的原因对退货进行的分类。 | ||
| 说明 Return Type根据退货根本原因对退货进行分类,例如“Defective Item”“Wrong Size”“Changed Mind”或“Not as Described”。这种分类对于根因分析至关重要。通过比较不同退货类型的流程指标,企业可以识别产品质量问题、描述不准确或履约错误。此属性是“Returns Performance By Type And Channel”仪表板的关键。 为什么重要 帮助识别退货根因,从而针对产品、营销描述或履约流程实施改进,减少退货量。 获取位置 通常是Return Authorization表单上的自定义字段或标准列表、记录字段,用于记录退货原因。 示例 产品有缺陷发错商品客户不满意尺寸或颜色错误 | |||
| 部门 Department | 在特定阶段负责处理退货案例的业务部门或团队。 | ||
| 说明 此属性将流程活动分配给特定部门,例如“Customer Service”“Warehouse”或“Finance”。它对于了解团队间交接和识别部门瓶颈至关重要。通过分析案例在某部门内或等待某部门处理的时间,企业可以定位延迟来源并优化资源配置。这是“Departmental Return Process Performance”仪表板的主要分析维度。 为什么重要 支持按职能领域分析流程绩效,突出部门间交接延迟和部门瓶颈。 获取位置 可根据与活动关联的用户或员工记录,或交易本身的“Department”字段生成。该信息通常在NetSuite员工记录中配置。 示例 仓库客户支持财务质量保证 | |||
| 产品标识符 ProductIdentifier | 用于标识退回产品的唯一标识符,例如SKU或Item Number。 | ||
| 说明 此属性用于标识退货涉及的具体商品。按产品层级分析退货,对于识别高退货率商品至关重要,这可能反映质量缺陷、描述不佳或其他问题。该数据支持深入分析产品绩效,并为产品开发、采购和营销决策提供依据。 为什么重要 将退货流程数据关联到具体产品,支持产品问题的根因分析,并帮助降低整体退货率。 获取位置 此信息位于Return Authorization记录的“Items”子列表中,对应“Item”字段。 示例 SKU-TEE-BL-LPROD-00543ITEM-987123 | |||
| 客户ID CustomerId | 发起退货的客户唯一标识符。 | ||
| 说明 Customer ID将退货交易关联到具体客户,支持以客户为中心的分析,例如识别频繁退货客户,这可能表明客户不满或存在欺诈行为。该属性还支持按客户类型或价值划分流程绩效,从而优先服务重点客户。 为什么重要 支持分析客户层面的退货行为,并根据客户分群或生命周期价值等属性划分流程。 获取位置 这是NetSuite中Return Authorization记录表头的“Customer”或“Entity”字段。 示例 CUST-001CUST-002CUST-003 | |||
| 政策遵循度 ReturnPolicyAdherence | 表示退货是否符合既定公司退货政策。 | ||
| 说明 此布尔型或分类属性用于标记退货是否满足所有预设条件,例如退货期限、商品状况和购买凭证。它用于监控合规性并管理例外情况。“Return Policy Adherence Exceptions”仪表板依靠此属性突出需要特殊处理或审核的案例,帮助降低风险并确保规则得到一致执行。 为什么重要 帮助监控和执行退货政策,降低不合规退货带来的财务风险,并确保处理公平、一致。 获取位置 这几乎肯定是Return Authorization记录上的自定义字段,可能采用复选框或列表形式,并通过工作流进行管理。 示例 符合要求不符合要求,超出期限例外情况已批准 | |||
| 是否符合SLA IsSlaCompliant | 用于指示退款是否在定义的SLA目标期限内完成处理的计算标记。 | ||
| 说明 该布尔属性通过比较“Refund Processed”时间戳与“Refund SLA Target Date”得出。如果退款在目标日期当天或之前完成处理,值为true,否则为false。该标记简化了合规报告和仪表板的创建,例如“Refund SLA Compliance Monitoring”仪表板,并用于计算“Refund SLA Achievement Rate”KPI。 为什么重要 为每个案例提供清晰的二元SLA绩效结果,便于持续跟踪、报告和分析合规率。 获取位置 该属性在数据转换过程中或流程挖掘工具中计算。逻辑为:'Refund Processed'的 示例 truefalse | |||
| 是否自动执行 IsAutomated | 用于指示某项活动是否由系统自动执行的布尔标记。 | ||
| 说明 该属性表示某项活动是由用户执行,还是由自动化系统、脚本或工作流执行。例如,初始的“Return Authorization Created”事件可能通过客户门户自动触发,而“Item Inspected”则是手动活动。跟踪自动化情况有助于发现手动步骤的自动化机会,并衡量现有自动化带来的效率提升。 为什么重要 有助于区分手动任务和自动化任务,这对于发现自动化机会以及衡量数字化转型工作的影响十分关键。 获取位置 可根据事件关联的用户推断。NetSuite中的系统生成事件通常会关联特定的系统用户或脚本ID。 示例 truefalse | |||
| 申请退款金额 RequestedRefundAmount | 客户最初申请或预期获得的退货退款金额。 | ||
| 说明 此属性存储流程开始时的预期退款金额,通常根据退回商品的原始购买价格确定。该金额可作为基准,与最终退款金额进行比较。“Refund Amount Discrepancy Rate”KPI会将此值与Actual Refund Amount直接比较,以识别由重新入库费、部分退款或其他调整造成的差异。 为什么重要 为财务分析提供基准,帮助跟踪预期与实际退款金额之间的差异,并识别调整原因。 获取位置 此值根据Return Authorization交易行项目中的“Amount”或“Rate”字段计算。 示例 99.99150.0025.50 | |||
| 退款SLA目标日期 RefundSlaTargetDate | 根据服务级别协议,预计完成退款处理的目标日期。 | ||
| 说明 Refund SLA Target Date是一个计算得出的时间戳,表示向客户承诺的退款处理期限。通常是在“Item Received”或“Refund Approved”等关键事件的时间戳上加上预设周期,例如5个工作日。该属性对于“Refund SLA Compliance Monitoring”仪表板和“Refund SLA Achievement Rate”KPI至关重要,可帮助企业衡量实际表现是否符合承诺。 为什么重要 支持量化衡量相对于客户承诺的绩效,这对于维护客户满意度和信任至关重要。 获取位置 该日期通常不是标准字段,必须在“Item Received”等关键时间戳上加上预设的SLA周期(例如5天)后计算得出。 示例 2023-11-01T23:59:59Z2023-11-05T23:59:59Z2023-11-10T23:59:59Z | |||
| 退款金额差异 RefundAmountDiscrepancy | 申请退款金额与实际退款金额之间的计算差值。 | ||
| 说明 该指标通过申请退款金额减去实际退款金额计算得出。非零值表示流程中进行了调整,例如收取重新入库费或因商品损坏进行扣减。该属性用于支持“Refund Amount Discrepancy Rate”KPI的分析,帮助标记存在重大财务调整、需要进一步审核的案例。 为什么重要 突出退货流程中的财务调整,帮助分析差异产生的原因,以及这些差异是否一致且合理。 获取位置 这是一个计算属性。公式为: 示例 0.0010.00-5.00 | |||
| 退货渠道 ReturnChannel | 客户购买商品或发起退货所使用的渠道。 | ||
| 说明 Return Channel表示退货来源,例如“Online”“In-Store”或“Marketplace”。不同渠道可能有不同的退货流程、成本和客户预期。按渠道分析绩效,有助于企业优化各渠道流程、有效配置资源并了解渠道特有问题。这是“Returns Performance By Type And Channel”仪表板的核心属性。 为什么重要 支持比较不同业务渠道的绩效,揭示退货发起和处理方式中各渠道特有的低效环节或最佳实践。 获取位置 此信息通常来自与退货关联的原始Sales Order记录,可能存储在“Channel”或“Location”字段中。 示例 网上商店零售门店Amazon Marketplace电话订单 | |||
| 退货状况 ReturnCondition | 检查时评估的退回商品状况,例如“New”“Damaged”或“Used”。 | ||
| 说明 此属性记录退回商品实物检查的结果。商品状况决定后续步骤,例如是否全额退款、重新入库或报废。“Return Condition Assessment Quality”仪表板重点分析评估的一致性和处理时间,这对财务对账和库存管理至关重要。 为什么重要 直接影响退货的财务结果及后续库存处理。不一致的评估可能导致财务损失和流程返工。 获取位置 这通常是Item Receipt或Return Authorization记录上的自定义字段,由仓库员工在检查过程中填写。 示例 可再次销售包装内受损已使用,状况良好缺少部件 | |||
退货与退款处理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 创建退货授权 | 当客户申请退货时,此活动标志着退货流程启动。在NetSuite中,系统会创建新的Return Authorization(RA)记录,对其进行明确记录。该记录是退货的主要案例标识。 | ||
| 为什么重要 作为流程起点,此活动对于衡量退货总周期时间,以及分析一段时间内退货申请量至关重要。 获取位置 此事件表示NetSuite中ReturnAuthorization记录的创建时间。通常会在该记录中记录用户、日期和初始状态,例如“Pending Approval”。 采集 NetSuiteReturnAuthorization交易记录的创建日期。 事件类型 explicit | |||
| 已创建Credit Memo | 此活动表示通过创建Credit Memo启动退货的财务处理。该单据详细说明应退还给客户的金额,通常在商品收到并获批后根据Return Authorization创建。 | ||
| 为什么重要 创建Credit Memo是关键的财务里程碑。商品接收与Credit Memo创建之间的时间,可以反映从检查到生成抵扣凭证这一流程的效率。 获取位置 此事件表示CreditMemo交易的创建时间。Credit Memo上的“Created From”字段将其关联回ReturnAuthorization。 采集 NetSuiteCreditMemo交易记录的创建日期。 事件类型 explicit | |||
| 已收到商品 | 此活动标志着仓库或处理中心实际收到退回商品。在NetSuite中,系统会创建与原始Return Authorization关联的Item Receipt交易,对此进行明确记录。 | ||
| 为什么重要 这是一个关键里程碑,标志着流程从客户操作转入内部处理。“Return Approved”到“Item Received”之间的时间用于衡量客户退货速度,此事件之后的时间则用于衡量内部效率。 获取位置 此事件表示ItemReceipt交易的创建时间。该记录与发起退货的ReturnAuthorization直接关联。 采集 与RA关联的NetSuiteItemReceipt交易记录创建日期。 事件类型 explicit | |||
| 退款已处理 | 这是最终的财务结算环节,资金将退还给客户。在NetSuite中,系统会根据Credit Memo创建Customer Refund交易,对此进行明确记录。 | ||
| 为什么重要 此活动对于衡量SLA合规性和客户满意度至关重要。“Credit Memo Approved”到“Refund Processed”之间的持续时间,直接反映资金或财务部门的处理速度。 获取位置 此事件表示CustomerRefund交易的创建时间。该交易上的“Created From”字段将其关联回CreditMemo。 采集 NetSuiteCustomerRefund交易记录的创建日期。 事件类型 explicit | |||
| 退货授权已关闭 | 这是最后一个活动,表示所有处理完成后对退货案例进行行政关闭。系统通过Return Authorization记录最终状态变为“Closed”来推断此活动。 | ||
| 为什么重要 作为流程的明确终点,此活动对于计算端到端周期时间,以及识别退款完成后仍长期未关闭的案例至关重要。 获取位置 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体指“Status”字段更新为最终终止状态,例如“Closed”时。 采集 检测ReturnAuthorization记录的状态是否变为“Closed”。 事件类型 inferred | |||
| 退货授权已批准 | 此活动表示员工正式批准客户的退货申请,流程因此可以继续推进。通常通过推断Return Authorization记录的状态字段变化来记录,例如从“Pending Approval”变为“Pending Receipt”。 | ||
| 为什么重要 跟踪此审批步骤对于识别初始审核阶段的瓶颈至关重要。此处的延迟会直接影响通知客户和接收退回商品所需的时间。 获取位置 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体指“Status”字段更新为已批准状态时,例如“Pending Receipt”。 采集 检测ReturnAuthorization记录的状态是否变为“Approved”。 事件类型 inferred | |||
| Credit Memo已批准 | 此活动表示正式批准Credit Memo,通常适用于高额退款或财务控制要求。系统通过Credit Memo记录的状态变化进行推断,以确认其已准备好进行核销或付款。 | ||
| 为什么重要 如果需要财务审批,此步骤可能成为重要瓶颈。分析其持续时间有助于优化财务控制,同时避免延误客户退款。 获取位置 根据CreditMemo记录的系统备注推断,具体指审批状态字段从“Pending Approval”更新为“Approved”或“Open”时。 采集 检测CreditMemo交易的状态是否变为“Approved”。 事件类型 inferred | |||
| Credit Memo已核销 | 此活动表示现金退款之外的另一种处理方式,即将Credit Memo核销到未结客户发票。系统根据Credit Memo上的“Applied To”链接进行推断,以确认该抵扣额度已被使用。 | ||
| 为什么重要 区分现金退款和抵扣核销对于财务分析十分重要。与直接退款相比,这一路径代表另一种流程处理结果。 获取位置 根据CreditMemo的系统备注或相关记录推断,具体指其与Invoice交易建立关联,以抵销客户余额时。 采集 检测CreditMemo是否已核销到Invoice交易。 事件类型 inferred | |||
| 商品已检查 | 此概念活动表示完成对退回商品的实物检查,以评估商品状况。由于NetSuite没有标准的“Inspection”对象,通常需要根据Return Authorization或Item Receipt上的自定义字段或状态更新进行推断。 | ||
| 为什么重要 检查通常是主要瓶颈之一。跟踪检查完成时间对于分析处理人员绩效、决策一致性及其对后续退款审批的影响至关重要。 获取位置 需要进行系统分析。此活动可能根据ReturnAuthorization记录中自定义“Inspection Status”字段的变化推断,也可能属于未在系统中记录的线下流程。 采集 根据Return Authorization或Item Receipt上的自定义状态字段变化推断。 事件类型 inferred | |||
| 已创建换货订单 | 此活动表示换货场景,即为客户创建新的销售订单,而不是退款。通常通过创建与原始Return Authorization关联的Sales Order来记录此事件。 | ||
| 为什么重要 将换货作为独立路径进行跟踪,有助于分析客户偏好,并比较换货流程与退款流程的效率。这是常见且重要的流程变体。 获取位置 此事件表示新SalesOrder交易的创建时间。其与ReturnAuthorization的关联可能位于标准字段或自定义字段中,需要进行系统分析。 采集 与ReturnAuthorization关联的SalesOrder创建日期。 事件类型 explicit | |||
| 已通知客户 | 此活动表示向客户发送关键状态更新通知,例如退货获批、收到商品或退款完成。通常根据记录通信页签中系统生成邮件的时间戳进行推断。 | ||
| 为什么重要 及时沟通是提升客户满意度的关键。衡量里程碑与客户通知之间的延迟,有助于识别客户体验中的缺口。 获取位置 需要进行系统分析。根据ReturnAuthorization或CreditMemo通信子页签中外发邮件或用户备注的时间戳记录。 采集 与案例关联的邮件或通信日志条目的时间戳。 事件类型 inferred | |||
| 退货授权已拒绝 | 此事件表示拒绝客户退货申请的决定,通常由违反政策导致。系统通过推断Return Authorization记录的状态变为“Rejected”或“Closed”,且不再继续处理,来记录此事件。 | ||
| 为什么重要 分析拒绝情况有助于识别不合规退货申请的常见原因,为客户沟通和政策说明提供依据。这是偏离正常流程路径的关键情形。 获取位置 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体指“Status”字段更新为终止状态“Rejected”时。 采集 检测ReturnAuthorization记录的状态是否变为“Rejected”。 事件类型 inferred | |||
提取指南
步骤
- 进入Saved Search创建页面:登录NetSuite。依次进入Reports > New Search。在New Saved Search页面中,点击“Transaction”。
- 定义主要条件:在Saved Search设置页面的“Criteria”选项卡和“Standard”子选项卡中,设置以下筛选条件,以筛选出退货授权记录:
Type为Return AuthorizationMain Line为Yes- 添加
Date Created筛选条件,并设置所需日期范围,例如“过去3个月内”。这对于控制数据量至关重要。
- 配置属性结果列:进入“Results”选项卡。添加以下字段,这些字段将成为事件日志中的属性。必要时使用“Custom Label”重命名,以提高可读性。
- 案例ID:
Document Number或TranID(Custom Label:ReturnCaseId) - 退货状态:
Status(Custom Label:ReturnAuthorizationStatus) - 处理代理人:
Created By或适用的自定义字段(Custom Label:ProcessingAgent) - 部门:
Department(Custom Label:Department) - 退货类型:类似
[Your Return Reason Field]的自定义字段(Custom Label:ReturnType) - 退款金额:
Amount(Custom Label:ActualRefundAmount)
- 案例ID:
- 添加事件时间戳公式列:这是最关键的一步。针对12项活动,分别添加一个“Formula (Date/Time)”列。每个公式都使用CASE语句,仅在特定事件发生时返回时间戳。每项活动的准确公式请参阅“query”部分。
- 添加静态列:在结果中添加两个“Formula (Text)”列:
- 对于
SourceSystem,使用公式:'NetSuite'。 - 对于
LastDataUpdate,使用表示运行日期的公式,例如{today}。如需精确时间戳,该值将表示导出时间。
- 对于
- 保存并导出搜索:为搜索设置描述性名称,例如“ProcessMind Returns Extraction”。点击“Save & Run”。显示结果后,点击导出图标并选择“CSV”。
- 将数据转换为事件日志:导出的CSV为“宽表”格式,每行对应一个退货案例,并包含多个不同事件时间戳列。您必须将其转换为“长表”格式的事件日志。可使用Microsoft Excel Power Query(取消透视列)、Python或其他脚本工具完成转换。
- 对CSV中的每一行,为每个非空事件时间戳列创建一行新记录。
- 转换后的表应包含
ReturnCaseId、ActivityName和EventTimestamp等列。ActivityName取自原始时间戳列的表头(例如“Return Authorization Created”),EventTimestamp取自该列的值。
- 完成上传准备:确保最终CSV文件包含必需的表头:
ReturnCaseId、ActivityName、EventTimestamp、SourceSystem、LastDataUpdate,以及其他推荐属性。现在即可将文件上传到ProcessMind。
配置
- 搜索类型:已保存搜索必须是
交易搜索。 - 日期范围:必须对退货授权的
创建日期字段应用日期范围筛选。建议使用3至6个月的范围,在数据完整性和性能之间取得平衡。 - 主要筛选条件:搜索必须筛选
类型为Return Authorization且Main Line为是,确保每个退货案例只有一条初始记录。 - 自定义字段:此次提取的准确性,尤其是“商品已检验”等概念性事件或“退货类型”等属性的准确性,很大程度上取决于组织在交易记录中使用自定义字段的方式。提供的公式包含
{custbody_...}等占位符,必须根据您的NetSuite配置进行调整。 - 用户权限:运行搜索的用户需要拥有所有相关交易类型的查看权限:退货授权、商品收货、贷项通知单、客户退款和销售订单。
- 性能:对于退货量非常大的账户,此综合搜索可能运行缓慢。建议在非高峰时段运行,或安排其自动导出到文件柜。
a 示例查询 config
This configuration represents the settings in the NetSuite Saved Search UI. The 'Results' tab should be configured with the following columns and formulas.
**Criteria Tab:**
* `Type` = `Return Authorization`
* `Main Line` = `true`
* `Date Created` = `[Specify Desired Date Range]`
**Results Tab (Columns):**
| Custom Label | Field / Formula Type | Formula / Field ID |
|---|---|---|
| `ReturnCaseId` | Formula (Text) | `{tranid}` |
| `SourceSystem` | Formula (Text) | `'NetSuite'` |
| `LastDataUpdate` | Formula (Date/Time) | `{today}` |
| `ReturnAuthorizationStatus` | Field | `Status` |
| `ProcessingAgent` | Field | `Created By` |
| `Department` | Field | `Department` |
| `ReturnType` | Field | `{custbody_return_reason}` |
| `ActualRefundAmount` | Field | `Amount` |
| `CycleTime` | Formula (Numeric) | `CASE WHEN {status} = 'Closed' THEN {lastmodifieddate} - {datecreated} ELSE NULL END` |
| `Activity_ReturnAuthorizationCreated` | Field | `Date Created` |
| `Activity_ReturnAuthorizationApproved` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Pending Receipt' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` |
| `Activity_ReturnAuthorizationRejected` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Rejected' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` |
| `Activity_ItemReceived` | Formula (Date/Time) | `{applyingtransaction.trandate}` |
| `Activity_ItemInspected` | Formula (Date/Time) | `CASE WHEN {custbody_inspection_status} = 'Complete' THEN {custbody_inspection_date} ELSE NULL END` |
| `Activity_CreditMemoCreated` | Formula (Date/Time) | `{createdfrom.trandate}` |
| `Activity_CreditMemoApproved` | Formula (Date/Time) | `MIN(CASE WHEN {createdfrom.systemnotes.newvalue} = 'Open' AND {createdfrom.systemnotes.field} = 'Status' THEN {createdfrom.systemnotes.date} ELSE NULL END)` |
| `Activity_RefundProcessed` | Formula (Date/Time) | `{createdfrom.appliedtotransaction.trandate}` |
| `Activity_CreditMemoApplied` | Formula (Date/Time) | `CASE WHEN {createdfrom.status} = 'Fully Applied' AND {createdfrom.appliedtotransaction.type} = 'Invoice' THEN {createdfrom.appliedtotransaction.date} ELSE NULL END` |
| `Activity_ExchangeOrderCreated` | Formula (Date/Time) | `{custbody_exchange_order.trandate}` |
| `Activity_CustomerNotified` | Formula (Date/Time) | `MAX({messages.messagedate})` |
| `Activity_ReturnAuthorizationClosed` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Closed' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` | 步骤
- 启用SuiteAnalytics Connect:确保您的NetSuite账户拥有SuiteAnalytics Connect许可证。管理员必须通过Setup > Company > Enable Features > Analytics启用该功能。
- 分配用户权限:为连接用户角色授予“SuiteAnalytics Connect”权限。该用户还需要拥有所有待查询记录的查看权限,例如Transactions、Employees和Customers。
- 安装ODBC驱动程序:从NetSuite中的SuiteAnalytics Connect下载页面,根据您的操作系统下载并安装相应的NetSuite ODBC驱动程序。
- 配置DSN:在运行查询的计算机上设置数据源名称(DSN)。输入Service Data Source、Server Hostname、Port、Role ID、Account ID和凭据。
- 连接SQL客户端:使用DBeaver或Microsoft SQL Server Management Studio等SQL客户端,通过已配置的DSN连接NetSuite。
- 准备SQL查询:将提供的SQL查询复制到客户端。该查询用于提取退货和退款流程中的所有关键事件。
- 自定义查询:修改查询中的占位值。至少需要更新
ReturnAuthorizations公用表表达式(CTE)中的日期范围,以筛选所需时间段。您可能还需要调整自定义字段名称,例如CUSTBODY_RETURN_TYPE,或根据NetSuite配置调整具体状态值。 - 执行查询:针对NetSuite数据库副本运行自定义SQL查询。执行时间可能因日期范围和数据量而异。
- 检查并导出数据:查询完成后,检查结果是否正确。将完整结果集导出为CSV文件。
- 完成上传准备:确保CSV文件表头与所需属性一致:
ReturnCaseId、ActivityName、EventTimestamp、SourceSystem、LastDataUpdate等。确认EventTimestamp列使用统一的日期时间格式。现在即可将文件上传到ProcessMind。
配置
- 前提条件:需要拥有带SuiteAnalytics Connect附加模块的NetSuite许可证。运行连接的用户必须拥有包含“SuiteAnalytics Connect”权限的角色,并具备交易、实体和员工记录的读取权限。
- 数据源配置:必须使用NetSuite ODBC驱动程序配置DSN(Data Source Name)。这需要Account ID、Role ID和凭据。在生产环境中,服务主机通常为
odbcserver.netsuite.com。 - 日期范围筛选:必须对用于选择Return Authorization的初始CTE应用日期范围筛选。否则查询会尝试提取全部退货数据,可能运行非常缓慢或超时。初次分析建议使用3至6个月的范围。
- 关键交易类型:查询针对多个核心交易类型:ReturnAuthorization、ItemReceipt、CreditMemo、CustomerRefund和SalesOrd(用于换货)。请确保您的流程使用这些标准对象。
- 自定义字段依赖:“Item Inspected”等活动以及“Return Type”等属性通常记录在自定义字段中。提供的查询使用
CUSTBODY_INSPECTION_STATUS和CUSTBODY_RETURN_TYPE等占位符。您必须在系统中确认正确的自定义字段ID,并据此更新查询。 - 性能注意事项:这是一个包含多次连接和大型
UNION ALL结构的复杂查询。建议在业务低峰期执行,以降低对系统性能的影响。对于超大数据集,可按较小的时间段运行查询,再合并结果。
a 示例查询 sql
WITH ReturnAuthorizations AS (
SELECT
T.TRANSACTION_ID AS ReturnCaseId,
T.TRANDATE
FROM
TRANSACTION T
WHERE
T.TYPE = 'ReturnAuthorization'
AND T.TRANDATE BETWEEN TO_DATE('[YYYY-MM-DD]', 'YYYY-MM-DD') AND TO_DATE('[YYYY-MM-DD]', 'YYYY-MM-DD')
)
SELECT
RA.ReturnCaseId AS "ReturnCaseId",
'Return Authorization Created' AS "ActivityName",
T.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION T
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON T.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Approved' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE = 'Pending Receipt'
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Rejected' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE IN ('Rejected', 'Closed')
UNION ALL
SELECT
RA.ReturnCaseId,
'Item Received' AS "ActivityName",
IR.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION IR
INNER JOIN TRANSACTION T_RA ON IR.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON IR.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE IR.TYPE = 'ItemReceipt'
UNION ALL
SELECT
RA.ReturnCaseId,
'Item Inspected' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.CUSTBODY_INSPECTION_STATUS' AND SN.NEW_VALUE = 'Completed'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Created' AS "ActivityName",
CM.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION CM
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON CM.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Approved' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION CM ON SN.TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo' AND SN.FIELD = 'TRANSACTION.APPROVAL_STATUS' AND SN.NEW_VALUE = 'Approved'
UNION ALL
SELECT
RA.ReturnCaseId,
'Refund Processed' AS "ActivityName",
REF.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
ABS(REF.TOTAL) AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION REF
INNER JOIN TRANSACTION CM ON REF.APPLIED_TO_TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON REF.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE REF.TYPE = 'CustomerRefund'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Applied' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION CM ON SN.TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo' AND SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE = 'Fully Applied'
UNION ALL
SELECT
RA.ReturnCaseId,
'Exchange Order Created' AS "ActivityName",
SO.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION SO
INNER JOIN TRANSACTION T_RA ON SO.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SO.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SO.TYPE = 'SalesOrd'
UNION ALL
SELECT
RA.ReturnCaseId,
'Customer Notified' AS "ActivityName",
MSG.MESSAGE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM MESSAGES MSG
INNER JOIN TRANSACTION T ON MSG.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON MSG.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE MSG.INCOMING = 'F'
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Closed' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE T.TYPE = 'ReturnAuthorization' AND SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE LIKE '%Closed%'; 立即优化退货和退款流程,提升NetSuite效率
将NetSuite退货周期时间缩短30%。立即开始改进运营。
无需信用卡•几分钟内完成设置