Su Plantilla de Datos de Cuentas por Cobrar
Su Plantilla de Datos de Cuentas por Cobrar
- Conjunto completo de atributos recomendados para el análisis de Cuentas por Cobrar
- Actividades y hitos clave del proceso a monitorear
- Guía de extracción específica del sistema para Oracle Fusion Financials
Atributos de Cuentas por Cobrar
| Nombre | Descripción | ||
|---|---|---|---|
| Nombre de la Actividad ActivityName | El evento o acción específica realizada en el proceso de cuentas por cobrar. | ||
| Descripción Este atributo describe el paso realizado en el proceso, como crear una factura, registrar un pago o abrir una disputa. Define el flujo del mapa de proceso y permite la visualización de la secuencia de eventos. Los analistas utilizan este campo para identificar variantes de proceso, bucles y cuellos de botella. Es esencial para determinar la adherencia a los procedimientos operativos estándar y para calcular la frecuencia de eventos específicos como el reproceso o las intervenciones manuales. Por qué es importante Requerido para definir el flujo del proceso y visualizar la secuencia de eventos. Dónde obtener Derivado de tablas de historial de transacciones (por ejemplo, AR_PAYMENT_SCHEDULES_ALL, RA_CUST_TRX_LINE_GL_DIST_ALL). Ejemplos Factura CreadaRecordatorio de Pago EnviadoPago Parcial RegistradoCaso de Disputa Abierto | |||
| Número de Factura InvoiceNumber | El identificador único asignado a la transacción de factura en Oracle Fusion. | ||
| Descripción Este atributo sirve como clave única para identificar las obligaciones financieras dentro del módulo de Cuentas por Cobrar. Vincula todas las actividades posteriores, como ajustes, disputas y pagos, a la transacción de venta original. En el análisis de Process Mining, este atributo funciona como el ID de Caso. Permite a los analistas rastrear el ciclo de vida completo de una cuenta por cobrar desde el momento en que se crea hasta que se compensa por completo o se cancela, facilitando el cálculo de los tiempos de ciclo y las variantes del proceso. Por qué es importante Es la unidad fundamental de análisis para rastrear el ciclo de crédito a efectivo. Dónde obtener Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.TRX_NUMBER Ejemplos INV-2023-00110056789AR-99887755002211 | |||
| Timestamp del Evento EventStartDateTime | La fecha y hora específicas en que ocurrió una actividad. | ||
| Descripción Este atributo registra el momento exacto en que una actividad tuvo lugar dentro del sistema. Se utiliza para ordenar los eventos cronológicamente y es la base para todos los cálculos basados en el tiempo en Process Mining. Al analizar los timestamps, la empresa puede calcular los tiempos de ciclo entre actividades, como la duración entre la creación y el envío de la factura. Es fundamental para medir KPIs como los Días de Venta Pendientes e identificar patrones temporales en el comportamiento de pago. Por qué es importante Fundamental para calcular la duración, los tiempos de entrega y los tiempos de ciclo. Dónde obtener Oracle Fusion Financials: Columnas CREATION_DATE o LAST_UPDATE_DATE en varias tablas de transacciones. Ejemplos 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Source System SourceSystem | El sistema de registro donde se originaron los datos. | ||
| Descripción Este atributo identifica el entorno de software del que se extrajeron los datos del proceso. En este contexto, confirma que los datos provienen del entorno de Oracle Fusion Financials. Aunque a menudo es un valor estático para una extracción de un solo sistema, se vuelve crucial al fusionar datos de múltiples instancias de ERP o al integrar herramientas de cobro de terceros. Asegura la trazabilidad y el linaje de los datos en paisajes de procesos multisistema. Por qué es importante Asegura la trazabilidad de los datos y distingue entre diferentes instancias de ERP. Dónde obtener Codificado en el proceso de extracción o configurado en la canalización de datos. Ejemplos Oracle Fusion FinancialsOracle Cloud ERP - EE.UU.Oracle Cloud ERP - EMEA | |||
| Última actualización de datos LastDataUpdate | El timestamp de la última actualización de los datos en la herramienta de Process Mining. | ||
| Descripción Este atributo indica cuándo se sincronizó por última vez el conjunto de datos con el sistema Oracle de origen. Ayuda a los usuarios a comprender la actualidad del análisis y si los conocimientos reflejan el estado actual de las operaciones. Monitorear este campo es importante para asegurar que los dashboards muestren información actualizada, especialmente para el monitoreo operativo de disputas abiertas o efectivo no aplicado. Por qué es importante Proporciona contexto sobre la actualidad y fiabilidad de los datos. Dónde obtener Hora del sistema en el momento de la extracción. Ejemplos 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| Automatizado IsAutomated | Bandera que indica si la actividad se realizó sin intervención humana. | ||
| Descripción Este atributo booleano determina si una actividad fue ejecutada por un proceso del sistema (ej., AutoInvoice, AutoLockbox) o por un usuario humano. Es el principal impulsor del KPI 'Tasa de Automatización de Aplicación de Efectivo'. Al rastrear la proporción de actividades automatizadas versus manuales a lo largo del tiempo, la organización puede validar el éxito de las iniciativas de transformación digital e identificar pasos de proceso específicos que permanecen obstinadamente manuales. Por qué es importante Métrica principal para la transformación digital y la medición de la eficiencia. Dónde obtener Lógica calculada basada en el Nombre de Usuario (por ejemplo, si Usuario == 'BATCH_USER' entonces verdadero). Ejemplos truefalse | |||
| Fecha de Vencimiento DueDate | La fecha en la que se espera recibir el pago. | ||
| Descripción Este atributo es la fecha límite de pago calculada en función de la Fecha de Factura y los Términos de Pago. Sirve como punto de referencia para determinar si un pago está atrasado. Se utiliza en el KPI 'Varianza en el Momento del Recordatorio de Cobro' para medir cuán proactivamente actúa el equipo en relación con la fecha límite. También es el umbral para clasificar las cuentas por cobrar como actuales o vencidas en los informes de antigüedad. Por qué es importante La línea base principal para determinar la morosidad y el rendimiento a tiempo. Dónde obtener Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Ejemplos 2023-11-302023-12-152024-01-01 | |||
| Importe de Factura InvoiceAmount | El valor monetario total de la factura. | ||
| Descripción Este atributo representa el monto original adeudado en la factura. Sirve como el factor de ponderación principal para muchos análisis, permitiendo a la empresa priorizar transacciones de alto valor sobre un volumen de bajo valor. En el contexto de la 'Vista de Créditos No Aplicados y Fuga', este campo ayuda a cuantificar el impacto financiero de los elementos no resueltos. También se utiliza para calcular el promedio ponderado de Días de Venta Pendientes, proporcionando una vista de la eficiencia del proceso más centrada en lo financiero. Por qué es importante Aporta peso financiero al análisis y respalda la priorización basada en el valor. Dónde obtener Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Ejemplos 1500.00250.5010000.00 | |||
| Nombre de Usuario UserName | El usuario del sistema que realizó la actividad. | ||
| Descripción Este atributo registra el ID de inicio de sesión o el nombre de la persona que ejecutó la actividad específica (ej., registró la factura, concilió el extracto bancario). Se mapea al campo genérico 'Usuario'. Estos datos son vitales para la auditoría de cumplimiento y para el dashboard 'Rendimiento del Agente de Cobro'. Permite la separación de las acciones impulsadas por la máquina (a menudo realizadas por un usuario 'Sistema') de las acciones humanas, apoyando el análisis de automatización. Por qué es importante Permite el seguimiento del rendimiento a nivel de usuario y el análisis de la segregación de funciones. Dónde obtener Oracle Fusion Financials: Columnas CREATED_BY o LAST_UPDATED_BY unidas a tablas de usuario. Ejemplos sysadminjsmithfinance_batch_job | |||
| Nombre del Cliente CustomerName | El nombre de la entidad facturada en la transacción. | ||
| Descripción Este atributo identifica al cliente asociado con la factura. Es fundamental para analizar los comportamientos de pago, las frecuencias de disputa y la efectividad del cobro a nivel de cliente. Los analistas utilizan este campo para identificar clientes específicos que pagan con frecuencia tarde o plantean disputas. Este conocimiento apoya el dashboard 'Análisis del Comportamiento de Pago del Cliente' y ayuda a adaptar los términos de crédito y las estrategias de cobro a los perfiles de clientes individuales. Por qué es importante Esencial para el análisis centrado en el cliente y la elaboración de perfiles de riesgo. Dónde obtener Oracle Fusion Financials: HZ_PARTIES.PARTY_NAME vinculado a través de BILL_TO_CUSTOMER_ID. Ejemplos Acme CorpGlobex CorporationSoylent Corp | |||
| Nombre del Cobrador CollectorName | El nombre del agente de cobro o recurso asignado a la factura. | ||
| Descripción Este atributo identifica al empleado o miembro del equipo específico responsable de cobrar el pago de la factura. Es la dimensión clave para el dashboard 'Rendimiento del Agente de Cobro'. Los datos de este campo permiten a la organización medir la productividad por agente, identificar necesidades de capacitación y equilibrar las cargas de trabajo. Fomenta la responsabilidad y ayuda a estandarizar los esfuerzos de cobro en todo el equipo financiero. Por qué es importante Clave para el análisis del rendimiento de los recursos y el equilibrio de la carga de trabajo. Dónde obtener Oracle Fusion Financials: AR_COLLECTORS.NAME asociado con el Perfil del Cliente. Ejemplos John SmithEquipo de Cobranza AJane Doe | |||
| Segmento de Cliente CustomerSegment | La clasificación del cliente basada en tamaño, industria o riesgo. | ||
| Descripción Este atributo clasifica a los clientes en grupos como Estratégicos, Empresariales, PYMES o de Alto Riesgo. A menudo se deriva de la clase de cliente o clase de perfil en Oracle Fusion. El uso de este atributo permite el análisis de variantes de proceso en diferentes segmentos de mercado. Por ejemplo, ayuda a verificar si los clientes 'Estratégicos' están recibiendo el servicio de atención premium previsto o si los clientes de 'Alto Riesgo' están siendo monitoreados de cerca para el cumplimiento del pago. Por qué es importante Permite un análisis segmentado de las estrategias de cobranza y el riesgo. Dónde obtener Oracle Fusion Financials: HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Ejemplos EmpresaPequeña EmpresaGobiernoAlto Riesgo | |||
| Tipo de Transacción TransactionType | La clasificación del documento de cuenta por cobrar (Factura, Nota de Crédito, Nota de Débito). | ||
| Descripción Este atributo distingue entre diferentes tipos de documentos financieros. Los valores comunes incluyen Factura, Nota de Crédito y Nota de Débito. Esta distinción es vital para el dashboard 'Volumen y Reprocesos de Notas de Crédito'. Al filtrar por este atributo, los analistas pueden aislar los bucles de reproceso causados por notas de crédito o centrarse específicamente en el flujo principal de facturación. Ayuda a comprender la composición de la carga de trabajo de las cuentas por cobrar. Por qué es importante Distingue las facturas estándar de los ajustes y correcciones. Dónde obtener Oracle Fusion Financials: RA_CUST_TRX_TYPES_ALL.NAME Ejemplos FacturaNota de CréditoNota de DébitoContracargo | |||
| Unidad de Negocio BusinessUnit | La entidad operativa dentro de la organización responsable de la factura. | ||
| Descripción Este atributo se mapea al ID de Organización en Oracle Fusion, representando la unidad de negocio o división específica que posee la cuenta por cobrar. Permite la segmentación del rendimiento del proceso en diferentes partes de la empresa. Comparar KPIs como el Tiempo de Resolución de Disputas o el DSO entre diferentes unidades de negocio ayuda a la dirección a identificar equipos de alto rendimiento y estandarizar las mejores prácticas. También destaca las unidades que pueden requerir recursos adicionales o reingeniería de procesos. Por qué es importante Dimensión clave para la evaluación comparativa organizacional y la comparación de rendimiento. Dónde obtener Oracle Fusion Financials: HR_ORGANIZATION_UNITS.NAME vinculado a través de ORG_ID. Ejemplos Ventas Este de EE.UU.Servicios EMEAFabricación APAC | |||
| ¿Es Retrabajo? IsRework | Bandera que indica si la factura pasó por ciclos de corrección o disputa. | ||
| Descripción Este atributo booleano identifica si una factura ha experimentado actividades asociadas con la corrección de errores, como 'Nota de Crédito Emitida' o 'Factura Ajustada'. Soporta el dashboard 'Volumen y Reprocesos de Notas de Crédito'. Identificar casos de reproceso ayuda a aislar los procesos de 'ruta feliz' de los problemáticos. Las altas tasas de reproceso son un indicador principal de problemas de calidad de datos en fases anteriores en los procesos de datos maestros o de entrada de pedidos de venta. Por qué es importante Identifica el desperdicio y la ineficiencia en el flujo del proceso. Dónde obtener Calculado: Verdadero si el caso contiene 'Nota de Crédito Emitida' o 'Caso de Disputa Abierto'. Ejemplos truefalse | |||
| Código de Moneda CurrencyCode | La moneda en la que se denomina el importe de la factura. | ||
| Descripción Este atributo especifica la moneda (ej., USD, EUR) para los montos financieros. Es necesario para interpretar correctamente el Monto de la Factura y para realizar conversiones de moneda si se requiere una moneda de informe global. Para las organizaciones globales, este atributo ayuda a analizar el rendimiento de cobro en diferentes regiones económicas y permite a los equipos financieros separar los impactos de las divisas del rendimiento operativo del proceso. Por qué es importante Contextualiza valores financieros en entornos multi-moneda. Dónde obtener Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Ejemplos USDEURGBPJPY | |||
| Condiciones de Pago PaymentTerms | Las condiciones acordadas para el calendario de pagos (ej., Neto 30). | ||
| Descripción Este atributo define el plazo de pago acordado contractualmente. Se utiliza para calcular la Fecha de Vencimiento y es esencial para el dashboard 'Efectividad de la Estrategia de Cobro'. Las variaciones en los términos de pago entre clientes pueden explicar las diferencias en el DSO. Este atributo permite a los analistas normalizar los datos de rendimiento, asegurando que un cliente con términos Neto 60 no sea marcado injustamente como un 'pagador lento' en comparación con uno con términos Neto 30. Por qué es importante Contextualiza la velocidad de pago frente a los acuerdos contractuales. Dónde obtener Oracle Fusion Financials: RA_TERMS.NAME Ejemplos Neto 30Inmediato2/10 Net 30Neto 60 | |||
| Días de Cartera DaysSalesOutstanding | El número de días entre la creación y la compensación de la factura. | ||
| Descripción Este atributo calculado mide la duración desde 'Factura Creada' hasta 'Factura Compensada'. Es el cálculo directo para el KPI 'Promedio de Días de Venta Pendientes'. Aunque esto puede calcularse dinámicamente en dashboards, tenerlo como un atributo precalculado a nivel de caso permite una filtración y segmentación más sencilla (ej., mostrando todos los casos donde el DSO > 60 días). Por qué es importante La métrica de eficiencia definitiva para Cuentas por Cobrar. Dónde obtener Calculado: Fecha(Factura Liquidada) - Fecha(Factura Creada). Ejemplos 45 días12 días60 días | |||
| Fecha de Elegibilidad para Descuento DiscountEligibilityDate | La fecha límite para que un cliente pague y reciba un descuento por pronto pago. | ||
| Descripción Este atributo marca la fecha límite para que el cliente aproveche términos como '2/10 Neto 30' (2% de descuento si se paga en 10 días). Es requerido para el dashboard 'Análisis de Descuentos por Pronto Pago'. Analizar los pagos frente a esta fecha revela la 'Tasa de Captura de Descuentos por Pronto Pago'. Ayuda a la empresa a comprender si sus estrategias de descuento están acelerando efectivamente el flujo de efectivo o si están siendo ignoradas por los clientes. Por qué es importante Apoya el análisis de la efectividad de los incentivos y la aceleración del flujo de efectivo. Dónde obtener Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Ejemplos 2023-11-102023-12-05 | |||
| Fuente de Creación CreationSource | El origen de la factura, indicando si fue manual o importada. | ||
| Descripción Este atributo revela cómo la factura ingresó al sistema Oracle, como 'Entrada Manual', 'AutoInvoice' o a través de fuentes externas específicas. Es un proxy para el mapeo genérico de 'Canal'. Esto es crucial para el 'Monitor de Automatización de Aplicación de Efectivo'. Ayuda a distinguir entre procesos que son completamente digitales y aquellos que requieren configuración manual. Altos volúmenes de 'Entrada Manual' pueden indicar una falta de integración anterior o deficiencias del sistema. Por qué es importante Identifica el nivel de automatización aguas arriba y el origen de los datos. Dónde obtener Oracle Fusion Financials: RA_BATCH_SOURCES_ALL.NAME Ejemplos AutoFacturaManualImplementación de ProyectosGestión de Pedidos | |||
| Razón de Disputa DisputeReason | La categoría o código de motivo asignado cuando se abre una disputa. | ||
| Descripción Este atributo captura la justificación proporcionada cuando ocurre una actividad de 'Caso de Disputa Abierto'. Los valores comunes pueden incluir 'Error de Precios', 'Discrepancia de Cantidad' o 'Mercancía Dañada'. Analizar este atributo en el dashboard 'Ciclo de Vida de Disputas y Cuellos de Botella' ayuda a identificar las causas raíz de los retrasos en los pagos. Si el 'Error de Precios' es frecuente, la empresa sabe que debe investigar el proceso de cotización de ventas anterior en lugar de solo el proceso de cobros. Por qué es importante Crítico para el análisis de la causa raíz de pagos retrasados y reelaboración. Dónde obtener Oracle Fusion Financials: RA_CM_REQUESTS.REASON_CODE o AR_DISPUTE_HISTORY. Ejemplos Disputa de PrecioError FiscalBienes No RecibidosFacturación Duplicada | |||
| Región Region | Región geográfica asociada a la unidad de negocio o al cliente. | ||
| Descripción Este atributo mapea la transacción a un área geográfica más amplia, como América del Norte, EMEA o APAC. Es útil para informes ejecutivos de alto nivel y para el dashboard 'Tendencias de DSO y Ciclo de Efectivo'. El análisis regional ayuda a tener en cuenta las diferencias culturales en el comportamiento de pago (ej., términos de pago estándar más largos en el sur de Europa vs. EE.UU.) y asegura que los KPI globales se interpreten con el contexto local correcto. Por qué es importante Ofrece una segmentación geográfica de alto nivel para informes globales. Dónde obtener Oracle Fusion Financials: Derivado de la Unidad de Negocio o Dirección del Cliente. Ejemplos América del NorteEMEAAPACLATAM | |||
Actividades de Cuentas por Cobrar
| Actividad | Descripción | ||
|---|---|---|---|
| Factura Compensada | El estado final donde la factura se cierra en el sistema, generalmente porque el saldo es cero debido a un pago, nota de crédito o ajuste. | ||
| Por qué es importante El timestamp de este evento se utiliza para calcular los Días de Venta Pendientes (DSO). Representa el final de la instancia del proceso. Dónde obtener Identificado cuando el ESTADO en AR_PAYMENT_SCHEDULES_ALL cambia a 'CL' (Cerrado). Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Factura Completada | Indica que el proceso de creación de la factura ha finalizado y que la factura está lista para ser procesada, impresa y contabilizada. Esto ocurre cuando el estado de la transacción cambia de incompleto a completo. | ||
| Por qué es importante Diferencia entre el tiempo de redacción y el tiempo de procesamiento. Los retrasos aquí indican cuellos de botella en el proceso interno de generación de facturación. Dónde obtener Identificado cuando el COMPLETE_FLAG en RA_CUSTOMER_TRX_ALL cambia a 'Y'. Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Factura Creada | Esta actividad marca la creación inicial del registro de la factura en el sistema. Captura el timestamp cuando el encabezado de la transacción se guarda por primera vez en las tablas de Oracle Receivables. | ||
| Por qué es importante Establece el inicio del ciclo de vida del proceso y la línea de base para los cálculos de antigüedad. Esencial para calcular el tiempo total del ciclo y el tiempo de entrega al envío. Dónde obtener Derivado de la tabla RA_CUSTOMER_TRX_ALL utilizando la columna CREATION_DATE o TRX_DATE. Capturar Registrado cuando se inserta una fila de transacción Tipo de evento explicit | |||
| Factura Despachada | Representa la transmisión de la factura al cliente a través de impresión, correo electrónico o XML. Esto marca la entrega de la organización al cliente. | ||
| Por qué es importante Crítico para medir el Rendimiento del Envío de Facturación. La brecha entre la creación y el envío retrasa directamente el ciclo de cobro de efectivo. Dónde obtener Inferido de PRINTING_ORIGINAL_DATE en RA_CUSTOMER_TRX_ALL o de registros específicos en Oracle Collaboration Messaging Framework si se utiliza XML. Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Pago Completo Recibido | Ocurre cuando la aplicación de un recibo reduce el saldo de la factura a cero. Este es el evento de éxito principal para el proceso de cobro. | ||
| Por qué es importante Crítico para el Análisis de Descuentos por Pronto Pago. El momento de este evento determina si el efectivo se cobró dentro de la ventana de descuento. Dónde obtener Obtenido de AR_RECEIVABLE_APPLICATIONS_ALL donde STATUS = 'APP' y el AMOUNT_DUE_REMAINING resultante es 0. Capturar Derivar de la comparación del Tipo de evento calculated | |||
| Pago Parcial Registrado | Ocurre cuando se aplica un recibo a la factura, pero el monto es inferior al saldo total pendiente. Esto deja la factura abierta con un saldo reducido. | ||
| Por qué es importante La alta frecuencia indica un comportamiento de pago fragmentado (KPI de Frecuencia de Pago Parcial) lo que aumenta el esfuerzo de conciliación. Dónde obtener Obtenido de AR_RECEIVABLE_APPLICATIONS_ALL donde STATUS = 'APP' y AMOUNT_APPLIED < AMOUNT_DUE_REMAINING. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Caso de Disputa Abierto | Marca el inicio de una disputa formal sobre la factura. Esto detiene las actividades de cobro estándar mientras se investiga el problema. | ||
| Por qué es importante Indicador clave de cuello de botella. Tasas elevadas de disputas sugieren problemas de calidad en fases anteriores del proceso de cumplimiento o en la precisión de la facturación. Dónde obtener Identificado por registros en RA_CM_REQUESTS_ALL o flujos de trabajo específicos de Solicitud de Nota de Crédito vinculados a la factura. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Disputa Resuelta | Indica la conclusión de la investigación de la disputa. El resultado podría ser la aprobación de una nota de crédito (disputa válida) o el rechazo (disputa inválida). | ||
| Por qué es importante Necesario para calcular el Tiempo Promedio de Resolución de Disputas. Los tiempos de resolución prolongados impactan negativamente en la satisfacción del cliente y el DSO. Dónde obtener Derivado del cambio de estado a 'APROBADO' o 'RECHAZADO' en RA_CM_REQUESTS_ALL. Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Extracto Bancario Conciliado | Indica que el recibo aplicado a la factura ha sido conciliado con una línea en el extracto bancario. Esto confirma que el efectivo ha llegado realmente a la cuenta bancaria. | ||
| Por qué es importante Mide la Automatización de la Aplicación de Efectivo. La brecha entre el registro del pago y la conciliación bancaria representa efectivo no confirmado. Dónde obtener Unido de AR_CASH_RECEIPTS_ALL a CE_STATEMENT_LINES (Gestión de Tesorería) a través de la referencia de conciliación. Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Factura Ajustada | Captura ajustes manuales al saldo de la factura, como pequeñas cancelaciones o ajustes de moneda, distintos de las notas de crédito. | ||
| Por qué es importante Ayuda a identificar fugas de ingresos y rutas de proceso no estándar donde los saldos se liquidan sin pago. Dónde obtener Obtenido de la tabla AR_ADJUSTMENTS_ALL vinculada a la factura. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Factura Cancelada por Incobrable | Un tipo específico de ajuste donde el saldo restante se considera incobrable y se cancela como deuda incobrable. Este es un estado terminal negativo. | ||
| Por qué es importante Crítico para la monitorización de la salud financiera. Separa la eficiencia operativa (velocidad de pago) de los problemas de calidad crediticia. Dónde obtener Obtenido de AR_ADJUSTMENTS_ALL donde el tipo de ajuste se clasifica como 'Castigo' o está vinculado a una cuenta de Deuda Incobrable. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Factura Contabilizada en GL | Registra el evento en el que los asientos contables de la factura se finalizan y se transfieren al Libro Mayor. Esto asegura el cumplimiento financiero y la preparación para el cierre de período. | ||
| Por qué es importante Aunque no afecta la vista del cliente, los retrasos aquí impactan el ciclo de cierre financiero y la puntualidad de los informes. Dónde obtener Derivado de GL_DATE en la tabla RA_CUST_TRX_LINE_GL_DIST_ALL. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Nota de Crédito Emitida | Captura la creación de una transacción de nota de crédito aplicada a la factura. Esto reduce el saldo adeudado, a menudo en respuesta a una disputa o devolución. | ||
| Por qué es importante Rastrea la Tasa de Reprocesos de Notas de Crédito y la fuga de ingresos. Las notas de crédito frecuentes indican errores de facturación sistémicos. Dónde obtener Obtenido de RA_CUSTOMER_TRX_ALL donde TRX_TYPE es Nota de Crédito y RELATED_CUSTOMER_TRX_ID coincide con la factura. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Promesa de Pago Recibida | Registra un compromiso del cliente de pagar un monto específico en una fecha determinada. Esto suele ser introducido manualmente por un agente de cobros durante la interacción con el cliente. | ||
| Por qué es importante Clave para el Análisis del Comportamiento de Pago del Cliente. Las promesas incumplidas indican un alto riesgo de crédito y una posible futura deuda incobrable. Dónde obtener Obtenido de la tabla IEX_PROMISE_DETAILS en el módulo de Cobros. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
| Recordatorio de Pago Enviado | Captura la emisión de una carta de reclamación o recordatorio de cobranza al cliente. Este evento es generado por el módulo de Cobranza Avanzada. | ||
| Por qué es importante Esencial para analizar la Efectividad de la Estrategia de Cobranza. Correlacionar esto con los pagos ayuda a determinar qué estrategias de recordatorio producen la recuperación de efectivo más rápida. Dónde obtener Ubicado en las tablas IEX_DUNNING o IEX_STRATEGY_WORK_ITEMS vinculadas a la cuenta del cliente. Capturar Registrado cuando se ejecuta la transacción X Tipo de evento explicit | |||
Guías de Extracción
Pasos
Acceda a la Consola de Oracle BI Cloud Connector (BICC). Navegue a la sección Gestionar Ofertas y Almacenes de Datos.
Configure la Conexión de Almacenamiento. Asegúrese de tener una conexión válida a Oracle Universal Content Management (UCM) o a un Almacenamiento de Objetos externo (como OCI Object Storage) donde se depositarán los archivos CSV/Parquet extraídos.
Seleccione la Oferta de Finanzas. Localice la oferta de Finanzas para acceder a los Objetos de Vista de Cuentas por Cobrar.
Seleccione y Configure los Objetos de Vista (VOs). Debe seleccionar los Objetos de Vista Públicos (PVOs) específicos requeridos para construir el registro de eventos. Los PVOs esenciales incluyen:
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (Encabezados de Facturas)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (Líneas de Facturas)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (Pagos y Aplicaciones de Notas de Crédito)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (Ajustes y Cancelaciones por Incobrables)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (Promesas de Pago)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (Recordatorios/Avisos de Cobranza)
Defina Criterios de Filtro (Poda). En la Gestión de Programaciones de Extracción o dentro de la configuración del PVO, establezca un filtro en CreationDate o LastUpdateDate para extraer datos relevantes para su período de análisis (por ejemplo, los últimos 12 meses).
Programe la Extracción. Cree una programación de trabajo para ejecutar estas extracciones diariamente. Elija Carga Incremental para obtener solo los datos modificados después de la Carga Completa inicial.
Descargue e Ingeste. Utilice un script automatizado o una herramienta de integración para recoger los archivos de UCM/Object Storage y cargarlos en sus tablas de staging del data warehouse (por ejemplo, STG_AR_TRX_HEADER, STG_AR_APPLICATIONS).
Aplique la Lógica de Transformación. Ejecute el script SQL proporcionado en la sección de Consulta contra sus tablas de staging para aplanar los datos relacionales al formato de registro de eventos de ProcessMind.
Valide los Tipos de Datos. Asegúrese de que los campos de fecha se conviertan a objetos datetime y que los montos numéricos manejen los decimales correctamente durante la transformación.
Exporte a CSV/Parquet. Exporte el conjunto de resultados final de su data warehouse como un solo archivo.
Cargue a ProcessMind. Importe el archivo, mapeando InvoiceNumber a ID de Caso, ActivityName a Actividad, y EventStartDateTime a Marca de Tiempo.
Configuración
- Frecuencia de Extracción: Diaria (Incremental) recomendada para capturar los últimos cambios de estado.
- Carga Inicial: Seleccione 'Extracción Completa' para la primera ejecución, luego cambie a 'Incremental' según la Fecha de Última Actualización.
- PVOs Clave: TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtrado por Fecha: Aplique filtros en CreationDate >= '202X-01-01' para limitar el volumen.
- Tamaño de Recuperación: El valor predeterminado suele ser 50000 filas; ajústelo según el ancho de banda de la red si utiliza la descarga UCM.
- Claves Primarias: Asegúrese de que su almacén de datos (data warehouse) posterior gestione las operaciones upsert utilizando las Claves Primarias de los PVO (normalmente CustomerTrxId, ReceivableApplicationId, etc.) para evitar filas duplicadas.
- Historial de Auditoría: Los PVO estándar de BICC capturan el estado actual. Para un registro de tiempo histórico exacto de los cambios de estado (como 'Disputa Abierta'), puede ser necesario habilitar las Políticas de Auditoría en Fusion y extraer los Objetos de Vista de Auditoría si las tablas transaccionales no persisten el historial.
a Consulta de ejemplo config
/*
Transformation Script for Oracle BICC Data
Assumes raw BICC PVO CSVs are loaded into a SQL Staging Area with tables named:
- STG_AR_TRX_HEADER (TransactionHeaderExtractPVO)
- STG_AR_APPLICATIONS (ReceiptApplicationExtractPVO)
- STG_AR_ADJUSTMENTS (AdjustmentExtractPVO)
- STG_IEX_PROMISES (PromiseDetailExtractPVO)
- STG_IEX_STRATEGY (StrategyWorkItemExtractPVO)
- STG_CE_STMTS (BankStatementLineExtractPVO - Optional/Advanced)
*/
WITH Base_Log AS (
/* 1. Invoice Created */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Created' AS ActivityName,
CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
(Quantity * UnitSellingPrice) AS InvoiceAmount,
TrxClass AS TransactionType,
CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE TrxClass IN ('INV', 'DM')
UNION ALL
/* 2. Invoice Completed */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
TrxDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE CompleteFlag = 'Y'
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 3. Invoice Dispatched */
/* Using PrintingOriginalDate as proxy for dispatch */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
PrintingOriginalDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE PrintingOriginalDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
GlDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
'System' AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE GlDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 5. Payment Reminder Sent */
/* Links via Customer or Account, mapped back to Trx via Collections Strategy logic */
/* Simplified join assumption based on Trx Id availability in Work Item */
SELECT
H.TrxNumber AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
W.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
H.TrxClass AS TransactionType,
W.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_IEX_STRATEGY W
JOIN STG_AR_TRX_HEADER H ON W.ObjectPk1 = H.CustomerTrxId
WHERE W.WorkItemTemplateName LIKE '%Reminder%'
UNION ALL
/* 6. Promise to Pay Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
P.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
P.PromiseAmount AS InvoiceAmount,
H.TrxClass AS TransactionType,
P.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_IEX_PROMISES P
JOIN STG_AR_TRX_HEADER H ON P.CustTrxId = H.CustomerTrxId
UNION ALL
/* 7. Dispute Case Opened */
/* Triggered when dispute amount is updated/created */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
DisputeDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL
UNION ALL
/* 8. Dispute Resolved */
/* Approximated by update date when dispute amount returns to 0 after being positive */
/* Note: Accurate dispute history requires Audit Trail extraction. This is a best-effort proxy based on header state. */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL AND DisputeAmount = 0
UNION ALL
/* 9. Credit Memo Issued (Applied) */
SELECT
H.TrxNumber AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CM' -- Credit Memo application
UNION ALL
/* 10. Partial Payment Posted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Partial Payment Posted' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND (H.AmountDueRemaining > 0) -- Invoice still has balance
UNION ALL
/* 11. Full Payment Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Full Payment Received' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND H.AmountDueRemaining = 0 -- Invoice fully paid
UNION ALL
/* 12. Bank Statement Matched */
/* Requires joining Receipt Application -> Cash Receipt -> Bank Statement Line */
/* Placeholder logic assuming availability of Bank Statement PVO data */
SELECT
H.TrxNumber AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
BSL.StatementDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
BSL.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
BSL.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
-- Join to Receipt then to Bank Stmt would happen here
JOIN STG_CE_STMTS BSL ON APP.CashReceiptId = BSL.ReferenceId -- Simplified Join
WHERE APP.ApplicationType = 'CASH'
UNION ALL
/* 13. Invoice Adjusted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Adjusted' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType != 'WRITE_OFF'
UNION ALL
/* 14. Invoice Written Off */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Written Off' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType = 'WRITE_OFF'
UNION ALL
/* 15. Invoice Cleared */
/* The moment the invoice balance hits 0 */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE AmountDueRemaining = 0
)
SELECT
InvoiceNumber,
ActivityName,
EventStartDateTime,
SourceSystem,
GETDATE() AS LastDataUpdate,
BusinessUnit,
CustomerName,
Currency,
InvoiceAmount,
TransactionType,
UserName,
IsAutomated
FROM Base_Log
WHERE EventStartDateTime IS NOT NULL
ORDER BY InvoiceNumber, EventStartDateTime Pasos
Inicie sesión en las Aplicaciones de Oracle Fusion: Navegue a Herramientas > Informes y Análisis. Haga clic en Explorar Catálogo para abrir la interfaz de Oracle BI Publisher.
Crear Modelo de Datos: Haga clic en Nuevo (arriba a la izquierda) y seleccione Modelo de Datos. Este es el contenedor para su lógica de extracción SQL.
Definir Conjunto de Datos SQL: En el árbol de Modelo de Datos a la izquierda, haga clic en Conjuntos de Datos, luego seleccione Nuevo Conjunto de Datos > Consulta SQL.
Configurar Fuente de Datos: Asigne un nombre al conjunto de datos (por ejemplo,
ProcessMining_AR). SeleccioneApplicationDB_FSCM(Gestión de la Cadena de Suministro Financiera) como la Fuente de Datos. Esto asegura el acceso a las tablas AR y RA requeridas.Pegar Consulta: Copie el script SQL completo proporcionado en la sección de Consulta a continuación y péguelo en el cuadro de texto de Consulta SQL. No modifique la lógica central a menos que necesite renombrar Flexfields (DFFs) específicos.
Establecer Parámetros: La consulta incluye un marcador de posición
:p_start_datepara filtrar por fecha de creación de la transacción. En la pestaña Parámetros del Modelo de Datos, cree un nuevo parámetro llamadop_start_date, Tipo de Datos: Fecha, y establezca un valor predeterminado (por ejemplo,01-01-2023).Ver Datos: Haga clic en la pestaña Datos, ingrese una fecha válida para el parámetro y haga clic en Ver. Asegúrese de que la salida contenga filas con columnas como
InvoiceNumber,ActivityNameyEventStartDateTime.Guardar Modelo de Datos: Guarde el objeto en su directorio de Carpetas Compartidas > Personalizado (por ejemplo,
/Shared Folders/Custom/ProcessMining/AR_Extract_DM).Programar/Exportar: Para extraer grandes volúmenes, haga clic en Crear Informe usando este Modelo de Datos. En el editor de informes, verifique que el diseño sea una tabla simple. Guarde el informe. Luego, use el Programador para ejecutar el informe y generar los datos como CSV o XML.
Formato Final: Descargue el archivo de salida. Si es CSV, asegúrese de que el formato de fecha sea consistente (se prefiere ISO 8601). Cargue este archivo en ProcessMind mapeando
InvoiceNumbercomo ID de Caso,ActivityNamecomo Actividad, yEventStartDateTimecomo Marca de Tiempo.
Configuración
- Fuente de Datos: Utilice
ApplicationDB_FSCMpara acceder a las tablas de Finanzas. - Filtro de Fechas: La consulta utiliza
ra_customer_trx_all.creation_date >= :p_start_date. Configure esto para cargar datos en una ventana continua (por ejemplo, los últimos 12 meses). - Rendimiento: Para conjuntos de datos que superen las 100,000 facturas, considere añadir un límite
ROWNUMdurante las pruebas o fragmentar la extracción por mes. - Filtrado por Unidad de Negocio: Si su organización tiene varias Unidades de Negocio y solo necesita una, descomente la línea
AND trx.org_id = ...en las cláusulasWhere. - Nombres de Usuario: La consulta resuelve los IDs de usuario
CREATED_BYa Nombres de Usuario a través deFND_USER. Asegúrese de que el usuario de extracción tenga permiso para leerFND_USER. - Cobranza Avanzada: Las actividades 'Recordatorio de Pago Enviado' y 'Promesa de Pago Recibida' dependen de las tablas del módulo IEX (Cobranza Avanzada). Si no utiliza este módulo, estas secciones simplemente devolverán cero filas.
a Consulta de ejemplo sql
/* 1. Invoice Created */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Created' AS ActivityName,
trx.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 2. Invoice Completed */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
trx.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
trx.complete_flag = 'Y'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 3. Invoice Dispatched */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
COALESCE(trx.printing_original_date, trx.printing_last_printed, trx.last_update_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
(trx.printing_original_date IS NOT NULL OR trx.printing_count > 0)
AND trx.creation_date >= :p_start_date
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
MAX(dist.gl_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_line_gl_dist_all dist ON trx.customer_trx_id = dist.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
WHERE
dist.account_class = 'REC'
AND dist.posting_control_id != -3
AND trx.creation_date >= :p_start_date
GROUP BY
trx.trx_number,
hou.name,
party.party_name,
trx.invoice_currency_code,
ps.amount_due_original,
type.name
UNION ALL
/* 5. Payment Reminder Sent (Advanced Collections) */
SELECT
trx.trx_number AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
dun.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
iex_dunning_transactions dun
JOIN ar_payment_schedules_all ps ON dun.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON dun.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 6. Promise to Pay Received */
SELECT
trx.trx_number AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
pp.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
iex_promise_details pp
JOIN ar_payment_schedules_all ps ON pp.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON pp.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 7. Dispute Case Opened */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
req.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 8. Dispute Resolved */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
req.last_update_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.last_updated_by = u.user_id
WHERE
req.status_code IN ('APPROVED', 'REJECTED')
AND trx.creation_date >= :p_start_date
UNION ALL
/* 9. Credit Memo Issued */
SELECT
trx.trx_number AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
cm.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all cm
JOIN ra_customer_trx_all trx ON cm.previous_customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON cm.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 10 & 11. Partial and Full Payment */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN ps.status = 'CL' AND app.amount_applied = app.amount_applied_from THEN 'Full Payment Received'
WHEN ps.status = 'CL' AND ps.amount_due_remaining = 0 AND app.application_rule = '60' THEN 'Full Payment Received'
ELSE 'Partial Payment Posted'
END AS ActivityName,
app.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_receivable_applications_all app
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON app.created_by = u.user_id
WHERE
app.status = 'APP'
AND app.application_type = 'CASH'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 12. Bank Statement Matched */
SELECT
trx.trx_number AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
recon.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ce_statement_reconcils_all recon
JOIN ar_cash_receipt_history_all crh ON recon.reference_id = crh.cash_receipt_history_id
JOIN ar_cash_receipts_all cr ON crh.cash_receipt_id = cr.cash_receipt_id
JOIN ar_receivable_applications_all app ON cr.cash_receipt_id = app.cash_receipt_id
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON recon.created_by = u.user_id
WHERE
recon.status_flag = 'M'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 13 & 14. Invoice Adjusted and Written Off */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN adj.adjustment_type = 'W' THEN 'Invoice Written Off'
ELSE 'Invoice Adjusted'
END AS ActivityName,
adj.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_adjustments_all adj
JOIN ar_payment_schedules_all ps ON adj.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON adj.created_by = u.user_id
WHERE
adj.status = 'A'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 15. Invoice Cleared (Final Close) */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
ps.gl_date_closed AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ar_payment_schedules_all ps
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
WHERE
ps.status = 'CL'
AND ps.gl_date_closed IS NOT NULL
AND trx.creation_date >= :p_start_date