En este módulo, desarrollaremos un sistema de nómina básico utilizando RPG. Este estudio de caso te permitirá aplicar los conceptos aprendidos en los módulos anteriores y te dará una visión práctica de cómo se puede utilizar RPG en un entorno empresarial real.
Objetivos del Estudio de Caso
- Comprender los requisitos de un sistema de nómina.
- Diseñar la estructura de datos necesaria.
- Implementar las funcionalidades básicas del sistema.
- Realizar pruebas y depuración del sistema.
Requisitos del Sistema de Nómina
Antes de comenzar a programar, es importante entender los requisitos del sistema. Un sistema de nómina típico debe:
- Registrar empleados: Almacenar información básica como nombre, identificación, salario, etc.
- Calcular salarios: Basado en horas trabajadas, deducciones, bonificaciones, etc.
- Generar reportes: Producir reportes de nómina para cada período de pago.
- Almacenar históricos: Mantener un registro histórico de los pagos realizados.
Diseño de la Estructura de Datos
Para este sistema, utilizaremos dos archivos principales:
- Archivo de Empleados: Contendrá la información básica de cada empleado.
- Archivo de Nómina: Contendrá los registros de pagos de nómina.
Estructura del Archivo de Empleados
Campo | Tipo | Descripción |
---|---|---|
EMP_ID | CHAR(5) | Identificación del empleado |
EMP_NAME | CHAR(50) | Nombre del empleado |
EMP_SALARY | DEC(7,2) | Salario base del empleado |
Estructura del Archivo de Nómina
Campo | Tipo | Descripción |
---|---|---|
PAY_ID | CHAR(10) | Identificación del pago |
EMP_ID | CHAR(5) | Identificación del empleado |
PAY_DATE | DATE | Fecha del pago |
HOURS_WORKED | DEC(5,2) | Horas trabajadas |
GROSS_PAY | DEC(7,2) | Pago bruto |
DEDUCTIONS | DEC(7,2) | Deducciones |
NET_PAY | DEC(7,2) | Pago neto |
Implementación del Sistema de Nómina
- Registro de Empleados
Primero, crearemos un programa para registrar empleados en el archivo de empleados.
H DFTACTGRP(*NO) ACTGRP('QILE') FEMPLOYEE UF E K DISK D EmployeeDS E DS ExtName(EMPLOYEE) D empId S 5A D empName S 50A D empSalary S 7P 2 C *Entry Plist C Parm empId C Parm empName C Parm empSalary C Eval EmployeeDS.EMP_ID = empId C Eval EmployeeDS.EMP_NAME = empName C Eval EmployeeDS.EMP_SALARY = empSalary C Write EMPLOYEE C Eval *INLR = *ON C Return
- Cálculo de Nómina
A continuación, crearemos un programa para calcular y registrar los pagos de nómina.
H DFTACTGRP(*NO) ACTGRP('QILE') FEMPLOYEE IF E K DISK FPAYROLL UF E K DISK D PayrollDS E DS ExtName(PAYROLL) D EmployeeDS E DS ExtName(EMPLOYEE) D empId S 5A D payId S 10A D payDate S D D hoursWorked S 5P 2 D grossPay S 7P 2 D deductions S 7P 2 D netPay S 7P 2 C *Entry Plist C Parm payId C Parm empId C Parm payDate C Parm hoursWorked C Parm deductions C Chain empId EmployeeDS C If %Found C Eval grossPay = EmployeeDS.EMP_SALARY * hoursWorked C Eval netPay = grossPay - deductions C Eval PayrollDS.PAY_ID = payId C Eval PayrollDS.EMP_ID = empId C Eval PayrollDS.PAY_DATE = payDate C Eval PayrollDS.HOURS_WORKED = hoursWorked C Eval PayrollDS.GROSS_PAY = grossPay C Eval PayrollDS.DEDUCTIONS = deductions C Eval PayrollDS.NET_PAY = netPay C Write PAYROLL C EndIf C Eval *INLR = *ON C Return
- Generación de Reportes
Finalmente, crearemos un programa para generar reportes de nómina.
H DFTACTGRP(*NO) ACTGRP('QILE') FPAYROLL IF E K DISK D payDate S D D payId S 10A D empId S 5A D hoursWorked S 5P 2 D grossPay S 7P 2 D deductions S 7P 2 D netPay S 7P 2 C *Entry Plist C Parm payDate C ReadE PAYROLL C Dow Not %Eof C If PAYROLL.PAY_DATE = payDate C Eval payId = PAYROLL.PAY_ID C Eval empId = PAYROLL.EMP_ID C Eval hoursWorked = PAYROLL.HOURS_WORKED C Eval grossPay = PAYROLL.GROSS_PAY C Eval deductions = PAYROLL.DEDUCTIONS C Eval netPay = PAYROLL.NET_PAY C // Aquí puedes agregar la lógica para imprimir o mostrar el reporte C EndIf C ReadE PAYROLL C EndDo C Eval *INLR = *ON C Return
Pruebas y Depuración
Es fundamental probar cada componente del sistema para asegurarse de que funciona correctamente. Aquí hay algunos pasos para realizar pruebas:
- Registrar varios empleados y verificar que se almacenan correctamente en el archivo de empleados.
- Calcular y registrar pagos de nómina para los empleados registrados y verificar que los cálculos son correctos.
- Generar reportes de nómina para diferentes fechas y verificar que los datos son precisos.
Conclusión
En este estudio de caso, hemos desarrollado un sistema de nómina básico utilizando RPG. Hemos cubierto el registro de empleados, el cálculo de nómina y la generación de reportes. Este ejercicio te proporciona una base sólida para entender cómo se puede utilizar RPG en aplicaciones del mundo real. En el siguiente módulo, aplicaremos estos conocimientos para construir una aplicación más compleja y robusta.
Curso de Programación RPG
Módulo 1: Introducción a la Programación RPG
- ¿Qué es RPG?
- Configuración de tu Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Programa Hola Mundo
Módulo 2: Conceptos Básicos
- Tipos de Datos y Variables
- Operadores y Expresiones
- Estructuras de Control
- Funciones y Procedimientos
Módulo 3: Trabajando con Datos
Módulo 4: Técnicas Avanzadas de Programación
Módulo 5: RPG IV y Más Allá
Módulo 6: Integrando RPG con Tecnologías Modernas
Módulo 7: Aplicaciones del Mundo Real
- Construyendo una Aplicación Simple
- Estudio de Caso: Sistema de Gestión de Inventarios
- Estudio de Caso: Sistema de Nómina
- Mejores Prácticas y Revisión de Código