Su Plantilla de Datos para el Procesamiento de Devoluciones y Reembolsos
Su Plantilla de Datos para el Procesamiento de Devoluciones y Reembolsos
- Atributos recomendados para recopilar
- Actividades clave para el seguimiento
- Guía de extracción de NetSuite
Atributos del Procesamiento de Devoluciones y Reembolsos
| Nombre | Descripción | ||
|---|---|---|---|
| ID de Caso de Devolución ReturnCaseId | El identificador único para un único caso de devolución o reembolso de cliente, que vincula todas las actividades relacionadas desde el inicio hasta el cierre. | ||
| Descripción El ID de Caso de Devolución sirve como identificador principal para rastrear el recorrido de principio a fin de una devolución. Cada ID único corresponde a una única autorización de devolución, lo que permite el análisis exhaustivo de todos los eventos asociados, como la recepción del artículo, la inspección y el procesamiento del reembolso. En el Process Mining, este ID es esencial para reconstruir el flujo completo del proceso para cada devolución, permitiendo el cálculo de los tiempos de ciclo y la identificación de desviaciones a nivel de caso. Por qué es importante Este es el atributo fundamental para el Process Mining, ya que conecta todos los eventos individuales en instancias de proceso coherentes de principio a fin, lo que permite analizar los flujos y el rendimiento del proceso. Dónde obtener Este suele ser el ID interno o el ID de transacción del registro de Autorización de Devolución en NetSuite. Ejemplos RMA-0012345RMA-0012346RMA-0012347 | |||
| Nombre de la Actividad ActivityName | El nombre del evento o paso de negocio específico que ocurrió dentro del proceso de devoluciones, como 'Artículo Inspeccionado' o 'Reembolso Procesado'. | ||
| Descripción El Nombre de la Actividad describe un paso o hito distinto en el ciclo de vida de las devoluciones y reembolsos. Estos eventos se ordenan por sus marcas de tiempo para construir el flujo del proceso. El análisis de la secuencia y la frecuencia de las actividades ayuda a identificar las rutas de proceso más comunes, los cuellos de botella entre los pasos y cualquier repetición o actividad recurrente. Los ejemplos incluyen 'Autorización de Devolución Creada', 'Artículo Recibido' y 'Nota de Crédito Aprobada'. Por qué es importante Este atributo define los pasos del proceso. Es esencial para visualizar el mapa del proceso, analizar las variaciones del flujo e identificar cuellos de botella o bucles de repetición. Dónde obtener Este atributo se deriva típicamente de los cambios de estado de los registros de transacciones como las Autorizaciones de Devolución y las Notas de Crédito, o de acciones específicas del usuario registradas en las notas del sistema o en los registros de eventos personalizados. Ejemplos Autorización de Devolución CreadaArtículo RecibidoArtículo InspeccionadoReembolso ProcesadoAutorización de Devolución Cerrada | |||
| Timestamp del Evento EventTimestamp | La fecha y hora precisas en que ocurrió la actividad, sirviendo como la columna vertebral cronológica del proceso. | ||
| Descripción La Marca de Tiempo del Evento registra el momento exacto en que tuvo lugar una actividad. Estos datos son críticos para secuenciar los eventos correctamente y para todo el análisis basado en el tiempo. Se utiliza para calcular las duraciones entre actividades, los tiempos de ciclo totales del caso y los tiempos de espera, que son fundamentales para la monitorización del rendimiento, el análisis de cuellos de botella y las comprobaciones de cumplimiento del SLA. Las marcas de tiempo deben ser precisas para garantizar la fiabilidad de las percepciones del Process Mining. Por qué es importante Este atributo proporciona el orden cronológico de los eventos, lo cual es necesario para descubrir el flujo del proceso y calcular todas las métricas de rendimiento, como los tiempos de ciclo y los tiempos de espera. Dónde obtener Esta información se obtiene típicamente de los campos 'Fecha de Creación' o 'Fecha de Última Modificación' en los registros de NetSuite o de las marcas de tiempo en la sublista de Notas del Sistema asociadas con las transacciones. Ejemplos 2023-10-26T10:00:00Z2023-10-26T14:35:10Z2023-10-27T09:12:05Z | |||
| Source System SourceSystem | El sistema del que se extrajeron los datos, utilizado para rastrear la procedencia de los datos. | ||
| Descripción Este atributo identifica el origen de los datos del proceso. En este contexto, típicamente será 'NetSuite'. Especificar el sistema de origen es importante en entornos donde los datos pueden fusionarse de múltiples sistemas, asegurando una clara trazabilidad y linaje de los datos. Por qué es importante Identifica el origen de los datos, lo cual es crucial para la data governance, troubleshooting, y en escenarios donde la data de múltiples sistemas se combina para una vista holística del proceso. Dónde obtener Este es un valor estático ('NetSuite') que se añade típicamente durante el proceso de extracción y transformación de datos. Ejemplos NetSuiteNetSuite ERP | |||
| Última actualización de datos LastDataUpdate | La marca de tiempo que indica la última vez que se actualizó o refrescó los datos de este proceso. | ||
| Descripción Este atributo registra la última vez que se actualizó el conjunto de datos desde el sistema de origen. Es una pieza crítica de metadatos que informa a los usuarios sobre la actualidad del análisis. Mostrar esta información en los dashboards ayuda a gestionar las expectativas y asegura que las decisiones se tomen basándose en la comprensión de la oportunidad de los datos. Por qué es importante Proporciona transparencia sobre la actualidad de los datos, lo cual es esencial para que los usuarios confíen en el análisis y comprendan su relevancia para el estado actual de las operaciones. Dónde obtener Este Ejemplos 2024-05-21T02:00:00Z2024-05-22T02:00:00Z | |||
| Agente de Procesamiento ProcessingAgent | El empleado o usuario que realizó una actividad específica en el proceso de devolución. | ||
| Descripción El Agente de Procesamiento identifica al individuo responsable de ejecutar una tarea determinada, como aprobar una devolución o inspeccionar un artículo. Este atributo es crucial para el análisis de rendimiento a nivel de usuario. Ayuda a identificar empleados de alto rendimiento, áreas donde se puede necesitar capacitación adicional y desequilibrios en la distribución de la carga de trabajo en un equipo. Analizar las actividades por agente es clave para el panel 'Rendimiento del Proceso de Devolución por Departamento'. Por qué es importante Permite el análisis del rendimiento individual y del equipo, el equilibrio de la carga de trabajo y la identificación de necesidades de capacitación, lo que impacta directamente en la eficiencia operativa. Dónde obtener Esto puede obtenerse de campos como 'Creado por', 'Aprobado por' o campos de usuario en la sublista de Notas del Sistema en las transacciones de NetSuite. Ejemplos Alice JohnsonBob WilliamsCharlie Brown | |||
| Departamento Department | El departamento o equipo de negocio responsable de gestionar el caso de devolución en una etapa determinada. | ||
| Descripción Este atributo asigna actividades de proceso a un departamento específico, como 'Servicio al Cliente', 'Almacén' o 'Finanzas'. Es esencial para comprender las transferencias entre equipos e identificar los cuellos de botella departamentales. Al analizar el tiempo que los casos pasan dentro o esperando a un departamento específico, las organizaciones pueden identificar las fuentes de retraso y optimizar la asignación de recursos. Esta es una dimensión principal para el panel 'Rendimiento del Proceso de Devolución por Departamento'. Por qué es importante Permite el análisis del rendimiento del proceso por área funcional, destacando los retrasos en las entregas interdepartamentales y los cuellos de botella departamentales. Dónde obtener Esto puede derivarse del registro de usuario o empleado asociado a una actividad, o de un campo de 'Departamento' en la propia transacción. A menudo se configura en los registros de empleados en NetSuite. Ejemplos AlmacénSoporte al ClienteFinanzasGarantía de Calidad | |||
| Estado de Devolución ReturnAuthorizationStatus | El estado actual de la autorización de devolución, como 'Pendiente de Aprobación', 'Aprobada' o 'Cerrada'. | ||
| Descripción Este atributo indica el estado actual del caso de devolución dentro de su ciclo de vida. Es fundamental para comprender el progreso de las devoluciones y para segmentar los casos. Por ejemplo, analizar el tiempo transcurrido en el estado 'Pendiente de Recepción' puede resaltar retrasos en el envío, mientras que una larga duración en 'Pendiente de Aprobación' podría indicar un cuello de botella interno. También se utiliza para determinar el resultado final de una devolución, como 'Cerrada' o 'Rechazada'. Por qué es importante Proporciona una instantánea de dónde se encuentra cada devolución en el proceso, lo que permite el análisis de la distribución de casos, las duraciones de los estados y los resultados del proceso. Dónde obtener Esto corresponde al campo 'Estado' o un campo similar en el registro de Autorización de Devolución de NetSuite. Ejemplos Pendiente de aprobaciónRecepción PendienteAprobadoRechazadaCerrado | |||
| Monto de Reembolso Real ActualRefundAmount | El importe monetario final que realmente se reembolsó al cliente. | ||
| Descripción Este atributo representa el valor real acreditado o reembolsado al cliente, tal como se registra en la Nota de Crédito o en la transacción de reembolso. Este importe puede diferir del importe solicitado debido a ajustes como tarifas de reabastecimiento, costos de envío o reembolsos parciales por productos dañados. Este atributo es fundamental para los informes financieros y para calcular el KPI de 'Tasa de Discrepancia del Importe del Reembolso'. Por qué es importante Representa el verdadero impacto financiero de la devolución y es esencial para la conciliación financiera y el análisis de la precisión del reembolso. Dónde obtener Este valor se obtiene del campo 'Total' en la transacción de Nota de Crédito que se genera a partir de la Autorización de Devolución. Ejemplos 99.99140.000.00 | |||
| Tiempo de Ciclo CycleTime | El tiempo total transcurrido desde la creación de la solicitud de devolución hasta su cierre final. | ||
| Descripción El Tiempo de Ciclo es un indicador clave de rendimiento calculado para cada caso de devolución. Mide la duración desde el primer evento hasta el último, proporcionando una vista de alto nivel de la eficiencia del proceso. Esta métrica es la base para el dashboard 'Tiempo de Ciclo de Proceso de Devolución de Extremo a Extremo' y el KPI 'Tiempo Promedio de Ciclo de Devolución'. Se calcula restando el timestamp de la primera actividad del timestamp de la última actividad para cada caso. Por qué es importante Esta es una medida principal del rendimiento del proceso. Los tiempos de ciclo altos a menudo apuntan a ineficiencias, cuellos de botella o un trabajo manual excesivo, lo que conlleva mayores costos operativos y una mala experiencia del cliente. Dónde obtener Este no es un campo en el sistema de origen. Es una métrica calculada durante el análisis de Process Mining restando la marca de tiempo mínima de la marca de tiempo máxima para cada caso. Ejemplos 10 días 4 horas5 días 12 horas21 días 2 horas | |||
| Tipo de Devolución ReturnType | La clasificación de la devolución según la razón proporcionada por el cliente. | ||
| Descripción El Tipo de Devolución clasifica las devoluciones según la razón subyacente, como 'Artículo Defectuoso', 'Talla Incorrecta', 'Cambio de Opinión' o 'No como se Describió'. Esta categorización es vital para el análisis de la causa raíz. Al analizar las métricas del proceso en diferentes tipos de devolución, una empresa puede identificar problemas de calidad del producto, inexactitudes en la descripción o errores en la entrega. Este atributo es clave para el panel 'Rendimiento de Devoluciones por Tipo y Canal'. Por qué es importante Ayuda a identificar las causas raíz de las devoluciones, permitiendo mejoras dirigidas en productos, descripciones de marketing o el fulfillment process para reducir el volumen de devoluciones. Dónde obtener Este suele ser un campo personalizado o un campo de lista/registro estándar en el formulario de Autorización de Devolución donde se captura el motivo de la devolución. Ejemplos Producto DefectuosoArtículo Incorrecto EnviadoInsatisfacción del ClienteTalla/Color Incorrecto | |||
| Adherencia a la Política ReturnPolicyAdherence | Indica si la devolución cumple con las políticas de devolución establecidas por la empresa. | ||
| Descripción Este atributo booleano o categórico indica si una devolución cumple con todos los criterios predefinidos, como el plazo de devolución, la condición del artículo y la prueba de compra. Se utiliza para monitorear el cumplimiento y gestionar excepciones. El dashboard de 'Excepciones de Adherencia a la Política de Devoluciones' se basa en este atributo para resaltar los casos que requieren manejo o revisión especial, ayudando a minimizar el riesgo y asegurar la aplicación consistente de las reglas. Por qué es importante Ayuda a monitorear y hacer cumplir las políticas de devolución, reduciendo el riesgo financiero de devoluciones no conformes y asegurando la equidad y consistencia. Dónde obtener Esto sería casi con certeza un campo personalizado, posiblemente una casilla de verificación o una lista, en el registro de Autorización de Devolución, gestionado a través de un flujo de trabajo. Ejemplos ConformeNo Conforme - Fuera de PlazoExcepción Aprobada | |||
| Automatizado IsAutomated | Un indicador booleano que señala si una actividad fue realizada automáticamente por el sistema. | ||
| Descripción Este atributo indica si una actividad fue ejecutada por un usuario o por un sistema automatizado, script o flujo de trabajo. Por ejemplo, un evento inicial de 'Autorización de Devolución Creada' podría automatizarse a través de un portal de clientes, mientras que 'Artículo Inspeccionado' es una actividad manual. El seguimiento de la automatización ayuda a identificar oportunidades para automatizar pasos manuales y a medir las ganancias de eficiencia de las automatizaciones existentes. Por qué es importante Ayuda a distinguir entre tareas manuales y automatizadas, lo cual es clave para identificar oportunidades de automatización y medir el impacto de los esfuerzos de transformación digital. Dónde obtener Esto se puede inferir del usuario asociado con un evento. Los eventos generados por el sistema en NetSuite a menudo se asocian con un usuario de sistema específico o un ID de script. Ejemplos truefalse | |||
| Canal de Devolución ReturnChannel | El canal a través del cual se realizó la compra original o se inició la devolución. | ||
| Descripción El Canal de Devolución indica el origen de la devolución, por ejemplo, 'Online', 'En Tienda' o 'Marketplace'. Los diferentes canales pueden tener procesos de devolución, costos y expectativas del cliente distintos. Analizar el rendimiento por canal ayuda a las empresas a optimizar cada proceso específico, asignar recursos de manera efectiva y comprender los problemas específicos del canal. Este es un atributo central para el panel 'Rendimiento de Devoluciones por Tipo y Canal'. Por qué es importante Permite la comparación del rendimiento entre diferentes canales de negocio, revelando ineficiencias o mejores prácticas específicas sobre cómo se inician y manejan las devoluciones. Dónde obtener Esta información a menudo se obtiene del registro del Pedido de Venta original asociado con la devolución. Podría almacenarse en un campo de 'Canal' o 'Ubicación'. Ejemplos Tienda WebTienda MinoristaAmazon MarketplacePedido Telefónico | |||
| Condición de Devolución ReturnCondition | La condición evaluada del artículo devuelto tras la inspección, como 'Nuevo', 'Dañado' o 'Usado'. | ||
| Descripción Este atributo captura el resultado de la inspección física del artículo devuelto. La condición determina los pasos posteriores, como si se emite un reembolso completo, el artículo se repone o debe desecharse. El análisis de la consistencia y los tiempos de procesamiento de esta evaluación es el foco del panel 'Calidad de la Evaluación de la Condición de Devolución' y es crucial para la conciliación financiera y la gestión de inventario. Por qué es importante Impacta directamente el resultado financiero de la devolución y las acciones de inventario subsiguientes. Las evaluaciones inconsistentes pueden llevar a pérdidas financieras y reprocesos. Dónde obtener Es probable que sea un campo personalizado en el registro de Recepción de Artículo o en el registro de Autorización de Devolución que el personal del almacén rellena durante la inspección. Ejemplos RevendibleDañado - En CajaUsado - Buen EstadoPiezas Faltantes | |||
| Cumple con el SLA IsSlaCompliant | Un indicador calculado que señala si el reembolso fue procesado dentro del objetivo de SLA definido. | ||
| Descripción Este atributo booleano se deriva comparando la marca de tiempo de 'Reembolso Procesado' con la 'Fecha Objetivo del SLA de Reembolso'. Si el reembolso se procesó en o antes de la fecha objetivo, el valor es verdadero; de lo contrario, es falso. Esta bandera simplifica la creación de informes de cumplimiento y dashboards, como el dashboard de 'Monitorización del Cumplimiento del SLA de Reembolso', y se utiliza para calcular el KPI de 'Tasa de Cumplimiento del SLA de Reembolso'. Por qué es importante Proporciona un resultado claro y binario para el rendimiento del SLA caso por caso, lo que facilita el seguimiento, la elaboración de informes y el análisis de las tasas de cumplimiento a lo largo del tiempo. Dónde obtener Este atributo se calcula durante la transformación de datos o dentro de la herramienta de Process Mining. La lógica es: Ejemplos truefalse | |||
| Discrepancia en el Importe del Reembolso RefundAmountDiscrepancy | La diferencia calculada entre el importe de reembolso solicitado y el importe de reembolso real. | ||
| Descripción Esta métrica se calcula restando el 'Importe de Reembolso Real' del 'Importe de Reembolso Solicitado'. Un valor distinto de cero indica que se realizó un ajuste durante el proceso, como por tarifas de reabastecimiento o artículos dañados. Este atributo se utiliza para impulsar el análisis del KPI 'Tasa de Discrepancia del Importe del Reembolso', ayudando a marcar casos con ajustes financieros significativos para una revisión posterior. Por qué es importante Destaca los ajustes financieros realizados durante el proceso de devolución, permitiendo el análisis de por qué ocurren las discrepancias y si son consistentes y justificadas. Dónde obtener Este es un atributo calculado. La fórmula es: Ejemplos 0.0010.00-5.00 | |||
| Fecha Objetivo del SLA de Reembolso RefundSlaTargetDate | La fecha objetivo en la que se espera procesar el reembolso según los acuerdos de nivel de servicio. | ||
| Descripción La Fecha Objetivo del SLA de Reembolso es una marca de tiempo calculada que representa el compromiso con el cliente para procesar su reembolso. Se calcula típicamente añadiendo un período predefinido, como 5 días hábiles, a un evento clave como 'Artículo Recibido' o 'Reembolso Aprobado'. Este atributo es esencial para el panel de control 'Monitorización del Cumplimiento del SLA de Reembolso' y el KPI 'Tasa de Cumplimiento del SLA de Reembolso', permitiendo a la empresa medir el rendimiento frente a sus promesas. Por qué es importante Permite la medición cuantitativa del rendimiento en relación con los compromisos con el cliente, lo cual es crucial para mantener la satisfacción y la confianza del cliente. Dónde obtener Esta fecha no suele ser un campo estándar. Debe derivarse añadiendo un período de SLA predefinido (por ejemplo, 5 días) a una marca de tiempo clave, como la fecha de 'Artículo Recibido'. Ejemplos 2023-11-01T23:59:59Z2023-11-05T23:59:59Z2023-11-10T23:59:59Z | |||
| ID de cliente CustomerId | El identificador único del cliente que inicia la devolución. | ||
| Descripción El ID de Cliente vincula una transacción de devolución a un cliente específico. Esto permite un análisis centrado en el cliente, como la identificación de clientes con devoluciones frecuentes, lo que podría indicar insatisfacción o comportamiento fraudulento. También permite la segmentación del rendimiento del proceso por tipo o valor de cliente, ayudando a priorizar el servicio para cuentas clave. Por qué es importante Facilita el análisis a nivel de cliente del comportamiento de las devoluciones y permite la segmentación del proceso basada en atributos del cliente como el segmento o el valor de vida útil. Dónde obtener Este es el campo 'Cliente' o 'Entidad' en el encabezado del registro de Autorización de Devolución en NetSuite. Ejemplos CUST-001CUST-002CUST-003 | |||
| Identificador de Producto ProductIdentifier | El identificador único del producto que se devuelve, como el SKU o el número de artículo. | ||
| Descripción Este atributo identifica el artículo específico involucrado en la devolución. Analizar las devoluciones a nivel de producto es crucial para identificar artículos con altas tasas de devolución, lo que puede indicar defectos de calidad, descripciones deficientes u otros problemas. Estos datos permiten un análisis profundo del rendimiento del producto y pueden informar decisiones relacionadas con el desarrollo, el aprovisionamiento y el marketing del producto. Por qué es importante Los enlaces relacionan los datos del proceso con productos específicos, permitiendo el análisis de la causa raíz de problemas relacionados con el producto y ayudando a reducir las tasas generales de devolución. Dónde obtener Esto se encuentra en la sublista 'Artículos' del registro de Autorización de Devolución. Corresponde al campo 'Artículo'. Ejemplos SKU-TEE-BL-LPROD-00543ITEM-987123 | |||
| Importe de Reembolso Solicitado RequestedRefundAmount | El importe monetario del reembolso inicialmente solicitado o esperado para la devolución. | ||
| Descripción Este atributo almacena el valor de reembolso esperado al inicio del proceso. Típicamente se basa en el precio de compra original de los artículos devueltos. Este importe sirve como base de comparación con el importe reembolsado final. El KPI 'Tasa de Discrepancia del Importe del Reembolso' compara directamente este valor con el Importe de Reembolso Real para identificar variaciones causadas por tarifas de reabastecimiento, reembolsos parciales u otros ajustes. Por qué es importante Proporciona una base para el análisis financiero, ayudando a rastrear las discrepancias entre los valores de reembolso esperados y reales e identificar las razones de los ajustes. Dónde obtener Este valor se deriva de los campos 'Importe' o 'Tasa' en las líneas de detalle de la transacción de Autorización de Devolución. Ejemplos 99.99150.0025.50 | |||
Actividades de Procesamiento de Devoluciones y Reembolsos
| Actividad | Descripción | ||
|---|---|---|---|
| Artículo Recibido | Esta actividad marca la recepción física del artículo devuelto en el almacén o centro de procesamiento. En NetSuite, esto se registra explícitamente creando una transacción de Recepción de Artículo vinculada a la Autorización de Devolución original. | ||
| Por qué es importante Este es un hito crítico que transiciona el proceso de la acción del cliente al procesamiento interno. El tiempo entre 'Devolución Aprobada' y 'Artículo Recibido' mide la velocidad de devolución del cliente, mientras que el tiempo posterior a este evento mide la eficiencia interna. Dónde obtener Este evento es la marca de tiempo de creación de la transacción de Recepción de Artículo. Este registro está directamente vinculado a la Autorización de Devolución de origen. Capturar Fecha de creación del registro de la transacción de Recepción de Artículo de NetSuite vinculada a la RA. Tipo de evento explicit | |||
| Autorización de Devolución Aprobada | Esta actividad representa la aprobación formal de la solicitud de devolución del cliente por parte de un empleado, lo que permite que el proceso avance. Se captura típicamente infiriendo un cambio en el campo de estado del registro de la Autorización de Devolución, como de 'Pendiente de Aprobación' a 'Pendiente de Recepción'. | ||
| Por qué es importante El seguimiento de este paso de aprobación es crucial para identificar cuellos de botella en la fase de revisión inicial. Los retrasos aquí impactan directamente el tiempo que lleva informar al cliente y recibir el artículo devuelto. Dónde obtener Inferido de las system notes o el historial de workflow para el registro ReturnAuthorization, específicamente cuando el campo 'Status' se actualiza a un estado aprobado (por ejemplo, 'Pending Receipt'). Capturar Detectar el cambio de estado en el registro ReturnAuthorization a un estado 'Aprobado'. Tipo de evento inferred | |||
| Autorización de Devolución Cerrada | Esta es la actividad final, que marca el cierre administrativo del caso de devolución una vez completado todo el procesamiento. Esto se infiere del cambio de estado final en el registro de Autorización de Devolución a un estado 'Cerrado'. | ||
| Por qué es importante Como punto final definitivo del proceso, esta actividad es esencial para calcular los tiempos de ciclo de extremo a extremo e identificar los casos que permanecen abiertos mucho después de que se haya procesado el reembolso. Dónde obtener Inferido de las system notes o el historial de workflow para el registro ReturnAuthorization cuando el campo 'Status' se actualiza a su estado terminal final, como 'Closed'. Capturar Detectar el cambio de estado en el registro ReturnAuthorization a un estado 'Cerrado'. Tipo de evento inferred | |||
| Autorización de Devolución Creada | Esta actividad marca el inicio del proceso de devolución cuando un cliente solicita devolver un artículo. Se captura explícitamente en NetSuite a través de la creación de un nuevo registro de Autorización de Devolución (RA), que sirve como identificador principal del caso para la devolución. | ||
| Por qué es importante Como punto de partida del proceso, esta actividad es esencial para medir el tiempo total del ciclo de devolución y analizar el volumen de solicitudes de devolución entrantes a lo largo del tiempo. Dónde obtener Este evento es la marca de tiempo de creación del registro de Autorización de Devolución en NetSuite. El usuario, la fecha y el estado inicial (por ejemplo, 'Pendiente de Aprobación') se capturan típicamente en este registro. Capturar Fecha de creación del registro de la transacción de Autorización de Devolución de NetSuite. Tipo de evento explicit | |||
| Nota de Crédito Creada | Esta actividad significa que la parte financiera de la devolución se ha iniciado creando una Nota de Crédito. Este documento detalla el importe a reembolsar al cliente y se crea a partir de la Autorización de Devolución una vez que el artículo es recibido y aprobado. | ||
| Por qué es importante La creación de la Nota de Crédito es un hito financiero clave. El tiempo entre la recepción del artículo y la creación de la nota de crédito revela la eficiencia del proceso de inspección a crédito. Dónde obtener Este evento es la marca de tiempo de creación de la transacción de Nota de Crédito. El campo 'Creado desde' en la Nota de Crédito la vincula de nuevo a la Autorización de Devolución. Capturar Fecha de creación del registro de la transacción de Nota de Crédito de NetSuite. Tipo de evento explicit | |||
| Reembolso Procesado | Este es el acuerdo financiero final donde los fondos se devuelven al cliente. Se captura explícitamente mediante la creación de una transacción de Reembolso al Cliente, que se genera a partir de la Nota de Crédito. | ||
| Por qué es importante Esta actividad es fundamental para medir el cumplimiento del SLA y la satisfacción del cliente. La duración desde 'Nota de Crédito Aprobada' hasta 'Reembolso Procesado' refleja directamente la velocidad del departamento de tesorería o finanzas. Dónde obtener Este evento es la marca de tiempo de creación de la transacción de Reembolso al Cliente. El campo 'Creado desde' en esta transacción la vincula de nuevo a la Nota de Crédito. Capturar Fecha de creación del registro de la transacción de Reembolso al Cliente de NetSuite. Tipo de evento explicit | |||
| Artículo Inspeccionado | Esta actividad conceptual representa la finalización de la inspección física del artículo devuelto para evaluar su condición. Dado que NetSuite carece de un objeto 'Inspección' estándar, esto se infiere típicamente de un campo personalizado o una actualización de estado en la Autorización de Devolución o la Recepción de Artículo. | ||
| Por qué es importante La inspección es a menudo un cuello de botella importante. Rastrear su tiempo de finalización es vital para analizar el rendimiento del agente, la consistencia de las decisiones y su impacto en la posterior aprobación del reembolso. Dónde obtener Requiere análisis del sistema. Esto puede inferirse de un cambio en un campo personalizado de 'Estado de Inspección' en el registro de la Autorización de Devolución, o podría ser un proceso fuera de línea que no se registra. Capturar Inferido de un cambio en el campo de estado personalizado en la Autorización de Devolución o Recibo de Artículo. Tipo de evento inferred | |||
| Autorización de Devolución Rechazada | Esto representa la decisión de denegar la solicitud de devolución de un cliente, a menudo debido a violaciones de la política. Este evento se captura infiriendo un cambio de estado en el registro de Autorización de Devolución a un estado 'Rechazado' o 'Cerrado' sin más procesamiento. | ||
| Por qué es importante El análisis de los rechazos ayuda a identificar razones comunes para las solicitudes de devolución no conformes, lo que puede informar la comunicación con el cliente y la aclaración de políticas. Es una desviación clave del camino ideal. Dónde obtener Inferido de las system notes o el historial de workflow para el registro ReturnAuthorization cuando el campo 'Status' se actualiza a un estado terminal 'Rejected'. Capturar Detectar el cambio de estado en el registro ReturnAuthorization a un estado 'Rechazado'. Tipo de evento inferred | |||
| Cliente Notificado | Representa el envío de una notificación al cliente sobre una actualización de estado clave, como la aprobación, la recepción del artículo o el reembolso procesado. Esto se infiere típicamente de la marca de tiempo de un correo electrónico generado por el sistema y registrado en la pestaña de comunicación del registro. | ||
| Por qué es importante La comunicación oportuna es clave para la satisfacción del cliente. Medir el desfase entre un hito y la notificación al cliente ayuda a identificar brechas en la experiencia del cliente. Dónde obtener Requiere análisis del sistema. Capturado de la marca de tiempo de un correo electrónico saliente o una nota de usuario en la subpestaña de Comunicación de la Autorización de Devolución o Nota de Crédito. Capturar Marca de tiempo de un correo electrónico o entrada de registro de comunicación vinculado al caso. Tipo de evento inferred | |||
| Nota de Crédito Aplicada | Esta actividad representa una alternativa a un reembolso en efectivo, donde la nota de crédito se aplica a una factura de cliente abierta. Se infiere del enlace 'Aplicado a' en la Nota de Crédito, indicando que el crédito ha sido utilizado. | ||
| Por qué es importante Distinguir entre reembolsos en efectivo y aplicaciones de crédito es importante para el análisis financiero. Este camino representa un tipo diferente de resolución de proceso en comparación con un reembolso directo. Dónde obtener Inferido de las system notes o registros relacionados del CreditMemo, específicamente cuando está vinculado a una transacción de Factura para compensar el saldo de un cliente. Capturar Detectar la aplicación de un CreditMemo a una transacción de Factura. Tipo de evento inferred | |||
| Nota de Crédito Aprobada | Representa la aprobación formal de la nota de crédito, a menudo requerida para reembolsos de alto valor o como parte de los controles financieros. Esto se infiere de un cambio de estado en el registro de la Nota de Crédito, indicando que está lista para su aplicación o pago. | ||
| Por qué es importante Si se requieren aprobaciones financieras, este paso puede ser un cuello de botella significativo. Analizar su duración ayuda a agilizar los controles financieros sin retrasar los reembolsos a los clientes. Dónde obtener Inferido de las system notes para el registro CreditMemo, específicamente cuando un campo de estado de aprobación se actualiza de 'Pending Approval' a 'Approved' u 'Open'. Capturar Detectar el cambio de estado en la transacción CreditMemo a un estado 'Aprobado'. Tipo de evento inferred | |||
| Pedido de Intercambio Creado | Esta actividad representa un escenario de intercambio donde se crea un nuevo pedido de venta para el cliente en lugar de un reembolso. Este evento se captura típicamente mediante la creación de un Pedido de Venta que se vincula a la Autorización de Devolución original. | ||
| Por qué es importante El seguimiento de los intercambios como una ruta distinta ayuda a analizar las preferencias del cliente y la eficiencia del proceso de intercambio frente al proceso de reembolso. Es una variante común e importante. Dónde obtener Este evento es la marca de tiempo de creación de una nueva transacción de Pedido de Venta. El enlace a la Autorización de Devolución puede estar en un campo estándar o personalizado, lo que requiere análisis del sistema. Capturar Fecha de creación del registro de un Pedido de Venta vinculado a la Autorización de Devolución. Tipo de evento explicit | |||
Guías de Extracción
Pasos
- Navegar a la Creación de Saved Search: Inicie sesión en NetSuite. Navegue a Reports > New Search. En la página New Saved Search, haga clic en 'Transaction'.
- Definir Criterios Principales: En la página de configuración de la Saved Search, en la pestaña 'Criteria' y la subpestaña 'Standard', configure los siguientes filtros para aislar los registros de autorización de devolución:
TypeesReturn AuthorizationMain LineesYes- Agregue un filtro
Date Createdy configúrelo con el rango de fechas deseado, por ejemplo, 'within last 3 months'. Esto es fundamental para gestionar el volumen de data.
- Configurar Columnas de Resultados para Atributos: Vaya a la pestaña 'Results'. Agregue los siguientes campos que se convertirán en los atributos en su registro de eventos. Use 'Custom Label' para renombrarlos según sea necesario para mayor claridad.
- Case ID:
Document NumberoTranID(Custom Label: ReturnCaseId) - Return Status:
Status(Custom Label: ReturnAuthorizationStatus) - Processing Agent:
Created Byo un custom field si aplica (Custom Label: ProcessingAgent) - Department:
Department(Custom Label: Department) - Return Type: Un custom field como
[Your Return Reason Field](Custom Label: ReturnType) - Refund Amount:
Amount(Custom Label: ActualRefundAmount)
- Case ID:
- Agregar Columnas de Fórmula para Event Timestamps: Este es el paso más crítico. Para cada una de las 12 actividades, agregará una columna 'Formula (Date/Time)'. Cada fórmula utiliza una instrucción CASE para devolver un timestamp solo si ese evento específico ocurrió. Consulte la sección 'query' para ver las fórmulas exactas a utilizar para cada actividad.
- Agregar Columnas Estáticas: Agregue dos columnas 'Formula (Text)' a sus resultados:
- Para
SourceSystem, use la fórmula:'NetSuite'. - Para
LastDataUpdate, use una fórmula que represente la fecha de ejecución, como{today}. Para un timestamp preciso, este será el tiempo de exportación.
- Para
- Guardar y Exportar la Búsqueda: Dé un nombre descriptivo a su búsqueda, como 'ProcessMind Returns Extraction'. Haga clic en 'Save & Run'. Una vez que se muestren los resultados, haga clic en el icono de Exportar y elija 'CSV'.
- Transformar Data en un Registro de Eventos: El CSV exportado estará en un formato 'wide', con una fila por Return Case y muchas columnas para diferentes Event Timestamps. Debe transformar esto en un registro de eventos en formato 'long'. Utilice una herramienta como Microsoft Excel Power Query (Unpivot Columns), Python, o cualquier otra herramienta de scripting para realizar esta transformación.
- Para cada fila de su CSV, cree múltiples filas nuevas, una para cada columna de Event Timestamp no vacía.
- La nueva tabla transformada debe tener columnas como
ReturnCaseId,ActivityNameyEventTimestamp. ElActivityNameproviene del encabezado de la columna de timestamp original (por ejemplo, 'Return Authorization Created'), yEventTimestampes el valor de esa columna.
- Finalizar para Cargar: Asegúrese de que el archivo CSV final tenga los headers requeridos:
ReturnCaseId,ActivityName,EventTimestamp,SourceSystem,LastDataUpdate, además de cualquier atributo recomendado. El archivo está ahora listo para ser cargado en ProcessMind.
Configuración
- Tipo de Búsqueda: La Saved Search debe ser una búsqueda de
Transaction. - Rango de Fechas: Es crucial aplicar un filtro de rango de fechas en el campo
Date Createdde la Return Authorization. Se recomienda un rango de 3 a 6 meses para equilibrar la exhaustividad de los datos con el rendimiento. - Filtro Principal: La búsqueda debe filtrarse para que
TypeseaReturn AuthorizationyMain LineseaYespara asegurar un registro inicial por caso de devolución. - Campos Personalizados: La precisión de esta extracción, especialmente para eventos conceptuales como 'Item Inspected' o atributos como 'Return Type', depende en gran medida del uso de custom fields en los registros de transacción de su organización. Las fórmulas proporcionadas incluyen marcadores de posición como
{custbody_...}que deben ajustarse para que coincidan con su configuración de NetSuite. - Permisos de Usuario: El usuario que ejecuta la búsqueda necesita permisos de visualización para todos los tipos de transacción involucrados: Return Authorization, Item Receipt, Credit Memo, Customer Refund y Sales Order.
- Rendimiento: Para cuentas con un volumen muy alto de devoluciones, esta búsqueda exhaustiva puede ser lenta. Considere ejecutarla durante las horas de menor actividad o programarla para que se exporte automáticamente al file cabinet.
a Consulta de ejemplo 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)` | Pasos
- Habilitar SuiteAnalytics Connect: Asegúrese de tener una licencia de SuiteAnalytics Connect para su cuenta de NetSuite. Un administrador debe habilitar la función en Setup > Company > Enable Features > Analytics.
- Asignar Permisos de Usuario: Otorgue al rol de usuario de conexión el permiso 'SuiteAnalytics Connect'. Este usuario también necesitará permisos de visualización para todos los registros que se consulten, como Transactions, Employees y Customers.
- Instalar el Controlador ODBC: Descargue e instale el controlador NetSuite ODBC apropiado para su sistema operativo desde la página de descarga de SuiteAnalytics Connect en NetSuite.
- Configurar el DSN: Configure un DSN (Data Source Name) en la máquina donde ejecutará la consulta. Ingrese su Service Data Source, Server Hostname, Port, Role ID, Account ID y credenciales.
- Conectar su Cliente SQL: Utilice un SQL client, como DBeaver o Microsoft SQL Server Management Studio, para conectarse a NetSuite utilizando el DSN que configuró.
- Preparar la Consulta SQL: Copie la consulta SQL proporcionada en su cliente. Esta consulta está diseñada para extraer todos los eventos clave en el proceso de devoluciones y reembolsos.
- Personalizar la Consulta: Modifique los valores de los marcadores de posición en la consulta. Como mínimo, debe actualizar el rango de fechas en la Common Table Expression (CTE)
ReturnAuthorizationspara filtrar por el período de tiempo deseado. También puede necesitar ajustar los nombres de custom fields, comoCUSTBODY_RETURN_TYPE, o valores de estado específicos para que coincidan con su configuración de NetSuite. - Ejecutar la Consulta: Ejecute la consulta SQL personalizada contra la réplica de la base de datos de NetSuite. El tiempo de ejecución puede variar según el rango de fechas y el volumen de datos.
- Revisar y Exportar Datos: Una vez que la consulta se complete, revise los resultados para asegurarse de que sean correctos. Exporte todo el conjunto de resultados a un archivo CSV.
- Finalizar para Cargar: Asegúrese de que los encabezados del archivo CSV coincidan con los atributos requeridos:
ReturnCaseId,ActivityName,EventTimestamp,SourceSystem,LastDataUpdate, etc. Verifique que la columnaEventTimestamptenga un formato de fecha/hora consistente. El archivo está ahora listo para ser cargado en ProcessMind.
Configuración
- Prerrequisitos: Se requiere una licencia de NetSuite con el módulo adicional SuiteAnalytics Connect. El usuario que ejecuta la conexión debe tener un rol con el permiso 'SuiteAnalytics Connect' y acceso de lectura a los registros de transacción, entidad y empleado.
- Configuración de Fuente de Datos: Debe configurar un DSN (Data Source Name) utilizando el controlador NetSuite ODBC. Esto requiere su Account ID, Role ID y credenciales. El host del servicio es típicamente
odbcserver.netsuite.compara entornos de producción. - Filtrado por Rango de Fechas: Es fundamental aplicar un filtro de rango de fechas al CTE inicial que selecciona las Return Authorizations. Sin un filtro, la consulta intentará extraer todos los datos de devoluciones y probablemente será muy lenta o agotará el tiempo de espera. Se recomienda un rango de 3 a 6 meses para el análisis inicial.
- Tipos de Transacción Clave: La consulta apunta a varios tipos de transacción centrales: ReturnAuthorization, ItemReceipt, CreditMemo, CustomerRefund y SalesOrd (para intercambios). Asegúrese de que su proceso utilice estos objetos estándar.
- Dependencias de Campos Personalizados: Actividades como 'Item Inspected' y atributos como 'Return Type' a menudo se capturan en custom fields. La consulta proporcionada utiliza marcadores de posición como
CUSTBODY_INSPECTION_STATUSyCUSTBODY_RETURN_TYPE. Debe identificar los ID de custom field correctos en su sistema y actualizar la consulta en consecuencia. - Consideraciones de Rendimiento: Esta es una consulta compleja con múltiples joins y una gran estructura
UNION ALL. Ejecútela durante las horas de menor actividad para minimizar el impacto en el rendimiento del sistema. Para conjuntos de datos muy grandes, considere ejecutar la consulta en incrementos de tiempo más pequeños y añadir los resultados.
a Consulta de ejemplo 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%';