Su Template de datos para el procesamiento de nómina
Su Template de datos para el procesamiento de nómina
- Campos de datos optimizados para analizar la nómina
- Seguimiento completo de actividades para representar el ciclo de vida
- Instrucciones detalladas para extraer datos de nómina de Oracle HCM Cloud
Atributos del procesamiento de nómina
| Nombre | Descripción | ||
|---|---|---|---|
| Marca de tiempo del evento EventTimestamp | Fecha y hora exactas en que tuvo lugar la actividad. | ||
| Descripción Registra el momento exacto en que se realizó una actividad. Es fundamental para calcular duraciones y tiempos de entrega, e identificar cuellos de botella. En los pasos automatizados, corresponde a la hora de ejecución del sistema. En los pasos manuales, como las aprobaciones, es la marca de tiempo de la acción de la persona usuaria registrada en el historial de transacciones. Por qué es importante Es esencial para ordenar cronológicamente los eventos y calcular todos los KPI basados en el tiempo. Dónde obtenerlo Columnas CREATION_DATE o ACTION_DATE de las tablas de transacciones pertinentes, como PAY_ACTION_INFORMATION. Ejemplos 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Nombre de la actividad ActivityName | Paso o evento específico que tiene lugar durante el ciclo de nómina. | ||
| Descripción Este atributo recoge el nombre del evento que ocurre durante el proceso de nómina. Algunos ejemplos son «Hoja de horas enviada», «Cálculo de nómina iniciado» y «Pago ejecutado». Es la dimensión principal para descubrir procesos y analizar variantes. En Oracle HCM Cloud, suele derivarse del tipo de acción o del estado de la acción en las tablas de acciones de nómina. Por qué es importante Define el «qué» del proceso y permite reconstruir el mapa del proceso. Dónde obtenerlo Se deriva del código ACTION_TYPE en PAY_PAYROLL_ACTIONS o de los cambios de estado en los registros de auditoría. Ejemplos Cálculo de nómina iniciadoHoja de horas aprobadaTransferencia bancaria generadaExcepción de auditoría señalada | |||
| Registro de nómina PayrollRecord | Identificador único que representa a una persona empleada durante un periodo de nómina específico. | ||
| Descripción El registro de nómina funciona como identificador central del caso para el análisis de Process Mining. Es una concatenación o clave única que combina el identificador de asignación de la persona empleada con el identificador del periodo de nómina. Este atributo agrupa todas las actividades relacionadas con el pago a una persona empleada en un ciclo específico, desde el envío inicial de la hoja de horas hasta la transferencia bancaria final y la declaración de impuestos. Permite distinguir los pagos a una misma persona en enero y en febrero. Por qué es importante Funciona como ID del caso y reúne todos los eventos dispersos en una única instancia del proceso para su análisis. Dónde obtenerlo Se construye a partir de PAY_ASSIGNMENT_ACTIONS o de una combinación del número de persona y el nombre del periodo de nómina en Oracle HCM. Ejemplos EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Sistema de origen SourceSystem | Nombre del sistema donde se originó el evento. | ||
| Descripción Identifica el software o módulo que generó el dato. En este proceso, el valor principal es 'Oracle HCM Cloud Payroll'. Sin embargo, en entornos complejos, puede distinguir entre el motor central de nómina, el módulo de tiempo y trabajo o una interfaz bancaria externa. Por qué es importante Aporta contexto sobre el origen de los datos, especialmente al integrar datos de sistemas de control horario o subsistemas bancarios. Dónde obtenerlo Se asigna durante la extracción o se obtiene a partir de los ID de interfaz. Ejemplos Oracle HCM Cloud PayrollOracle Time and LaborInterfaz bancaria externa | |||
| Última actualización de los datos LastDataUpdate | Marca de tiempo de la última modificación del registro en la base de datos de origen. | ||
| Descripción Indica qué tan actualizados están los datos utilizados en el análisis. No es lo mismo que la marca de tiempo del evento: refleja cuándo un proceso ETL o una actualización del sistema modificó por última vez la fila en la base de datos. Se utiliza para comprobar la vigencia de los datos y detectar problemas de latencia en la extracción. Por qué es importante Permite a los analistas saber si están consultando datos en tiempo real o desactualizados. Dónde obtenerlo Columna LAST_UPDATE_DATE, presente en casi todas las tablas de Oracle HCM. Ejemplos 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Es una corrección manual IsManualCorrection | Indicador de si la actividad requirió intervención manual. | ||
| Descripción Indicador booleano que se establece en true para actividades como 'Corrección de datos realizada' o 'Registro de nómina corregido'. Se utiliza para calcular los KPI de tasa de corrección manual de datos y de precisión de la nómina en el primer intento. Por qué es importante Distingue entre el procesamiento directo y el retrabajo manual. Dónde obtenerlo Se obtiene del nombre de la actividad o de tipos de acción específicos que indican ajustes (por ejemplo, QuickPay o ajuste de saldo). Ejemplos truefalse | |||
| Fecha límite de procesamiento del SLA SlaProcessingDeadline | Fecha y hora límite para ejecutar el pago. | ||
| Descripción Registra la fecha límite contractual o legal para el desembolso de la nómina. Este atributo se compara con la marca de tiempo de 'Pago ejecutado'. Se utiliza para calcular el KPI de cumplimiento de la fecha límite de procesamiento del SLA e identificar los grupos de pago en riesgo. Por qué es importante Es el principal punto de referencia para determinar si el proceso cumple los plazos. Dónde obtenerlo Suele ser un campo configurado (DFF) en la definición de nómina o se calcula restando X días a la fecha del cheque. Ejemplos 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Grupo de datos legislativos LegislativeDataGroup | Divide los datos de nómina por país o entorno normativo. | ||
| Descripción En Oracle HCM Cloud, el grupo de datos legislativos (LDG) divide los datos de nómina y los datos relacionados. Por lo general, corresponde a un país o a la legislación de un territorio específico. Este atributo es fundamental para filtrar el análisis del proceso por país (por ejemplo, nómina de EE. UU. frente a nómina del Reino Unido) y suele asignarse al atributo genérico País. Por qué es importante Las reglas de cumplimiento y los flujos del proceso suelen variar considerablemente según la jurisdicción. Dónde obtenerlo Tabla PAY_ALL_PAYROLLS_F unida a las definiciones de grupos de datos legislativos. Ejemplos Grupo de datos legislativos de EE. UU.LDG del Reino UnidoNómina de Francia | |||
| Grupo de pago PayGroup | Agrupación lógica de personas empleadas para procesar la nómina. | ||
| Descripción Representa la definición de nómina a la que pertenece la persona empleada (por ejemplo, 'Manufactura semanal' o 'Corporativo mensual'). Este atributo es fundamental para casi todos los Dashboards, ya que permite comparar el rendimiento entre distintos ciclos y frecuencias de nómina. Por qué es importante Es el objeto de configuración principal que determina la programación de la nómina. Dónde obtenerlo Tabla PAY_ALL_PAYROLLS_F (nombre de nómina). Ejemplos Quincenal de EE. UU.Mensual del Reino UnidoSemanal sindical | |||
| Importe bruto de la nómina GrossPayAmount | Importe bruto total calculado para el período. | ||
| Descripción Representa el importe bruto calculado durante el ciclo. Se utiliza en los análisis de precisión del cálculo de impuestos y prestaciones y de integración de incentivos. Permite a los analistas relacionar los pagos de importes elevados con el tiempo de procesamiento o las tasas de error. Por qué es importante Aporta contexto financiero al análisis de Process Mining. Dónde obtenerlo Tabla PAY_RUN_RESULT_VALUES, agregada para el saldo de importe bruto. Ejemplos 5000.002350.5010000.00 | |||
| Nombre del departamento DepartmentName | Unidad organizativa donde trabaja la persona empleada. | ||
| Descripción Identifica el departamento responsable de la persona empleada asociada al registro de nómina. Este dato es fundamental para el Dashboard de eficiencia en la aprobación de hojas de horas. Al segmentar los datos por departamento, los analistas pueden identificar qué unidades de negocio suelen retrasarse al aprobar las hojas de horas y, por tanto, demoran el procesamiento general de la nómina. Por qué es importante Permite analizar las causas raíz de los retrasos relacionados con las aprobaciones de la gerencia. Dónde obtenerlo Se obtiene del registro de asignación de la persona empleada vigente en el momento del procesamiento de la nómina. Ejemplos Ventas de NorteaméricaIngenieríaRecursos humanosLogística | |||
| Nombre del período de nómina PayrollPeriodName | Nombre específico del intervalo de tiempo del procesamiento de nómina. | ||
| Descripción Identifica el ciclo concreto, como 'Mensual, enero de 2024' o 'Período semanal 42'. Es fundamental para el monitor de cumplimiento de plazos del SLA. Permite agrupar los casos individuales de cada persona empleada en sus respectivas ejecuciones por lotes para elaborar informes agregados. Por qué es importante Es fundamental para analizar los lotes y hacer seguimiento de los SLA. Dónde obtenerlo Tabla PAY_TIME_PERIODS o nombre del período en la definición de nómina. Ejemplos Mensual 10 de 2023Semanal 42 de 2023Ejecución de bonificaciones de diciembre de 2023 | |||
| Usuario que procesa ProcessingUser | ID de usuario o nombre de la persona que realiza la actividad. | ||
| Descripción Registra la identidad del especialista en nómina, la persona responsable de la gerencia o la cuenta del sistema que inició la actividad. Este dato sirve para el Dashboard de distribución de la carga de trabajo de especialistas en nómina. Ayuda a identificar cuellos de botella relacionados con los recursos y necesidades de formación en el equipo de nómina. Por qué es importante Permite analizar la productividad de los recursos y equilibrar la carga de trabajo. Dónde obtenerlo Columnas CREATED_BY o LAST_UPDATED_BY en las tablas de transacciones. Ejemplos sysadminj.smithpayroll_batch_userm.doe | |||
| Estado del SLA SlaStatus | Estado categórico del cumplimiento del SLA (cumplido o incumplido). | ||
| Descripción Se obtiene al comparar la marca de tiempo de 'Pago ejecutado' con la 'Fecha límite de procesamiento del SLA'. Los valores pueden incluir 'A tiempo', 'En riesgo' o 'Incumplido'. Esto simplifica los informes del monitor de cumplimiento de plazos del SLA al agrupar los casos en categorías de rendimiento. Por qué es importante Simplifica las comparaciones de tiempo complejas y las convierte en categorías útiles para la acción. Dónde obtenerlo Lógica calculada que compara la marca de tiempo del evento con la fecha límite del SLA. Ejemplos CumplidoIncumplidoCerca del incumplimiento | |||
| Indicador de cambio retroactivo RetroactiveChangeFlag | Indica si la ejecución de nómina incluye pagos retroactivos. | ||
| Descripción Indicador booleano que se establece en true si se procesan elementos de 'Retropay' en este registro. Ayuda a explicar los tiempos de procesamiento más largos o las excepciones de auditoría en la comparación de variantes de la ruta del proceso. Los cambios retroactivos suelen activar recálculos complejos que abarcan períodos anteriores. Por qué es importante Identifica los casos complejos que, por su naturaleza, requieren más tiempo de procesamiento. Dónde obtenerlo Presencia de entradas de elementos 'Retropay' en PAY_ELEMENT_ENTRIES. Ejemplos truefalse | |||
| Jurisdicción fiscal TaxJurisdiction | Estado, provincia o localidad específica para la declaración de impuestos. | ||
| Descripción Indica la principal autoridad fiscal relacionada con el registro de nómina (por ejemplo, 'CA' para California o 'NY' para Nueva York). Este dato sirve para el Dashboard de duración del procesamiento de cumplimiento fiscal. Ayuda a identificar si los procesos de cálculo y declaración de impuestos son más complejos o lentos en determinadas regiones. Por qué es importante Permite segmentar el rendimiento según la complejidad normativa. Dónde obtenerlo Se obtiene de la tarjeta fiscal de la persona empleada o de las direcciones de su lugar de trabajo. Ejemplos CA-CaliforniaNY-Nueva YorkTX-TexasFederal-EE. UU. | |||
| Número de iteraciones de vista previa PreviewIterationCount | Número de veces que se previsualizaron los resultados antes de finalizar. | ||
| Descripción Contador que aumenta cada vez que se registra la actividad 'Resultados de nómina previsualizados' para el mismo caso. Es la medida directa del Dashboard de seguimiento de iteraciones de vista previa de nómina e indica cuánto retrabajo o indecisión hubo antes de la aprobación. Por qué es importante Cuantifica la eficiencia de la fase de validación. Dónde obtenerlo Se calcula durante la transformación de datos, contando las apariciones de actividades específicas por ID del caso. Ejemplos 1350 | |||
| Tipo de excepción de auditoría AuditExceptionType | Categoría del error o la advertencia detectados durante la auditoría. | ||
| Descripción Clasifica el problema concreto detectado durante la actividad 'Excepción de auditoría detectada' (por ejemplo, 'Salario neto negativo' o 'Falta el número de identificación fiscal'). Este atributo sirve para el Dashboard de análisis de excepciones y correcciones de auditoría, ya que permite identificar los problemas de calidad de los datos más frecuentes. Por qué es importante Es fundamental para analizar las causas raíz de los ciclos de retrabajo. Dónde obtenerlo Columnas de mensaje o código de error en los registros del proceso de nómina o en los informes de excepciones. Ejemplos Salario neto negativoFalta el número de Seguro SocialDatos bancarios no válidosSe superó el límite de horas extra | |||
| Tipo de persona empleada EmployeeType | Clasificación de la persona empleada (por ejemplo, con salario fijo, por hora o contratista). | ||
| Descripción Clasifica el registro de la persona empleada. Es fundamental para el Dashboard de demora en la publicación de recibos de pago digitales, ya que los distintos tipos de personas empleadas pueden tener reglas de procesamiento o niveles de urgencia diferentes. Permite filtrar el análisis para comparar el rendimiento del proceso entre distintos segmentos de la fuerza laboral. Por qué es importante Los distintos tipos de personas empleadas suelen seguir variantes diferentes del proceso. Dónde obtenerlo Categoría de asignación o condiciones de empleo en PER_ALL_ASSIGNMENTS_M. Ejemplos Con salario fijo y jornada completaPor hora y jornada parcialContratistaEjecutivo | |||
Actividades del procesamiento de nómina
| Actividad | Descripción | ||
|---|---|---|---|
| Anticipos calculados | Ejecución del proceso Prepayments, que distribuye el salario neto entre los métodos de pago elegidos por la persona empleada (cheque, transferencia electrónica, etc.). Este paso valida que los importes calculados puedan pagarse. | ||
| Por qué es importante Es el enlace entre el cálculo y el desembolso. Los fallos en esta etapa suelen indicar que faltan datos bancarios o que los métodos de pago no son válidos. Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea P (Prepayments) y el estado sea Complete. Capturar Se registra cuando finaliza la acción Prepayments Tipo de evento explicit | |||
| Cálculo de nómina ejecutado | Finalización correcta del proceso Calculate Payroll, incluidos los cálculos de salario bruto a neto. Este evento indica que se calcularon las percepciones, las deducciones y los impuestos de la asignación. | ||
| Por qué es importante Hito importante que indica que los datos están listos para su validación. Una duración elevada en esta etapa puede indicar problemas de rendimiento del sistema o fórmulas rápidas complejas. Dónde obtenerlo Consulte PAY_PAYROLL_REL_ACTIONS junto con PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea R o Q y ACTION_STATUS cambie a C (Complete). Capturar Se registra cuando el estado de la acción Payroll Run cambia a Complete Tipo de evento explicit | |||
| Cálculo de nómina iniciado | Inicio del proceso principal de ejecución de nómina para una definición y un periodo específicos. Marca la transición de la recopilación de datos al procesamiento. | ||
| Por qué es importante Marca el inicio de la fase de procesamiento intensivo. Se utiliza para calcular el tiempo total del ciclo de ejecución técnica de la nómina. Dónde obtenerlo Consulte la tabla PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea R (Run) o Q (QuickPay) y ACTION_STATUS figure como iniciado (o se infiera a partir de la fecha de creación). Capturar Se registra cuando se inserta un registro en PAY_PAYROLL_ACTIONS Tipo de evento explicit | |||
| Pago ejecutado | Confirmación final de que el pago se ha procesado. En Oracle, corresponde a la finalización del flujo de pago o a la conciliación en Cash Management. | ||
| Por qué es importante Es la marca de tiempo principal para el cumplimiento de los SLA. Se utiliza para determinar si el personal recibió el pago a tiempo. Dónde obtenerlo Puede inferirse a partir de la fecha efectiva de la acción de transferencia bancaria o registrarse explícitamente en los registros de conciliación de Cash Management (CE_STATEMENT_LINES). Capturar Se registra mediante la fecha efectiva de la acción de pago o el evento de conciliación Tipo de evento explicit | |||
| Transferencia bancaria generada | Generación del archivo EFT (transferencia electrónica de fondos) u otro archivo de pago similar. Este paso técnico crea el archivo de instrucciones para el banco. | ||
| Por qué es importante Mide el tiempo de ciclo de generación del archivo de pago. Los retrasos en esta etapa pueden hacer que se pasen los horarios límite bancarios. Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea M (Magnetic Tape), E (EFT) o C (Check Writer). Capturar Se registra cuando finaliza la acción EFT/Check Tipo de evento explicit | |||
| Costes transferidos | Transferencia de los resultados de costes de nómina al libro mayor. Representa el cierre contable del ciclo de nómina. | ||
| Por qué es importante Garantiza el cumplimiento financiero y el registro correcto de los costes laborales. Los retrasos impiden que el área de Finanzas cierre los libros contables. Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea T (Transfer to GL) y el estado sea Complete. Capturar Se registra cuando finaliza el proceso Transfer to GL Tipo de evento explicit | |||
| Datos de incentivos importados | Creación de entradas de elementos para pagos variables, como bonificaciones o comisiones, mediante un cargador por lotes o una importación HDL. Este evento representa la integración de datos externos de compensación en la ejecución de la nómina. | ||
| Por qué es importante Permite supervisar la velocidad de integración de los pagos variables. Las importaciones tardías suelen obligar a ejecutar nóminas complementarias o realizar correcciones manuales. Dónde obtenerlo Consulte PAY_BATCH_HEADERS para comprobar que la importación se completó o haga un seguimiento de la creación de PAY_ELEMENT_ENTRIES_F con una referencia específica al sistema de origen. Capturar Se registra cuando el proceso de entrada de elementos por lotes finaliza correctamente Tipo de evento explicit | |||
| Declaración de impuestos completada | Generación de archivos fiscales reglamentarios, como el archivo fiscal trimestral para terceros. Garantiza el cumplimiento normativo del periodo de nómina. | ||
| Por qué es importante Es fundamental para el KPI de duración del procesamiento del cumplimiento fiscal. Si este paso falla, pueden aplicarse sanciones. Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS para encontrar acciones de grupos de datos legislativos específicos relacionadas con la declaración de impuestos, como US Third Party Tax Filing. Capturar Se registra cuando finaliza un flujo específico de declaración de impuestos Tipo de evento explicit | |||
| Ejecución de nómina aprobada | Aprobación formal del registro o del flujo de nómina en el Dashboard de nómina. Suele realizarse después de revisar los informes de validación y antes de generar los archivos bancarios. | ||
| Por qué es importante Representa la aprobación de la dirección. El tiempo entre el cálculo y la aprobación corresponde al periodo de verificación. Dónde obtenerlo Consulte PAY_REQ_FLOW_INSTANCES para detectar cambios de estado o la finalización de tareas específicas dentro de un patrón de flujo de nómina definido. Capturar Se registra cuando el estado de Flow Instance cambia a Completed/Approved Tipo de evento explicit | |||
| Excepción de auditoría señalada | Registro de un mensaje de error o advertencia durante el cálculo o la validación de la nómina. Este evento recoge fallos de validación concretos que requieren intervención humana. | ||
| Por qué es importante Es esencial para identificar problemas de calidad de los datos. Un gran volumen de excepciones aumenta el trabajo manual y el riesgo de incumplir los SLA. Dónde obtenerlo Consulte la tabla PAY_MESSAGE_LINES vinculada al PAY_PAYROLL_REL_ACTION_ID correspondiente. Esta tabla almacena los errores y las advertencias generados durante las ejecuciones. Capturar Se registra cuando se inserta un registro en PAY_MESSAGE_LINES Tipo de evento explicit | |||
| Hoja de horas aprobada | Confirmación de que una persona responsable revisó y autorizó los datos de tiempo enviados. Este cambio de estado activa la transferencia de los datos a las entradas de elementos de nómina. | ||
| Por qué es importante Es fundamental para medir el tiempo de aprobación de la persona responsable. Los retrasos en esta etapa son una de las principales causas de los ajustes retroactivos de nómina en periodos posteriores. Dónde obtenerlo Consulte la tabla HWM_TM_REC_GRP_DTLS o la vista HXT_TIMECARDS cuando el estado cambie a APPROVED. Compare la marca de tiempo de aprobación con la del envío. Capturar Se registra cuando el estado cambia a APPROVED en Time and Labor Tipo de evento explicit | |||
| Hoja de horas enviada | Evento inicial en el que una persona empleada o su responsable envía los datos de tiempo y trabajo para su procesamiento. En Oracle HCM, queda registrado cuando el estado de la hoja de horas cambia a Submitted en el módulo Time and Labor. | ||
| Por qué es importante Marca la entrada de datos sin procesar en el posible flujo de nómina. Los retrasos en esta etapa repercuten en las siguientes y reducen el tiempo disponible para que el personal especialista en nómina valide los cálculos. Dónde obtenerlo Consulte la tabla HWM_TM_REC_GRP_DTLS o la vista HXT_TIMECARDS cuando el estado cambie a SUBMITTED. Utilice la marca de tiempo del envío. Capturar Se registra cuando el estado cambia a SUBMITTED en Time and Labor Tipo de evento explicit | |||
| QuickPay ejecutado | Ejecución de nómina para una sola persona (QuickPay), que suele utilizarse para verificar correcciones. Sirve como indicador indirecto de la actividad Payroll Result Previewed. | ||
| Por qué es importante La frecuencia de QuickPay para una misma persona indica un enfoque de ensayo y error en el procesamiento de la nómina, en lugar de un Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea Q (QuickPay). Cuente las instancias por persona empleada y periodo de nómina. Capturar Se registra cuando se añade una acción QuickPay a PAY_PAYROLL_ACTIONS Tipo de evento explicit | |||
| Recibo de pago publicado | Momento en que el recibo de pago queda disponible para la persona empleada en Self Service. Esto ocurre después del proceso Archiver y, posiblemente, de un proceso específico Generate Payslip. | ||
| Por qué es importante Influye en la satisfacción del personal. Los largos intervalos entre el pago y la disponibilidad del recibo generan solicitudes de soporte. Dónde obtenerlo Consulte la tabla Documents of Record (HR_DOCUMENTS_OF_RECORD) o compruebe que el proceso Generate Payslip haya finalizado en PAY_PAYROLL_ACTIONS. Capturar Se registra cuando finaliza el proceso de generación del PDF del recibo de pago Tipo de evento explicit | |||
| Registro de nómina corregido | Actualizaciones manuales de las entradas de elementos o de los datos de asignación después de la ejecución inicial de la nómina y antes de finalizarla. Esta actividad representa el retrabajo necesario para corregir errores o excepciones. | ||
| Por qué es importante Indica ineficiencias en el proceso y problemas de calidad de los datos. Reducir esta actividad es clave para mejorar la tasa de precisión de la nómina en el primer intento. Dónde obtenerlo Se infiere al identificar actualizaciones de PAY_ELEMENT_ENTRIES_F cuya Last Update Date se encuentre entre la fecha de la ejecución inicial de la nómina y la fecha de Prepayments. Capturar Compare las marcas de tiempo de actualización de las entradas de elementos con las de las ejecuciones de nómina Tipo de evento inferred | |||
| Resultados de archivo generados | Finalización del proceso Archive Periodic Payroll Results. Esta instantánea bloquea los datos para generar informes y recibos de pago. | ||
| Por qué es importante Requisito técnico previo para generar recibos de pago e informes reglamentarios. Confirma que los datos están finalizados. Dónde obtenerlo Consulte PAY_PAYROLL_ACTIONS cuando ACTION_TYPE sea X (Archive) y el estado sea Complete. Capturar Se registra cuando finaliza la acción Archive Tipo de evento explicit | |||
Guías de extracción
Pasos
Acceda a Data Exchange: Inicie sesión en Oracle HCM Cloud con un usuario que tenga el rol 'Human Capital Management Integration Specialist'. Vaya a My Client Groups > Data Exchange > Extract Definitions.
Cree una extracción nueva: Haga clic en el icono '+' para crear una extracción nueva. Asígnele el nombre 'ProcessMind_Payroll_Extract'. Seleccione 'Payroll' como consumidor y 'HR Archive' como categoría para acceder a los datos históricos de las acciones de nómina.
Defina los grupos de datos: Cree un grupo de datos raíz basado en la entidad de usuario
PAY_PAYROLL_REL_UE(relación de nómina). Esto vincula la extracción con la relación de nómina del empleado. Cree grupos de datos secundarios paraPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEyHWM_MEASURE_DAY_V_UE(para tiempo y trabajo).Configure los registros de extracción: Defina registros dentro de los grupos de datos para aplanar la estructura jerárquica. Debe crear registros específicos para cada tipo de actividad, por ejemplo, uno que filtre los eventos 'Time Card' y otro para 'Run Results'.
Implemente la lógica SQL mediante FastFormula o BIP: Debido a la complejidad de transformar datos jerárquicos de nómina en un Registro de eventos lineal, la opción más sólida es usar 'Extract Delivery Option' para llamar a un informe de BI Publisher. Así podrá usar como modelo de datos la consulta SQL incluida en la sección 'Query' de abajo. Esta opción es mejor que los filtros de la interfaz gráfica nativa para crear un Registro de eventos unificado.
Cree un modelo de datos de BI Publisher: Vaya a Tools > Reports and Analytics > Browse Catalog. Cree un modelo de datos nuevo. Pegue la consulta SQL que se incluye a continuación. Defina los parámetros
bind_start_dateybind_end_date.Vincule la extracción con BIP: En la pestaña 'Delivery' de la definición de extracción, cree una opción de entrega. Seleccione 'PDF' o 'XML' como formato de salida. ProcessMind prefiere CSV, pero deberá convertir la salida de BIP. Seleccione el informe de BI Publisher que creó en el paso anterior.
Defina los parámetros: En el árbol de ejecución de la extracción, añada parámetros para la fecha de inicio y la fecha de fin que se enviarán dinámicamente a la consulta de BI Publisher.
Valide y envíe: Valide la definición de extracción para comprobar si hay errores. Haga clic en 'Submit Extract' e introduzca los parámetros, por ejemplo, los últimos 90 días.
Supervise el proceso: Vaya a 'View Extract Results'. Espere a que el estado cambie a 'Succeeded'.
Descargue el archivo de salida: Descargue el archivo XML/CSV generado. Ábralo y compruebe que la estructura incluya las columnas necesarias: PayrollRecord, ActivityName, EventTimestamp, etc.
Dé formato a los datos para ProcessMind: Si el archivo de salida está en XML, conviértalo a un archivo CSV plano y asegúrese de que los encabezados coincidan con los requisitos de 'Attributes to include'. Cargue el archivo resultante en ProcessMind.
Configuración
- Modo de extracción: Solo cambios o extracción completa. Para la carga inicial, use la extracción completa. Para las actualizaciones diarias, configure 'Changes Only' según la fecha de la última actualización.
- Grupo de datos legislativos (LDG): Se recomienda filtrar por LDG si su instancia admite varios países, ya que las definiciones de nómina varían según la legislación.
- Intervalo de fechas: Configure
bind_start_dateybind_end_datepara abarcar al menos entre 3 y 6 meses, de modo que Process Mining pueda capturar los tiempos de ciclo completos. - Tamaño de bloque: Para nóminas de gran volumen (más de 10.000 empleados), configure el tamaño de bloque en 2000 en la definición de extracción para evitar errores de tiempo de espera.
- Vigencia de fechas: Las tablas de nómina tienen vigencia por fecha. La lógica de consulta gestiona explícitamente
effective_start_dateyeffective_end_datepara recuperar la versión histórica correcta del registro. - Seguridad: El usuario que ejecuta la extracción debe tener perfiles de seguridad de datos que permitan ver todas las nóminas y los departamentos incluidos en el análisis.
Consulta de ejemplo sql
/* Oracle HCM Cloud Payroll Extraction for ProcessMind */
/* Aggregating 16 specific activities into a unified Event Log */
SELECT
/* Attributes */
rel.person_number || '-' || ppa.payroll_action_id AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
TO_CHAR(htr.creation_date, 'YYYY-MM-DD HH24:MI:SS') AS EventTimestamp,
'Oracle HCM Time and Labor' AS SourceSystem,
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS') AS LastDataUpdate,
pap.name AS PayrollPeriodName,
org.name AS DepartmentName,
NULL AS GrossPayAmount
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id /* Adjust mapping */
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'SUBMITTED'
AND htr.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Time Card Approved',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Time and Labor',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'APPROVED'
AND htr.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || pee.element_entry_id,
'Incentive Data Imported',
TO_CHAR(pee.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
NULL,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_element_types_f pet ON pee.element_type_id = pet.element_type_id
JOIN per_all_assignments_m asg ON pee.assignment_id = asg.assignment_id
JOIN per_all_people_f rel ON asg.person_id = rel.person_id
LEFT JOIN per_departments org ON asg.organization_id = org.organization_id
WHERE pet.classification_name IN ('Supplemental Earnings', 'Voluntary Deductions')
AND pee.creator_type IN ('H', 'F') /* HDL or Flat File */
AND pee.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Started',
TO_CHAR(ppa.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_actions ppa
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id /* Simplified Join */
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q') /* Run or QuickPay */
AND ppa.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(prrv.result_value) FROM pay_run_result_values prrv JOIN pay_run_results prr ON prrv.run_result_id = prr.run_result_id WHERE prr.payroll_rel_action_id = pra.payroll_rel_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q')
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Audit Exception Flagged',
TO_CHAR(pml.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pml.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_message_lines pml
JOIN pay_payroll_rel_actions pra ON pml.source_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pml.message_level IN ('F', 'E') /* Fatal or Error */
AND pml.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Record Corrected',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_payroll_rel_actions pra ON pee.creator_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pee.last_update_date > pee.creation_date
AND pee.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'QuickPay Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'Q'
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Prepayments Calculated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'P' /* Distribution */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Run Approved',
TO_CHAR(pfi.action_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pfi.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_flow_instances pfi
JOIN pay_payroll_actions ppa ON pfi.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pfi.status = 'COMPLETED'
AND pfi.instance_name LIKE '%Approval%'
AND pfi.action_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Archive Results Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'X' /* Archive */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Bank Transfer Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(ppp.value) FROM pay_pre_payments ppp WHERE ppp.payroll_action_id = ppa.payroll_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('M', 'E') /* Mag Tape or EFT */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payment Executed',
TO_CHAR(ppp.base_currency_value, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
ppp.value AS GrossPayAmount
FROM pay_pre_payments ppp
JOIN pay_payroll_actions ppa ON ppp.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('H', 'E', 'M') /* Check or EFT */
AND ppa.effective_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Pay Slip Published',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'G' /* Generate Payslip */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Costing Transferred',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'T' /* Transfer to GL */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Tax Filing Completed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.report_category IN ('Tax', 'Regulatory') /* Customize based on local requirements */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date Pasos
- Inicie sesión en Oracle BI Publisher: Acceda al entorno de Oracle Cloud y vaya a Tools > Reports and Analytics. Haga clic en Browse Catalog para abrir la interfaz de BI Publisher.
- Cree un modelo de datos: Haga clic en Nuevo (arriba a la izquierda) y seleccione Modelo de datos. Este será el contenedor de la lógica SQL de extracción.
- Cree un conjunto de datos SQL: En la pestaña Diagram, haga clic en el icono Nuevo conjunto de datos y seleccione Consulta SQL.
- Configure la fuente de datos: Asigne un nombre al conjunto de datos (por ejemplo,
ProcessMind_Payroll_Extract). En Fuente de datos, seleccioneApplicationDB_HCM(o la conexión específica a la base de datos de aplicaciones de HCM). Mantenga el tipo SQL estándar. - Introduzca la consulta: Copie el script SQL completo de la sección Consulta que aparece a continuación y péguelo en el cuadro de texto de consulta SQL. Asegúrese de no incluir formato Markdown.
- Defina los parámetros: La consulta utiliza las variables de enlace
:p_start_datey:p_end_date. En la pestaña Parámetros del modelo de datos, cree estos dos parámetros de tipo fecha para filtrar el intervalo de extracción (por ejemplo, segúnppa.EFFECTIVE_DATE). - Valide la estructura de los datos: Haga clic en Aceptar. Cambie a la pestaña Datos del editor del modelo de datos. Introduzca fechas de ejemplo (por ejemplo,
2023-01-01y2023-03-31) y haga clic en Ver. Compruebe que el resultado incluya filas conPayrollRecord,ActivityNameyEventTimestamp. - Guarde el modelo de datos: Guarde el modelo en una carpeta compartida (por ejemplo,
/Shared Folders/Custom/ProcessMining). - Cree un informe para exportar los datos: Haga clic en Crear informe y seleccione el modelo de datos que acaba de guardar. Use el Asistente para informes para crear una tabla sencilla con todas las columnas. Desmarque «Mostrar totales generales».
- Exporte los datos a CSV: Abra el informe en el visor de informes. Haga clic en el menú Acciones (icono de engranaje) > Exportar > Datos > CSV.
- Transforme los datos: Abra el archivo CSV. Si el formato no se aplica automáticamente, asegúrese de que las fechas estén en formato ISO 8601 (
YYYY-MM-DD HH:MM:SS). Si pegó correctamente el SQL, no debería ser necesario realizar más transformaciones. - Cargue el archivo: Importe el CSV resultante en ProcessMind y asigne las columnas según se indica en los requisitos de datos.
Configuración
- Conexión a la fuente de datos: Debe usar
ApplicationDB_HCMo una fuente de datos JNDI equivalente con acceso de lectura a los esquemasPAY_yPER_. - Intervalo de fechas: Se recomienda extraer entre 3 y 6 meses para capturar ciclos completos de nómina. Use los parámetros
:p_start_datey:p_end_datepara controlar dinámicamente la carga. - Grupo de datos legislativos (LDG): De forma predeterminada, la consulta extrae datos de todos los LDG. Si opera en varios países, puede añadir el filtro
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]para separar los datos. - Rendimiento: La consulta accede a tablas de gran volumen (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Asegúrese de que el intervalo de fechas no sea demasiado amplio, por ejemplo, superior a un año, para evitar errores de tiempo de espera en BI Publisher. - Seguridad: El usuario que ejecuta el informe necesita permisos de Data Access Set para las definiciones de nómina correspondientes.
Consulta de ejemplo sql
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME AS LegislativeDataGroup,
org.NAME AS DepartmentName,
peef.LAST_UPDATED_BY AS ProcessingUser,
NULL AS GrossPayAmount,
ptp.PERIOD_NAME AS PayrollPeriodName,
NULL AS SlaProcessingDeadline,
'N' AS IsManualCorrection,
pg.PAYROLL_NAME AS PayGroup,
NULL AS ProcessDurationDays
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Approved' AS ActivityName,
peef.EFFECTIVE_START_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.EFFECTIVE_START_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Incentive Data Imported' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE IN ('B', 'F')
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
CASE
WHEN ppa.ACTION_TYPE = 'R' AND paa.ACTION_STATUS = 'C' THEN 'Payroll Calculation Executed'
WHEN ppa.ACTION_TYPE = 'R' THEN 'Payroll Calculation Started'
WHEN ppa.ACTION_TYPE = 'Q' THEN 'QuickPay Executed'
WHEN ppa.ACTION_TYPE IN ('P', 'U') THEN 'Prepayments Calculated'
WHEN ppa.ACTION_TYPE = 'X' THEN 'Archive Results Generated'
WHEN ppa.ACTION_TYPE = 'M' THEN 'Bank Transfer Generated'
WHEN ppa.ACTION_TYPE IN ('Z', 'E') THEN 'Payment Executed'
WHEN ppa.ACTION_TYPE = 'T' THEN 'Costing Transferred'
ELSE 'Payroll Process Action'
END AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
paa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
ptp.REGULAR_PAYMENT_DATE AS SlaProcessingDeadline,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE IN ('R', 'Q', 'P', 'U', 'X', 'M', 'Z', 'E', 'T')
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Audit Exception Flagged' AS ActivityName,
pml.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
pml.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
pml.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_MESSAGE_LINES pml
JOIN PAY_PAYROLL_ACTIONS ppa ON pml.PAYROLL_ACTION_ID = ppa.PAYROLL_ACTION_ID
LEFT JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE pml.MESSAGE_LEVEL IN ('E', 'W')
AND pml.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Record Corrected' AS ActivityName,
peef.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.LAST_UPDATE_DATE > peef.CREATION_DATE
AND peef.LAST_UPDATE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Run Approved' AS ActivityName,
ppa.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'R'
AND paa.ACTION_STATUS = 'C'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Pay Slip Published' AS ActivityName,
(ppa.CREATION_DATE + 1) AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'X'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Tax Filing Completed' AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'Z'
AND ppa.CREATION_DATE BETWEEN :p_start_date AND :p_end_date ¿Todo listo para comenzar?
Transforme sus operaciones de nómina con este Template de datos para obtener una visión completa de los ciclos. Comience hoy mismo a avanzar hacia una mayor eficiencia y la precisión de los informes.
Optimice hoy el procesamiento de nómina en Oracle HCM
Reduzca un 30 % el tiempo del ciclo de nómina y elimine los cuellos de botella.
No se requiere tarjeta de crédito. Configuración en minutos.