退货与退款处理数据模板
退货与退款处理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- 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 | 退货流程中发生的具体业务事件或步骤名称,例如“商品已检查”或“退款已处理”。 | ||
| 说明 活动名称用于描述退货与退款生命周期中的具体步骤或节点。按时间戳排列这些事件即可构建流程路径。分析活动的顺序和频率,有助于识别最常见的流程路径、步骤间的瓶颈,以及返工或重复活动。示例包括“创建退货授权”“已收到商品”和“贷项通知单已批准”。 重要性 此属性定义流程步骤,是绘制流程图、分析流程变体以及识别瓶颈或返工循环的基础。 获取途径 此属性通常根据Return Authorization和Credit Memo等交易记录的状态变化,或系统备注、自定义事件日志中记录的特定用户操作生成。 示例 创建退货授权已收到商品商品已检查退款已处理退货授权已关闭 | |||
| 退货案例ID ReturnCaseId | 用于唯一标识单笔客户退货或退款案例,并关联从发起到结案的所有相关活动。 | ||
| 说明 退货案例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 | 在退货流程中执行特定活动的员工或用户。 | ||
| 说明 处理经办人用于标识负责执行特定任务的人员,例如批准退货或检查商品。此属性对于分析个人绩效至关重要,有助于发现表现突出的员工、确定培训需求,并识别团队内的工作量分配不均。按经办人分析活动,是“部门退货流程绩效”仪表板的关键内容。 重要性 支持分析个人和团队绩效、平衡工作量并识别培训需求,直接影响运营效率。 获取途径 数据可来自NetSuite交易中的“Created By”“Approved By”等字段,或System Notes子列表中的用户字段。 示例 Alice JohnsonBob WilliamsCharlie Brown | |||
| 实际退款金额 ActualRefundAmount | 实际退还给客户的最终金额。 | ||
| 说明 此属性表示记入客户账户或实际退还给客户的金额,记录在Credit Memo或退款交易中。补货费、运费或损坏商品的部分退款等调整,都可能导致此金额与申请金额不同。此属性对财务报告以及计算“退款金额差异率”KPI至关重要。 重要性 反映退货的实际财务影响,是财务核对和退款准确性分析的重要依据。 获取途径 此值取自根据Return Authorization生成的Credit Memo交易中的“Total”字段。 示例 99.99140.000.00 | |||
| 退货状态 ReturnAuthorizationStatus | 退货授权的当前状态,例如“待审批”“已批准”或“已关闭”。 | ||
| 说明 此属性表示退货案例在生命周期中的当前状态,是了解退货进度和划分案例的基础。例如,分析“待收货”状态的持续时间,可以发现运输延误;“待审批”状态持续时间过长,则可能表明存在内部瓶颈。此属性还可用于确定退货的最终结果,例如“已关闭”或“已拒绝”。 重要性 显示每笔退货当前所处的流程阶段,以便分析案例分布、状态持续时间和流程结果。 获取途径 对应NetSuite Return Authorization记录中的“Status”字段或类似字段。 示例 待审批待收货已批准已拒绝已关闭 | |||
| 退货类型 ReturnType | 根据客户提供的原因对退货进行分类。 | ||
| 说明 退货类型根据退货原因对案例进行分类,例如“商品有缺陷”“尺码不合适”“改变主意”或“与描述不符”。此分类对于根因分析至关重要。按退货类型分析流程指标,企业可以发现产品质量问题、商品描述不准确或履约错误。此属性是“按类型和渠道分析退货绩效”仪表板的关键内容。 重要性 帮助找出退货的根本原因,从而有针对性地改进产品、营销描述或履约流程,减少退货量。 获取途径 通常是Return Authorization表单上的自定义字段或标准列表/记录字段,用于记录退货原因。 示例 产品有缺陷发错商品客户不满意尺码或颜色不符 | |||
| 部门 Department | 在特定阶段负责处理退货案例的业务部门或团队。 | ||
| 说明 此属性将流程活动归属到特定部门,例如“客户服务”“仓库”或“财务”。它对于了解团队间的交接、识别部门瓶颈至关重要。通过分析案例在某个部门内或等待该部门处理的时间,企业可以找出延误原因并优化资源配置。这是“部门退货流程绩效”仪表板的主要分析维度。 重要性 支持按职能领域分析流程绩效,突出显示部门间交接延误和部门瓶颈。 获取途径 此属性可根据与活动关联的用户或员工记录推导,也可取自交易本身的“Department”字段。在NetSuite中,该字段通常在员工记录中配置。 示例 仓库客户支持财务质量保证 | |||
| 产品标识符 ProductIdentifier | 用于唯一标识退回产品的编号,例如SKU或商品编号。 | ||
| 说明 此属性用于标识退货涉及的具体商品。按产品层面分析退货,对于发现退货率较高的商品至关重要,这可能意味着存在质量缺陷、商品描述不准确或其他问题。借助这些数据,可以深入分析产品绩效,为产品开发、采购和营销决策提供依据。 重要性 将退货流程数据关联到具体产品,支持分析产品相关问题的根本原因,并帮助降低整体退货率。 获取途径 此信息位于Return Authorization记录的“Items”子列表中,对应“Item”字段。 示例 SKU-TEE-BL-LPROD-00543ITEM-987123 | |||
| 客户ID CustomerId | 用于唯一标识发起退货的客户。 | ||
| 说明 客户ID将退货交易与特定客户关联起来,便于从客户角度分析退货情况,例如识别频繁退货的客户,这可能反映客户不满或欺诈行为。您还可以按客户类型或价值细分流程绩效,从而优先保障重点客户的服务。 重要性 支持从客户层面分析退货行为,并根据客户细分或生命周期价值等属性细分流程。 获取途径 这是NetSuite退货授权记录表头中的“Customer”或“Entity”字段。 示例 CUST-001CUST-002CUST-003 | |||
| 政策遵循情况 ReturnPolicyAdherence | 表示退货是否符合公司既定的退货政策。 | ||
| 说明 此布尔型或分类属性用于标记退货是否符合所有预设条件,例如退货期限、商品状况和购买凭证。它可用于监控合规情况并管理例外。“退货政策遵循例外情况”仪表板依靠此属性标出需要特殊处理或审核的案例,帮助降低风险并确保规则得到一致执行。 重要性 有助于监控和执行退货政策,降低不合规退货带来的财务风险,并确保处理公平一致。 获取途径 这几乎肯定是Return Authorization记录中的自定义字段,可能是复选框或列表,并通过工作流管理。 示例 符合政策不符合政策,超出期限例外情况已批准 | |||
| 是否符合SLA IsSlaCompliant | 通过计算得出的标记,用于表示退款是否在规定的SLA目标期限内处理完成。 | ||
| 说明 此布尔属性通过比较“退款已处理”时间戳与“退款SLA目标日期”得出。如果退款在目标日期当天或之前处理完成,则值为true,否则为false。此标记便于创建合规报告和仪表板,例如“退款SLA合规监控”仪表板,也用于计算“退款SLA达成率”KPI。 重要性 清晰标记每个案例的SLA绩效是否达标,便于跟踪、报告和分析一段时间内的合规率。 获取途径 此属性在数据转换期间或流程挖掘工具中计算。逻辑为: 示例 truefalse | |||
| 是否自动执行 IsAutomated | 用于标记某项活动是否由系统自动执行的布尔值。 | ||
| 说明 此属性用于判断活动是由用户执行,还是由自动化系统、脚本或工作流执行。例如,客户门户可能会自动触发“退货授权已创建”事件,而“商品已检查”则需要人工处理。跟踪自动化情况有助于发现可自动化的人工步骤,并衡量现有自动化带来的效率提升。 重要性 有助于区分人工任务和自动化任务,是发现自动化机会、衡量数字化转型成效的关键。 获取途径 可根据事件关联的用户推断。NetSuite中由系统生成的事件通常关联特定系统用户或脚本ID。 示例 truefalse | |||
| 申请退款金额 RequestedRefundAmount | 退货时最初申请或预计的退款金额。 | ||
| 说明 此属性记录流程开始时的预期退款金额,通常根据退回商品的原始购买价格确定。该金额可作为基准,与最终退款金额进行比较。“退款金额差异率”KPI会将此值与实际退款金额直接比较,以识别补货费、部分退款或其他调整造成的差异。 重要性 为财务分析提供基准,帮助跟踪预期退款金额与实际退款金额之间的差异,并查明调整原因。 获取途径 此值根据Return Authorization交易行项目中的“Amount”或“Rate”字段计算得出。 示例 99.99150.0025.50 | |||
| 退款SLA目标日期 RefundSlaTargetDate | 根据服务级别协议,预计完成退款处理的目标日期。 | ||
| 说明 退款SLA目标日期是一个计算得出的时间戳,表示向客户承诺的退款处理期限。通常以“收到商品”或“退款已批准”等关键事件为起点,加上预设时长(例如5个工作日)计算得出。此属性是“退款SLA合规监控”仪表板和“退款SLA达成率”KPI的重要依据,可用于衡量业务是否兑现承诺。 重要性 支持量化衡量客户承诺的履行情况,这对于维护客户满意度和信任至关重要。 获取途径 这通常不是标准字段,需要在关键时间戳(例如“收到商品”日期)上加上预设的SLA时限(例如5天)计算得出。 示例 2023-11-01T23:59:59Z2023-11-05T23:59:59Z2023-11-10T23:59:59Z | |||
| 退款金额差异 RefundAmountDiscrepancy | 申请退款金额与实际退款金额之间的计算差额。 | ||
| 说明 此指标通过申请退款金额减去实际退款金额计算得出。非零值表示流程中进行了调整,例如收取补货费或商品损坏扣款。此属性用于支持“退款金额差异率”KPI分析,帮助标记金额调整较大的案例,以便进一步审核。 重要性 突出显示退货流程中的财务调整,便于分析差异产生的原因,以及调整是否一致、合理。 获取途径 这是一个计算属性。公式为: 示例 0.0010.00-5.00 | |||
| 退货商品状况 ReturnCondition | 退回商品经检查后的状况,例如“全新”“已损坏”或“已使用”。 | ||
| 说明 此属性记录退回商品的实物检查结果。商品状况决定后续处理步骤,例如是否全额退款、重新入库或报废。“退货商品状况评估质量”仪表板重点分析评估结果的一致性和处理时长,这对财务核对和库存管理至关重要。 重要性 直接影响退货的财务结果及后续库存处理。评估不一致可能造成财务损失和流程返工。 获取途径 这通常是Item Receipt记录或Return Authorization记录中的自定义字段,由仓库员工在检查时填写。 示例 可再次销售已损坏,包装内已使用,状况良好缺少零件 | |||
| 退货渠道 ReturnChannel | 客户购买商品或发起退货所使用的渠道。 | ||
| 说明 退货渠道表示退货来源,例如“线上”“门店”或“电商平台”。不同渠道的退货流程、成本和客户预期可能各不相同。按渠道分析绩效,有助于企业优化各渠道的流程、有效配置资源并了解渠道特有的问题。这是“按类型和渠道分析退货绩效”仪表板的核心属性。 重要性 支持比较不同业务渠道的绩效,发现退货发起和处理方式中的低效环节或最佳实践。 获取途径 此信息通常来自与退货关联的原始Sales Order记录,可能存储在“Channel”或“Location”字段中。 示例 网上商店零售门店Amazon电商平台电话订购 | |||
退货与退款处理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 创建退货授权 | 客户申请退货时,退货流程由此启动。在NetSuite中,系统会创建一条新的退货授权(RA)记录,明确记录这一活动,并将其作为该退货的主要案例标识。 | ||
| 重要性 作为流程的起点,这项活动对于衡量退货总周期时间、分析一段时间内收到的退货申请量至关重要。 获取途径 此事件的时间戳为NetSuite中ReturnAuthorization记录的创建时间。该记录通常会保存操作用户、日期和初始状态(例如“待审批”)。 采集 NetSuite ReturnAuthorization交易记录的创建日期。 事件类型 explicit | |||
| 已创建贷项通知单 | 此活动表示通过创建贷项通知单启动退货的财务处理。该单据列明应退还给客户的金额,通常在商品收到并获批后根据Return Authorization创建。 | ||
| 重要性 创建贷项通知单是重要的财务节点。从收到商品到创建贷项通知单的时间,可以反映从检查到生成贷项的处理效率。 获取途径 此事件的时间戳为CreditMemo交易的创建时间。贷项通知单上的“Created From”字段可将其关联回ReturnAuthorization。 采集 NetSuite CreditMemo交易记录的创建日期。 事件类型 explicit | |||
| 已收到商品 | 此活动表示仓库或处理中心已实际收到退货商品。在NetSuite中,系统会创建一笔与原退货授权关联的Item Receipt交易,明确记录收货情况。 | ||
| 重要性 这是一个关键节点,标志着流程从客户操作转入内部处理。“退货已批准”到“已收到商品”之间的时间反映客户寄回商品的速度,此后的时间则反映内部处理效率。 获取途径 此事件的时间戳为ItemReceipt交易的创建时间。该记录与发起退货的ReturnAuthorization直接关联。 采集 与RA关联的NetSuite ItemReceipt交易记录创建日期。 事件类型 explicit | |||
| 退款已处理 | 这是最终的财务结算环节,资金在此退还给客户。系统会根据贷项通知单生成Customer Refund交易,明确记录退款。 | ||
| 重要性 此活动对于衡量SLA达成情况和客户满意度至关重要。从“贷项通知单已批准”到“退款已处理”的耗时,直接反映资金或财务部门的处理速度。 获取途径 此事件的时间戳为CustomerRefund交易的创建时间。该交易上的“Created From”字段可将其关联回CreditMemo。 采集 NetSuite CustomerRefund交易记录的创建日期。 事件类型 explicit | |||
| 退货授权已关闭 | 这是最后一项活动,表示所有处理完成后,退货案例已完成行政结案。可根据Return Authorization记录最终状态变为“已关闭”来推断。 | ||
| 重要性 作为流程的最终节点,此活动对于计算端到端周期时间、发现退款处理完成后仍长期未结的案例至关重要。 获取途径 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体依据是“Status”字段更新为最终状态,例如“已关闭”。 采集 检测ReturnAuthorization记录的状态是否变为“已关闭”。 事件类型 inferred | |||
| 退货授权已批准 | 此活动表示员工正式批准客户的退货申请,流程因此可以继续。通常可通过推断Return Authorization记录中的状态字段变化来识别,例如从“待审批”变为“待收货”。 | ||
| 重要性 跟踪此审批步骤对于发现初审阶段的瓶颈至关重要。此处的延误会直接影响通知客户和收到退货商品所需的时间。 获取途径 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体依据是“Status”字段更新为已批准状态(例如“待收货”)。 采集 检测ReturnAuthorization记录的状态是否变为“已批准”。 事件类型 inferred | |||
| 商品已检查 | 此概念性活动表示已完成退货商品的实物检查,以评估商品状况。由于NetSuite没有标准的“检查”对象,通常需要根据Return Authorization或Item Receipt上的自定义字段或状态更新来推断。 | ||
| 重要性 检查往往是主要瓶颈之一。跟踪检查完成时间,对于分析经办人员表现、判断决策是否一致,以及评估其对后续退款审批的影响至关重要。 获取途径 需要分析系统数据。可根据ReturnAuthorization记录中自定义的“检查状态”字段变化推断,也可能属于未记录在系统中的线下流程。 采集 根据Return Authorization或Item Receipt上的自定义状态字段变化推断。 事件类型 inferred | |||
| 已创建换货订单 | 此活动表示换货处理:系统为客户创建新的销售订单,而非退款。通常可通过创建与原Return Authorization关联的Sales Order来识别此事件。 | ||
| 重要性 将换货作为单独路径跟踪,有助于分析客户偏好,并比较换货与退款流程的效率。这是常见且重要的流程变体。 获取途径 此事件的时间戳为新SalesOrder交易的创建时间。SalesOrder与ReturnAuthorization之间的关联可能保存在标准字段或自定义字段中,需要分析系统数据才能确认。 采集 与ReturnAuthorization关联的SalesOrder创建日期。 事件类型 explicit | |||
| 已通知客户 | 此活动表示已向客户发送重要状态更新通知,例如审批结果、收到商品或退款处理完成。通常可根据记录“沟通”选项卡中系统生成邮件的时间戳推断。 | ||
| 重要性 及时沟通是提升客户满意度的关键。衡量流程节点与客户通知之间的延迟,有助于发现客户体验中的不足。 获取途径 需要分析系统数据。可从ReturnAuthorization或CreditMemo的“沟通”子选项卡中获取外发邮件或用户备注的时间戳。 采集 与案例关联的邮件时间戳或沟通日志条目时间戳。 事件类型 inferred | |||
| 贷项通知单已批准 | 此活动表示贷项通知单已正式获批。高额退款或财务控制流程通常要求此项审批。可根据Credit Memo记录的状态变化推断,表明该单据已可用于抵扣或付款。 | ||
| 重要性 如果需要财务审批,此步骤可能成为显著瓶颈。分析其耗时有助于优化财务控制,同时避免延误客户退款。 获取途径 根据CreditMemo记录的系统备注推断,具体依据是审批状态字段从“待审批”更新为“已批准”或“未结”。 采集 检测CreditMemo交易的状态是否变为“已批准”。 事件类型 inferred | |||
| 贷项通知单已抵扣 | 此活动表示一种现金退款以外的处理方式:将贷项通知单用于抵扣客户未结发票。可根据Credit Memo上的“Applied To”关联推断,表明贷项已被使用。 | ||
| 重要性 区分现金退款和贷项抵扣对于财务分析十分重要。与直接退款相比,这条路径代表另一种流程处理方式。 获取途径 根据CreditMemo的系统备注或关联记录推断,具体依据是该记录关联到一笔Invoice交易,用于抵扣客户余额。 采集 检测CreditMemo是否已用于抵扣Invoice交易。 事件类型 inferred | |||
| 退货授权已拒绝 | 此活动表示拒绝客户的退货申请,通常是因为不符合政策。可通过推断Return Authorization记录的状态变为“已拒绝”或“已关闭”且后续没有处理来识别此事件。 | ||
| 重要性 分析拒绝情况有助于找出退货申请不符合要求的常见原因,为客户沟通和政策说明提供依据。这是偏离理想路径的重要表现。 获取途径 根据ReturnAuthorization记录的系统备注或工作流历史推断,具体依据是“Status”字段更新为最终的“已拒绝”状态。 采集 检测ReturnAuthorization记录的状态是否变为“已拒绝”。 事件类型 inferred | |||
数据提取指南
步骤
- 进入保存搜索创建页面:登录NetSuite。依次进入Reports > New Search。在New Saved Search页面中,点击“交易”。
- 设置主要条件:在保存搜索设置页面的“条件”选项卡和“标准”子选项卡中,设置以下筛选条件,以筛选出退货授权记录:
类型为Return AuthorizationMain Line为是- 添加
Date Created筛选条件,并设置所需日期范围,例如“最近3个月”。这对控制数据量至关重要。
- 配置属性结果列:进入“结果”选项卡,添加以下字段,作为事件日志中的属性。您可以使用“自定义标签”按需重命名,以便识别。
- 案例ID:
Document Number或TranID(自定义标签:ReturnCaseId) - 退货状态:
状态(自定义标签:ReturnAuthorizationStatus) - 处理人员:
Created By,或适用时使用自定义字段(自定义标签:ProcessingAgent) - 部门:
部门(自定义标签:Department) - 退货类型:类似
[Your Return Reason Field]的自定义字段(自定义标签:ReturnType) - 退款金额:
Amount(自定义标签:ActualRefundAmount)
- 案例ID:
- 添加事件时间戳公式列:这是最关键的一步。为12项活动分别添加一个“公式(日期/时间)”列。每个公式都使用CASE语句,仅在相应事件发生时返回时间戳。各项活动的具体公式请参阅“查询”部分。
- 添加静态列:在结果中添加两个“公式(文本)”列:
- 对于
SourceSystem,使用公式:'NetSuite'。 - 对于
LastDataUpdate,使用代表运行日期的公式,例如{today}。如需精确时间戳,则使用导出时间。
- 对于
- 保存并导出搜索:为搜索设置清晰的名称,例如“ProcessMind退货数据提取”。点击“保存并运行”。结果显示后,点击导出图标并选择“CSV”。
- 将数据转换为事件日志:导出的CSV为宽表格式,每行对应一个退货案例,多个列分别记录不同事件的时间戳。您需要将其转换为长表格式的事件日志。可以使用Microsoft Excel Power Query(取消透视列)、Python或其他脚本工具完成转换。
- 对CSV中的每一行,为每个非空事件时间戳列创建一行新记录。
- 转换后的表格应包含
ReturnCaseId、ActivityName和EventTimestamp等列。ActivityName取自原时间戳列的表头(例如“退货授权已创建”),EventTimestamp则取该列的值。
- 完成上传准备:确保最终CSV文件包含以下必需表头:
ReturnCaseId、ActivityName、EventTimestamp、SourceSystem、LastDataUpdate,以及其他建议属性。文件现在可以上传到ProcessMind。
配置
- 搜索类型:保存的搜索必须是
交易搜索。 - 日期范围:务必对退货授权的
Date Created字段应用日期范围筛选。建议选择3至6个月,以兼顾数据完整性和性能。 - 主要筛选条件:搜索必须筛选
类型为Return Authorization且Main Line为是,以确保每个退货案例仅有一条初始记录。 - 自定义字段:此提取的准确性,尤其是“商品已检查”等概念性事件或“退货类型”等属性的准确性,很大程度上取决于贵组织在交易记录中使用的自定义字段。提供的公式包含
{custbody_...}等占位符,必须根据您的NetSuite配置进行调整。 - 用户权限:运行搜索的用户需要查看以下所有交易类型的权限:退货授权、物品收据、贷项通知单、客户退款和销售订单。
- 性能:如果账户中的退货量很大,此综合搜索可能运行缓慢。建议在非高峰时段运行,或安排其自动导出到文件柜。
查询示例 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”权限。该用户还需要拥有所有待查询记录(例如交易、员工和客户)的查看权限。
- 安装ODBC驱动程序:从NetSuite的SuiteAnalytics Connect下载页面下载并安装适用于您操作系统的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(数据源名称),并提供Account ID、Role ID和凭据。在生产环境中,服务主机通常为
odbcserver.netsuite.com。 - 日期范围筛选:务必在用于选择Return Authorization的初始CTE中应用日期范围筛选条件。若不设置筛选,查询会尝试提取所有退货数据,可能运行很慢或超时。初次分析建议选择3至6个月的数据。
- 关键交易类型:查询涉及多种核心交易类型:ReturnAuthorization、ItemReceipt、CreditMemo、CustomerRefund和SalesOrd(用于换货)。请确认您的流程使用这些标准对象。
- 自定义字段依赖:“商品已检查”等活动和“退货类型”等属性通常记录在自定义字段中。所提供的查询使用
CUSTBODY_INSPECTION_STATUS和CUSTBODY_RETURN_TYPE等占位符。您必须在系统中确认正确的自定义字段ID,并相应更新查询。 - 性能注意事项:此查询较为复杂,包含多个联接和大型
UNION ALL结构。建议在非高峰时段执行,以尽量减少对系统性能的影响。对于非常大的数据集,可以按较短时间段分批运行查询,再合并结果。
查询示例 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%。立即开始改进运营。
无需信用卡 • 几分钟即可完成设置