En este módulo, desarrollaremos un sistema de gestión de inventarios 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 construir una aplicación completa en RPG.
Objetivos del Estudio de Caso
- Comprender los requisitos del sistema de gestión de inventarios.
- Diseñar la estructura de datos necesaria.
- Implementar las funcionalidades básicas del sistema.
- Probar y depurar el sistema.
Requisitos del Sistema
El sistema de gestión de inventarios debe cumplir con los siguientes requisitos:
- Agregar nuevos productos al inventario.
- Actualizar la información de los productos existentes.
- Eliminar productos del inventario.
- Consultar la información de los productos.
- Generar reportes de inventario.
Diseño de la Estructura de Datos
Para este sistema, utilizaremos una tabla de base de datos para almacenar la información de los productos. La estructura de la tabla será la siguiente:
Campo | Tipo de Dato | Descripción |
---|---|---|
ProductID |
CHAR(10) | Identificador único del producto |
ProductName |
CHAR(50) | Nombre del producto |
Quantity |
INT | Cantidad en inventario |
Price |
DECIMAL(10,2) | Precio del producto |
Implementación del Sistema
- Crear la Tabla de Productos
Primero, crearemos la tabla de productos en la base de datos.
CREATE TABLE Products ( ProductID CHAR(10) PRIMARY KEY, ProductName CHAR(50), Quantity INT, Price DECIMAL(10,2) );
- Programa para Agregar Productos
A continuación, implementaremos un programa en RPG para agregar nuevos productos al inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW) D ProductID S 10A D ProductName S 50A D Quantity S 10I 0 D Price S 10P 2 /FREE // Solicitar datos del producto dsply 'Ingrese el ID del producto: ' '' ProductID; dsply 'Ingrese el nombre del producto: ' '' ProductName; dsply 'Ingrese la cantidad: ' '' Quantity; dsply 'Ingrese el precio: ' '' Price; // Insertar datos en la tabla exec sql INSERT INTO Products (ProductID, ProductName, Quantity, Price) VALUES (:ProductID, :ProductName, :Quantity, :Price); if sqlcod = 0; dsply 'Producto agregado exitosamente.'; else; dsply 'Error al agregar el producto.'; endif; *inlr = *on; /END-FREE
- Programa para Actualizar Productos
Implementaremos un programa para actualizar la información de los productos existentes.
H DFTACTGRP(*NO) ACTGRP(*NEW) D ProductID S 10A D ProductName S 50A D Quantity S 10I 0 D Price S 10P 2 /FREE // Solicitar ID del producto a actualizar dsply 'Ingrese el ID del producto a actualizar: ' '' ProductID; // Solicitar nuevos datos del producto dsply 'Ingrese el nuevo nombre del producto: ' '' ProductName; dsply 'Ingrese la nueva cantidad: ' '' Quantity; dsply 'Ingrese el nuevo precio: ' '' Price; // Actualizar datos en la tabla exec sql UPDATE Products SET ProductName = :ProductName, Quantity = :Quantity, Price = :Price WHERE ProductID = :ProductID; if sqlcod = 0; dsply 'Producto actualizado exitosamente.'; else; dsply 'Error al actualizar el producto.'; endif; *inlr = *on; /END-FREE
- Programa para Eliminar Productos
Implementaremos un programa para eliminar productos del inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW) D ProductID S 10A /FREE // Solicitar ID del producto a eliminar dsply 'Ingrese el ID del producto a eliminar: ' '' ProductID; // Eliminar producto de la tabla exec sql DELETE FROM Products WHERE ProductID = :ProductID; if sqlcod = 0; dsply 'Producto eliminado exitosamente.'; else; dsply 'Error al eliminar el producto.'; endif; *inlr = *on; /END-FREE
- Programa para Consultar Productos
Implementaremos un programa para consultar la información de los productos.
H DFTACTGRP(*NO) ACTGRP(*NEW) D ProductID S 10A D ProductName S 50A D Quantity S 10I 0 D Price S 10P 2 /FREE // Solicitar ID del producto a consultar dsply 'Ingrese el ID del producto a consultar: ' '' ProductID; // Consultar datos del producto exec sql SELECT ProductName, Quantity, Price INTO :ProductName, :Quantity, :Price FROM Products WHERE ProductID = :ProductID; if sqlcod = 0; dsply 'Nombre del producto: ' ProductName; dsply 'Cantidad: ' Quantity; dsply 'Precio: ' Price; else; dsply 'Producto no encontrado.'; endif; *inlr = *on; /END-FREE
- Generar Reportes de Inventario
Implementaremos un programa para generar reportes de inventario.
H DFTACTGRP(*NO) ACTGRP(*NEW) D ProductID S 10A D ProductName S 50A D Quantity S 10I 0 D Price S 10P 2 /FREE // Consultar todos los productos exec sql DECLARE C1 CURSOR FOR SELECT ProductID, ProductName, Quantity, Price FROM Products; exec sql OPEN C1; exec sql FETCH NEXT FROM C1 INTO :ProductID, :ProductName, :Quantity, :Price; dow sqlcod = 0; dsply 'ID: ' ProductID; dsply 'Nombre: ' ProductName; dsply 'Cantidad: ' Quantity; dsply 'Precio: ' Price; exec sql FETCH NEXT FROM C1 INTO :ProductID, :ProductName, :Quantity, :Price; enddo; exec sql CLOSE C1; *inlr = *on; /END-FREE
Pruebas y Depuración
Es importante probar cada funcionalidad del sistema para asegurarse de que todo funciona correctamente. Aquí hay algunos pasos para realizar pruebas:
- Agregar varios productos al inventario y verificar que se agreguen correctamente.
- Actualizar la información de algunos productos y verificar que los cambios se reflejen en la base de datos.
- Eliminar algunos productos y verificar que se eliminen correctamente.
- Consultar la información de varios productos y verificar que los datos sean correctos.
- Generar un reporte de inventario y verificar que incluya todos los productos con la información correcta.
Conclusión
En este estudio de caso, hemos desarrollado un sistema de gestión de inventarios utilizando RPG. Hemos cubierto la creación de la estructura de datos, la implementación de las funcionalidades básicas y la generación de reportes. Este ejercicio te ha permitido aplicar los conceptos aprendidos en los módulos anteriores y te ha dado una visión práctica de cómo construir una aplicación completa en RPG.
En el próximo módulo, exploraremos cómo integrar RPG con tecnologías modernas, como servicios web y APIs.
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