Descripción: Trabajo de grado HERRAMIENTA INFORMÁTICA EN HOJA ELECTRÓNICA PARA LA PLANEACIÓN A CORTO PLAZO DE LA PRODU...
PLANEACIÓN JERÁRQUICA DE LA PRODUCCIÓN – CORTO PLAZO
HIERARCHICAL PRODUCTION PLANNING – SCHEDULING
“ HPP – S ”
HERRAMIENTA INFORMÁTICA EN HOJA ELECTRÓNICA PARA LA PLANEACIÓN A CORTO PLAZO DE LA PRODUCCIÓN EN AMBIENTES DE PLANIFICACIÓN JERÁRQUICA, PARA PYMES CON SISTEMA DE PRODUCCIÓN POR LOTES O SERIES CORTAS. “ HPP – S ”
JESÚS EDUARDO SCARPETTA A. ELIANA CÚELLAR BERNAL
UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERÍAS ESCUELA DE INGENIERÍA INDUSTRIAL Y ESTADÍSTICA SANTIAGO DE CALI Agosto de 2002
HERRAMIENTA INFORMÁTICA EN HOJA ELECTRÓNICA PARA LA PLANEACIÓN A CORTO PLAZO DE LA PRODUCCIÓN EN AMBIENTES DE PLANIFICACIÓN JERÁRQUICA, PARA PYMES CON SISTEMA DE PRODUCCIÓN POR LOTES O SERIES CORTAS. “ HPP – S ”
JESÚS EDUARDO SCARPETTA A. ELIANA CÚELLAR BERNAL
Proyecto de Grado para optar por el título de Ingeniero Industrial Director
GERARDO MOTOA G. Ph. D.
UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERÍAS ESCUELA DE INGENIERÍA INDUSTRIAL Y ESTADÍSTICA SANTIAGO DE CALI Agosto de 2002 iii
UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERÍAS ESCUELA DE INGENIERÍA INDUSTRIAL Y ESTADÍSTICA
Programa academico INGENIERÍA INDUSTRIAL
Autores JESÚS EDUARDO SCARPETTA A. ELIANA CÚELLAR BERNAL
Titulo HERRAMIENTA INFORMÁTICA EN HOJA ELECTRÓNICA PARA LA PLANEACIÓN A CORTO PLAZO DE LA PRODUCCIÓN EN AMBIENTES DE PLANIFICACIÓN JERÁRQUICA, PARA PYMES CON SISTEMA DE PRODUCCIÓN POR LOTES O SERIES CORTAS.
Temas Planeación jerárquica de la producción, Planeación a corto plazo, Programación enfocada a la carga, Programación (n/1), Reglas de prioridad, Máquinas paralelas, Programación en máquinas paralelas, Programación (n/2), Programación (n/m), Visual Basic, Procedimiento de evento (event procedure), Excel, Access, Modelo entidad – relación.
iv
Nota de aceptación
Presidente del Jurado
Jurado
Jurado
Ciudad y fecha (día, mes, año)
v
Agradezco a: Jesús María Scarpetta y María Oliva Arias mis padres. Jorge Enrique Scarpetta y Clara Inés Scarpetta mis hermanos. Y a María del Mar Duque Bastidas la mujer que Amo. A todos ellos por su apoyo, motivación y herramientas brindadas. Jesús Eduardo Scarpetta.
A Dios por ser él todo para mí vida A la memoria de mí padre, Elías Cúellar López, que aún está a mi lado. A mi madre, Araminta Bernal Forero, por su amor maternal. A
mis
hermanos:
Giovanny,Katherine,
Vladimir y Jennifer, por su apoyo continuo. Y a Jhon Cuadros por ser el amor de mi vida, que me ha motivado a seguir adelante. Eliana Cúellar Bernal.
vi
AGRADECIMIENTOS.
Los autores expresan sus agradecimientos a:
•
Ingeniero Gerardo Motoa G. Ph. D. Director del presente proyecto, por su comprensiva y valiosa colaboración en el desarrollo del mismo y durante el transcurso de la formación académica.
•
María del Mar Duque en la revisión del documento y la aplicación informática diseñada, por sus sugerencias, aportes y comentarios.
•
A todas aquellas personas que de una u otra manera nos colaboraron en la formación universitaria, para hacernos profesionales y personas íntegras.
vii
TABLA DE CONTENIDO Pág. INTRODUCCIÓN ................................................................................................................ 1 1. PRELIMINARES ........................................................................................................... 3 1.1
OBJETIVOS........................................................................................................... 3
1.2
HIPÓTESIS DEL TRABAJO ................................................................................ 4
1.3
JUSTIFICACIÓN................................................................................................... 5
2. MARCO DEL PROYECTO .......................................................................................... 8 2.1
MARCO DE REFERENCIA.................................................................................. 8
2.2
MARCO CONCEPTUAL. ................................................................................... 11
2.2.1
Planeación jerárquica de la producción............................................................ 13
2.2.2
Planeación a corto plazo................................................................................... 18
2.2.3
Programación enfocada a la carga.................................................................... 26
2.2.4
Modelos de programación. ............................................................................... 32
2.3
PLANTEAMIENTO DEL PROBLEMA............................................................. 47
3. LÓGICA DE DISEÑO ................................................................................................. 49 3.1
PLATAFORMA DE DESARROLLO. ................................................................ 49
3.1.1
Visual Basic...................................................................................................... 51
3.1.2
Hojas de cálculo. .............................................................................................. 55
3.1.3
Bases de datos................................................................................................... 57
3.2
ESTRUCTURA DE LA APLICACIÓN .............................................................. 67
3.2.1
Modelos de datos.............................................................................................. 67
3.2.2
Tablas. .............................................................................................................. 76
3.2.3
Modelo entidad – relación en la aplicación...................................................... 82
3.3
ELEMENTOS OPERACIONALES..................................................................... 88
3.3.1
Aproximación al Job-Shop ............................................................................... 88
3.3.2
Sistema operacional.......................................................................................... 90
viii
4. LÓGICA DE LA APLICACIÓN ................................................................................ 95 4.1
CONCEPTOS TEÓRICOS DE LA APLICACIÓN ............................................ 95
4.2
APLICACIÓN ‘HPP-S’ ..................................................................................... 111
4.2.1
Preparación pedido. ........................................................................................ 113
4.2.2
Scheduling. ..................................................................................................... 128
4.2.3
Control............................................................................................................ 143
4.3
INFORMACIÓN ADICIONAL PARA EL USUARIO. ................................... 149
CONCLUSIONES ............................................................................................................ 152 ANEXOS ........................................................................................................................... 156 ANEXO A. MANUAL DEL USUARIO ..................................................................... 156 Instrucciones de manejo rápido ................................................................................... 156 Datos ejemplo general.................................................................................................. 157 Ingreso de datos ejemplos particulares ........................................................................ 159 ANEXO B. CODIGOS................................................................................................. 163 Formularios en Access................................................................................................. 163 Modulo exportar a Excel.............................................................................................. 200 Modulo funciones de utilidad ...................................................................................... 207 Archivos Excel............................................................................................................. 208
ix
TABLA DE FIGURAS Pág. Figura 2-1.
Sistema de Fabricación................................................................................. 12
Figura 2-2.
Sistema de Planeación Jerárquico................................................................. 15
Figura 2-3.
Configuración continua. ............................................................................... 20
Figura 2-4.
Configuración por lotes enfocada al producto – flow shop.......................... 22
Figura 2-5.
Configuración por lotes enfocada al proceso – Job Shop............................. 23
Figura 2-6.
Configuración productiva de bienes. ............................................................ 23
Figura 2-7.
Sistema de planeación y programación de operaciones en el corto plazo.... 24
Figura 2-8.
Carga vertical................................................................................................ 29
Figura 2-9.
Carga horizontal ........................................................................................... 30
Figura 2-10.
Caso n/1 ........................................................................................................ 32
Figura 2-11.
Caso n/1 continuo. ........................................................................................ 38
Figura 2-12.
Máquinas paralelas ....................................................................................... 39
Figura 2-13.
Máquinas paralelas – continuo ..................................................................... 40
Figura 2-14.
Caso n/2 ........................................................................................................ 43
Figura 2-15.
Caso n/m ....................................................................................................... 44
Figura 3-1.
Propiedades del objeto Botón de comando................................................... 54
Figura 3-2.
Tablas relacionadas ...................................................................................... 59
Figura 3-3.
Partes tabla.................................................................................................... 60
Figura 3-4.
Botones de desplazamiento entre registros................................................... 63
Figura 3-5.
Detalle subformularios ................................................................................. 65
Figura 3-6.
Nivel 0. Planeación de la producción. .......................................................... 70
Figura 3-7.
Nivel 1. Sistema de Planeación Jerárquico................................................... 71
Figura 3-8.
Nivel 2. Planeación a corto plazo. ................................................................ 72
Figura 3-9.
Nivel 3. Planeación a Corto Plazo - Preparación Pedido. ............................ 73
Figura 3-10.
Nivel 3. Planeación a Corto Plazo - Scheduling........................................... 74 x
Figura 3-11.
Nivel 3. Planeación a Corto Plazo - Control. ............................................... 75
Figura 3-12.
Relaciones producto ..................................................................................... 83
Figura 3-13.
Relaciones pedidos ....................................................................................... 83
Figura 3-14.
Relaciones control ........................................................................................ 84
Figura 3-15.
Datos ruta P1 ................................................................................................ 85
Figura 3-16.
Relaciones tiempo de suministro.................................................................. 85
Figura 3-17.
Datos centros de trabajo ............................................................................... 86
Figura 3-18.
Cálculo tiempo de suministro....................................................................... 86
Figura 3-19.
Carga por operación y duración.................................................................... 88
Figura 3-20.
Barra de Menú de la Aplicación ................................................................... 91
Figura 3-21.
Barra de Herramientas de la Aplicación....................................................... 91
Figura 3-22.
Barra de Menú- Archivo y Edición. ............................................................. 92
Figura 3-23.
Barra de Menú- Registros, Información y General. ..................................... 92
Figura 3-24.
Barra de Menú- Preparación Pedido............................................................. 93
Figura 3-25.
Barra de Menú- Scheduling.......................................................................... 93
Figura 3-26.
Barra de Menú- Ventana y ?......................................................................... 94
Figura 4-1.
Formularios en la aplicación. ....................................................................... 96
Figura 4-2.
Diagrama de ensamblado para el producto ‘Silla’........................................ 97
Figura 4-3.
Árbol Estructura del producto ‘Silla’. .......................................................... 99
Figura 4-4.
Incidencia de los factores en la obtención de una unidad........................... 104
Figura 4-5.
Árbol de Rutas para del producto ‘Silla’. ................................................... 106
Figura 4-6.
Detalle relaciones entre paneles de control. ............................................... 112
Figura 4-7.
Panel principal ............................................................................................ 113
Figura 4-8.
Panel preparación pedido............................................................................ 113
Figura 4-9.
Formulario clientes..................................................................................... 114
Figura 4-10.
Panel datos producto................................................................................... 115
Figura 4-11.
Formulario productos ................................................................................. 115
Figura 4-12.
Formulario partes/componentes ................................................................. 116
Figura 4-13.
Formulario estructura producto. ................................................................. 117
Figura 4-14.
Panel datos ruta........................................................................................... 118 xi
Figura 4-15.
Formulario centros de trabajo..................................................................... 118
Figura 4-16.
Formulario detalle centros de trabajo. ........................................................ 119
Figura 4-17.
Formulario máquinas paralelas CT............................................................. 120
Figura 4-18.
Formulario hoja de ruta. ............................................................................. 121
Figura 4-19.
Formulario rutas producto. ......................................................................... 122
Figura 4-20.
Formulario pedidos..................................................................................... 123
Figura 4-21.
Formulario cantidad requerida. .................................................................. 124
Figura 4-22.
Formulario tiempo de entrega..................................................................... 125
Figura 4-23.
Habilitar macros. ........................................................................................ 126
Figura 4-24.
Programación detallada en Excel. .............................................................. 127
Figura 4-25.
Programación detallada – detalle inicio y fin operaciones. ........................ 127
Figura 4-26.
Panel scheduling......................................................................................... 128
Figura 4-27.
Panel Asignación. ....................................................................................... 129
Figura 4-28.
Formulario carga pedidos. .......................................................................... 130
Figura 4-29.
Formulario carga operaciones. ................................................................... 131
Figura 4-30.
Formulario control pedidos. ....................................................................... 132
Figura 4-31.
Formulario cargas operaciones iniciadas.................................................... 134
Figura 4-32.
Panel secuenciación.................................................................................... 135
Figura 4-33.
Formulario reglas de prioridad. .................................................................. 135
Figura 4-34.
Reglas de prioridad en Excel. ..................................................................... 136
Figura 4-35.
Formulario pedidos pendientes a la fecha. ................................................. 138
Figura 4-36.
Formulario método húngaro. ...................................................................... 139
Figura 4-37.
Método húngaro en Excel – hoja de cálculo asignar. ................................. 140
Figura 4-38.
Método húngaro en Excel – hoja de cálculo Hoja1.................................... 141
Figura 4-39.
Formulario regla de Johnson. ..................................................................... 141
Figura 4-40.
Johnson en Excel ........................................................................................ 142
Figura 4-41.
Panel control. .............................................................................................. 143
Figura 4-42.
Formulario producción planeada................................................................ 144
Figura 4-43.
Carga finita en Excel – hoja de cálculo ‘cg_finita’. ................................... 145
Figura 4-44.
Carga finita en Excel – hoja de cálculo ‘Hoja2’......................................... 146 xii
Figura 4-45.
Formulario producción real. ....................................................................... 146
Figura 4-46.
Formulario control input-output. ................................................................ 147
Figura 4-47.
Control in-out en Excel. ............................................................................. 148
Figura 4-48.
Formulario acerca de. ................................................................................. 149
Figura A-1.
Dirección para descomprimir Aplicación HPP-S.exe ................................ 158
Figura A-2.
Instalación terminada.................................................................................. 158
Figura A-3.
Árbol de Estructura del producto ‘P1’........................................................ 160
Figura A-4.
Operaciones ruta ‘P1’. ................................................................................ 161
Figura A-5.
Árbol de rutas del producto ‘P1’. ............................................................... 162
xiii
LISTADO DE CÓDIGOS Pág. Formularios en Access. .................................................................................................... 163 Formulario acerca de ...................................................................................................... 163 Formulario asignación .................................................................................................... 163 Formulario cargas_operaciones_iniciadas...................................................................... 164 Formulario centro de trabajo .......................................................................................... 165 Formulario clientes ......................................................................................................... 167 Formulario componentes producto................................................................................. 167 Formulario componentes subformulario ........................................................................ 167 Formulario componentes1 subformulario ...................................................................... 169 Formulario componentes2 subformulario ...................................................................... 171 Formulario control input output ..................................................................................... 172 Formulario control operaciones...................................................................................... 173 Formulario control pedidos ............................................................................................ 174 Formulario control producción....................................................................................... 175 Formulario control detalle pedidos iniciados ................................................................. 176 Formulario control operaciones...................................................................................... 177 Formulario control operaciones iniciadas....................................................................... 177 Formulario control pedidos iniciados ............................................................................. 177 Formulario control ruta................................................................................................... 178 Formulario ct .................................................................................................................. 179 Formulario entrega ......................................................................................................... 179 Formulario in out planificado ......................................................................................... 179 Formulario inicio ............................................................................................................ 180 Formulario johnson......................................................................................................... 181 Formulario lista materiales ............................................................................................. 181 xiv
Formulario lista rutas...................................................................................................... 182 Formulario máquinas...................................................................................................... 183 Formulario máquinas ct .................................................................................................. 184 Formulario operaciones ruta........................................................................................... 184 Formulario pedidos......................................................................................................... 186 Formulario pedidos pendientes....................................................................................... 187 Formulario pendientes a la fecha.................................................................................... 187 Formulario producción planeada .................................................................................... 188 Formulario producción real ............................................................................................ 189 Formulario rcomponentes subformulario ....................................................................... 189 Formulario rcomponentes1 subformulario ..................................................................... 191 Formulario rcomponentes2 subformulario ..................................................................... 192 Formulario regla de Johnson .......................................................................................... 193 Formulario reglas prioridad ............................................................................................ 194 Formulario rproductos .................................................................................................... 194 Formulario rutas iniciadas .............................................................................................. 196 Subformulario control detalle pedido ............................................................................. 196 Subformulario control pedidos ....................................................................................... 197 Formulario switchboard.................................................................................................. 197 Formulario tipo ............................................................................................................... 200 Formulario unidades ....................................................................................................... 200 Modulo exportar a Excel.................................................................................................. 200 Function Exportar_Prioridades() .................................................................................... 200 Function Exportar_In_Out() ........................................................................................... 202 Function Exportar_Johnson() ......................................................................................... 203 Function Exportar_Asignación() .................................................................................... 204 Function Exportar_Programa_Detallado() ..................................................................... 205 Function Exportar_FINITA() ......................................................................................... 206 Modulo funciones de utilidad .......................................................................................... 207 Function estácargado(ByVal txtNombreFormulario As String) As Boolean................. 207 xv
Function Verventanabasededatos()................................................................................. 207 Function salir() ............................................................................................................... 207 Function cerrar() ............................................................................................................. 208 Archivos Excel .................................................................................................................. 208 Prioridades.Xls ............................................................................................................... 208 Asignación.Xls ............................................................................................................... 208 Johnson.Xls..................................................................................................................... 216 Detallada.Xls .................................................................................................................. 222 Carga_Finita.Xls............................................................................................................. 224 In-out.Xls........................................................................................................................ 227
xvi
INTRODUCCIÓN
El presente proyecto está direccionado a diversificar herramientas para aumentar la productividad en empresas, específicamente en PYMES, las cuales van abarcando más y más los campos económicos de productividad en nuestra región, permitiendo el movimiento de la economía nacional.
Es preciso que los nuevos avances tecnológicos en el campo de la sistematización no se restrinjan a grandes empresas, como hasta el momento viene ocurriendo, ya que por los altos costos del software especializado, las pequeñas empresas no cuentan con herramientas más prácticas para controlar de manera mas acertada su productividad.
Nuestro propósito se enfoca en crear una herramienta funcional y económica que permita una mejor programación del sistema propio de una PYME en cuanto a controles de productividad se refiere, esto es, teniendo en cuenta que la productividad es un factor que depende mucho de: los tiempos de planeación, de toma de decisiones, de aprovechamiento de mano de obra y maquinaria, fecha de entrega de pedidos, cumplimiento de contratos, etc., y es en este sentido en el cual contar con herramientas de sistematización como la que hemos diseñado, se orienta a mejorar el aprovechamiento del tiempo, y a realizar una
1
programación más precisa ejerciendo el control adecuado para una adecuada utilización de los recursos.
Fundamentamos la realización de este proyecto en el desarrollo de una aplicación dirigida a manejar de forma integral la planeación de la producción en el corto plazo en PYMES del sector de manufactura con el propósito de facilitar la toma de decisiones en tiempo real bajo el sistema de planeación jerárquica.
Hemos estructurado el proyecto en capítulos que permiten dar mayor claridad a cada una de las partes que forma la aplicación “HPP-S” desarrollada. En ellos abarcamos los preliminares del proyecto, sus objetivos, justificación y enmarcamos los temas propios de la planeación a corto plazo, mencionando los elementos informaticos usados en la lógica de la aplicación; describimos la razón teórico-práctica de la herramienta creada y de forma detallada el funcionamiento, su estructura, finalidad y manejo.
2
1. PRELIMINARES
1
1.1
CAPÍTULO 1. ANTEPROYECTO.
OBJETIVOS
General. Diseñar una herramienta informática en hoja electrónica que permita realizar la planeación a corto plazo en PYMES con fabricación por lotes o series cortas, en sistemas de planificación jerárquicos.
Específicos. •
Proporcionar un programa informático con el cual se puedan hacer pruebas de sensibilidad sobre la actividad de producción, para determinar su incidencia en la programación normal.
•
Diseñar una herramienta sencilla, fácil de entender, flexible y dinámica para la realización de la programación permitiendo la optimización de los recursos utilizados con miras a cumplir las necesidades de producción.
•
Realizar un programa robusto que permita evaluar para determinadas condiciones de trabajo diferentes opciones en su programación, ofreciendo así información rápida para la toma de decisiones.
•
Reunir información precisa y controlada sobre aspectos que comprometen la fabricación por lotes o series cortas y usar ésta información bajo criterios de 3
rendimiento y aprovechamiento de los recursos limitados en empresas de manufactura para hacer más efectiva la terminación de los pedidos en las fechas ofrecidas al cliente. •
Crear un programa que permita el control de la información generada en la ejecución de las operaciones para conocer el estado de los centros de trabajo, su eficiencia y utilización.
•
Diseñar un sistema o interfaz de control de las órdenes de producción que permita tener actualizado por operación, y periodo de tiempo, la realización de las diferentes órdenes de producción.
1.2
HIPÓTESIS DEL TRABAJO
Las PYMES manufactureras requieren de una herramienta informática de planeación a bajo costo y flexible que integre su sistema productivo permitiéndoles ser más competitivas. El poco seguimiento que se hace a las órdenes durante el proceso de manufactura limita a las PYMES para dar una rápida reacción a los cambios eventuales en las demandas, por la escasa información que se tiene al momento de la toma de decisiones.
Sistematizar la planeación de la producción ofrece a las PYMES entrar a competir con tiempos de entrega seguros, satisfacción alta de las necesidades de los clientes, conocimiento interno de las capacidades y nivel de flexibilidad de sus instalaciones.
4
1.3
JUSTIFICACIÓN
La importancia que ha tenido para el mundo empresarial el conocimiento adecuado en el tratamiento de la función de las operaciones, ha permitido que diversos autores enfoquen sus investigaciones hacia esta disciplina, brindando métodos e instrumentos para la planeación de la producción bajo una serie de condiciones básicas con el objetivo de optimizar el uso de recursos en la satisfacción de las necesidades de los clientes.
En la actualidad existen gran variedad de modelos y programas para dar mejores soluciones al problema de la toma de decisiones en la planeación de la producción; por tanto pretendemos adecuar estos modelos y programas existentes a una aplicación informática que funcione de manera fácil, dinámica y precisa sobre hojas de calculo apoyadas en una base de datos, para ser implementada en una pequeña o mediana empresa a fin de aumentar su rendimiento partiendo del principio de que entre mayor información se maneje de los procesos a realizar es mayor la oportunidad de optimizarlos.
Dentro del sistema manufacturero nos centramos particularmente en las PYMES. Para el año 2000 es considerada pequeña y mediana empresa la unidad económica cuyo nivel de activos fiscales a diciembre de 1999 estuviera entre $135 millones y $3335 millones y que ocupen entre 11 y 199 empleados según la ley 78 de 1998,1 por ser éstas las que
1
¿Qué es una Pyme?. http://www.ifi.gov.co/htm/crpymeque.htm
5
contribuyen a dinamizar la economía (generación del empleo 15%)2, además representan el 15.75% del total de empresas registradas en la Cámara de Comercio de Cali en 1998.
Dentro de éstas seleccionamos las de sistema productivo por lotes o series cortas que representan los mejores beneficios potenciales al aplicar modelos de producción integrada que por su volumen y variedad mediana requieren de gran flexibilidad.
Como las hojas electrónicas han aumentado su popularidad por su sencilla implementación3 la herramienta informática se realizará con una base de datos vinculada a hojas electrónicas por la gran facilidad de aplicación práctica y adaptabilidad a los escenarios del mercado, generando información de apoyo en la toma de decisiones y mejor utilización de los recursos productivos.
Los costos de implementación en hoja electrónica son bajos comparados con las inversiones en software para la planificación de la producción, tales como: el programa computacional (MAX) que tiene un costo promedio de US$ 9.500 para un fabricante pequeño o mediano con todos los módulos de manufactura y contabilidad, pero los requisitos específicos pueden modificar los costos desde US$ 550 hasta US$ 33.200 para
2
Registro mercantil. Cámara de comerció de Cali, Separata (Jun. 1999)
3
SIPPER, Daniel y BUFFIN, L. Robert. Planeación y control de la producción. Mexico : Mc Graw Hill, 1998. p. 91, 189, 215.
6
un paquete multiusuario4, o el sistema de SAP R/3, que es una solución ERP (Planeador de Recursos Empresariales) cuya inversión puede representar entre 2 y 10 millones de dólares.5
Acorde con los objetivos de la producción se busca dar una herramienta al programador de la producción para la solución de situaciones no determinísticas que alteran la realización o modifican la secuenciación de las órdenes de producción en la planta. Con esto, el programador podrá analizar varias alternativas de programación en poco tiempo para ver su impacto sobre la forma de producción y el logro de las fechas previamente determinadas y comprometidas con los clientes, permitiéndole a la empresa ser más competitiva.
4
CHASE, Richard B. y AQUILANO, Nicolas J. Dirección y administración de la producción y de las operaciones. 6 ed. Mexico : Mc Graw Hill, 1995, p. 725
5
La revolución de los ERP. En : Dinero. No. 90 (Ago 13 1999), p. 90
7
2. MARCO DEL PROYECTO
CAPÍTULO 2. MARCO DEL PROYECTO.
2
2.1
MARCO DE REFERENCIA.
En el mercado podemos encontrar varios programas para la planeación a corto plazo en las empresas, los cuales ofrecen cada uno una estructura y forma de trabajo diferente. Software como: ERP/MRP Systems6, Obvious Professional Services7, pc/MRP8, Solid State Software, Inc. Software for Manufacturing (ERP/MRP) Planning and Control9 y Merlin MRP Software10, entre otros. Programas en su mayoría en otro idioma cuya complejidad podría limitar al programador para obtener una máxima utilización.
Sin duda, uno de los aspectos más trascendentales para la mayoría de las empresas manufactureras, por su repercusión en los costos de producción y los plazos de fabricación, es la gestión de materiales y en especial la programación y control de las actividades de
6
ERP/MRP Systems. http://cmit.edi.gatech.edu/cmit/ERPMRP.htm
7
Obvious MRP for Windows. http://www.obviousmrp.com/
8
Pc/MRP the complete Windows MRP Accounting and Inventory Control Software Package with ISO9000 report. http://www.midwesterngallery.com/pcmrp/index.htm
9
Solid State Software : Software for MRP/ERP, Accounting and Distribution. http://www.sssoft.com/
10
Merlin MRP Manufacturing Software. http://www.merlinsys.co.uk/
8
producción, pues están en juego el nivel de confianza que tengan los clientes con respecto a las fechas ofrecidas, la capacidad de producción y la calidad de los productos elaborados.
Existen paquetes para programación de la producción en abundancia. Esos paquetes van desde software para computadora de dominio público hasta aplicaciones hechas a la medida que cuestan millones de dólares. Debe tenerse cuidado al comprar un paquete, ya que las utilidades varían mucho.
Algunos paquetes de software proporcionan al usuario la posibilidad de cambiar o ajustar los programas. Los más elaborados permiten “tomar e insertar” operaciones en la misma gráfica de Gantt; éstos requieren interfaces de usuario (gráficas) complejas. Los paquetes menos costosos permiten hacer cambios en los tiempos de inicio y terminación de los trabajos. De la mano con la evaluación del programa, los ajustes permiten al usuario hacer un análisis sencillo de “que pasa sí”.
Los paquetes más avanzados generan los programas de producción, pero muchos de ellos no son muy buenos. El paquete puede generar un solo programa, varios programas o el mejor de un “subconjunto” de programas. Las reglas de despacho simples, como “FIFO” pueden producir un programa. Al usar varias reglas de despacho se pueden generar varios programas; después el usuario elige uno o el paquete solo le muestra el “mejor”. Se pueden usar heurísticos más avanzados para generar un programa. Como la programación es difícil, el enfoque debe hacerse a la medida del problema que se tiene; un enfoque complejo equivocado puede ser peor que las reglas de despacho sencillas. 9
Para sistemas de producción complicados (como una planta grande de producción intermitente), puede ser necesaria una simulación del programa. Al someter a prueba el programa con simulación se pueden examinar muchos factores no considerados en las decisiones de programación. Los paquetes que simulan la planta son costosos, por lo general, superan los 30.000 dólares.11
También existen paquetes “educativos” de programación. Morton y Pentico (1993) ofrecen el software, Parsifal con su libro; Parsifal resuelve la mayor parte de los modelos de programación; puede usar varios heurísticos para modelos de una sola máquina, máquinas paralelas, producción continua y producción intermitente. Dispone de varios algoritmos generales, incluyendo simulación de recosido. Su desempeño es bastante bueno para muchos problemas pequeños, y es posible que pueda incorporarse a un sistema de programación. QS: Quantitative Systems (Chang - 1995) es un software general que realiza programación de producción continua e intermitente. Se pueden usar muchos de los heurísticos para producción continua y la mayoría de las reglas de despacho se encuentran disponibles.
11
SIPPER y BUFFIN, Op cit., p. 467-469
10
2.2
MARCO CONCEPTUAL.
Los modelos referentes a la planeación de la producción que se desarrollarán dentro de este proyecto de estudio se aplicarán en hoja electrónica tomando la información desde una base de datos, dado que permiten cambiar muchas variables y crear diferentes combinaciones para determinar los efectos de situaciones particulares.
Con anterioridad se ha venido aplicando la simulación de la planeación en hoja electrónica. Los precursores del enfoque de hoja de cálculo son los métodos tabulares y gráficos que aparecieron en la literatura alrededor de 1960. Estos han sido utilizados en la industria durante varios años y cada vez más toman mayor importancia gracias al desarrollo de los computadores personales y a la adaptabilidad de la hoja electrónica al medio dinámico.12
En la planeación de la producción se deben crear alternativas que resuelvan el problema de nivelar la producción con las demandas fluctuantes. Las alternativas se pueden desarrollar en hoja electrónica de manera sencilla y con fácil implementación13, de tal modo que se puede o no obtener la solución óptima, pero si se puede proporcionar soluciones flexibles para ser usadas14.
12
HEIZER, Jay y RENDER Arry. Dirección de la producción. Madrid : Mc Graw Hill, 1997. p. 144-145
13
NOORI, Hamid y RADFORD Rusell. Administración de operaciones y producción. Santafé de Bogotá : Mc Graw Hill, 1997. p. 43, 267, 457
14
SIPPER, y BUFFIN. Op cit p. 180-181
11
El proyecto parte de conceptualizar los sistemas de fabricación y entre ellos, en especial, los de producción por lotes y series cortas. Esto significa revisar conceptos tales como gerencia de operaciones, sistemas de organización de la producción, etc. Además de estudiar herramientas para el análisis y diseño de sistemas en ambientes de fabricación, las cuales se usan para implementar una aplicación informática para la planeación de la producción en ambientes MRP.
La manufactura de productos en el mundo industrial moderno requiere de un esfuerzo coordinado y combinado de gente, máquinas y equipos. Así, un sistema de fabricación puede ser definido como una combinación de mano de obra, maquinaria y equipos, comprometidos en un flujo común de materiales e información.
Figura 2-1.
Sistema de Fabricación.
Las entradas son la materia prima y la energía. La información es también una entrada al sistema y lo hace en forma de demanda de los clientes por los productos de dicho sistema. Las salidas podrían dividirse en materiales como bienes terminados, desperdicios, e información, es decir medidas de rendimiento del sistema. (Ver Figura 2-1)
12
En general, el estudio de los sistemas de fabricación puede ser conceptualizado como la transformación de los requerimientos de rendimiento (performance) de un sistema de fabricación, expresados por valores de ciertas medidas de desempeño, en valores apropiados de variables de decisión, que describan el diseño físico o la manera de operar del sistema.15
Aunque hay conceptos de uso generalizado en el ambiente de la planeación de la producción para las empresas de manufactura, no ocurre lo mismo con los nombres a los cuales se asocian esos conceptos, presentándose así falta de homogeneidad en los términos usados por los diferentes autores al momento de desarrollar cada uno sus temas. Para hacer claridad en los conceptos y términos que serán manejados en la realización de este proyecto se presentan a continuación los términos haciendo referencia al concepto que se le asocia, así como a los otros nombres más conocidos con los cuales es manejado.
2.2.1
Planeación jerárquica de la producción
Como la planeación de la producción en las empresas manufactureras, se ha enmarcado dentro de una estructura de largo, mediano y corto plazo. Harlan Meal utiliza el termino planeación jerárquica de la producción (Hierarchical Production Planning - HPP) para ajustar la estructura de planeación a la organización.16 Este sistema jerárquico de la
15
MOTOA, T. Gerardo. Algunos apuntes sobre el uso de la simulación en el diseño de sistemas de fabricación. Madrid junio 1994. Disam. Universidad Politécnica de Madrid.
16
HARLAN, C Meal, ”Putting production decisions where they belong” Harward Business Review 62, N 2 marzo-abril 1984, pp-102-11.
13
producción es uno de los enfoques para el análisis que se basa en los conceptos de desglose que puede adaptarse a muchas empresas con lo que se convierte en una herramienta útil para los directivos en sus labores. El enfoque incorpora una filosofía de ajuste de los agregados del producto a los niveles de toma de decisiones de la organización.17
Principios de este sistema de planeación jerárquico son: el desglose que debe seguir las líneas de la organización, otro es, proporcionar la información al nivel apropiado de agregación para la decisión. También, es necesario programar sólo el tiempo de preparación que se requiere para las decisiones a tomar; esto significa que pueden hacerse los planes detallados para periodos tan cortos como el tiempo de preparación en la fabricación.
En general, existen cuatro elementos que pueden dar origen a construir la jerarquía: tiempo, estado, información y criterios de evaluación.18 Las jerarquías no se construyen respecto a uno solo de tales elementos. En muchos casos, tiempo y estado (de agregacióndescomposición de las actividades y sus atributos) se consideran simultáneamente usando por ejemplo, en el nivel superior escalas de tiempo gruesas y estados más agregados que en el nivel inferior. Adicionalmente, se toman diferentes criterios de evaluación (dentro del problema de toma de decisiones), optimizando el más importante en el más alto. Con
17 VOLLMANN, Thomas E. Sistemas de planificación y control de la fabricación. 3 ed. España : Irwin, 1994. p. 643. 18
MOTOA, T. Gerardo. Sistemas de Planificación Jerárquicos: Aplicaciones a la gestión de producción y de proyectos. Cali. Escuela de ingeniería industrial y estadística. Universidad del Valle. p. 12
14
relación a la información, cada nivel posee situaciones y tipos diferentes de información en función de sus propios requerimientos.
Las decisiones de los diferentes niveles en el proceso de planificación se toman en diferentes momentos en el tiempo. Cada nivel de la jerarquía tiene asociado un horizonte de tiempo y no hay esquema universalmente aceptado en cuanto a su definición. El número de horizontes puede cambiar dependiendo de la perspectiva o interés de quien los propone y del sistema de producción que se quiera atender.
Figura 2-2.
Sistema de Planeación Jerárquico
El proceso después de la adquisición de instalaciones y equipo aplica las previsiones de la demanda al sistema (Ver Figura 2-2). Los pronósticos a largo plazo ayudan a los directores a tratar con los problemas de capacidad y estrategia que son responsabilidad de la alta gerencia. La dirección se plantea preguntas relacionadas con la política a seguir, como la
15
situación y expansión de las instalaciones, el desarrollo de nuevos productos, la financiación de la investigación y las inversiones de capital durante un periodo de varios años.
Una vez tomadas las decisiones de capacidad a largo plazo, los directores de operaciones pasan a efectuar la planificación a medio plazo para alcanzar los objetivos de la empresa. Las decisiones de programación táctica suponen crear planes mensuales o trimestrales, que resuelvan el problema de emparejar la productividad con las demandas fluctuantes. Todos estos planes necesitan ser consistentes con la estrategia a largo plazo de la alta dirección y trabajar con los recursos asignados por decisiones estratégicas anteriores. El corazón de la planificación a mediano plazo es el plan de producción agregada.
En esta fase de la planificación agregada, se toman decisiones con respecto a la utilización de las instalaciones, inventario, la gente y los contratistas externos. Después el programa maestro descompone el plan agregado y desarrolla un programa completo de los productos.
La planificación a corto plazo se extiende hasta un año, pero normalmente es menor de tres meses. Los directores de operaciones hacen estos planes en unión con los jefes de planta quienes desagregan el plan a mediano plazo en programas semanales, diarios y por horas. Los métodos para efectuar la planeación a corto plazo traducen las decisiones de capacidad, la planificación intermedia y los programas maestros en: asignación, secuenciación, programación detallada y control
16
Este enfoque jerárquico permite la coordinación entre los objetivos, planes y actividades de los distintos niveles largo (estratégico), mediano (táctico) y corto plazo (operativo), cumpliendo cada uno sus propias metas, pero teniendo siempre en cuenta las del nivel superior, de las cuales dependen, y las del nivel inferior, a las que restringe. Sin dicho enfoque seria difícil, cuando no imposible, llegar a la integración de las funciones.19
En cualquier caso, lo que se pretende es subdividir el problema en niveles de jerarquía de acuerdo con los diferentes grados de agregación, con la intención de hacer más tratable el problema. Resultado de las características de la planeación jerarquizada es la relativa independencia de decisiones. Decisiones de alto nivel pueden usualmente ser hechas sin tomar en cuenta futuras decisiones de bajo nivel. Las decisiones agregadas de nivel superior, por ejemplo, con relación a la carga en mano de obra no dependen de las decisiones detalladas relacionadas con el tamaño de los lotes. En sentido contrario, decisiones con relación al tamaño del lote se pueden tomar cuando la información sobre requerimientos de materiales esté disponible y estarán restringidas por los límites de horas fijadas en la decisión anterior.
Una de las claves de efectividad de estos procesos es la simplicidad de la toma de decisiones en cada nivel, y la siempre necesaria existencia de un sistema de apoyo para la toma de decisiones (Decision Support Systems - DSS).20
19
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección de operaciones : Aspectos tácticos y operativos en la producción y los servicios. España : Mc Graw Hill, 1995. 8 p.
20
MOTOA, Sistemas de Planificación Jerárquicos , Op cit., p. 8.
17
2.2.2
Planeación a corto plazo
Una vez obtenido el plan de requerimientos de materiales (MRP) que establece las cantidades o lotes de cada subcomponente, componente y producto final; en cada momento del horizonte de tiempo. Se realiza la ejecución en las instalaciones productivas, tarea de la planeación a corto plazo.
El Scheduling o planeación a corto plazo específica la carga de trabajo de acuerdo a las órdenes emitidas en el mediano plazo, controlando las operaciones y ajustando la capacidad del sistema para asegurar que se cumplan los requerimientos del programa maestro de producción.21 Este plan determina el tiempo en que se hace un producto en particular en una máquina específica; los momentos de comienzo y fin de las actividades de cada centro de trabajo, así como las operaciones de cada orden para la secuencia realizada. Las unidades manejadas en este nivel pueden ser productos específicos y la capacidad estará restringida por las horas disponibles en una máquina dada.
Los planes de requerimientos de materiales –MRP- además establecen los requerimientos de capacidad asociados. Es evidente que van a existir divergencias entre lo planificado y los resultados de la ejecución; haciéndose necesario en el corto plazo controlar los múltiples aspectos de la actividad diaria: unidades realmente obtenidas tras las operaciones, cantidad de defectuosos, la eficiencia y utilización de los Centros de Trabajo - CT (básicos para
21
CHASE, y AQUILANO, Op cit., p. 757.
18
medir la capacidad de cada uno de ellos en horas estándar), las fechas de entrega, los tiempos de suministro, la evolución de las colas de espera y, con ellas, la adecuación de las capacidades y cargas planificadas a las reales, etc. Solo así será posible detectar las divergencias significativas entre los valores planificados y los reales, con base en los cuales se adoptarán las medidas correctoras necesarias, que retroalimentarán a los distintos niveles del sistema.22
Esta planeación nos permite visualizar la programación de piezas componentes basada en la estructura del producto, con programación de componentes para subensambles y a su vez, subensambles que sirven para el ensamble final del producto.
El conjunto de órdenes en curso de fabricación y las órdenes planificadas, cuyas fechas de emisión estén incluidas en el horizonte de planificación considerado, serán objeto de la programación de operaciones. Esta función tiende a determinar que operaciones se van a realizar sobre las distintas órdenes, durante cada momento del horizonte planificado, en cada Centro de Trabajo (CT), de tal forma que, con la capacidad disponible en cada uno de ellos, se cumplan las fechas de entrega planificadas, empleando el menor volumen de recursos e inventarios posibles. En cuanto al horizonte de planificación, éste dependerá de las características del proceso productivo y su entorno, pudiendo variar entre unas horas y varias semanas.23
22
MACHUCA DOMÍNGUEZ. Op cit., p. 292.
23
Ibid., p. 295.
19
El desarrollo de la programación con lleva a variar notablemente en función del tipo de configuración productiva. Dado que existen varias clasificaciones de las configuraciones productivas propuestas por diferentes autores. Nos apoyamos en la clasificación que realiza Machuca24 en función de la continuidad en la obtención del producto: continua, lotes y proyectos.
Configuración continua. Cuando se obtiene siempre el mismo producto en la misma instalación. Cada CT, máquina o equipo está acondicionado para realizar siempre la misma operación y preparado para aceptar de forma automática el trabajo que le es suministrado por un CT, máquina o equipo precedente, que esta en igual condición para alimentar a la máquina que le sigue.
Figura 2-3.
24
Configuración continua.
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección de operaciones : Aspectos estratégicos en la producción y los servicios. España : Mc Graw Hill, 1995. p. 143
20
La configuración continua hace la programación más elemental pues las únicas actividades desarrolladas aquí son las encaminadas a ajustar el ritmo de producción. Ejemplo es la producción masiva donde un producto pasa por los mismos centros de trabajo en grandes cantidades, (Ver Figura 2-3)
Configuración productiva por lotes. El hecho diferenciador que distingue ésta configuración está en que utiliza las mismas instalaciones para la obtención de múltiples productos, de forma que, una vez obtenida la cantidad deseada para uno de ellos, se procede a ajustar la instalación y a procesar otro lote de producto, repitiéndose continuamente esta secuencia. No obstante, en función del tamaño de los lotes obtenidos, de la variedad y homogeneidad de los productos fabricados y de las características de los procesos seguidos, nos podemos encontrar dos tipos de configuraciones.25
En esencia cuando se trata de fabricación de grandes lotes de pocos productos diferentes pero técnicamente homogéneos, que utilizan las mismas instalaciones, se trata de Configuración en línea o configuración por lotes enfocada al producto. Productos cuyo proceso de obtención en el CT requieren una secuencia similar de operaciones. Procediéndose a ajustar los CT o máquinas tras fabricar un lote para elaborar otro distinto.
En la configuración por lotes enfocada al producto o flow shop hay pocos productos, lotes homogéneos de tamaño mediano, pasan por los mismos centros de trabajo con diferentes
25
Ibid., p. 143.
21
valores de utilización, adecuación y alistamiento. Programación que implica secuenciación de las órdenes para dar respuesta a la pregunta ¿cuál hacer primero? (Ver Figura 2-4.)
Figura 2-4.
Configuración por lotes enfocada al producto – flow shop
En la configuración Job Shop se producen lotes más o menos pequeños de una amplia variedad de productos de poca o nula estandarización (son “a medida” o con muchas opciones personalizadas), empleándose equipos de escasa especialización, los cuales suelen agruparse en talleres o centros de trabajo a partir de la función que desarrollan; estos equipos suelen ser versátiles y permiten ejecutar operaciones diversas, por lo que puede alcanzarse una amplia variedad de output.26
La configuración por lotes enfocada al proceso o job shop fabrica bajo pedido para lotes de tamaño pequeño, hay gran variedad de productos y componentes. Programación donde hay asignación respondiendo a: ¿dónde procesar? y secuenciación ¿cuál hacer primero?. (Ver Figura 2-5.)
26
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos estratégicos en la producción y los servicios, Op cit., p. 144
22
Figura 2-5.
Configuración por lotes enfocada al proceso – Job Shop
La configuración por proyectos es la que se emplea para la elaboración de productos “únicos” y de cierta complejidad que se obtienen a partir de la coordinación en el uso de unos inputs que suelen ser de gran tamaño. La programación se da bajo modelos como el PERT / CPM.
Figura 2-6.
Configuración productiva de bienes. 23
La figura 2-6 muestra la relación entre las configuraciones productivas y el número de productos de una empresa.
Para el tipo de configuración al cual se enfoca el presente trabajo – configuración por lotes enfocada al producto o flow shop – en el corto plazo se tienen en el caso más complejo las siguientes actividades: asignación, secuenciación, programación detallada y control. (Ver Figura 2-7.)
Figura 2-7.
Sistema de planeación y programación de operaciones en el corto plazo.
Asignación Es el direccionado específico de órdenes a cada Centro de Trabajo (CT) durante el periodo de planeación. Cada trabajo debe tener sus especificaciones únicas de productos y, por
24
tanto, su hoja de ruta o trayectoria a través de los diversos centro de trabajo dentro de las instalaciones. A medida que las nuevas órdenes de trabajo pasan a proceso, se asignan o dirigen entre los CT, estableciéndose así la parte de la carga que le corresponde a cada uno de éstos durante el periodo inmediato de planeación.
Secuenciación. Esta etapa establece las prioridades para los trabajos en las colas de espera en los centros de trabajo, la secuencia de prioridad específica el orden en el cual son procesados los trabajos pendientes.
Programación detallada. Las fechas especifican cuando hay que efectuar las órdenes de trabajo, emplear los materiales (insumos), así como los trabajos terminados (productos) que deben estar disponibles en cada CT. Los detalles sobre fechas y tiempos en general no se especifican hasta que no se hayan terminado la asignación y la secuencia.
Al calcular la duración de los procesos y las fechas establecidas para todos los trabajos, los programadores pueden establecer sus fechas de inicio y de terminación, y diseñar así el programa detallado.
Control Es el seguimiento que se realiza al avance de los trabajos por las instalaciones, permite coordinar las acciones especiales requeridas por un trabajo en particular para que éste 25
transite por los CT a tiempo, solucionando las interrupciones generadas en las operaciones de manufactura: fallas de equipos, falta de disponibilidad de los materiales y cambios de último momento en las prioridades, que ocasiona desviaciones en los planes y los programas de producción.
Control Input – Output (Capacidad a corto plazo) Es el seguimiento que se realiza a los centros de trabajo. Los planes y los programas de producción implican ciertos niveles de capacidad y producción para un centro de trabajo, pero su utilización real puede diferir de lo planeado. El control de la capacidad (informe input-output) pretende gestionar y controlar la capacidad de los CT y reconocer las desviaciones significativas, proporcionando asi la información necesaria para tomar las medidas correctoras oportunas y hacer ajustes en la utilización para alcanzar los niveles deseados.
2.2.3
Programación enfocada a la carga
La carga significa la asignación de tareas a cada Centro de Trabajo (CT) o proceso. Los directores de operaciones asignan trabajo a los centros de trabajo de tal forma que los costos, el tiempo ocioso o los tiempos de terminación se mantengan en un mínimo.27 En la actualidad hay dos enfoques básicos que son la carga infinita y la carga finita.
27
HEIZER, y RENDER , Op cit., p. 208.
26
Carga infinita. Una característica que distingue a un sistema de programación de otro es la manera como se considera la capacidad al determinar el programa. Los sistemas de programación pueden utilizar una carga infinita o finita.
La carga infinita se presenta cuando la tarea ha sido asignada a un CT sin tener en cuenta su capacidad, la carga que proviene del programa de producción se distribuye en los centros de trabajo como si su capacidad fuera ilimitada.
Las reglas de secuencia prioritaria (como su nombre lo indica determinan que trabajo debe procesarse a continuación), no reconocen las capacidades de los centros de trabajo ni otras tareas programadas, por esta razón estas reglas se emplean con técnicas de planificación de capacidad basadas en cargas infinitas.28 Otros modelos que usan este enfoque de programación son: la regla de Johnson y el algoritmo de Kuhn.
Grafica de Gantt. La gráfica de Gantt útil para la carga o programación, es una herramienta visual para establecer la secuencia de los trabajos que serán procesados en un centro de trabajo o en una serie de máquinas así como para vigilar su avance a través de todas ellas. Teniendo como variables los CT o máquinas, y el tiempo de proceso, proporcionando facilidad y claridad en la comunicación con el taller de trabajo, señalando la necesidad de reasignación
28
VOLLMANN, Op cit., p. 181.
27
de recursos cuando la carga en cualquier centro de trabajo es demasiado grande para el caso de carga finita.
El propósito de la gráfica es desplegar el estado de cada recurso, casi siempre centros de trabajo o tiempo extra, en todo momento. El eje ‘x’ representa el tiempo y el eje ‘y’ consiste en una barra horizontal para cada máquina. Las gráficas de Gantt también se pueden construir colocando trabajos en lugar de máquinas en el eje ‘y’.29
Esta permite representar el desarrollo de las diferentes operaciones a realizar de cada lote en cada CT en función del tiempo, apreciándose además, la coordinación de las secuencias, las colas de espera y los tiempos ociosos.
Tiene como ventajas la facilidad y claridad en la comunicación con el taller de información importante. Sin embargo, tiene algunas limitaciones importantes. Como la gráfica es un dispositivo de carácter determinista, no maneja la variabilidad de la duración: de las actividades, de los equipos (incluyendo fallas), del tiempo que trabajan las personas y averías inesperadas o errores humanos que requieran una repetición del trabajo, cualquiera de las cuales puede hacer que el cálculo de la carga estimada sea impreciso. También la gráfica es estática y debe de actualizarse en forma periódica para que pueda incluir la
29
SIPPER y BUFFIN, Op cit., p. 404
28
llegada de nuevas órdenes de trabajo y los cálculos de tiempo que hubieran sido revisados para los trabajos existentes.30
Carga finita. El sistema de carga finita simula el inicio y final de las cargas de trabajo reales para producir un programa detallado de cada orden a cada centro de trabajo; es decir, lo que la carga finita hace, en realidad, es cargar todas las tareas en los centros de trabajo necesarios a lo largo del horizonte de planificación. El resultado es un conjunto de fechas de inicio y fin para cada operación en cada centro de trabajo. Este programa se basa en los límites de capacidad de cada centro de trabajo, estableciendo explícitamente un programa detallado para cada tarea a través de CT, basándose en sus capacidades y las otras tareas programadas.
Figura 2-8.
30
Carga vertical
EVERETT, E. Adam. Jr, y RONALD, J. Ebert. Administración de la producción y las operaciones. 4 ed. Mexico : Prentice Hall, 1994. p. 455.
29
Dos enfoques para asignar la carga del MRP en la planta son: la carga vertical (por centros de trabajo) y la carga horizontal (por pedidos)
La carga vertical consiste en llenar cada CT operación por operación donde el recurso crítico que se programa es el CT. (Ver Figura 2-8). Cuando se determina que un centro de trabajo a quedado libre, se selecciona el trabajo siguiente teniendo en cuenta
las
prioridades establecidas para los trabajos a ser realizados a continuación en el CT.
De esta forma se puede decidir si empezar otro trabajo ya ejecutable al objeto de no dejar ocioso el CT. Siguiendo así para todos los pedidos en este CT, estableciéndose el programa de operaciones que va ha desarrollarse durante las horas de cada día. Esta forma de asignación también es conocida como aproximación vertical.
Figura 2-9.
Carga horizontal
La carga horizontal o por pedidos toma los pedidos completos por orden de prioridad, asignándose la carga de sus operaciones a todos los CT por los que ha de pasar, en su momento correspondiente, después el siguiente pedido con mayor prioridad, y así sucesivamente. (Ver Figura 2-9.) 30
Este enfoque horizontal puede estar en contra del criterio de usar un CT a su máxima capacidad, la creación de programas detallados con carga horizontal puede dar como resultado neto “huecos” de capacidad para un CT. Esto implica que en ocasiones una máquina este inactiva aún si esta disponible otra tarea, porque este por llegar otra tarea más importante.
Ya sea en la carga horizontal o en la carga vertical, existe siempre la decisión de que tarea programar a continuación para un CT.
Una característica de los sistemas de programación es si esta se genera hacia adelante o hacia atrás en el tiempo, la más común es la programación hacia adelante.
Programación hacia adelante (Forward). Programación hacia adelante (carga a futuro o programación prospectiva), comienza con la fecha actual y carga de los centros de trabajo hacia futuro. El tiempo de procesamiento se acumula contra cada centro de trabajo, suponiendo una capacidad finita o infinita. En éste caso es posible exceder las fechas de entrega si es necesario. Como se utilizan tiempos de espera promedio en las colas, la fecha de terminación del pedido resultante es sólo una aproximación de la fecha que se calculará mediante la programación más precisa. El propósito de la carga hacia el futuro es determinar la fecha de terminación aproximada de cada pedido y, en caso de capacidad infinita, la capacidad necesaria en cada periodo.
31
Programación hacia atrás (Backward). De manera inversa la programación hacia atrás (o programación retrospectiva) se inicia, con la fecha de entrega de cada pedido y carga las necesidades de procesamiento contra cada centro de trabajo. La capacidad de los CT puede excederse si es necesario. El propósito de la carga hacia atrás es calcular la capacidad requerida en cada CT para cada periodo de tiempo. Como resultado quizás se tome la decisión de reasignar la capacidad entre los CT o de disponer de mayor capacidad, mediante una
planeación agregada
modificada. Las limitaciones de capacidad encontradas en el corto plazo se retroalimentan al mediano plazo donde se genera una nueva planeación agregada que desciende en la jerarquía al corto plazo para dar solución a los problemas de capacidad.
2.2.4
Modelos de programación.
Programación en un CT o máquina (n/1).
Figura 2-10. Caso n/1 Es una situación de programación estática que involucra varias tareas u órdenes en un CT o máquina donde son utilizadas en su mayoría las reglas de prioridad. La terminología de programación en esta clase de problemas se denomina “Problemas de n tareas – en 1 CT o máquina” o simplemente “n/1”. (Ver Figura 2-10)
32
La dificultad teórica de los problemas de programación se incrementa en la medida en que se consideran más máquinas y no en la medida en que se deben procesar más órdenes; en consecuencia, la única restricción que hay respecto de n es que éste debe ser un número específico y finito.31
El método más utilizado en la práctica es el de las reglas de prioridad, técnica heurística consistente en el establecimiento de una regla basada en un indicador numérico o criterio de evaluación, que es el objetivo fundamental a lograr en la secuenciación. Se puede lograr siempre que el objetivo a lograr sea único o sí, existiendo varios, uno de ellos es prioritario y no existe otro método para contemplarlos simultáneamente. Con base en este indicador elegido se selecciona el primer trabajo a realizar en el CT, una vez se aproxime su finalización, se determinará el próximo a realizar y así sucesivamente.
Cada pedido tiene asociados tres elementos principales que lo hacen unico: un identificador o código, la carga generada y la fecha de entrega dada. Es de las operaciones matemáticas a éstos elementos de donde salen los factores que forman los cocientes en los criterios de evaluación: •
El tiempo de flujo por pedido es el tiempo de permanencia del pedido en una instalación
hasta ser trabajado, es igual al acumulado de las cargas de todos los pedidos anteriores en espera más la carga del mismo pedido analizado.
31
CHASE, y AQUILANO. Op cit., p. 684
33
•
La suma de los tiempos totales de flujo es la sumatoria de todos los tiempos de flujo por
pedido o trabajo evaluados, su valor depende del orden dada a los trabajos. •
El tiempo total de procesamiento es la sumatoria de las cargas de los diferentes pedidos
o trabajos evaluados, su valor no cambia con el orden de los trabajos. •
Los días de retrazo son los valores positivos de la resta por pedido del tiempo de flujo
calculado y su fecha de entrega. El valor negativo representa los días de holgura. •
Los días totales de retrazo son la sumatoria de los valores positivos obtenidos en los
días de retrazo por pedido.
Como criterios de evaluación tenemos: •
Tiempo medio de finalización = [suma de los tiempos totales de flujo] / [número de trabajos]
•
Utilización = [tiempo total de procesamiento] / [suma de los tiempos totales de flujo]
•
Número medio de trabajos en el sistema = [suma de los tiempos totales de flujo] / [tiempo total de procesamiento]
•
Retraso medio del trabajo = [días totales de retraso] / [número de trabajos]
Reglas de prioridad Definimos algunas de las reglas de prioridad más utilizadas: •
FCFS (First Come, First Served) o FIFO (First In, First Out) primero en llegar primero en ser atendido. Las órdenes se ejecutan en el orden en que llegan al CT.
34
•
SOT (Shortest Operating Time) Tiempo de operación más corto: primero se ejecuta la tarea que tenga el tiempo de terminación más corto, luego el segundo más corto y así sucesivamente, éste es igual al tiempo de procesamiento más corto. De esta forma se hace máximo el número de trabajos procesados por período en el CT y, por tanto, se ayuda a minimizar los tiempos ociosos. Sin embargo, se ignora la información relativa a las fechas de entrega planificadas
•
EDD (Earliest Due Date): Se realiza en primer lugar aquel pedido cuya fecha de entrega está más próxima, cualquiera que sea el tiempo de proceso que le reste. Es una aplicación simple del objetivo de cumplir las fechas de entrega, que deja fuera las consideraciones sobre el logro del menor tiempo total de procesamiento de los pedidos.
•
LOT(Longest Operation Time) o LIO (Longest Imminent Operation): El próximo trabajo a realizar en un CT será aquel cuya operación en dicho centro sea la más larga. La idea que la preside es que, normalmente, los trabajos más largos son los más grandes y más importantes y, por tanto deben ser los primeros en realizarse. Se supone, además, que éstos serán los trabajos con menor holgura (aunque no siempre ha de ser así, pues esto dependerá también de la fecha de entrega).
•
Fecha de iniciación: Fecha de vencimiento menos plazo normal. Ejecutar primero la tarea con la fecha de iniciación más temprana.
35
•
SRT (Shortest Remaining Time) Menor tiempo restante. En ésta se ejecuta primero aquel pedido al que le quede menos tiempo hasta su entrega planificada, ejecutando primero el pedido más urgente para cumplir las fechas de entrega. No obstante, no considera un aspecto fundamental, el tiempo que queda para entregar el trabajo (que es función del tiempo de proceso que le falte para ser terminado).
•
CR (Critical Ratio) Coeficiente Crítico: se calcula como la diferencia entre la fecha de entrega y la fecha actual, dividida por el número de días de trabajo restante. Las órdenes que tengan el CR más pequeño se ejecutan primero. Esta regla intenta corregir el defecto señalado para la anterior, proporcionando una visión comparada del tiempo y la carga que restan para entregar y concluir un trabajo. Su idea básica es la misma.
•
STR (Slack Time Remaining) Menor tiempo de holgura restante. Se calcula como la diferencia entre el tiempo restante antes de la fecha de entrega menos el tiempo de procesamiento restante. Los pedidos que tienen el STR más corto se ejecutan primero. Al igual que el Coeficiente Crítico (CR), pretende dar una idea del tiempo que resta para cumplir con la fecha de entrega planificada en comparación con el tiempo que falta para acabarlo.
•
STR/OP (Slack-Time Remaining per Operation) Los pedidos más cortos son ejecutados primero. Se calcula de la siguiente manera: [tiempo restante antes de la fecha de entrega menos el tiempo de procesamiento restante o tiempo total restante en la planta] / [número de operaciones restantes]. Es una variación de la anterior, en el que la holgura 36
se relaciona además con el número de operaciones que le restan al pedido para ser terminado. En este caso, a la idea de seleccionar antes el trabajo de menor holgura se le añade la consideración del número de operaciones restantes, considerándose que es más difícil completar aquel con mayor número de éstas, al tener que ser programado a través de más centros de trabajo.
•
LCFES (Last Come First Served) o LIFO (Last In, First Out) Último en llegar, primero en salir: esta norma se presenta con frecuencia por defecto a medida que llegan las órdenes, estas se colocan encima de la fila; el operador ejecuta la primera en la fila.
Diferentes autores como Sipper o Krajewski entre otros, han clasificado las reglas de prioridad para la programación, en dos categorías: reglas locales (para una sola dimensión o miopes) y reglas globales (para dimensiones múltiples), que se definen a continuación, resaltando la utilización de la primera en el desarrollo de la aplicación.
Reglas locales: A estas reglas las llamamos reglas para una sola dimensión por que asignan las prioridades tomando como base un solo aspecto del trabajo, como el tiempo de llegada al centro de trabajo, la fecha de vencimiento o el tiempo de procesamiento.32 Reglas globales: las reglas de prioridad, como la CR, S/RO ( o STR/OP), incluyen información sobre los demás centros de trabajo en los que deberá ser procesado cada
32
KRAJEWSKI Lee, RITZMAN Larry. Administración de operaciones o producción: Estrategia y análisis. México: Pearson educación, 2000. p.767.
37
trabajo, además del tiempo de procesamiento en el centro de trabajo actual o la fecha de entrega, que también se toman en cuenta en las reglas para una sola dimensión. A estas las llamamos reglas para dimensiones múltiples porque usan más de un aspecto del trabajo.33
Dentro de las reglas de prioridad mencionadas se ha demostrado matemáticamente que la regla SOT produce una solución optima para el caso n/1 en los criterios de evaluación tales como el tiempo de espera medio (retraso medio del trabajo) y el tiempo de terminación medio (tiempo medio de finalización). Por tanto se ha denominado esta regla como el concepto más importante en todo el tema del secuenciamiento.34
Figura 2-11. Caso n/1 continuo. Los modelos de una sola máquina también son adecuados para procesos continuos o en serie que se encuentren balanceados porque su programación se puede tomar de manera agregada como una situación del caso n/1. (Ver Figura 2-11.)
33
Ibid., p. 770.
34
CHASE, y AQUILANO. Op cit., p. 687.
38
Dentro de n/1 se tiene el caso particular de las máquinas paralelas que explicamos a continuación. Máquinas paralelas
Figura 2-12. Máquinas paralelas Con frecuencia, los problemas de programación consideran varias máquinas. Las máquinas múltiples pueden estar colocadas en paralelo o en serie. La figura 2-12 describe máquinas paralelas. Cuando se usan máquinas múltiples en paralelo, se supone que cualquier trabajo se puede procesar en cualquiera de las máquinas, y que el tiempo para procesar un trabajo puede ser o no el mismo en cualquiera de ellas, es decir, son o no idénticas. Además, los trabajos consisten en una sola operación; una vez que comienza el procesado de un trabajo en una de las máquinas, debe terminarse. La decisión de programación comprende dos aspectos: qué máquina procesa el trabajo y en qué orden.35
35
SIPPER y BUFFIN, Op cit., p. 439
39
Figura 2-13. Máquinas paralelas – continuo Una forma de simplificar problemas de programación es el contemplar sistemas balanceados de producción continua como una variación del caso n/1, como ya se mencionó. Ahora para el caso de las máquinas paralelas este esquema también es aplicable para cuando existan varias líneas de producción continua siendo esta la situación de unir dos esquemas: caso n/1 continuo y máquinas paralelas, para facilitar la programación de las diferentes órdenes. Obteniéndose así otra variación del caso n/1. (Ver Figura 2-13)
Programación en máquinas paralelas. Cuando se cuenta con el suficiente tipo correcto de máquinas para comenzar todas las tareas simultáneamente, se debe pensar en que la adecuada asignación de cada tarea a cada máquina dará como resultado el mejor programa global. Para este caso es utilizado el método de asignación.36 Llamado también algoritmo de asignación de Kuhn o método húngaro.
36
CHASE, y AQUILANO. Op cit., p. 689
40
Para este método la programación se vuelve matemáticamente muy compleja, cuando los valores de ‘n’ (operaciones) o ‘m’ (máquinas) son altos, siendo necesario para el análisis la programación por computador.37
La asignación de las operaciones a las máquinas se realiza de forma que cada una de ellas se ejecute en una sola máquina, y viceversa. Partiendo de una matriz formada por los tiempos de proceso de cada operación en cada máquina detallamos a continuación los pasos del algoritmo de asignación de Kuhn o método húngaro.38 Fase1: Obtención de ceros Se comienza por las columnas de la matriz. En cada una se elige el menor tiempo y se resta a todos los elementos de dicha columna. Repitiendo este proceso con cada columna de la matriz, se obtiene la tabla donde los ceros indican los lugares con los menores tiempos un cada una de ellas. Con la nueva matriz se realiza un procedimiento análogo, pero en las filas, eligiendo el elemento más pequeño de cada una de ellas y restándoselo, posteriormente, al resto de los elementos que la integran. Con los cálculos realizados se asegura que en cada fila y en cada columna exista al menos, un cero, es decir, un punto de menor tiempo. Fase 2: Búsqueda de la solución óptima
37
Scheduling, http://www.usd.edu/~rlau/schedule.htm
38
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los servicios, Op cit., p. 299.
41
Es evidente que si se puede realizar una asignación biunívoca con los lugares ocupados por los ceros en la matriz inicial que relacionase a cada Oi, con una sola Mj y viceversa, ésta sería la solución óptima. Fase 3: Obtención de un conjunto mínimo de filas y columnas que contiene todos los ceros para realizar las asignaciones que faltan. Fase 4: Desplazamiento de algunos ceros En este punto se repite la fase 2 y si ello revela que se ha llegado a la solución óptima, el proceso habrá terminado. De lo contrario se continuará iteractivamente hasta conseguirla.
Programación de centro de trabajo en configuración continua. El procesado de trabajos de manera secuencial en varios CT o máquinas, recibe el nombre de configuración continua. Todos los trabajos se procesan en el mismo orden, por lo que se pueden enumerar los CT de manera que el CT1 hace la primera operación y así sucesivamente, la figura 2-11 caso n/1 continuo, representa un CT en configuración continua.
Programación en dos CT (n/2) El caso siguiente en complejidad es el caso n/2, en donde dos o más órdenes deben procesarse en dos CT o máquinas en una secuencia común. Como en el caso n/1, existe un enfoque que lleva a una solución optima de acuerdo con ciertos criterios.
42
Figura 2-14. Caso n/2 El objetivo de este enfoque llamado regla de Johnson por su creador S. M. Johnson, es utilizado para minimizar el tiempo de proceso resultante de secuenciar un grupo de órdenes a través de dos CT.39 (Ver Figura 2-14)
Mediante este enfoque se minimiza el tiempo de flujo desde el comienzo de la primera tarea hasta la terminación de la última, Partiendo del tiempo de ejecución de cada pedido en cada máquina, éste método heurístico pretende hacer mínimo el tiempo necesario para concluir todos ellos y, por tanto, el tiempo ocioso de las máquinas. Utilizando al máximo los CT (makespan)
El makespan se define como: CTmax = Max (CT1, CT2, CT3, . . . , CTn ) Es decir, el makespan es equivalente al tiempo de terminación de la última tarea para dejar el sistema. Un makespan mínimo por lo general implica una alta utilización de las máquinas.40
39
M. Johnson, “Optimal two and three stage production schedule with set up times included,” Naval research Logistics Quarterly, 1, No 1 (marzo 1954): c61-68.
40
Sheduling – flow shop http://www.informs.org/Conf/no95/talks/ma30.3.html
43
La Regla Johnson consta de los siguientes pasos. 1. Registrar el tiempo de operación para cada tarea en ambas máquinas. 2. Escoger el tiempo de operación mas corto. 3. Si el tiempo más corto es para la primera máquina, hacer la tarea primero; si es para la segunda, hacer la tarea de último. 4. Repetir los pasos 2 y 3 para cada tarea restante hasta completar el programa.
Programación en más de dos CT (n/m) El problema de programación n/m (órdenes/CT) se a resuelto para m = 1,2,3 y para valores arbitrarios de n. No se han desarrollado algoritmos eficientes para m
4 debido el gran
número de secuencias posibles.41 (Ver Figura 2-15)
Figura 2-15. Caso n/m Si se tienen más de 2 máquinas, el algoritmo de Johnson no funciona excepto en casos especiales. Un caso especial ocurre cuando la máquina intermedia esta dominada, ya sea por la primera o por la tercera. Una máquina está dominada
41
SCHROEDER, Roger G.
Administración De Operaciones : toma de decisiones en la función de
operaciones. 3 ed. Mexico : Mc Graw Hill, 1992. p. 401
44
Dos enfoques para asignar la carga del MRP en la planta son: la carga vertical (por centros de trabajo) y la carga horizontal (por pedidos), cuando su tiempo de procesado más largo no es mayor que el tiempo de procesado más corto de otra máquina, es decir, para la máquina intermedia de tres máquinas,
Entonces se puede formar un problema equivalente de dos máquinas con tiempo de procesado y Al resolver este problema de dos máquinas se obtiene la secuencia de lapso óptimo para el problema dominado por tres máquinas. Un trabajo comienza en una máquina tan pronto como el trabajo anterior en esa máquina termina, o su operación en la máquina anterior termina. Esto funciona porque en un problema dominado la máquina dos nunca causa un retraso en el programa.
Para problemas de dos máquinas y problemas de tres máquinas con la máquina dos dominada, el programa óptimo es un programa de permutación. Esto es, la secuencia de trabajos es la misma en todas las máquinas. Un programa de no-permutación tiene diferentes secuencias de trabajo en al menos dos máquinas. Suponga que el trabajo ‘i’ está programado antes del trabajo ‘j’ en la máquina ‘k’, pero en la máquina ‘k+1’ se procesa ‘j’ antes de ‘i’. El trabajo ‘i’ pudo haberse procesado en la máquina ‘k+1’, mientras ‘j’ estaba en la máquina ‘k’, de manera que hay tiempo ocioso insertado en la máquina ‘k+1’. Si el
45
objetivo es el lapso de producción, se puede demostrar que un programa óptimo es un programa de permutación para tres máquinas.
Sin embargo, para cuatro o más máquinas, el programa óptimo puede no ser un programa de permutación. Para otros objetivos, los problemas de tres máquinas no tienen garantía de programas de permutación óptimos. Si no hay una máquina dominante en un problema de tres máquinas, o si se tienen más de tres máquinas, no existe una manera sencilla de obtener una solución óptima. Debe recurrirse a algoritmos heurísticos o enumerativos para resolver estos problemas.
Algoritmos heurísticos Un algoritmo heurístico directo es forzar al problema para que se vea como uno de dos máquinas y usar el algoritmo de Johnson. Esta secuencia se convierte en un programa de permutación para el problema original. Los diferentes enfoques para convertir el problema de m máquinas en un problema de dos máquinas producen programas distintos, entonces se puede elegir el mejor de ellos.
Cambell, Dude y Smith (1970) propusieron un enfoque de conversión, el heurístico CDS. Sean Pi1' y Pi '2 los tiempos de procesado para el problema de dos máquinas. Entonces, para un problema de m máquinas, se tiene
y 46
ellos sugieren comenzar con k = 1 y l = m y generar un programa con el algoritmo de Johnson. Después se hace k = 2 y l = (m – 1) y se repite, continuando hasta que k = (m –1) y l = 2. se usa el mejor de los (m –1) programas generados. Existen otras formas para generar los tiempos de procesado para seudo máquinas.
Gupta (1972) propuso otro algoritmo heurístico. Sea
y defina
se determina una secuencia de permutación mediante
. Gupta basa esta
regla en el algoritmo de Johnson para una máquina intermedia dominada, porque es exacta para ese caso.42
2.3
PLANTEAMIENTO DEL PROBLEMA.
Las PYMES presentan deficiencias en su sistema productivo, problemas como la ineficiencia en la planeación de la producción se evidencian en la inoportuna programación de las operaciones, que contribuye a que se den respuestas tardías a los cambios en la
42
SIPPER y BUFFIN, Op cit., p. 448
47
demanda, la no-optimización de los recursos, entre otros. Esto se da porque su estructura de costos no le permite adquirir herramientas que integran las áreas funcionales y sincronicen los niveles de planeación jerárquica43 en especial el corto plazo, a la vez que la complejidad del software y la falta de adaptación de las herramientas a los requerimientos de la empresa limitan la flexibilidad44.
La aplicación “HPP-S” se ha diseñado con el fin de solucionar este problema proporcionando un sistema de apoyo para la planeación a corto plazo, que permite realizar la programación de la producción de una manera integral al manejar pedidos, rutas, operaciones y centros de trabajo en conjunto con las necesidades MRP provenientes del mediano plazo. Sobre la plataforma de un paquete comercial (Office) haciéndola asequible y fácil de implementar.
43
QUINTERO M, Víctor Manuel. Alternativa empresarial. Cali : Icesi, 1998 p. 257
44
Planificación en línea. En : Dinero. No 79 (Mar 12 1999); p. 90-91.
48
3. LÓGICA DE DISEÑO
3
CAPÍTULO 3. . LÓGICA DE DISEÑO
3.1
PLATAFORMA DE DESARROLLO.
En el desarrollo del presente proyecto, utilizamos principalmente los programas Access y Excel de la versión 2000 del Office, donde el primero se usa para la captura de los datos y el segundo para el análisis de los mismos. Adicional a estos dos programas nos apoyamos en Visual Basic como lenguaje de programación para la automatización de tareas que se realizan en las macros para Excel y los sucesos de eventos para Access.
Comenzamos el capítulo haciendo una referencia al aporte de Visual en el funcionamiento de la aplicación. Dado que Access es menos conocido o usado que Excel presentamos una aproximación a éste programa relacionándolo con el concepto de las bases de datos, ya que tiene distinta interpretación según la aplicación, comenzamos con Excel para generalizar su uso en Access y así soportar porque se eligió como recurso válido en la captura de los datos.
49
Programas usados. Hoy existe un programa para cada actividad profesional, lo que sólo ha sido posible gracias a la enorme versatilidad de la informática. El software ha sabido adaptarse perfectamente a las necesidades de nuestra sociedad, cada vez más especializada, respondiendo con soluciones prácticas a las demandas concretas de cada sector. En este sentido, los programas profesionales suelen ser muy complejos y no están al alcance de todo el mundo, pero existen algunos – como es el caso de la base de datos Access y la hoja de cálculo Excel – que también pueden ser utilizados por el usuario particular para realizar algunas tareas cotidianas y, muy especialmente, de oficina.45
Access es una base de datos relacional, lo cual significa que es capaz de combinar la información registrada en distintas tablas gracias a la presencia de campos clave. Este sistema permite tener almacenados los datos de forma lógica en tablas de tamaño pequeño que hacen más fácil el trabajo – y que el computador opere con mayor rapidez.
Si en algún momento desea extraer información muy específica de una base de datos necesitará crear lo que en Access se conoce como consulta. La función de este elemento es buscar entre los registros que contienen las tablas aquellos que se ajustan a unas condiciones determinadas.
45
Manual de Informática Básica, Barcelona: editorial SOL 90 Ltda.
50
De otro lado, para trabajar óptimamente con operaciones matemáticas lo más adecuado es utilizar una hoja de cálculo. Aunque en el mercado existen diversos programas de este tipo, con presencia y funciones similares, Excel la versión de Microsoft – incluida en el paquete Office – es el de uso más extendido. Su éxito está ligado a la capacidad que tiene de hacer fácil lo difícil, lo cual la convierte en una herramienta fundamental para el trabajo y para la casa.46
Su principal función es realizar operaciones matemáticas – de la misma manera que trabaja la más potente calculadora, pero también la de computar complejas interrelaciones, ordenar y presentar en forma de gráfico los resultados obtenidos.
3.1.1
Visual Basic
La creación de una aplicación en Windows con Visual Basic es sorprendentemente sencilla. Para crear los elementos de una interfaz, bastará con pulsar los controles de interfaz de usuario en el cuadro de herramientas de Visual Basic y después ‘dibujar’ el elemento arrastrando y pulsando con el ratón. Para completar el programa se escribe el código a utilizar en una ventana especial llamada Ventana Código. La escritura del código de programa proporciona mayor control sobre el modo de trabajo del programa. El uso del código de programación nos permitirá expresar de forma completa el modo en que deseamos que se procesen los datos de entrada y salida. El lenguaje de programación Visual Basic contiene varios cientos de sentencias, funciones y caracteres especiales, pero
46
Ibid., p. 210.
51
la mayoría de las tareas de programación podrán ser gestionadas por unas cuantas docenas de palabras clave muy sencillas de recordar. El lenguaje de Visual Basic no es exclusivo; Microsoft Visual Basic para aplicaciones se incluye dentro del Microsoft Excel, Microsoft Access, Microsoft Project y otras aplicaciones para Windows.47
La aplicación diseñada muestra paneles de control, menús, objetos y cuadros de diálogos en pantalla para guiar al usuario en la manipulación de los elementos en el orden en que aparecen. Los programas esperan al usuario a que de una respuesta (la entrada) para después procesarla de forma predecible. En los círculos de programación, ésta metodología se conoce como Programación dirigida por eventos. La creación de un programa se realiza a partir de un grupo de objetos ‘inteligentes’ que saben como responder cuando el usuario interactúa con ellos, y después procesamos la entrada utilizando procedimientos de eventos asociados con dichos objetos.
Procedimiento de evento (event procedure). Un procedimiento es una unidad de código de Visual Basic que contiene una serie de instrucciones y métodos que realizan una operación específica. Un evento es una acción determinada que se produce en, o con, un objeto particular.
Microsoft Access responde a una variedad de eventos: clic del mouse, cambios en los datos, formularios que se abren o cierran, y muchos otros. Es por eso que apoyados con la
47
HALVORSON, Michael. Microsoft Visual Basic 4 : paso a paso. Colombia : Mc Graw Hill, 1996.
52
programación en Visual Basic se aprovecha en el desarrollo de la aplicación esta potente característica.
Los eventos son normalmente el
resultado de una acción del usuario. Si se usa un
procedimiento de evento o una macro se pueden agregar respuestas personalizadas a un evento que se produzca en un formulario, informe o control.
Cuando se crea un procedimiento de evento para un objeto se agrega: una plantilla de evento nombrada para el evento y el objeto al modulo del respectivo. Lo que se necesita hacer es agregar el código que responda de la forma que se desee cuando se produzca el evento al cual esta asociado.
Una sola acción, como puede ser pasar de un control a otro puede desencadenar varios eventos diferentes que suceden de una determinada secuencia. El saber cuándo ocurren los eventos y en qué orden lo hacen es importante, porque esto afecta a cómo y cuándo se ejecutan los procedimientos de evento. Mover el enfoque a registros, actualizar registros, modificar y/o actualizar datos en un control, eliminar registros, crear nuevos registros, pulsaciones de teclas, son muestra de los variados eventos que pueden ocurrir.
Se puede utilizar además un procedimiento de evento para validar datos en la mayoría de los casos, se puede comprobar la correcta introducción de los datos en un control de un formulario estableciendo la propiedad regla de validación (Validation Rule) del control, o estableciendo reglas de validación del registro o el campo en la tabla base de la que 53
depende el control. Las macros y los procedimientos de evento proporcionan una mayor potencia y flexibilidad para conseguir una validación más compleja.
La naturaleza, dirigida por eventos de Visual Basic, significa que la mayoría de los cálculos realizados en nuestros programas se producirán por procedimientos de eventos. Es decir, bloques de códigos específicos procesan entradas, calculan nuevos valores, gestionan tareas y muestran la salida.
Figura 3-1.
Propiedades del objeto Botón de comando.
Cada objeto de Visual Basic tiene un conjunto predefinido de eventos a los que puede responder. Estos sucesos se listan para cada uno de los objetos en el cuadro de lista desplegable Proc (procedimiento) de la ventana Código. Access por su lado tiene predeterminadas varias propiedades para cado uno de sus objetos, es así como podremos escribir un procedimiento de suceso para cualquiera de estas propiedades, y, si alguno de estos eventos se produce en el programa, Visual Basic ejecutará el procedimiento de evento asociado con el mismo. Por ejemplo, cuando se pulsa el botón de comando en un programa, 54
el evento (Al hacer clic) ejecuta el procedimiento de evento Command_Clic asociado. (Ver Anexos B Códigos). La figura 3-1 muestra los eventos predeterminados que Access tiene para el objeto Botón de comando.
3.1.2
Hojas de cálculo.
Con la masificación de los computadores en la industria, el uso de hojas de cálculo para la modelación y toma de decisiones es ampliamente usado en los negocios contemporáneos. Las funciones proporcionadas dentro de los paquetes integrados permiten a los usuarios desarrollar modelos muy complicados de las actividades a evaluar o controlar. Desafortunadamente, la mayoría de los usuarios de las hojas de cálculo no siguen una metodología determinada cuando construyen bases en hojas de cálculo para modelar. Esto conduce alternadamente a la perdida de muchas horas en puestas a punto y reprogramación que producen modelos que parecen más complejos de lo que ellos necesitan ser y son además más complicados y aburridos de entender y de modificar.48
En el desarrollo de la aplicación se usará un formato para el modelo que sea fácil de entender, de usar y de modificar, a partir de una clara y correcta discriminación de la información necesaria y relevante al momento de realizar la planeación a corto plazo.
48
A framework for building spreadsheet based decision models, D Mather, Monash University, Australia, 1997. http://www.stockton-press.co.uk/0160-5682/v50n1/pdf/2600672.pdf
55
Excel En Excel se identifica el concepto de base de datos con el de lista (o tabla). Por lo tanto una base de datos en Excel es un conjunto de filas en las cuales una columna tiene siempre el mismo tipo de información. La definición que da Excel de lista es: “Serie rotulada de filas de hojas de cálculo que contiene grupos similares de datos, como una base de datos de facturas o un conjunto de nombres y números telefónicos de clientes. Una lista puede usarse como una base de datos, donde las filas son registros y las columnas son campos.”
Durante la generación de la hoja de cálculo, no es necesario definir ninguna propiedad específica para realizar operaciones de base de datos como: introducir, borrar, buscar, ordenar o efectuar el subtotal de los datos, el programa reconoce la lista como una base de datos.
Para crear una base de datos o una lista en Excel se debe introducir una primera fila en la que se describe el contenido de cada columna. A continuación se introducen en las filas siguientes cada uno de los datos. Estas filas constituyen los registros de la lista. Por ejemplo se crea una lista para contener los datos de carné, nombre, dos apellidos y curso de una serie de alumnos. Dos de las operaciones que Excel permite realizar con dichos datos son: edición y ordenación.
Ordenar mediante criterios, realizar un filtro para obtener una nueva sublista o hallar subtotales de los campos que se deseen, son funciones propias de una aplicación de gestión de bases de datos, sin embargo existe una diferencia fundamental entre Excel y una 56
aplicación de base de datos: Excel sólo puede tener una lista en cada hoja y no puede establecer relaciones entre dichas listas. En la terminología de las aplicaciones de bases de datos, lo que Excel llama lista o base de datos se denomina tabla. Y el conjunto de todas las tablas con sus relaciones es lo que realmente constituye la base de datos.
3.1.3
Bases de datos
Access, programa comercial de Microsoft Corporation. Se trata de un sistema gestor de bases de datos diseñado para ser utilizado en computadoras personales tipo PC. Aunque no está considerado como un sistema ‘serio’, lo cierto es que permite realizar las mismas tareas que los tradicionalmente considerados sistemas ‘serios’, como puede ser Oracle. A diferencia de éste, Access puede funcionar en sistemas de bajo costo, y es mucho más asequible. Además, dispone de un entorno muy amigable (al estilo Windows 98). Por esta razón, cada vez más empresas apuestan por este sistema; tanto es así que los fabricantes de los sistemas ‘serios’, incluido Oracle, tienden a hacer que sus productos se parezcan, en cuanto a interfaz de usuario se refiere, a lo que el usuario pide, que no es otra cosa que el entorno visual. Así aparece Developer 2000, un entorno visual para crear aplicaciones para Oracle.49
49
Prácticas de Bases de Datos / Bases de Datos I, Curso 1997-98. Universidad de Huelva. España.
57
Access es un programa para la gestión de información. Permite diseñar las estructuras para almacenar la información y los medios para su introducción y explotación.50
Una peculiaridad que se debe tener en cuenta al trabajar con programas de gestión de bases de datos, como es el caso de Access, es que no existe la opción Save (Guardar), referida a los datos de la aplicación, debido a que los cambios en los datos se van guardando siempre en el dispositivo de almacenamiento permanente. Cuando se presenta la opción Save, se refiere a guardar los cambios realizados en el diseño de los distintos objetos que componen la base de datos, no a los datos.
Access Una aplicación de base de datos que almacena y gestiona información se denomina un Sistema de Gestión de Bases de Datos SGBD o DBMS (Data Base Management System).
La estructura básica de esta información son tablas, que se corresponden con las listas de Excel. Para una mejor gestión de la información y para reducir el número de datos, las tablas se relacionan, por ejemplo si se desean tener listas con los pedidos de cada cliente, en vez de incluir el nombre, Nit y otros en la lista de cada pedido, bastará con almacenar el código de cada cliente. El código del cliente en la lista de pedidos sirve para establecer una relación con los datos de la cada cliente en la tabla clientes, ( Ver Figura 3-2.) Debido a este
50
SARRIEGUI, José María, SERRANO, Nicolás, MURO, Iván. Aprenda Microsoft Access 97 como si estuviera en primero. San Sebastián, Octubre 1998 Escuela Superior de Ingenieros Industriales, Universidad de Navarra
58
carácter relacional, Access es un sistema de gestión de bases de datos relacional SGBDR o RDBMS (Relational Data Base Management System).
Figura 3-2.
Tablas relacionadas
Es importante mencionar que en Access es posible exportar hojas de datos a páginas HTML estáticas o dinámicas del World Wide Web, así como toda una serie de utilidades para trabajar con intranets privadas y con la red pública Internet. Aunque esta característica no se utilizo en el desarrollo de la aplicación, sí amplía la proyección de la herramienta creada al poder ser instalada en un servidor para permitir consultas desde diferentes terminales.
Conceptos generales El ejemplo de la base de datos o lista de Excel nos sirve para exponer los tres conceptos básicos de bases de datos: tablas, campos y registros. Una tabla es una colección de datos con la misma estructura. Si se disponen los datos en una hoja de cálculo, una columna siempre tiene el mismo tipo de dato, por ejemplo un nombre, un número de teléfono etc.
59
Cada tabla es un conjunto de información relativa a una categoría específica, consta, de un cierto número de campos, en cada uno de los cuales se guarda un dato, que puede ser numérico, alfanumérico, fecha, etc.
Figura 3-3.
Partes tabla.
Un campo es cada una de las columnas de la tabla y el nombre de la columna es el nombre del campo. Un registro es cada una de las filas de la tabla, y está formado por el dato de cada uno de los campos almacenados en una misma operación.(Ver Figura 3-3.) En el ejemplo anterior, la lista de clientes constituye una tabla en Access. Esta tabla consta de 12 campos: Idcliente, Nombre_cliente, NIT, Persona_contacto, Dirección, Ciudad, País, Teléfono, Fax, Celular, Descuento y Observaciones.
Una base de datos es un conjunto de tablas que se utilizan para gestionar un determinado tipo de información. Son ejemplos de base de datos: la base de datos de la gestión académica de una universidad, la base de datos de los pedidos de una empresa o la base de datos de centros de trabajo. Por lo tanto la base de datos está constituida por la estructura de información y la información en ella contenida. Es frecuente denominar a Access como una 60
base de datos. Para ser exactos Access es una aplicación de gestión de base de datos. Es la misma diferencia que existe entre un procesador de textos como Word y un documento de Word..
Entre los objetos que forman una base de datos tenemos:
Tablas (Tables): La tabla es el tipo principal de objeto de una base de datos. El concepto de tabla se ha explicado al ver la relación de Excel con las bases de datos. Como resumen, una tabla es un conjunto de datos estructurados en columnas (los campos) y filas (los registros). En las tablas de la base de datos es donde se almacena toda la información de la base de datos.
Consultas (Queries) Operaciones que pueden realizarse sobre los datos de las tablas: limitaciones de acceso, selección de datos, inserción, modificación y borrado, cálculos entre otras.
Macros y módulos: segmentos de código en lenguaje de alto nivel (Access Basic, Visual Basic, lenguaje de macros,...) que permiten realizar operaciones complejas con los datos y objetos de la base de datos.
Formularios: Un formulario es una ventana diseñada para la introducción y edición de datos. En Excel, a partir de una lista se puede generar automáticamente un formulario para introducir los datos. Access posee herramientas para realizar el diseño de los formularios de una manera mucho más elaborada utilizando listas desplegables, rejillas, botones de opción 61
y de selección, etc. El formulario permite introducir, modificar, consultar y borrar los registros de la tabla o consulta para la que se ha diseñado. La ventaja frente a la presentación como hoja de datos es que los campos se presentan de manera más adecuada al usuario, con un diseño que ayuda a su comprensión, utilizando los controles más adecuados a cada tipo de información. En algunos casos la tabla puede ser la mejor manera de presentar los datos y no es necesario recurrir a modos de presentación más sofisticados.
Informes (Reports): Si el formulario es la forma idónea de introducir y editar los datos, la mejor forma de mostrarlos es mediante un informe en una página impresa o mediante su representación en la pantalla.
Una página de acceso a datos es muy similar a un formulario, pero puede utilizarse para acceder a la base de datos desde un navegador web de la misma manera que lo haría desde Access. De hecho, a diferencia de un formulario, que se guarda como parte de una base de datos, las páginas de acceso a datos se almacenan en el disco duro de forma independiente con extensión de archivo HTML.
En general, se puede afirmar que el diseño de la presentación de los datos es uno de los aspectos clave a la hora de valorar una aplicación informática. Un diseño de pantallas adecuado a cada usuario reduce el tiempo de aprendizaje y motiva al usuario, lo que es casi una garantía de éxito.
62
Los formularios son la principal interfaz o vía de comunicación entre el usuario y la base de datos. Entre las utilidades más importantes de los formularios se pueden citar las de mostrar y editar datos de una o varias tablas o consultas, la de controlar el flujo de la aplicación con botones, la de inserción de datos en la base de datos o la de enviar mensajes al usuario. Dependiendo del tamaño y número de campos de la tabla o consulta que se va a mostrar en el formulario se decide cuál es el tipo de formulario que mejor se adapta a cada situación.
El tipo de formulario más sencillo muestra los valores de todos los campos de una tabla o consulta. Es posible avanzar uno a uno a lo largo de todos los registros y moverse al primero o al último de la tabla, para ver sus valores y/o modificarlos. También se puede realizar la inserción de un nuevo registro al final de la tabla.
Figura 3-4.
Botones de desplazamiento entre registros.
Para moverse entre los diferentes registros ingresados a la base o para ingresar uno nuevo debe desplazarse mediante los botones de desplazamiento situados en la parte inferior de la ventana activa (Ver Figura 3-4). Puede utilizar estos botones para desplazarse rápidamente entre los registros.
63
Los formularios en Access son versátiles: permiten realizar tareas que no son posibles en las hojas de datos tabla o consulta. Es posible validar las entradas con base en la información contenida en otras tablas distintas a la editada. Se pueden crear formularios que incorporen otros formularios (subformularios). Además, desde un formulario, es posible realizar cálculos y mostrar totales o activar distintas funciones de la aplicación.
Un formulario puede mostrar los datos de tablas o consultas con una relación uno a varios mediante un formulario que contenga subformularios, de manera que en el formulario principal aparezcan los datos del lado único de la relación y en el subformulario se pueda acceder a cada uno de los datos del lado varios de la relación.
Un subformulario es un formulario dentro de un formulario. El formulario primario se llama Formulario Principal y el formulario dentro del formulario se llama Subformulario. Una combinación formulario / subformulario se llama a menudo Formulario Jerárquico, formulario principal / detalle o formulario principal / secundario.
El formulario principal y subformulario de este tipo de formularios están vinculados para que el subformulario presente sólo los registros que están relacionados con el registro actual del formulario principal. Cuando se utiliza un formulario con un subformulario para introducir nuevos registros, Microsoft Access guarda el registro actual en el formulario principal cuando se introduce el subformulario. Esto asegura que los registros de la tabla ‘varios’ tengan un registro en la tabla ‘uno’ con el que relacionarse. También guarda automáticamente cada registro conforme lo agregue al subformulario. 64
Figura 3-5.
Detalle subformularios
El ejemplo más típico es el formulario correspondiente a un pedido, en el que en la parte superior se muestran los datos propios del pedido y en la inferior los distintos artículos que forman las líneas del mismo. En la aplicación se manejan formularios jerárquicos anidados, es decir que, un mismo formulario puede ser subformulario (lado ‘varios’ de la relación) para una relación de datos y ser al tiempo formulario principal (lado ‘uno’ de la relación) para otra. La figura 3-5 presenta formularios anidados que muestran esta condición.
Los formularios son la parte de la aplicación que va a estar a disposición de los usuarios, constituyendo el núcleo de la interfaz aplicación-usuario. Por eso es necesario tener un especial cuidado en su diseño y construcción. Los usuarios que manejen los formularios deben encontrarlos sencillos y eficientes. Aunque es posible utilizar las hojas de datos de 65
tablas y consultas para realizar muchas de las funciones de los formularios, éstos tienen la ventaja de presentar la información de forma clara y ordenada. Un formulario convenientemente diseñado acelera la introducción de datos y minimiza los errores de los usuarios.
Un formulario especial es el panel de control que funciona como un menú, esto facilita la realización de tareas en una base de datos al permitir direccionar al usuario a los formularios específicos. Frente a cada uno de los elementos que conforman el panel de control hay un botón que al hacer clic en él abre el formulario relacionado.
Controles Los controles son los objetos que forman el formulario para componer su aspecto externo o para editar los contenidos de las tablas o consultas. El control más habitual es la caja de texto (text box) pero hay otros controles que pueden resultar más adecuados para determinados tipos de datos. Entre otros tenemos las listas (list), la lista desplegable (combo list), y para datos que sólo puede tomar dos valores (verdadero o falso, uno o cero, etc.) el botón de verificación (Check box). Uno de los controles más utilizados es el botón de comando (command button) especialmente útil para controlar el flujo de la aplicación, ya que permite que determinada acción no comience hasta que sea requerida por el usuario, entre otras.
66
3.2
ESTRUCTURA DE LA APLICACIÓN
3.2.1
Modelos de datos.
Para describir la estructura de una base de datos es necesario definir el concepto de moldeo de datos, una colección de herramientas conceptuales para describir datos, relaciones entre ellos, semántica asociada a los datos y restricciones de consistencia. Los diversos modelos de datos basados en objetos se dividen en tres grupos: modelos lógicos basados en objetos, modelos lógicos basados en registros y modelos físicos de datos.51 En este proyecto trabajamos solo con el primero.
Los modelos lógicos basados en objetos se usan para describir datos en los niveles conceptual y de visión. Se caracterizan por el hecho de que proporcionan capacidad de estructuración
bastante
flexible
y
permiten
especificar
restricciones
de
datos
explícitamente. Hay muchos modelos diferentes, y es probable que aparezcan más. Algunos de los más extensamente conocidos son:
•
El modelo funcional de datos.
•
El modelo entidad-relación.
•
El modelo orientado a objetos.
51
KORTH, Henry F y SILBERSCHATZ, Abraham. Fundamentos de bases de datos. 2 ed. España : Mc Graw Hill, 1995. p. 6-7.
67
Modelo funcional. El modelo funcional muestra la forma en que se derivan los valores producidos en un cálculo a partir de los valores introducidos. Consta de múltiples diagramas de flujo de datos, que muestran el flujo de valores desde las entradas externas a través de las operaciones y almacenes internos de datos hasta las salidas externas.
Los diagramas de flujo de datos son una herramienta gráfica que se emplea para describir y analizar el movimiento de datos a través de un sistema, ya sea que éste fuera manual o automatizado, incluyendo procesos, lugares para almacenar datos y retrasos en el sistema. Los diagramas de flujo de datos son la herramienta más importante y la base sobre la cual se desarrollan otros componentes. La transformación de datos de entrada en salida por medio de procesos puede describirse en forma lógica e independiente de los componentes físicos (computadores, archivos) asociados con el sistema.
A menudo el diagrama de alto nivel se denomina ‘diagrama de contexto’ o ‘nivel cero’. Contiene un solo proceso pero juega un papel muy importante en el estudio del sistema en uso. El diagrama de contexto define el sistema que va ha ser estudiado en el sentido que determina las fronteras. Los procesos de bajo nivel son operaciones que se desagregan de acuerdo a los procesos macros, como nivel 1, nivel 2 y así sucesivamente.
Los métodos para el análisis de flujo de datos fueron desarrollados y promovidos al mismo tiempo por dos organizaciones (Yourdon Inc., Mc Donnell-Douglas.) En el desarrollo de la
68
aplicación de utiliza el enfoque de Yourdon el cual utiliza cuatro notaciones sencillas, símbolos especiales o iconos y anotaciones que los asocian con un sistema especifico.52
1. Flujo de datos (flecha): movimiento de datos en determinada dirección desde un origen hacia un destino en forma de documentos, cartas, llamadas telefónicas o virtualmente por cualquier otro medio. El flujo de datos es un ‘paquete’ de datos.
2. Procesos (circulo): personas, procedimientos o dispositivos que utilizan o producen (transforman) datos. No se identifica el componente físico.
3. Fuente o destino de los datos (cuadro): fuentes o destinos externos de datos que pueden ser personas, programas, organizaciones u otras entidades que interactúan con el sistema pero se encuentran fuera de su frontera.
4. Almacenamiento de datos (líneas paralelas): es el lugar donde se guarda los datos o al que hacen referencia los procesos en el sistema. El almacenamiento de datos puede representar dispositivos tanto computarizados como no computarizados.
52
SENN, James A : Análisis y diseño de sistemas de información. 2 ed. México : Mc Graw Hill, 1992. p 181.
69
Cada componente en un diagrama de flujo de datos tiene una etiqueta con un nombre descriptivo. Los nombres de los procesos también reciben un número que es utilizado con fines de identificación.
Diagramas de flujo políticas y estrategias requerimientos de inversion
Dirección y Gestión
Planeación de la producción
comportamiento de competencia
capital disponible
requerimiento de personal
pronósticos de demanda Mercadeo y Ventas
datos de clientes
Finanzas
0
datos de personal
orden entrada de materiales
datos de procesos
Compras
Recursos Humanos
Ingeniería de procesos
orden de compra
Figura 3-6.
Nivel 0. Planeación de la producción.
Los diagramas de flujo que se muestran a continuación detallan la información utilizada para la creación de la base de datos.
Los diagramas están estructurados por niveles que representan la jerarquía de la planeación de la producción. Se inicia en el nivel 0, superior (Ver Figura 3-6.), y se profundiza hasta el nivel 3 de la planeación a corto plazo. Mostrando en ellos los procesos, las entidades y los flujos de información que los relacionan.
70
objetivos a largo plazo DIRECCIÓN Y GESTIÓN políticas y estrategias
presupuesto de producción Centro de Costos
nivel de fuerza laboral
Personal
1
aprobación de fondos
personal asignado PLANEACIÓN A LARGO PLAZO
ventas reales estimaciones de demanda a largo plazo
Pronósticos
Ventas datos plan agregado
Planeación Agregada
Compras
pedidos comprometidos clientes
datos familias agregadas
estimaciones de demanda a mp.
orden de compra de materiales 2
PLANEACIÓN A MEDIANO PLAZO orden de entrada de materiales
Lista de materiales
mix de productos Mercadeo
MRP órdenes de pedido planificadas
materiales disponibles
Métodos de Programación
Inventarios requerimientos de materiales métodos requeridos
CRP
capacidad detallada
métodos solicitados
3 datos capacidad planificada
ajustes de capacidad PLANEACIÓN A CORTO PLAZO (HPP-S) orden producción
Planta
programación de las operaciones control
datos de producción diaria
Figura 3-7.
Nivel 1. Sistema de Planeación Jerárquico.
71
La figura 3-7 presenta y relaciona los tres niveles del sistema de planeación jerárquica, centrándonos en el tercer proceso ‘planeación corto plazo’ que es el origen de la aplicación ‘HPP-S’. Lista de Materiales datos cliente
MRP
Órdenes de pedido planificadas
Clientes
3.1 métodos requeridos
solicitud datos cliente
PREPARACIÓN PEDIDO
Métodos de Programación
datos producto solicitud de métodos 3.2 seleccionar gráfico SCHEDULING
Producto pedidos asignados
datos pedido pedidos para programar
Gráficos de Gantt carga ct
datos del centro de trabajo
pedidos programados PLANTA DE PRODUCCIÓN
orden de producción
datos de producción diarios
CRP
control de la capacidad
capacidad planificada
Figura 3-8.
3.3
CONTROL
ajustes de capacidad
Nivel 2. Planeación a corto plazo.
La figura 3-8 desagrega el tercer proceso de la ‘planeación corto plazo’ de la figura anterior, en los tres procesos básicos tomados para el modelo de datos, soporte para el diseño de la aplicación ‘HPP-S’.
72
Producto datos producto componentes productos Estructura Producto
3.1.1
partes componente producto INGRESAR DATOS PRODUCTO
Partes Componente datos productos detalles rutas producto Rutas producto
Hoja de ruta
detalle ruta
datos personales
CLIENTE
3.1.2
INGRESAR RUTAS
Centro de trabajo
3.1.4
detalle CT factor de utilización
INGRESAR DATOS CLIENTE
datos producto
Producto datos cliente
Tiempo de Entrega
programación hacia delante
3.1.3
elemento cantidad a emitir tipo
INGRESAR DATOS PEDIDOS
Cantidad requerida
unidad
detalle pedido
Pedido
duración en días de operaciones
fecha de entrega
fecha de emisión
# pedido Programacion detallada carga por operación al CT
Figura 3-9.
Nivel 3. Planeación a Corto Plazo - Preparación Pedido. 73
La figura 3-9 desagrega el subproceso 3.1 ‘preparación pedido’ de la figura anterior en las operaciones desarrolladas a este nivel mostrando el flujo de datos generado. Contiene el ingreso de datos para los clientes, producto, rutas y pedido.
Control pedido
Carga Pedido
rutas producto 3.2.1 detalle pedido Control Producción
Carga Operaciones
ASIGNACIÓN Rutas producto rutas iniciadas
control operaciones
datos del CT cargas por CT N/1CT/Mmaq MÉTODO HÚNGARO
3.2.2 datos del CT N/1 CT/1maq REGLAS DE PRIORIDAD
datos de las máquinas SECUENCIACIÓN
carga operaciones
N/2CT REGLA DE JOHNSON
datos del CT
órdenes secuenciadas
Planta
Figura 3-10. Nivel 3. Planeación a Corto Plazo - Scheduling. La figura 3-10 desagrega el subproceso 3.2 ‘scheduling’ de la figura 3-8 en las operaciones desarrolladas a este nivel mostrando el flujo de datos generado. Contiene la asignación y secuenciación.
74
La figura 3-11 desagrega el subproceso 3.3 ‘scheduling’ de la figura 3-8 en las operaciones desarrolladas a este nivel mostrando el flujo de datos generado. Contiene básicamente el subproceso de análisis de la capacidad por periodo.
carga operaciones Producción Planeada
centros trabajo
Producción Real
periodo
avance producto
3.3.1 gráficos de Gantt
ANÁLISIS POR PERIODO
control input/output INPUT/OUTPUT
ajustes de capacidad
CRP
Figura 3-11. Nivel 3. Planeación a Corto Plazo - Control.
Modelo entidad - relación Es una descripción del aspecto del mundo real que el diseñador intenta capturar en un sistema de información, en este modelo, la estructura se describe por un conjunto de entidades u objetos de interés relacionados entre sí por interrelaciones que son la relación que vincula a dos o más entidades no necesariamente distintas.53 Estas relaciones pueden
53
RUMBAUGH et al. Modelado y diseño orientado a objetos. 4 ed. México : Prentice may, 1995
75
ser: relaciones 1:1 , uno a uno; relaciones 1:
, uno a varios; relaciones
:
, varios a
varios.
En Access la relación entre tablas se muestra por líneas que las une. Para evitar que se generen errores en las bases de datos permite usar integridad referencial obligatoria para cada una. La integridad referencial es lo que en realidad le da poder a la relación, ya que se asegura que no exista un registro ‘varios’ que no coincida con un registro en ‘uno’. Además esta también permite habilitar las opciones de: actualizar en cascada los campos relacionados y Eliminar en cascada los registros relacionados.54
La integridad referencial es entonces un sistema de reglas que utiliza Access para garantizar que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan ni modifican accidentalmente datos relacionados.
3.2.2
Tablas.
Las tablas son los almacenes de datos, y su diseño consiste en la definición de los campos necesarios para almacenar correctamente la información en la base de datos.
Detallamos ahora cuales son y como están definidos los campos para cada una de las 20 tablas que conforman la base de datos de la aplicación ‘HPP-S’ sin profundizar en la explicación de cada campo.
54
NEIBAUER, Alan. Access 2000 para gente ocupada. Mexico : Mc Graw Hill, 2000. p. 183
76
Centro_trabajo Idcentro
Auto numérico
Nombre_centro
Texto
cap_d_hr_reales
Numérico
cap_d_hr_estándar
Numérico
Eficiencia
Numérico
Utilización
Numérico
t_ medio_preparación
Numérico
t_medio_de_cola
Numérico
Clave principal
Clientes Idcliente
Auto numérico
Nombre_cliente
Texto
Teléfono
Texto
Clave principal
Componentes Idcomp
Auto numérico
Producto
Numérico
Material
Numérico
Cant
Numérico
Idund
Numérico
Idlistaruta
Numérico
Factor
Numérico
Clave principal
Componentes1 Idcomp1
Auto numérico
Idcomp
Numérico
Material
Numérico
Cant
Numérico
Clave principal
77
Idund
Numérico
Idlistaruta
Numérico
Factor
Numérico
Componentes2 Idcomp2
Auto numérico
Idcomp1
Numérico
Material
Numérico
Cant
Numérico
Idund
Numérico
Idlistaruta
Numérico
Factor
Numérico
Clave principal
Control_operaciones Idcontxopr
Auto numérico
Idcontrolruta
Numérico
Idoperación
Numérico
Iniciada
Sí/No
Terminada
Sí/No
Clave principal
Control_ruta Idcontrolruta
Auto numérico
Idpedido
Numérico
Idproducto
Numérico
Nombre_ruta
Texto
Cant_emitir
Numérico
Cant_pend
Numérico
cantidad
Numérico
Iniciada
Sí/No
Terminada
Sí/No
Clave principal
78
Detalle_pedido Iddetallepedido
Auto numérico
Idpedido
Numérico
producto
Numérico
cantidad
Numérico
Iniciada
Sí/No
Terminada
Sí/No
Clave principal
In_out Idin_out
Auto numérico
Idper
Numérico
Idcentro
Numérico
Hr
Numérico
Input_planeado
Numérico
Input_real
Numérico
output_planeado
Numérico
output_real
Numérico
Clave principal
Lista_materiales Idmaterial
Auto numérico
material
Texto
Tipo
Texto
Clave principal
Lista_rutas Idlistaruta
Auto numérico
Nombre_ruta
Texto
Factor
Numérico
Clave principal
Máquinas Idmaq
Auto numérico
Clave principal 79
Idcentro
Numérico
Idoperación
Numérico
operación
Texto
Maq1
Numérico
Maq2
Numérico
Maq3
Numérico
Maq4
Numérico
Maq5
Numérico
Maq6
Numérico
Maq7
Numérico
Maq8
Numérico
Maq9
Numérico
Operaciones Idoperación
Auto numérico
Idlistaruta
Numérico
Centro
Numérico
Operación
Texto
T_ejec
Numérico
T_medio_desplaz
Numérico
Aprovech
Numérico
Fact
Numérico
Clave principal
Operaciones_CT IdoperxCT
Auto numérico
Centro
Numérico
Operacion
Texto
Clave principal
Pedidos Idpedido
Auto numérico
Clave principal
80
Cliente
Numérico
Fecha_emisión
Fecha/hora
Fecha_entrega
Fecha/hora
F_entrega _real
Fecha/hora
Iniciado
Sí/No
Periodo Idper
Auto numérico
Fecha
Fecha/hora
Clave principal
Productos Idproducto
Auto numérico
Producto
Texto
Idlistaruta
Numérico
Factor
Numérico
Clave principal
Switchboard Items switchboardID
Numérico
ItemNumber
Numérico
ItemText
Texto
command
Numérico
Argument
Texto
Clave principal
Tipo Idtipo
Auto numérico
tipo
Texto
Clave principal
Unidad Idund
Auto numérico
unidad
Texto
Clave principal
81
3.2.3
Modelo entidad – relación en la aplicación
En general, nunca se debe poner toda la información que se tenga en una sola tabla. Por definición, mientras más campos e información se disponga en una tabla, más difícil será trabajar con ella. La mayor parte de las veces se debe dividir la información en dos o más tablas, y luego se le indicará a Access qué relación tienen las tablas entre sí. Se relacionan las tablas unas con otras mediante uno o más campos para que los registros de cada una coincidan. En una base de datos, se pueden crear varios tipos de relaciones. En una relación de las que se denominan uno a uno, cada registro de una tabla se relaciona sólo con un registro en la otra. Así por cada registro con la dirección de un cliente existe un solo registro de crédito. También puede haber relaciones llamadas uno a varios, esto significa que un registro en una tabla puede estar relacionado con uno o más registros en otra tabla. El registro de un cliente en la tabla clientes, puede estar relacionado con más de un registro de la tabla pedidos.55
Las relaciones que existen en la base de datos se dividen principalmente en tres bloques que forman la estructura principal:
•
Las relaciones para identificar el producto, sus componentes y rutas. Figura 3-12.
•
Las relaciones para identificar los pedidos. Figura 3-13.
•
Las relaciones para realizar la carga a planta de los pedidos y su posterior control durante la elaboración. Figura 3-14.
55
Ibid., p. 17-18.
82
Figura 3-12. Relaciones producto
Figura 3-13. Relaciones pedidos
83
Figura 3-14. Relaciones control Como se mencionó la base de datos en Access principalmente tiene la función de captura de datos mientras que la hoja de cálculo de Excel tiene la función de manipulación de los mismos. Pero hay que controlar lo que se envía a Excel para obtener datos veraces al momento de servir de apoyo en la toma de decisiones. Es por eso que Access también hace filtros para la información que está guardada en la base de datos por medio del uso de casillas de verificación, las cuales al estar marcadas o no, permiten controlar la información que se presenta en los formularios a medida que se navega por ellos. Es así, como esta condición de iniciado/terminado, sí/no, permite o habilita la aparición en pantalla de información (datos), como en el caso de los pedidos entregados o pendientes, que de calcularse cuando no son necesarios (por ejemplo pedidos entregados) aumentan el tamaño en bytes – espacio de disco – de la base de datos (archivo en Access).
84
Figura 3-15. Datos ruta P1 Como Excel procesa los datos pero Access los guarda, éste último puede también generar nuevos datos con los almacenados. Como es el caso del tiempo de entrega o tiempo de suministro y de la carga (ejecución + preparación).
Figura 3-16. Relaciones tiempo de suministro El cálculo del tiempo de suministro y la carga se realiza siguiendo el ejemplo 5.1 del libro de Machuca56, de donde traemos los datos de la ruta P1 (Ver Figura 3-15). Las relaciones en la aplicación para este fin se muestran en la figura 3-16. Las ecuaciones se explican a
56
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los servicios, Op cit., p. 160
85
continuación. (Sin tener un tiempo para la confección del pedido, la espera final ni la inspección.)
Figura 3-17. Datos centros de trabajo Tomando el tiempo de suministro como el intervalo de tiempo que transcurre entre el momento en que se solicita un pedido y el instante de su llegada, entendida ésta como el momento en que está disponible para ser utilizado, se desglosa este tiempo en sus distintos componentes, considerando las distintas operaciones necesarias para obtener cada ítem, los centros de trabajo en que se realizan, la capacidad diaria disponible en horas reales y en horas estándar. La figura 3-17 muestra los datos de los centros de trabajo para la ruta ‘P1’.
Desplazamiento a CT3 1 hr./8,5 (hr. /día) = 0,12 días Cola en CT3 = 4 hr./ 5,45 (he./día) = 0,73 días Preparación CT3 = 1 he./5,45,(he./día) = 0,18 días Ejecución O1 = 5,48 min.e x 186 un x 0.9124 = 15.48 he./5,45 (he./día) = 2,84 días Desplazamiento a CT2 1 hr./8,5 (hr. /día) = 0,12 días Cola en CT2 = 4 hr./ 6,5 (he./día) = 0,62 días Preparación CT3 = 1 he./6,5 (he./día) = 0,15 días Ejecución O2 = 1,04 min.e x 186 un x 0.9124/60 (min.e/he.) = 2,94 he = 2,94 he./6,5 (he./día) = 0,45 días Desplazamiento a CT3 2 hr./8,5 (hr. /día) = 0,24 días Cola en CT3 = 4 hr./ 5,45 (he./día) = 0,73 días Preparación CT3 = 1 he./5,45,(he./día) = 0,18 días Ejecución O3 = 1,53 min.e x 186 un x 0.9124/60 (min.e/he.) = 4,32 he./5,45 (he./día)= 0,79 días
Tiempo de suministro total =
Figura 3-18. Cálculo tiempo de suministro.
86
7,15 días
De esta forma, se ve claramente el desarrollo de cada proceso y los tiempos que ello implica; por ejemplo para obtener un lote de 186 unidades de P1 se comienza realizando la primera operación en el primer centro de trabajo según la ruta, continuando con la segunda y así sucesivamente. La suma de todos estos tiempos da lugar al tiempo de suministro total. (Ver Figura 3-18).
En la figura anterior el lado izquierdo muestra como se construyo en la aplicación los cálculos del lado derecho provenientes del apéndice 5A de Machuca57. La diferencia en los totales en el tiempo de suministro, se debe al uso de más cifras significativas en la aplicación creada.
Las ecuaciones para el cálculo de la carga se usan los datos de la ruta y los del centro de trabajo por donde pasa. La carga se calcula en horas estándar (h.e) para cada operación de la ruta tomando en cuenta para cada una los valores propios al centro de trabajo por donde pasa. Carga (h.e) = ejecución (h.e) + preparación (h.e) [tiempo medio de preparación del CT] donde ejecución (h.e) = unidades lote
57
x
[ tei (min) / vi ] x factor ruta / 60 (min).
Ibid., p. 190
87
En la ruta de ‘P1’ los valores para la carga por operación en cada centro de trabajo son: para la operación 01 de 16,15 h.e, para la operación 02 de 3,94 h.e, y para la operación 03 última de 5,33 h.e.
Figura 3-19. Carga por operación y duración. Observe en la figura anterior para las 3 operaciones de la ruta ‘P1’, el tiempo (duración) en días necesarios para elaborar el producto, y la carga que se genera por las 186 unidades requeridas.
3.3
ELEMENTOS OPERACIONALES
Tratamos ahora los elementos que se tuvieron en cuenta al momento de construir la aplicación para un mejor procesamiento de la información: una aproximación al job shop por medio de Johnson. La versión del Office en la que debe ejecutarse la aplicación, las barras de apoyo para complementar la aplicación, consideraciones sobre el funcionamiento de algunos formularios y su razón de ser.
3.3.1
Aproximación al Job-Shop
Aunque la aplicación se diseño para empresas que tienen configuración orientada al Flowshop. En el caso de empresas que suelen fabricar bajo pedido (job shop), se da la opción
88
por medio de Johnson para realizar una programación de los centros de trabajo que son utilizados en el desarrollo de una o varias operaciones en las rutas de algunos de los componentes.
Para filtrar los datos antes de enviarlos a Johnson en Excel, se tomó en cuenta lo siguiente: dada la complejidad para dejar de forma automática el cargar un centro de trabajo luego que el usuario eligiera uno, por la variedad de opciones que se deberían tener en cuenta, por ejemplo cargar el centro 3 al seleccionar el 2 o el 2 al seleccionar el 1, pues por variedad en la composición de las rutas algunas pasaran del centro 1 al 3, otras entraran al centro 2 sin pasar por el 1 o las que del centro 2 no pasan al 3 sino que regresan al 1.
Por la complejidad que se toma el tratar de desarrollar un algoritmo para que cubra esas y muchas otras condiciones se deja en manos del usuario, que sea él, quien conociendo los dos centros que desea analizar, seleccione y ordene los centros según requiera.
Internamente lo que se hizo en la aplicación fue realizar dos consultas, la segunda vinculada a la primera, donde la primera filtra para el centro de trabajo seleccionado las rutas y cargas de las operaciones iniciadas en el centro; la segunda busca entre las rutas resultado de la primera consulta, cuales pasan por el centro seleccionado en segundo lugar, mostrando el número de operación en el centro 2 y su respectiva carga.
Después de esto se envían a Excel los datos resultado de las consultas para ser ordenados según la regla de Johnson, como se mencionó en el capítulo anterior. 89
3.3.2
Sistema operacional.
La aplicación desarrollada funciona correctamente bajo el Office 2000 o superior. En prueba realizada al convertir el archivo en Access a una versión anterior y el ejecutarla en un computador con un Office inferior se presentaron problemas por el no-reconocimiento de algunos códigos o comandos.
Durante el desarrollo de este documento se ha hecho mención a la integridad de la planeación y en ese sentido a que deben tenerse unos datos resultado del mediano plazo que son elementos de entrada para éste el corto plazo, así como la información proveniente de la propia empresa del conocimiento de sus procesos: información del mediano plazo en el MRP y de la empresa en sus productos, rutas y centros de trabajo.
Independientemente de sí el sistema de programación de las operaciones sea manual o automático, debe ser preciso y apropiado. Esto significa que necesita una base de datos de producción con archivos de planificación y control. Existen tres tipos de archivos de planificación que son: (1) el archivo maestro de artículos, que contiene información sobre cada componente que la empresa fabrica o compra; (2) un archivo de rutas, que indica la marcha de cada componente por el centro de trabajo; y (3) un archivo maestro del centro de trabajo, que contiene la información sobre el centro de trabajo, como la capacidad y la eficiencia.58
58
HEIZER, y RENDER, Op cit., p. 207-208.
90
Como el objetivo de este proyecto es el de entregar una aplicación funcionando, se adecuaron los espacios para ingresar la información necesaria para que la planeación a corto plazo se realice. Es por eso que en el interior de la aplicación se creo un MRP modificado al no contener los tiempos de reposición, elemento éste que sí es importante en la planeación a mediano plazo.
Barras de menú y herramientas. La aplicación cuenta con una barra de menú y una barra de herramientas que ofrecen al usuario rapidez al momento de interactuar con la misma permitiéndole accesos directos a formularios y funciones.
Figura 3-20. Barra de Menú de la Aplicación
Figura 3-21. Barra de Herramientas de la Aplicación. Mostramos ahora el despliegue de los nombres que integran la barra de menú sin detallar en algunos submenú su contenido: Archivo, Edición, Registros, Información, General, Preparación pedido, Scheduling, Control, Ventana y para terminar la ayuda ‘?’ (símbolo interrogante)
91
Figura 3-22. Barra de Menú- Archivo y Edición. En el menú Archivo la opción compactar y reparar base de datos es útil para mantener el tamaño del archivo en espacio de disco acorde con los datos ingresados y evitar que se explosione por los diferentes cálculos que se realizan en su interior.
Figura 3-23. Barra de Menú- Registros, Información y General. En ‘Datos empresa’ del menú General se encuentra el formulario donde, como su nombre lo indica, se ingresan los datos propios a la empresa: nombre, nit, teléfonos, fax, etc.
92
Figura 3-24. Barra de Menú- Preparación Pedido. El menú preparación pedido contiene las divisiones del panel con el mismo nombre, y dentro se han colocado los submenú ‘Ingresar datos producto’ y ‘Ingresar datos ruta’ que se despliega al ubicarse sobre cada uno. Esto para reunir en un solo menú los datos que se deben ingresar a la base.
Figura 3-25. Barra de Menú- Scheduling. Los dos últimos submenús de la barra de menú, figura 3-26, son los convencionales que vienen en la barra de menús de los programas del office: ventana y ayuda. 93
Figura 3-26. Barra de Menú- Ventana y ?. Selección en formularios. Se crearon formularios donde se guía al usuario y se le da libertad de elegir o seleccionar los nombres de rutas u operaciones que vaya a iniciar por medio de formularios relacionados que crean formularios de selección, debido a la imposibilidad que ofrece Access como base de datos relacional de heredar características de las tablas padre relacionadas, como sí ocurre en las bases de datos orientadas a objetos.
Por eso, como no se logró cargar de forma automática las operaciones asociadas a una ruta o las rutas a un producto, se dio solución a esté inconveniente ofreciendo al programador la facilidad de que sea el mismo quien controle todo el proceso, decidiendo que se hace y en que momento.
Una ventaja divisada en esta solución es la posibilidad de indirectamente manejar la aplicación con los valores o cantidades reales por las existencias en los diferentes inventarios, teniéndose así, el no tener que iniciar una ruta desde la operación inicial si ya se encuentra algún material en proceso o el no tener que cargar todas las rutas para elaborar un producto al tener existencia de alguna.
94
4. LÓGICA DE LA APLICACIÓN
4
CAPÍTULO 4. LÓGICA DE LA APLICACIÓN.
Este capítulo inicia aclarando los conceptos teóricos que se tuvieron en cuenta para el desarrollo de algunos formularios de la aplicación. Luego, se describen las partes que componen la aplicación diseñada haciendo un recorrido sobre la misma. Terminando con algunos comentarios dirigidos al usuario sobre las posibilidades que tiene la aplicación desarrollada al no ser tan rigida.
4.1
CONCEPTOS TEÓRICOS DE LA APLICACIÓN
El proyecto se basa en la integración jerárquica de los diferentes niveles de la planeación. Para el corto plazo se hace referencia a los datos que provienen del nivel anterior según sean requeridos. Los conceptos teóricos se mencionarán según se aplicaron en la realización de los diferentes formularios que se muestran en la herramienta desarrollada. (Ver Figura 4-1)
95
Figura 4-1.
Formularios en la aplicación.
La figura 4-1 muestra para las tres divisiones principales de la aplicación: los formularios que tienen conceptos teóricos y el orden de aparición de los mismos. Para explicar mejor el concepto dentro de la estructura de cada formulario utilizamos el producto ‘Silla’. (Ver Figura 4-2)
96
Figura 4-2.
Diagrama de ensamblado para el producto ‘Silla’.
Partes/componestes. Los componentes y cantidades para una unidad del producto ‘Silla’ son: 1 2 3 4 5 6 7 8 9 10 11 12 13
F (1) G(1) E(4) A(1) E(4) C(1) B(1) E(4) D(1) RMa RMb RMc RMd
= Sub ensamble asiento patas delanteras = Sub ensamble respaldo patas traseras = Remaches = Marco asiento patas delanteras = Remaches = Asiento = Marco respaldo patas traseras = Remaches = Respaldo = Insumo = Insumo = Insumo = Insumo
cantidad 1 cantidad 1 cantidad 4 cantidad 1 cantidad 4 cantidad 1 cantidad 1 cantidad 4 cantidad 1
Los nombre de las partes o componentes que son usados en la elaboración de los diferentes productos ofrecidos por la empresa se ingresan a la base de datos. Teniéndose así, una lista
97
única que centraliza y codifica cada parte o componente que requiere la empresa para su normal funcionamiento, ya sean externos – insumos - o internos – componentes, subcomponentes, subensambles, etc.-
Estructura del producto. Con el listado de partes/componentes generado se realiza después el ‘armado’ de cada producto según sea su composición. Aquí se usa el concepto de lista materiales que hace una descripción clara y precisa de la estructura que caracteriza la obtención de un determinado producto mostrando claramente: •
Componentes que lo integran
•
Las cantidades necesarias de cada uno de ellos para formar una unidad del producto
•
La secuencia en que los distintos componentes se combinan para obtener un artículo intermedio o final.
En el formulario estructura producto por los enlaces entre los subformularios anidados que lo conforman, se puede armar el árbol del producto al desagregarse hasta cuatro niveles: producto, componente, subcomponente1 y subcomponente2. Diferenciando niveles de fabricación y montaje.
La división por niveles facilita la explosión de las partes requeridas MRP para un producto terminado particular. La estructura presenta la siguiente lógica:
98
Nivel 0 (Producto): El producto terminado, como resultado del ensamble de varios componentes; es el nivel más complejo de la lista.
Nivel 1 (Componentes): Los componentes unidos directamente a un elemento de nivel 0, identificando su tipo.
Nivel 2 (Componentesub1): Los componentes unidos directamente a un elemento de nivel 1, identificando su tipo
Nivel 3 (Componentesub2): Los componentes unidos directamente a un elemento de nivel 2, identificando su tipo.
Figura 4-3.
Árbol Estructura del producto ‘Silla’.
La figura muestra el árbol de estructura para el producto ‘Silla’ La forma como se obtiene el producto a partir de la unión de cada una de sus partes.
99
La aplicación se diseño para soportar productos que se desagreguen hasta un tercer nivel. Porque al incrementar en la base de datos el número de niveles aumenta la complejidad en su diseño, dificultando a su vez, la presentación completa del formulario en la pantalla debido a su tamaño.
La estructura diseñada es útil para presentar el árbol estructura del producto que se apoya en el concepto de Lista de materiales descrito anteriormente. (Ver Figura 4-3)
Centros de trabajo. Los centro y las operaciones que interviene en la realización del producto ‘Silla’son: 1. CORTE. 1. Medición. 2. Corte de pieza. 3. Mecanizado. 2. TROQUELADO. 4. Doblado pieza. 5. Lijado. 3. PERFORADO. 6. Medición. 7. Perforado. 4. TERMINADO. 8. Pintura. 9. secado. 5. ENSAMBLE. 10. Armado. 11. Remachado.
Detalle centros de trabajo. Los datos de los centros de trabajo para el ejemplo son:
100
id Nombre centro 1 2 3 4 5
CORTE TROQUELADO PERFORADO TERMINADO ENSAMBLE
Capacidad diaria horas reales 8,5 8,5 8,5 8 8
Capacidad diaria horas estándar
eficiencia utilización
8,16 6,50 5,44 6,12 6,62
0,98 0,9 0,8 0,9 0,92
Tiempo medio Tiempo preparación medio de (h.e) cola (h.e)
0,98 0,85 0,8 0,85 0,9
1 1 1 0,15 0,1
3 4 4 0 0
La capacidad para los centros de trabajo se determina en el mediano plazo mediante factores y tiempos. En la aplicación ‘HPP-S’ los factores se calculan en las hojas de ruta, y los tiempos por centros de trabajo para el cálculo de la capacidad se ingresan en el formulario detalles centro de trabajo. los cuales definidos a continuación: •
La capacidad diaria en horas reales (hr) es igual una jornada normal de trabajo.
•
Utilización (Factor de Utilización – U). Se define como cociente entre el número de horas productivas desarrolladas (Nhp) y el número de horas reales (Nhr) de trabajo por periodo. (día)
•
Eficiencia (Factor de eficiencia – E). Cuando una actividad u operación se repite y es ejecutada por distintas máquinas u operarios puede desarrollar distintas eficiencias, dando lugar a un número diferente de horas productivas en función de quien las ejecute. Por tal razón se hace necesario la aplicación de una medida homogénea basada en los valores de hr (horas reales), U (Utilización) y de E de referencia, al objeto de poder compararlas. Dicha unidad se denomina hora estándar (he) y supone un valor de 1 para los valores de Eficiencia y Utilización.
•
El tiempo de preparación es el necesario para ajustar y disponer la maquinaria e instalaciones bajo las condiciones adecuadas para llevar acabo una nueva operación
101
tras haber desarrollado otra diferente, y este valor podrá variar para una operación en función de la cual sea previamente realizada por lo que se suele emplear el tiempo de
preparación medio. •
El tiempo de cola es el que sufre el pedido en cada uno de los centros de trabajo por los que ha de pasar hasta que se realicen todas las operaciones que sean necesarias. Como se asume que la empresa tiene un conocimiento del funcionamiento de sus centros de trabajo emplearemos el tiempo de cola medio general para cada uno.
Máquinas paralelas. Aplica el concepto de máquinas paralelas explicado en el capítulo dos, y se trabajó bajo la idea de máquinas por ser esta la situación más tratada por los diferentes autores consultados. Hemos realizado el montaje de este concepto ampliándolo de máquinas hasta las operaciones. Esta definición se puede implementar para la situación de operaciones específicas que se realizan en determinado centro. Detallándose para las rutas que pasan por el centro de trabajo las operaciones paralelas que se presentan en éste, y para cada operación de la ruta los diferentes tiempos de ejecución que
se presentan según la
‘máquina’ donde se realice.
Hoja de ruta. Para cada parte/componente del producto, que se elabora en la planta se toma la secuencia de las operaciones, en cada uno de los centros de trabajo por los que pasa, asignándose a cada secuencia un nombre representativo que la hace única en la base de datos. Además se registran los tiempos estándar (tiempo de ejecución), tiempo de desplazamiento, y el factor 102
de aprovechamiento, que se emplean para evaluar los requerimientos de capacidad para cada CT. (En la aplicación no se incluye en esta hoja los tiempos de espera o cola por trabajar con tiempos medios asociados directamente a los centros de trabajo.)
El tiempo de ejecución es el tiempo necesario para desarrollar una operación una vez se procese en el centro de trabajo correspondiente.
El tiempo de desplazamiento es el que incluye el traslado de los materiales que requiere el pedido hasta el centro de trabajo.
El aprovechamiento es la proporción de referencias que cumplen los requisitos de calidad en cada una de las operaciones y es igual a (1-defectuosos)
Normalmente de cada una de las operaciones, que forman la ruta de un componente o de un producto final, se obtiene una cierta proporción de elementos que no cumplen los requisitos de calidad. Esta proporción, expresada en tanto por uno, se denomina Factor de defectuosas (d) y su complementario (1-d), determina el Factor de Aprovechamiento. En el caso de que cualquier operación tenga un ‘d’ > 0, habría que corregir el TCjk (tiempo de carga de cada componente o producto final ‘j’ en un centro de trabajo ‘k’), dado que la obtención de un elemento “bueno” originaría en realidad más carga que la calculada, es decir habría que incluir las que han generado las piezas defectuosas en cada una de las operaciones.
103
Figura 4-4.
Incidencia de los factores en la obtención de una unidad
En la figura 4-4, se observa como los diferentes valores de aprovechamiento (ai) por operación generan que para obtener 1 unidad de ‘P1’ se debe emitir una orden por 1,10 unidades. Esto es, en caso de ser requeridas 100 unidades de ‘P1’ hay que emitir una orden por 110 unidades.
Para el producto ejemplo se identifican 7 hojas de rutas que son: Silla F G A C B D
= Silla = Asiento patas delanteras = Respaldo patas traseras = Marco asiento patas delanteras = Asiento = Marco respaldo patas traseras = Respaldo
En cada hoja de ruta se detallan las siguientes operaciones: Ruta A A A A A A
# oper 1 2 3 4 5 6
Centro de trabajo CORTE CORTE CORTE TROQUELADO TROQUELADO PERFORADO.
Operación Medición. Corte pieza. Mecanizado. Doblado pieza. Lijado. Medición.
104
t ejec
t desplaz
aprovech
A A A B B B B B B B B B C C C C C C D D D D D D F F G G
Silla Silla
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
PERFORADO. TERMINADO. TERMINADO. CORTE CORTE CORTE TROQUELADO TROQUELADO PERFORADO. PERFORADO. TERMINADO. TERMINADO. CORTE CORTE PERFORADO. PERFORADO. TERMINADO. TERMINADO. CORTE CORTE PERFORADO. PERFORADO. TERMINADO. TERMINADO. ENSAMBLE. ENSAMBLE. ENSAMBLE. ENSAMBLE. ENSAMBLE. ENSAMBLE.
Perforado. Pintura. secado. Medición. Corte pieza. Mecanizado. Doblado pieza. Lijado. Medición. Perforado. Pintura. Secado. Medición. Corte pieza. Medición. Perforado. Pintura. Secado. Medición. Corte pieza. Medición. Perforado. Pintura. Secado. Armado. Remachado. Armado. Remachado. Armado. Remachado.
Los datos de tiempos de ejecución, tiempos desplazamiento y aprovechamiento se dejan a libertad del usuario para ingresar los que valores que desee.
Rutas producto. Cada parte/componente, que no sea insumo, de la estructura de un producto se relaciona con una hoja de ruta específica. Las hojas de ruta asociadas a partes componentes en cada uno de los diferentes niveles de la estructura forman el árbol de rutas del producto. 105
Este árbol de rutas del producto (Ver Figura 4-5) es la forma en que se expresa en diferentes niveles de fabricación y montaje las hojas de rutas. La codificación por niveles facilita la explosión de las necesidades a partir del elemento final y su lógica es la siguiente:
Nivel 0 (producto): Unión de las rutas necesarias para obtener el producto terminado. Esta ruta es esencial en la elaboración del producto.
Figura 4-5.
Árbol de Rutas para del producto ‘Silla’.
Nivel 1 (Ruta de ensamble): Los componentes unidos directamente a un elemento de nivel 0, identificados por su nombre.
106
Nivel 2 (Subruta de subensamble): Los componentes unidos directamente a un elemento de nivel 1, identificados por su nombre.
Nivel 3 (Subruta de componente): Los componentes unidos directamente a un elemento de nivel 2, identificados por su nombre.
Pedidos. Los pedidos planificados (pedidos que se entregarán en fechas futuras) pueden ingresarse desde el mismo instante de su solicitud, quedando a opción del programador el definir el momento de inicio de cada uno. La aplicación tiene la opción de mostrar para todos los pedidos ingresados, los días de retraso que tiene cada uno contra la fecha de entrega dada al cliente, esto en las opciones pedidos pendientes hasta hoy y pedidos pendientes a la fecha.
Secuenciación. El secuenciamiento tiene que ver con el desarrollo de un orden exacto de procesamiento de tareas. En la práctica, los programas de producción son difíciles de mantener, si no imposibles, debido a las condiciones cambiantes; Las máquinas se descomponen, se enferma un operario calificado, los materiales no llegan a tiempo y así sucesivamente.59
Teniendo en cuenta lo anterior se ofrecen al programador de la producción tres herramientas principales: reglas de prioridades, el método de asignación y la regla de
59
SCHROEDOER, Op cit., p. 388.
107
Johnson como elementos en los cuales se puede apoyar para dar rápida respuesta a las condiciones dinámicas de una planta de producción.
Reglas de prioridad. Una regla de prioridad específica qué trabajo debe seleccionarse para realizarlo después, entre una cola de trabajos. Cuando se dispone de una máquina o de un trabajo, se aplica la regla de despacho y se selecciona la tarea siguiente. Una regla de despacho resulta, por lo tanto, dinámica por naturaleza y se ajusta constantemente a las condiciones cambiantes. Las reglas de despacho sirven para responder la pregunta inmediata del trabajador ¿qué hago ahora?60
En el desarrollo de esta aplicación tomamos las siguientes reglas explicadas en el capítulo dos: FCFS, EDD, LOT y SOT, para con ellas secuenciar las cargas en cada uno de los diferentes centros de trabajo ingresados en la base de datos.
Método húngaro. Como se mencionó en el Capítulo dos, para operaciones paralelas la programación de n tareas en m centros de trabajo o máquinas se vuelve matemáticamente muy compleja, por esto cuando el caso lo permite, la utilización de los modelos basados en programación matemática pueden proporcionar una solución teóricamente óptima al problema. El más empleado por los diferentes autores es el Algoritmo de Asignación de kuhn, que parte de
60
Ibid, p. 403.
108
una matriz formada, en nuestro caso, por los tiempos para realizar cada operación en cada instalación.
Este es el método que se incluyó en el desarrollo de la aplicación para dar respuesta a éste tipo de programación. La asignación mediante el método húngaro se realiza partiendo de una matriz que refleja los tiempos que provocaría la asignación de una determinada operación Oi, a una máquina Mj.
El planeamiento matemático de un problema de estas características es un caso particular de programación binaria. No obstante, existe un algoritmo específico que facilita su resolución, el algoritmo húngaro o de Kuhn, que, partiendo de una matriz de costos, para nosotros de tiempos, escoge un elemento, y sólo uno, por fila y por columna, de modo que se minimicen los tiempo totales. El procedimiento que lleva a conseguir una solución óptima para realizar la asignación se menciono en el capítulo dos, y el algoritmo que realiza la asignación en Excel como se detalla en Machuca61, se presenta en el anexo B códigos apartado archivos Excel.
Este método presenta algunos inconvenientes que lo hacen excesivamente rígido. Entre ellos cabria destacar, por una parte, que de los distintos trabajos, sólo uno puede ser asignado a cada CT o instalación. Dado que aquellos tendrán distinta duración, esto
61
MACHUCA DOMÍNGUEZ, José Antonio et al. Aspectos tácticos y operativos en la producción y los servicios, Op cit., p. 299.
109
implicará desperdiciar las instalaciones más eficientes si a éstas se asigna un trabajo corto. Por otra parte, no se contempla la posibilidad de que los trabajos se puedan subdividir, puesto que la asignación es biunívoca.
Regla de Johnson. La programación de n tareas en dos máquinas mencionada en el Capítulo dos, la incluimos en la aplicación al desarrollar para ésta la regla de Johnson, que parte del tiempo de ejecución de cada pedido en cada máquina, este método heurístico pretende hacer mínimo el tiempo necesario para concluir todos ellos y, por tanto, el tiempo ocioso de las máquinas. El algoritmo creado para realiza la regla de Johnson en Excel, se presenta en el anexo B códigos apartado archivos Excel.
Producción planeada. La planeación se realiza para cada centro de trabajo bajo el concepto de la carga vertical explicado en el Capítulo dos, controlando así la capacidad del centro. El control de la capacidad pretende “gestionar y controlar la capacidad de los centros de trabajo y reconocer las desviaciones significativas, proporcionando así la información necesaria para tomar las medidas correctoras oportunas”. Sólo así se podrán mantener actualizados los factores de eficiencia y utilización y la capacidad disponible, permitiendo desarrollar una planificación de capacidad confiable. Dada, además, la influencia que las colas de espera tienen en los tiempos de suministro de las referencias fabricadas, el control de capacidad resulta básico
110
para su mantenimiento actualizado y, en consecuencia, para una adecuada planificación y control de la producción62
Esta planeación es la que viene del mediano plazo por el CRP. Como la planeación a corto plazo se realiza por periodos se creó el formulario Producción Planeada por CT para suplir los datos del nivel anterior.
Producción planeada por CT. La programación finita supera las desventajas de los sistemas basados en reglas ofreciendo cálculos y gráficos interactivos al programador. Este sistema se caracteriza por dar la capacidad al programador de hacer cambios basados en la información de última hora. Estos programas aparecen normalmente en diagramas de Gantt. El programador tiene flexibilidad para manejar cualquier situación, incluyendo cambios en los pedidos, trabajos o máquinas.63 Esta flexibilidad se ofrece al usuario en este formulario por medio de los escenarios y el archivo vinculado en Excel.
4.2
APLICACIÓN ‘HPP-S’
Para el diseño de la aplicación ‘HPP-S’ se consideró lo siguiente:
62
Ibid p. 322.
63
HEIZER, y RENDER, Op cit., p. 244.
111
•
La aplicación esta diseñada para funcionar en una PYME manufacturera, que tenga sus procesos estandarizados.
•
Como ayuda puntual la mayoría de los formularios cuentan con botones de información que orientan al usuario en el uso de estos. Así como, botones en algunos para avanzar entre los formularios relacionados de forma rápida.
•
Para el desarrollo de la aplicación se consideró que un pedido es una orden de trabajo sin importar la cantidad de referencias que compongan el pedido.
Figura 4-6.
Detalle relaciones entre paneles de control. 112
La secuencia de pasos o divisiones que contiene la aplicación según los paneles de control para acceder a los diferentes formularios que contiene se muestra en la figura 4-6.
Figura 4-7.
Panel principal
La exploración de la aplicación se inicia desde el panel principal que contiene los tres procesos macro para funcionamiento de la misma: Preparación pedido, Scheduling y Control (Ver Figura 4-7.)
4.2.1
Preparación pedido.
Figura 4-8.
Panel preparación pedido 113
Al hacer clic en el botón Preparación pedido en el panel principal se despliega el panel que se muestra en la figura 4-8, que contiene los vínculos a los formularios Clientes y Pedidos como a los paneles Datos productos y Datos ruta.
La relación entre los productos de la empresa y los pedidos de los clientes, genera el flujo de información que se apoya en los registros de la base de datos. Información sobre: clientes, productos, rutas y centros de trabajo. Por eso, al iniciar la aplicación ‘HPP-S’ se debe ingresar esta información.
Clientes.
Figura 4-9.
Formulario clientes
Este formulario Clientes, figura 4-9, aparece después de oprimir en botón Ingresar clientes en el panel Preparación pedido, recoge información sobre cada uno de los clientes. Lo 114
importante para el desarrollo de la aplicación es la vinculación de éstos con la empresa por medio de los pedidos.
Figura 4-10. Panel datos producto El panel ‘Datos productos’, figura 4-10, contiene los vínculos a los formularios Productos, Partes/componentes y Estructura producto.
Productos
Figura 4-11. Formulario productos
115
El botón Producto del panel anterior activa el formulario de la figura 4-11, en éste se ingresan el nombre y descripción del producto. Dándose a cada producto un identificador que lo hace único en la base de datos.
El símbolo ‘ ‘ que aparece en el extremo izquierdo de cada formulario o subformulario indica la fila o registro que se encuentra activo en el momento.
Partes/componentes.
Figura 4-12. Formulario partes/componentes El botón Partes/componentes del panel ‘Datos producto’ abre el formulario de la figura 412, en éste se ingresan el nombre y tipo del elemento usado en la elaboración de los diferentes productos. Dándose a cada elemento un identificador que lo hace único en la
116
base de datos. La columna tipo es para clasificar el elemento según sea en: insumo, componente y ensamble, tipos que aparecen en la aplicación por defecto, los cuales pueden ser modificados o complementados con otros según la necesidad del usuario.
Estructura producto.
Figura 4-13. Formulario estructura producto. El botón Estructura producto del panel ‘Datos producto’ abre el formulario de la figura 413, en éste se forma el árbol del producto o estructura del producto al armar el producto con las diferentes partes/componetes ingresadas en el formulario Partes/componentes, teniendo
117
presente los diferentes niveles para su composición. Indicando las cantidades requeridas y las unidades respectivas.
Figura 4-14. Panel datos ruta. El panel ‘Datos ruta’, figura 4-14, contiene los vínculos a los formularios Centros de trabajo, Detalles centros de trabajo, Máquinas paralelas CT, Hoja de ruta y Rutas producto.
Centros de trabajo.
Figura 4-15. Formulario centros de trabajo. 118
El botón Centros de trabajo del panel anterior activa el formulario de la figura 4-15, en éste se ingresan el nombre de cada centro de trabajo. Dándose a cada uno un identificador que lo hace único en la base de datos.
Detalle centros de trabajo.
Figura 4-16. Formulario detalle centros de trabajo. El botón Detalle centros de trabajo del panel ‘Datos ruta’ abre el formulario, figura 4-16, en que se ingresan los detalles de los centros de trabajo usados en la planta: horas reales de trabajo (capacidad diaria), la eficiencia, utilización y los nombres de las operaciones realizadas en dicho centro de trabajo. Además del el tiempo medio de preparación y el tiempo medio de cola, ambos en horas estándar. 119
Máquinas paralelas.
Figura 4-17. Formulario máquinas paralelas CT. El botón Máquinas paralelas CT del panel ‘Datos ruta’ abre el formulario, figura 4-17, en donde se ingresan los valores en minutos para las operaciones que son paralelas en el centro de trabajo seleccionado. Hay posibilidad de ingresar valores hasta para nueve operaciones paralelas.
Hoja de ruta. El botón Hoja de ruta del panel ‘Datos ruta’ abre el formulario, figura 4-18, donde se ingresan para cada ruta las operaciones necesarias para su elaboración, los centros de 120
trabajo por donde pasa y los valores en minutos para el tiempo de ejecución y el tiempo de desplazamiento.
Figura 4-18. Formulario hoja de ruta. Además del aprovechamiento por operación que genera el factor de aprovechamiento de la ruta. Cada ruta ingresada queda identificada con un número y nombre que la hacen única en la base de datos. En el formulario se muestran también la cantidad de operaciones de la ruta, la suma de los tiempos de ejecución y desplazamiento por todas las operaciones ingresadas asociadas a la ruta.
121
Rutas producto. El botón Rutas producto del panel ‘Datos ruta’ abre el formulario, figura 4-19, donde para un producto ingresado se seleccionan las rutas necesarias para su elaboración, teniendo en cuenta los diferentes niveles de su estructura. Los elementos que son insumo para el producto terminado en el árbol de rutas del producto quedarán con un factor igual a 1, pues no tiene asociada una ruta por ser de origen externo a la planta.
Figura 4-19. Formulario rutas producto.
122
Pedidos. El botón Ingresar pedidos del panel ‘Preparación pedido’ abre el formulario, figura 4-20, donde se relacionan los productos con los clientes en cantidades por ellos suministradas. Aquí se identifica cada pedido con un número único en la base de datos, se detalla la composición del mismo y se ingresan las fechas respectivas de emisión, entrega programada y entrega real. Desde este formulario se puede averiguar las cantidades necesarias por cada componente para cumplir con el número de productos que el cliente requiere. Además de, conocer la cantidad de días necesarios para la elaboración del mismo.
Figura 4-20. Formulario pedidos.
123
Cantidad requerida. Al hacer clic en el botón Cantidad requerida de la figura 4-20 aparece el formulario cantidad requerida por pedido, figura 4-21, el cual muestra las cantidades por tipo (partes, componentes e insumos), con sus unidades que son requeridas para elaborar los productos en las cantidades que aparecen en el pedido.
Figura 4-21. Formulario cantidad requerida. Es de aclarar que las cantidades de partes/componentes que aparecen para un producto, puede diferir de las cantidades que están en el pedido. Esto porque, al tenerse en la base de datos registrado el factor de utilización por rutas asociadas a componentes e incluso hasta las rutas de ensamble, las cantidades mostradas, son las que se deben emitir como entrada
124
al proceso para que luego en la salida se obtengan las cantidades requeridas por el cliente. Contando con un margen de error establecido por los imperfectos.
Observe como las cantidades a emitir para los productos, P1 (186) y Silla (26), son mayores a las solicitadas por el cliente en su pedido, P1 (170) y Silla (25).
Tiempo de entrega.
Figura 4-22. Formulario tiempo de entrega. Oprimir el botón Tiempo de entrega de la figura 4-20, muestra el formulario Tiempo de entrega el cual realiza la carga horizontal, es decir, carga todos los tiempos de las operaciones involucradas en la orden de trabajo real para producir su programa de duración en el tiempo. Lo que se hace, es cargar todas las tareas en los centros de trabajo necesarios
125
a lo largo del horizonte de planificación, siendo la sumatoria de todas las duraciones, el tiempo total en días para la elaboración del pedido desde la fecha actual tomada como cero.
Figura 4-23. Habilitar macros. Hacer clic en el botón Programación detallada del formulario Tiempo de entrega, realiza el envió de la información en Access del pedido actual al archivo en Excel donde se procesaran los datos según corresponda. Como los archivos en Excel tienen todos una programación vinculada en Visual Basic – Macros – al iniciar el programa aparece el cuadro de mensaje de la figura 4-23, al cual hay que responder haciendo clic en el botón Habilitar macros.
Programación detallada. El propósito de la carga hacia el futuro es determinar la fecha de terminación aproximada de cada trabajo. La figura 4-25, es un detalle de la figura 4-24 donde muestra las fechas de inicio y finales para cada operación asociada a la ruta que compone. Basándose en los límites de capacidad de cada centro de trabajo por los cuales pasa.
126
Figura 4-24. Programación detallada en Excel. La figura 4-24 es la imagen del archivo ‘detallada’ en Excel que ofrece al programador una gráfica de Gantt, que representar el desarrollo de las diferentes operaciones a realizar para el lote en función del tiempo.
Figura 4-25. Programación detallada – detalle inicio y fin operaciones. La gráfica generada es sin solapamientos, es decir, se trabaja bajo la hipótesis de que no se podrá dar comienzo a ninguna actividad hasta que se haya finalizado la operación anterior sobre todas y cada una de las unidades a fabricar. Esta situación concuerda con el concepto del flow shop donde hay una secuencia establecida para la elaboración de los productos En
127
estas condiciones, el gráfico de Gantt resultante da lugar a un tiempo total para el tamaño del pedido.
Se deja al lector comprobar, que al ingresar una fecha en el campo fecha de entrega real del formulario Pedido al oprimir los botones de comando Cantidad requerida y Tiempo de entrega en los formularios que aparecen no se muestra ningún valor. Esto para evitar que se generen dentro de la base de datos valores que ya no son útiles ¿para qué necesito mantener cantidades requeridas o tiempo de programación para un pedido que ya entregue?. De esta forma no se cargara la base con información innecesaria, conservando rapidez al usar el mínimo espacio de memoria.
4.2.2
Scheduling.
Figura 4-26. Panel scheduling. El panel ‘Scheduling’, figura 4-26, contiene los vínculos a los paneles de control Asignación y Secuenciación.
Asignación. El panel ‘Asignación’, figura 4-27, contiene los vínculos a los formularios Carga pedidos, Carga operaciones y Control pedidos. 128
Para el desarrollo del Scheduling, hemos dividido el proceso en dos momentos que son: la asignación o direccionado de las órdenes de trabajo a cada CT en la planta y el secuenciamiento posterior para determinar el orden de realización de cada una.
Figura 4-27. Panel Asignación. Como diversos centros de trabajo son capaces de procesar los nuevos pedidos de los clientes, ¿cómo determinar cuáles trabajos deben asignarse a cada centro?. Por medio del programa de producción podemos manejar los productos con margen de cómo y cuándo deberán terminarse. Además, se cuenta con la trayectoria o ruta del proceso de cada elemento, de manera que conocemos cuáles son los centros que deben intervenir.
Carga pedidos. El botón Carga pedidos del panel ‘Asignación’ abre el formulario, figura 4-28, donde la carga de cada pedido se realiza al marcar la casilla de verificación como iniciado en la tabla Control pedidos, Control detalle pedido y en Control de ruta.
129
Figura 4-28. Formulario carga pedidos. Si se selecciona alguna fila o registro de una tabla y no se marca como iniciada, la aplicación no generará los valores de la carga respectiva pues está no se reconocerá como iniciada.
El programador frente al formulario Carga pedidos, debe iniciar (cargar) los pedidos, los productos que lo componen, y las operaciones que conforman cada uno de las rutas. Es decir, debe descender desde el pedido hasta las rutas para poder calcular en el formulario siguiente los valores de las cargas para los centros de trabajo donde se realizan las operaciones.
130
Carga operaciones.
Figura 4-29. Formulario carga operaciones. El botón Carga operaciones del panel ‘Asignación’ abre el formulario, figura 4-29, donde para las rutas marcadas como iniciadas en el formulario anterior se selecciona la operación marcándo la casilla de verificación como iniciado o terminada según sea el caso.
El programador selecciona una ruta de entre las rutas marcadas como iniciadas (tabla Rutas iniciadas) y selecciona en la tabla Control operaciones cual de las operaciones asociadas a la ruta elegida (tabla Operaciones), va a cargar para su manufactura marcando la casilla de iniciada.
Si se selecciona la operación de una ruta y no se la marca como iniciada la aplicación no mostrara en los pasos siguientes la carga para el centro de trabajo en el cual se procese.
131
Control pedidos.
Figura 4-30. Formulario control pedidos. El botón Control pedidos del panel ‘Asignación’ abre el formulario, figura 4-30, donde aparecen las acciones realizadas en los formularios anteriores, en este punto el programador puede verificar que aparecen iniciadas las operaciones seleccionadas.
Pasamos a aclarar lo anterior. Recuerde que el símbolo ‘ ‘ que aparece en el extremo izquierdo de cada subformulario indica la fila que se encuentra activa en el momento, así es como en la figura 4-28, formulario carga pedidos, se muestran los detalles para el pedido 2, (que se compone de dos productos ‘Silla’ y ‘P1’), que ambos están iniciados y que, en el
132
control ruta para el producto ‘Silla’ aunque tiene seleccionadas varias rutas solo se dan como iniciadas una: asiento con 37 como cantidades a emitir.
El formulario Control pedidos, figura 4-30, muestra en la tabla rutas producto para el pedido ‘1’, producto ‘Silla’, y ruta ‘8’ con nombre ‘asiento delantero’ que de 124 unidades sólo quedan pendientes 8 unidades. Cantidad con la cual se calculará la nueva carga para el centro de trabajo que utilice la operación marcada como iniciada en ésta ruta. El formulario Control pedidos permite la actualización de las cantidades a realizar por operación ofreciéndole al usuario dinamismo en la realización de su trabajo, ya sea para modificar cantidades en el periodo o para actualizar datos en el nuevo periodo a programar.
Dejamos para el usuario, por ejemplo desmarcar el producto ‘P1’ del formulario Carga pedidos y observar lo que pasa en los formularios Carga operaciones y Control pedidos, así como el marcar o desmarcar rutas en el mismo formulario Carga Pedidos, y el marcar o desmarcar operaciones en el formulario Carga operaciones. Regresando al formulario Control pedidos para apreciar que efectos tienen estos cambios, con esto, si no se dan por iniciadas adecuadamente las rutas en la secuencia descrita, no se llevará de forma conveniente el sistema de control.
Cargas operaciones iniciadas. Hacer clic en el botón Cargas operaciones iniciadas del formulario Control pedidos. Abre el formulario de la figura 4-31 que muestra para todas las operaciones iniciadas: la cantidad
133
de unidades a elaborar, la carga por operación, la duración de cada una, su nombre y pedido al cual esta vinculada, entre otros datos también útiles para el programador.
Figura 4-31. Formulario cargas operaciones iniciadas. Observe que para el caso mencionado pedido ‘1’ ruta ‘asiento delantero’ con ‘8’unidades pendientes solamente se realizará la operación ‘39’. Compruebe como cambian los valores para la duración y carga modificando en el formulario Control pedidos figura 4-30, el valor de ‘8’ cantidad de unidades pendientes.
134
Secuenciación.
Figura 4-32. Panel secuenciación. El panel ‘Secuenciación’ de la figura 4-32, contiene los vínculos a los formularios Reglas de prioridad, Método húngaro y Regla de Johnson.
Prioridades.
Figura 4-33. Formulario reglas de prioridad. El botón Reglas de prioridad del panel ‘Secuenciación’ abre el formulario, figura 4-33, donde aparece para el centro de trabajo seleccionado el siguiente detalle de datos: pedidos 135
asignados al CT, número de operación, la fecha de entrega, el nombre de la ruta y la carga por operación.
Para el caso de la figura el centro seleccionado es ‘Corte’. La información de la tabla ‘Operaciones cargadas’ es enviada al archivo ‘Prioridades’ en Excel luego de oprimir el botón ‘Reglas de prioridad’ para que sea procesada y mostrada al usuario en la forma como se presenta en la figura 4-34 para el mismo centro de trabajo seleccionado.
Figura 4-34. Reglas de prioridad en Excel. En el desarrollo de esta aplicación tomamos las siguientes reglas para locales: FCFS, EDD, LOT y SOT, para con ellas secuenciar las cargas en cada uno de los diferentes centros de trabajo ingresados en la base de datos.
136
El archivo en Excel ‘Prioridades’, tiene en una hoja de cálculo para cada prioridad, otra hoja de cálculo ‘reglas’ (resumen) que se muestra en la figura 4-34, y un gráfico que representa las datos contenidos en el hoja ‘reglas’.
Detallando la relación entre las figuras 4-33 y 4-34, se observa que los datos enviados son presentados en diferente orden según la regla que los evalúa. Por ejemplo los datos del
pedido 2 operación 5 ruta 112, bajo la regla FCFS se ubica de primero, en la regla SOT esta segundo, en la regla EDD está último y en la regla LOT está de tercero.
Las prioridades son un método que el programador puede usar para secuenciar las órdenes de trabajo y definir así su orden en la elaboración. Adicionales a las reglas nombradas se presentan otras dos opciones: pedidos pendientes hasta hoy y pedidos pendientes a la fecha.
En el submenú Prioridades que se encuentra dentro de Secuenciación en el menú Scheduling de la barra de menú de la aplicación, se encuentran las opciones que el programador puede usar para priorizar las órdenes.
137
Figura 4-35. Formulario pedidos pendientes a la fecha. En pedidos pendientes hasta hoy se puede conocer por sus días de retraso hasta el día actual los pedidos. En pedidos pendientes a la fecha se seleccionan los pedidos pendientes de entrega hasta una fecha específica ingresada por el usuario ofreciéndole la posibilidad de buscar los pedidos hasta la fecha que desee sin importar si es anterior o posterior a la fecha actual, mostrándose también el número de sus días de retraso hasta la fecha ingresada. (Ver Figura 4-35)
138
Método húngaro.
Figura 4-36. Formulario método húngaro. El botón Método húngaro del panel ‘Secuenciación’ abre el formulario, figura 4-36, donde aparece para el centro de trabajo seleccionado los diferentes tiempos de ejecución de la operación en cada una de las máquinas paralelas. En el caso mostrado el centro de trabajo es ‘1 – Corte’.
Esté método tiene asociado el concepto de máquinas paralelas descrito anteriormente por el cual se obtienen diferentes valores de carga para una misma operación según las máquinas donde se realice.
139
Lo anterior solo aplica para los centros de trabajo en los que se hayan ingresado datos en las operaciones que presentan actividades paralelas. Como es el caso de las operaciones 8 y 5 que se realizan en el centro de trabajo 1 ‘Corte’, (Ver Figura 4-17)
Figura 4-37. Método húngaro en Excel – hoja de cálculo asignar. La información de la tabla ‘Matriz de cargas’ en el formulario Método húngaro, es enviada a Excel al archivo ‘Asignación’ luego de oprimir el botón ‘Método húngaro’. Los datos se copian en la hoja de cálculo llamada ‘asignar’,(Ver Figura 4-37). Para ejecutar el método el usuario debe oprimir el botón ‘Ejecutar método húngaro’ el cual muestra los resultados generados por el algoritmo en la hoja de cálculo llamada ‘Hoja 1’.
La figura 4-38 muestra al usuario la asignación resultado del proceso para los datos del centro de trabajo seleccionado en la figura 4-37.
140
Figura 4-38. Método húngaro en Excel – hoja de cálculo Hoja1.
Figura 4-39. Formulario regla de Johnson.
141
Regla de Johnson. El botón Regla de Johnson del panel ‘Secuenciación’ abre el formulario, figura 4-39, que aplica para las rutas que tienen operaciones que deben pasar a través de dos máquinas o centro de trabajo en el mismo orden. Así en el formulario se relacionan las cargas del centro de trabajo 1 y el centro de trabajo 2 para las rutas que cumplen la condición anterior.
2
3
2
3
Figura 4-40. Johnson en Excel La información de la tabla ‘johnson’ del formulario Regla de Johnson, es enviada al archivo ‘johnson’ en Excel luego de oprimir el botón ‘Regla de Johnson’. Los datos se copian en la hoja de cálculo llamada ‘johnson’, y para que se corra el algoritmo, el usuario debe oprimir el botón ‘johnson’. Los resultados generados se muestran en la hoja de cálculo llamada ‘Hoja 1’ (Ver Figura 4-40).
142
La figura 4-40 muestra al usuario el orden -columna A- resultado del proceso para los datos de los centros de trabajo seleccionados en la figura 4-39. En el gráfico de la figura anterior se han colocado los números de fila (2,3) de la columna A, sobre los espacios de carga (barras horizontales) para indicar la secuencia de los pedidos en los CT. En el archivo ‘Johnson’ de Excel, estos números no aparecen dentro de la gráfica.
4.2.3
Control.
Figura 4-41. Panel control. El panel ‘Control’, figura 4-41, contiene los vínculos a los formularios Producción planeada, Producción real e Input-output.
Producción planeada. El formulario Producción planeada por CT, figura 4-42, muestra el detalle de cargas actuales asignadas al centro de trabajo seleccionado en el periodo de análisis. Este formulario ofrece al programador de la producción la posibilidad de observar como se afectan los próximos cinco periodos a partir del actual con el total de carga pendiente, para realizar una programación más real de este centro.
143
Cambiando para el centro deseado el valor de hr (horas reales de trabajo) en la tabla ‘Input, output planificado’, se modifican los valores para los escenarios en la tabla ‘Comportamiento del ct a cinco periodos’ donde para los próximos periodos se suponen condiciones normales de trabajo.
Figura 4-42. Formulario producción planeada. Como apoyo adicional se ofrecen en Excel otras opciones para ejecutar una programación más dinámica y óptima. El botón ‘Gráfico de Gantt’ envía los datos del centro seleccionado en el formulario al archivo ‘carga_finita’ de Excel. Donde los datos se copian en la hoja de cálculo llamada ‘cg_finita’, (Ver Figura 4-43), para con estos realizar los cálculos y las gráficas que se presentan en las hojas de cálculo que conforman el archivo.
144
Figura 4-43. Carga finita en Excel – hoja de cálculo ‘cg_finita’. Como la programación finita supera las desventajas de los sistemas basados en reglas ofreciendo cálculos y gráficos interactivos al programador. La hoja de cálculo mostrada en la figura 4-43. permite al usuario interactuar con ella al modificar los datos de la columna F ‘carga_operación’, mostrando en el grafico de la misma hoja los efectos que estos cambios tienen.
De igual manera se permite interactuar en la hoja de cálculo ‘Hoja2’, figura 4-44, al cambiar las horas reales normales de trabajo. Observando por cifras y gráficamente los efectos que tales cambios tienen en los cinco próximos periodos teniendo estos condiciones normales de trabajo.
145
Figura 4-44. Carga finita en Excel – hoja de cálculo ‘Hoja2’.
Figura 4-45. Formulario producción real.
146
Producción real. El botón Producción real del panel ‘Control’ abre el formulario, figura 4-45, en el cual se ingresan los datos reales de funcionamiento, terminadas todas las operaciones en los centros de trabajo a los que se les programó actividad al inicio del periodo.
Input-output.
Figura 4-46. Formulario control input-output. Para terminar el botón Input – Output del panel ‘Control’ abre el formulario, figura 4-46, que ofrece al programador conocer el funcionamiento del centro de trabajo seleccionado en diferentes periodos. Este informe de control sobre el análisis de insumos y productos es de utilidad para hacer el seguimiento de los desempeños de cada uno de los centros de trabajo.
Al oprimir el botón ‘Informe input/Output’ del formulario Control input-output envían los datos en la tabla control Input – Output del centro seleccionado al archivo ‘in-out’ en Excel. Donde los datos se copian en la hoja de cálculo activa, figura 4-47, y se procesan para mostrar la información importante para el centro seleccionado en las columnas H hasta la P, 147
además de mostrar gráficas que representan lo planeado y la real para ambos casos el input y el output.
Figura 4-47. Control in-out en Excel. Otros. Para finalizar se enumeran algunos elementos de apoyo a la aplicación. La opción Productos en el menú General, de la barra de menú aplicación, abre la tabla productos desde donde se pueden modificar o borrar los productos o componentes de productos en sus diferentes niveles.
El botón ‘Acerca de’ en el panel principal, activa la ventana, figura 4-48, donde aparecen: El título del trabajo de grado y los autores. El botón salir del mismo panel cierra la aplicación y Access.
148
Figura 4-48. Formulario acerca de. 4.3
INFORMACIÓN ADICIONAL PARA EL USUARIO.
Para los productos así como para los centros de trabajo se ha dispuesto un formulario en el que se pueden ingresar todos los nombres de los productos y centros de trabajo que utiliza la planta. Después de listados y según se necesite se puede buscar: el producto o el CT. Detallándose la composición de una referencia particular o ingresar los valores de funcionamiento para el cálculo de su capacidad.
Al realizar el árbol de rutas para un producto es necesario ingresar como mínimo la ruta de ensamble del mismo, ruta de nivel más alto. De no ser así, la cantidad de elementos componentes del producto necesarios para cumplir con un pedido no se presentan, pues, por los factores de utilización de las rutas, las cantidades requeridas son el resultado de multiplicaciones sucesivas entre los factores de las rutas según los niveles ingresados al producto y la cantidad de partes ingresadas en la estructura del producto. Por eso se debe asociar al producto la ruta de ensamble, siendo esta la unión de las otras rutas que conforman el producto. Al no existir un factor en este nivel la aplicación asocia un valor de cero a esta posición dándose así multiplicaciones de datos por cero. 149
El formulario Cargas operaciones iniciadas figura 4-31 permite conocer para todas las operaciones iniciadas: el valor de la carga, el centro de trabajo por el que pasa, la duración en días de la misma, el nombre de la ruta, el nombre y el identificador de la operación, el número del pedido al que corresponde, la fecha de entrega del mismo, la cantidad a elaborar, y el detalle de los tiempos de: desplazamiento al centro de trabajo, la cola de espera, la preparación en el centro de trabajo, y la ejecución de la operación. Estos datos pueden ser utilizados por el usuario para realizar cualquier otro tipo de ordenamiento de las operaciones en el centro de trabajo analizado.
En las diferentes opciones presentadas para realizar la secuenciación o la carga de los pedidos a los centros de trabajo se trabaja siempre con los mismos datos, carga por operación, esto se puede confirmar al comparar los valores de carga por operación que aparecen en los diferentes formularios presentados en la aplicación (Ver Figuras 4-33, 4-39, 4-42), contra los valores que aparecen el formulario cargas iniciadas por operación. (Ver Figura 4-31).
Los formularios Carga operaciones y Control pedido permiten elegir los componentes del producto o elegir las operaciones en la ruta del componente que en realidad se necesitan para elaborarlo. Esto es poder programar actividadas de producción reflejo real del avance en la elaboración de las diferentes partes/componentes o produtos de la empresa según se manufacturan, teniendo en cuenta las presedencias e inventarios existentes. La aplicación se diseñó de manera tal que sea el usuario quien controle los momentos de inicio y fin de las 150
operaciones de producción, ésto por medio de las casillas de verificación, generando un control sobre todas las operaciones realizadas en la planta.
En la Aplicación ‘HPP-S’ no presenta la ventana Base de datos cuando se abre la misma para proteger su estructura interna (tablas, consultas, formularios, informes, macros o módulos), de modificaciones como: cambio en los nombres, eliminación, alteración de relaciones, edición de formularios, de informes, etc., que afectarían el optimo funcionamiento de la aplicación. Sin embargo, la ventana Base de datos se puede activar al oprimir la tecla ‘F11’ permitiendo al usuario trabajar sobre la propia estructura de la base de datos. Recuerde que al trabajar con programas de gestión de bases de datos, como es el caso de Access, no existe la opción Save (Guardar), referida a los datos de la aplicación, debido a que los cambios en los datos se van guardando siempre en el dispositivo de almacenamiento permanente.
La aplicación esta diseñada para trabajar ubicada en la carpeta ‘Aplicación’ en el disco C del PC (C:\Aplicación). Instalarla en otra dirección provocaría problemas para el envió de la información del archivo ‘HPP-S’en Access a los diferentes archivos vinculados en Excel. Por otra parte, los archivos en Excel cuentan con botones para la creación de los elementos de apoyo en cada uno de ellos, como: gráficos y cuadros de texto. Esto para evitar que se afecte su funcionamiento por eliminaciones accidentales de alguno de ellos.
151
CONCLUSIONES
5
CAPÍTULO 6. CONCLUSIONES.
La herramienta informática diseñada permite al programador realizar la planeación de la producción a corto plazo de una manera rápida y precisa en empresas manufactureras con fabricación por lotes o series cortas que tengan sus procesos normalizados. Y para las que no, les ayuda a ordenar su información sobre productos, rutas, operaciones y centros de trabajo al ofrecer una estructura coherente y de fácil manejo.
La aplicación ofrece al usuario diferetes opciones para la programación de la producción de acuerdo a las condiciones del momento en que esta se realiza. Para nuevas condiciones de programación, la aplicación por su flexibilidad permite incluir éstas nuevas necesidades producción en el sistema para gerenerar así, una nueva programación de la producción actualizada.
La carga de los trabajos a la planta en la aplicación se realiza para cada uno de los centros de trabajos, el usuario programador puede entonces identificar cual es el centro con mayor carga, dedicando así, más tiempo para buscar opciones de programación en dicho centro.
Los archivos en Excel funcionan independientes a la base de datos. Permitiendo realizar modificaciones en los valores de estos archivos sin que se altere la información en el 152
archivo de Access, ofreciendose así una herramienta de apoyo a nivel académico para los cursos de producción.
La aplicación desarrollada calcula para un CT específico el valor de la carga asignada al mismo, independiente de los demás CT. Permitendose así, una aproximación a la programación en configuraciones por lotes enfocadas al proceso o job shop.
La apliacción desarrollada aporta aporta a las PYMES manufactureras que no tengan un orden en su información: •
Centralización de la información.
•
Codificación de productos, partes/componentes, rutas, operaciones, centros de trabajo.
•
Unificación de normbres o terminos usados al interior de la empresa, haciendo más clara la comunicación de la información.
•
La realización de catalogos de: productos con sus partes/componentes, rutas, productos con sus rutas. Esto por medio de los impresos que se pueden realizar de la información en la base de datos.
Para reclamos por defectos de fabricación de algún producto o para la trazabilidad de los mismos, en la aplicación queda el historial de pasos que se siguieron para la realización de cada una de las partes que componen un producto ternimado. Historial unico para cada uno de los pedidos manufacturados en la planta.
153
BIBLIOGRAFÍA
6
CAPÍTULO 7. BIBLIOGRAFÍA.
BRIMELE, Ricardo. ¡EXCEL FÁCIL!. México : Prentice Hall, 1994. 286 p.
CHASE, Richard B, y AQUILANO, Nicolás J. Dirección y administración de la producción y de las operaciones. 6 ed. Mexico : Mc Graw Hill, 1995.
CHASE, Richard B, AQUILANO, Nicolas J, y JACOBS, F. Robert. Administración de la producción y de las operaciones; manufactura y servicios. 8 ed. Colombia : Mc Graw Hill, mayo 2000. 885 p.
EVERETT, E. Adam. Jr, y RONALD, J. Ebert. Administración de la producción y las operaciones. 4 ed. Mexico : Prentice Hall, 1994. 739 p.
HALVORSON, Michael. Microsoft Visual Basic 4 : paso a paso. Colombia : Mc Graw Hill, 1996. 372 p.
HEIZER, Jay y RENDER Arry. Dirección De la Producción. Madrid : Mc Graw Hill, 1997.
KORTH, Henry F y SILBERSCHATZ, Abraham. Fundamentos de bases de datos. 2 ed. España : Mc Graw Hill, 1995. 739 p.
KRAJEWSKI, Lee y RITZMAN, Larry. Administración de operaciones o producción : Estrategia y análisis. México: Pearson educación, 2000. p.762.
MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección de operaciones : Aspectos estratégicos en la producción y los servicios. España : Mc Graw Hill, 1995. p. 143
154
-------- : Aspectos tácticos y operativos en la producción y los servicios. España : Mc Graw Hill, 1995. p. 267 – 487.
MOTOA, T. Gerardo Algunos apuntes sobre el uso de la simulación en el diseño de sistemas de fabricación. Madrid junio 1994. Universidad Politécnica de Madrid. Disam.
-------- Sistemas de Planificación Jerárquicos: Aplicaciones a la gestión de producción y de proyectos. Cali. Escuela de ingeniería industrial y estadística. Universidad del Valle. 41 P.
NEIBAUER, Alan. Access 2000 para gente ocupada. Mexico : Mc Graw Hill, 2000. 312 p.
NOORI, Hamid y RADFORD Rusell. Administración De Operaciones y Producción. Santafé de Bogotá : Mc Graw Hill, 1997.
RUMBAUGH, James et al. Modelado y diseño orientado a objetos. 4 ed. México : Prentice may, 1995
SARRIEGUI, José María, SERRANO, Nicolás, MURO, Ivan. Aprenda Microsoft Access 97 como si estuviera en primero. San Sebastián, Octubre 1998 Escuela Superior de Ingenieros Industriales, Universidad De Navarra
SCHROEDER, Roger G. Administración De Operaciones : toma de decisiones en la función de operaciones. 3 ed. Mexico : Mc Graw Hill, 1992. 503 p.
SENN, James A : Análisis y diseño de sistemas de información. 2 ed. México : Mc Graw Hill, 1992. p 181.
SIPPER, Daniel y BUFFIN L., Robert. Planeación y Control De La Producción. Mexico : Mc Graw Hill, 1998.
VOLLMANN, Thomas E. Sistemas De Planificación Y Control De La Fabricación. 3 ed. España : Irwin, 1994. 155
ANEXOS
7
ANEXO A. MANUAL DEL USUARIO
Instrucciones de manejo rápido 1. Para el ingreso de nuevos productos haga clic en Productos del menú Preparación pedido, e ingrese las partes/componentes y la estructura en el submenú ingresar datos producto del menú Preparación.
2. Para el ingreso de nuevos clientes haga clic ingresar clientes del menú Preparación pedido.
3. Para el ingreso de nuevos pedidos haga clic en ingresar pedidos del menú Preparación pedido.
4. Cargue los pedidos a la planta oprimiendo en carga pedidos del submenú Asignación en el menú Scheduling y seleccione el pedido, los productos que lo componen e inicie las rutas necesarias.
156
5. Para determinar que operaciones cargar en las rutas iniciadas en el punto anterior. Oprima carga operaciones del submenú Asignación en el menú Scheduling.
6. Verifique las rutas y operaciones iniciadas a los pedidos al hacer clic en control pedido del submenú Asignación en el menú Scheduling.
7. Oprima secuenciación en el menú Scheduling y evalué las ordenaciones posibles de las cargas en cada centro de trabajo según las opciones presentadas.
8. Determine la capacidad de cada centro de trabajo al oprimir producción planeada del submenú control en el menú Scheduling.
9. Registre la producción real al hacer clic en producción real del submenú control en el menú Scheduling.
10. Conozca el informe input-output por centro de trabajo presionando control input-output del submenú control en el menú Scheduling.
Datos ejemplo general Para trabajar con la aplicación ‘HPP-S’ debe instalarse en su computador: 1. Descomprima el archivo ‘
Aplicación HPP-S.exe ’ en el disco C de su computador.
2. La aplicación se debe descomprimir en C:\Aplicación como se muestra en la figura A-1.
157
Figura A-1.
Dirección para descomprimir Aplicación HPP-S.exe
En la figura A-1 presione el botón ‘Unzip’ para iniciar la instalación. Terminada esta debe aparecer la figura A-2 que confirma la perfecta instalación de la herramienta en el disco C del computador.
Figura A-2.
Instalación terminada.
3. En la carpeta ‘Aplicación’ Busque el archivo ‘
HPP-S ’ y ábralo para entrar a la
aplicación. 4. Navegue a través de las diferentes ventanas que se presentan en la aplicación para manejarla según su necesidad. 5. La aplicación cuenta con botones de información en sus diferentes formularios según sea necesario para ayudar o guiar al usuario en su manejo.
158
Ingreso de datos ejemplos particulares El ingreso de datos se realizará con casos de productos de estructuras cortas para producto y rutas, con el objeto de mostrar como se ingresan los datos en las estructuras iniciales pues, para los siguientes los pasos, son los mismos. Como apoyo para el usuario en la comprensión de la metodología usada se ingresará el producto 'P1' que Machuca64 usa en el ejemplo 5.1. Se dará información que guíe al usuario en lo básico dejando que esté lea la información en los botones que contienen los formularios que active.
Ingreso productos. El producto P1 tiene la siguiente estructura producto Componentes Componentes1 111 P1
211 112 212
1. Ingrese las partes / componentes del producto P1 al oprimir Partes/componentes en el submenú ingresar datos producto del menú Preparación.
64
MACHUCA DOMÍNGUEZ, José Antonio et al.
Dirección De Operaciones : Aspectos tácticos y
operativos en la producción y los servicios. España : Mc Graw Hill, 1995. p. 160
159
2. Ingrese la estructura del producto P1 al oprimir la estructura en el submenú ingresar datos producto del menú Preparación. Debe verse al final como se muestra en la figura A-3 Árbol de Estructura del producto ‘P1’.
Figura A-3.
Árbol de Estructura del producto ‘P1’.
Si coloca el cursor en la casilla ‘111’ de la tabla componentes, Figura A-3, observe que no aparece nada en la tabla componentes1.
3. En el formulario ‘Detalle centro de Trabajo’ ingrese los datos por centro de trabajo. [Preparación pedido/ ingresar datos ruta/ detalles centros de trabajo].
160
4. Rutas. Siguiendo con el producto P1 del ejemplo, los datos de la ruta de ensamble ‘P1’ queda como se muestra en la figura A-4. [preparación pedido/ ingresar datos ruta/ Hoja de ruta].
El producto ‘P1’ tiene dos rutas más ‘P1’ y ‘112’.
Figura A-4.
Operaciones ruta ‘P1’.
5. Rutas por producto. Con las tres rutas, la estructura de rutas del producto ‘P1’ se aprecia en la figura A-4. siendo estas las que tienen un factor diferente de 1. [preparación pedido/ ingresar datos ruta/ Rutas producto].
161
Figura A-5.
Árbol de rutas del producto ‘P1’.
Observe en la figura A-5, como solo las rutas tienen un factor diferente de 1
Ingreso pedidos. 6. Active el formulario clientes. [Preparación pedido/ ingresar clientes] e ingrese los datos.
7. Active el formulario pedidos. [Preparación pedido/ ingresar pedidos] seleccione el cliente y detalle la composición del pedido.
162
Elaboración pedidos. 8. Cargue (asigne) los pedidos, productos, rutas y operaciones a los centros de trabajo en los formularios carga pedidos [Scheduling /Asignación /carga pedidos] y carga operaciones [Scheduling /Asignación /carga operaciones].
9. Ordene (secuencie) los pedidos usando las opciones para secuenciación ofrecidas [Scheduling /secuenciación ].
Control pedidos. 10. Controle las instalaciones programando y haciendo seguimiento de las actividades de producción por cada centro de trabajo según opciones del submenú control. [Scheduling /Control]. Salir. 11. Para salir oprima el botón salir del panel principal.
ANEXO B. CODIGOS Formularios en Access. Formulario acerca de Option Compare Database Private Sub Aceptar_Click() DoCmd.Close End Sub
Formulario asignación Option Compare Database Private Sub Comando12_Click() MsgBox "El botón MÉTODO HÚNGARO envía al archivo asignación de excel la " _
163
& "información de la tabla MATRÍZ DE DATOS para que sea presentada según " _ & "la asignación del MÉTODO HÚNGARO.", vbInformation, "INFORMACIÓN" End Sub Private Sub Comando9_Click() MsgBox "Al seleccionar el centro en la tabla CENTROS DE TRABAJO el nombre del mismo " _ & "aparece en el campo Centro Seleccionado. "_ & "La tabla MATRÍZ DE DATOS muestra los diferentes valores de cargas para " _ & "cada una de las máquinas en el centro seleccionado que tiene máquinas.", vbInformation, "INFORMACIÓN" End Sub Private Sub ASIGNACIÓN_Click() On Error GoTo Err_ASIGNACIÓN_Click Dim stDocName As String stDocName = "ASIGNACIÓN" DoCmd.RunMacro stDocName Exit_ASIGNACIÓN_Click: Exit Sub Err_ASIGNACIÓN_Click: MsgBox Err.Description Resume Exit_ASIGNACIÓN_Click End Sub Private Sub MAQUINA__CT_Click() On Error GoTo Err_MAQUINA__CT_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "MAQUINAS CT" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_MAQUINA__CT_Click: Exit Sub Err_MAQUINA__CT_Click: MsgBox Err.Description Resume Exit_MAQUINA__CT_Click End Sub
Formulario cargas_operaciones_iniciadas Option Compare Database Private Sub DETALLES_CT_Click() On Error GoTo Err_DETALLES_CT_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "centro_trabajo" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_DETALLES_CT_Click: Exit Sub Err_DETALLES_CT_Click: MsgBox Err.Description
164
Resume Exit_DETALLES_CT_Click End Sub Private Sub Form_Activate() Me.Refresh End Sub Private Sub Comando10_Click() On Error GoTo Err_Comando10_Click Screen.PreviousControl.SetFocus DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 Exit_Comando10_Click: Exit Sub Err_Comando10_Click: MsgBox Err.Description Resume Exit_Comando10_Click End Sub Private Sub imprimir_cargas_oper_inic_Click() On Error GoTo Err_imprimir_cargas_oper_inic_Click Dim stDocName As String stDocName = "cargas_operaciones_iniciadas" DoCmd.OpenReport stDocName, acPreview Exit_imprimir_cargas_oper_inic_Click: Exit Sub Err_imprimir_cargas_oper_inic_Click: MsgBox Err.Description Resume Exit_imprimir_cargas_oper_inic_Click End Sub
Formulario centro de trabajo Option Compare Database Private Sub Comando9_Click() MsgBox "En la tabla OPERACIONES REALIZADAS EN EL CENTRO DE TRABAJO ingrese " _ & "los nombres de estas para el centro de trabajo activo en el campo NOMBRE CENTRO del formulario." _ & "Para la utilización de MÁQUINAS dentro del centro de trabajo los datos de los tiempos de ejecución " _ & "de estas se ingresan para cada operación en particular en el formulario MÁQUINAS CT " _ & "por ser estas únicas a la capacidad de la máquina y el producto procesado.", vbInformation, "INFORMACIÓN" End Sub Private Sub Comando12_Click() MsgBox "Ingrese los datos pedidos en los campos en blanco. " _ & "El campo ' Capacidad diaria horas estándar ' se calcula automático como resultado de la multiplicación de " _
165
& "la capacidad diaria horas reales, la eficiencia y la utilización.", vbInformation, "INFORMACIÓN" End Sub Private Sub capacidad_diaria_horas_reales_AfterUpdate() capacidad_diaria_horas_estándar = [capacidad diaria horas reales] * [eficiencia] * [utilización] End Sub Private Sub eficiencia_AfterUpdate() capacidad_diaria_horas_estándar = [capacidad diaria horas reales] * [eficiencia] * [utilización] End Sub Private Sub Form_Error(DataErr As Integer, Response As Integer) MsgBox "No se permiten nombres de Centros de Trabajo repetidos", vbCritical, "ERROR EN CENTROS DE TRABAJO" On Error GoTo Err_LISTADO_CT_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CT" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_LISTADO_CT_Click: Exit Sub Err_LISTADO_CT_Click: MsgBox Err.Description Resume Exit_LISTADO_CT_Click End Sub Private Sub Form_Open(Cancel As Integer) DoCmd.GoToRecord , , acNewRec End Sub Private Sub utilización_Exit(Cancel As Integer) capacidad_diaria_horas_estándar = [capacidad diaria horas reales] * [eficiencia] * [utilización] End Sub Private Sub LISTADO_CT_Click() On Error GoTo Err_LISTADO_CT_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CT" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_LISTADO_CT_Click: Exit Sub Err_LISTADO_CT_Click: MsgBox Err.Description Resume Exit_LISTADO_CT_Click End Sub
166
Formulario clientes Option Compare Database Private Sub Form_Error(DataErr As Integer, Response As Integer) MsgBox "No se permiten nombres de clientes repetidos", vbCritical, "ERROR EN NOMBRE CLIENTE" End Sub
Formulario componentes producto MsgBox "Para BORRAR alguna parte/componente o todo un producto." _ & "Haga clic en productos en el menú General de la barra de menú aplicación " _ & "una vez abierta la tabla presione en el signo (+) de la izquierda para descender “_ & "en la estructura del producto seleccionado.", vbInformation, "INFORMACIÓN" End Sub Private Sub Form_Open(Cancel As Integer) DoCmd.GoToRecord , , acLast End Sub Private Sub arbol_Click() On Error GoTo Err_arbol_Click Dim stDocName As String stDocName = "árbol_producto" DoCmd.OpenReport stDocName, acPreview Exit_arbol_Click: Exit Sub Err_arbol_Click: MsgBox Err.Description Resume Exit_arbol_Click End Sub Private Sub INFORMACION_Click() MsgBox "Ingrese el producto o búsquelo por su código o nombre, desplazándose entre los registros u "_ & "oprimiendo el botón Buscar en la barra de herramientas de la aplicación después de tocar la casilla " _ & " donde desea realizar la búsqueda Defina la estructura del producto utilizando los. " _ & " niveles componentes, componentes1 o componentes2 según requiera", vbInformation, "INFORMACIÓN " End Sub
Formulario componentes subformulario Option Compare Database Private Sub elemento_DblClick(Cancel As Integer) On Error GoTo Err_elemento_DblClick Dim lngelemento As Long If IsNull(Me![elemento]) Then Me![elemento].Text = ""
167
Else lngelemento = Me![elemento] Me![elemento] = Null End If DoCmd.OpenForm "lista_materiales", , , , , acWindowNormal, NewRecord Me![elemento].Requery If lngelemento 0 Then Me![elemento] = lngelemento Exit_elemento_DblClick: Exit Sub Err_elemento_DblClick: MsgBox Err.Description Resume Exit_elemento_DblClick End Sub Private Sub elemento_GotFocus() Me.Refresh End Sub Private Sub elemento_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub Private Sub Form_Activate() Me.Refresh End Sub Sub Form_Current() Dim ParentDocName As String On Error Resume Next ParentDocName = Me.Parent.Name If Err 0 Then GoTo Form_Current_Exit Else On Error GoTo Form_Current_Err Me.Parent![componentes1_Subformulario].Requery End If Form_Current_Exit: Exit Sub Form_Current_Err: MsgBox Error$ Resume Form_Current_Exit End Sub Private Sub unidad_DblClick(Cancel As Integer) On Error GoTo Err_unidad_DblClick Dim lngunidad As Long If IsNull(Me![unidad]) Then Me![unidad].Text = ""
168
Else lngunidad = Me![unidad] Me![unidad] = Null End If DoCmd.OpenForm "unidades", , , , , acWindowNormal, NewRecord Me![unidad].Requery If lngunidad 0 Then Me![unidad] = lngunidad Exit_unidad_DblClick: Exit Sub Err_unidad_DblClick: MsgBox Err.Description Resume Exit_unidad_DblClick End Sub Private Sub unidad_GotFocus() Me.Refresh End Sub Private Sub unidad_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub
Formulario componentes1 subformulario Option Compare Database Private Sub elemento_DblClick(Cancel As Integer) On Error GoTo Err_elemento_DblClick Dim lngelemento As Long If IsNull(Me![elemento]) Then Me![elemento].Text = "" Else lngelemento = Me![elemento] Me![elemento] = Null End If DoCmd.OpenForm "lista_materiales", , , , , acWindowNormal, NewRecord Me![elemento].Requery If lngelemento 0 Then Me![elemento] = lngelemento Exit_elemento_DblClick: Exit Sub Err_elemento_DblClick: MsgBox Err.Description Resume Exit_elemento_DblClick End Sub Private Sub elemento_GotFocus() Me.Refresh End Sub Private Sub elemento_NotInList(NewData As String, Response As Integer)
169
MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub Private Sub Form_Activate() Me.Refresh End Sub Sub Form_Current() Dim ParentDocName As String On Error Resume Next ParentDocName = Me.Parent.Name If Err 0 Then GoTo Form_Current_Exit Else On Error GoTo Form_Current_Err Me.Parent![componentes2_Subformulario].Requery End If Form_Current_Exit: Exit Sub Form_Current_Err: MsgBox Error$ Resume Form_Current_Exit End Sub Private Sub unidad_DblClick(Cancel As Integer) On Error GoTo Err_unidad_DblClick Dim lngunidad As Long If IsNull(Me![unidad]) Then Me![unidad].Text = "" Else lngunidad = Me![unidad] Me![unidad] = Null End If DoCmd.OpenForm "unidades", , , , , acWindowNormal, NewRecord Me![unidad].Requery If lngunidad 0 Then Me![unidad] = lngunidad Exit_unidad_DblClick: Exit Sub Err_unidad_DblClick: MsgBox Err.Description Resume Exit_unidad_DblClick End Sub Private Sub unidad_GotFocus() Me.Refresh End Sub Private Sub unidad_NotInList(NewData As String, Response As Integer)
170
MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub
Formulario componentes2 subformulario Option Compare Database Private Sub elemento_DblClick(Cancel As Integer) On Error GoTo Err_elemento_DblClick Dim lngelemento As Long If IsNull(Me![elemento]) Then Me![elemento].Text = "" Else lngelemento = Me![elemento] Me![elemento] = Null End If DoCmd.OpenForm "lista_materiales", , , , , acWindowNormal, NewRecord Me![elemento].Requery If lngelemento 0 Then Me![elemento] = lngelemento Exit_elemento_DblClick: Exit Sub Err_elemento_DblClick: MsgBox Err.Description Resume Exit_elemento_DblClick End Sub Private Sub elemento_GotFocus() Me.Refresh End Sub Private Sub elemento_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub
Private Sub Form_Activate() Me.Refresh End Sub Private Sub unidad_DblClick(Cancel As Integer) On Error GoTo Err_unidad_DblClick Dim lngunidad As Long If IsNull(Me![unidad]) Then Me![unidad].Text = "" Else lngunidad = Me![unidad] Me![unidad] = Null End If DoCmd.OpenForm "unidades", , , , , acWindowNormal, NewRecord
171
Me![unidad].Requery If lngunidad 0 Then Me![unidad] = lngunidad Exit_unidad_DblClick: Exit Sub Err_unidad_DblClick: MsgBox Err.Description Resume Exit_unidad_DblClick End Sub Private Sub unidad_GotFocus() Me.Refresh End Sub Private Sub unidad_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub
Formulario control input output Option Compare Database Private Sub Comando12_Click() MsgBox "El botón INFORME INPUT/OUTPUT envía al archivo in-out de Excel la " _ & "información de la tabla CONTROL INPUT-OUTPUT para que sea presentada según " _ & "las desviaciones acumuladas y medias para los periodos enviados." _ & "Oprima el botón CONTROL DE PRODUCCIÓN para actualizar el avance " _ & "de los pedidos según las operaciones y rutas asociadas.", vbInformation, "INFORMACIÓN" End Sub Private Sub Comando9_Click() MsgBox "Al seleccionar el centro en la tabla CENTROS DE TRABAJO el nombre del mismo " _ & "aparece en el campo Centro Seleccionado. "_ & "La tabla CONTROL INPUT-OUTPUT muestra el comportamiento del centro seleccionado " _ & "en los periodos ingresados a la base de datos.", vbInformation, "INFORMACIÓN" End Sub Private Sub IN_OUT_Click() On Error GoTo Err_IN_OUT_Click Dim stDocName As String stDocName = "IN_OUT" DoCmd.RunMacro stDocName Exit_IN_OUT_Click: Exit Sub Err_IN_OUT_Click: MsgBox Err.Description Resume Exit_IN_OUT_Click End Sub Private Sub CONTROL_PRODUCCION_Click() On Error GoTo Err_CONTROL_PRODUCCION_Click
172
Dim stDocName As String Dim stLinkCriteria As String stDocName = "CONTROL PRODUCCIÓN" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_CONTROL_PRODUCCION_Click: Exit Sub Err_CONTROL_PRODUCCION_Click: MsgBox Err.Description Resume Exit_CONTROL_PRODUCCION_Click End Sub
Formulario control operaciones Option Compare Database Private Sub Comando12_Click() MsgBox "En la tabla CONTROL OPERACIONES seleccione " _ & "el número de identificación de las operaciones por " _ & "ruta que aparecen en la tabla RUTAS OPERACIONES necesarias." _ & " para elaborar el componente Los campos iniciada y terminada se usan para" _ & " controlar el avance de las operaciones seleccionadas" End Sub Private Sub Comando13_Click() MsgBox "Todas las casillas de control de estado de avance en las diferentes " _ & "tablas deben ser marcadas en iniciado o terminado cuando las operaciones o actividades" _ & " se han empezado o finalizado. Pues de esto depende el cargar o no los " _ & "diferentes centros de trabajo con las operaciones adecuadas." End Sub Private Sub Comando9_Click() MsgBox "La tabla RUTAS INICIADAS, muestra todas las rutas que fueron marcadas " _ & "como iniciadas en la tabla CONTROL RUTA del formulario CONTROL PEDIDOS. " _ & "En la columna 'pend' el usuario puede ingresar las cantidades pendientes, que permiten " _ & "cálcular la carga respectiva. " _ & "En la casilla de estado el usuario puede marcar cuando la ruta esta terminada "_ & "La tabla RUTAS OPERACIONES muestra todas las operaciones asociadas a la ruta " _ & "seleccionada en la tabla RUTAS INICIADAS con su número único de identificación, " _ & "el centro de trabajo por donde pasa y la operación realizada en el mismo" End Sub Private Sub CONTROL_PEDIDOS_Click() On Error GoTo Err_CONTROL_PEDIDOS_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CONTROL PEDIDOS" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_CONTROL_PEDIDOS_Click: Exit Sub Err_CONTROL_PEDIDOS_Click:
173
MsgBox Err.Description Resume Exit_CONTROL_PEDIDOS_Click End Sub Private Sub CONTROL_PRODUCCIÓN_Click() On Error GoTo Err_CONTROL_PRODUCCIÓN_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CONTROL PRODUCCIÓN" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_CONTROL_PRODUCCIÓN_Click: Exit Sub Err_CONTROL_PRODUCCIÓN_Click: MsgBox Err.Description Resume Exit_CONTROL_PRODUCCIÓN_Click End Sub Private Sub Form_Activate() Me.Refresh End Sub
Formulario control pedidos Option Compare Database Private Sub Comando12_Click() MsgBox "La tabla RUTAS PRODUCTO muestra todas las rutas asociadas al producto seleccionado "_ & "en la tabla CONTROL DETALLE PEDIDO " _ & "En la tabla CONTROL RUTA el usuario selecciona " _ & "las rutas por producto que aparecen en la tabla RUTAS PRODUCTO " _ & "necesarias para elaborar el producto. cargándose automáticamente las" _ & " cantidades requeridas por esa ruta para ese producto. " _ & " La casilla iniciado puede ser modificada a voluntad del usuario" End Sub Private Sub Comando13_Click() MsgBox "Todas las casillas de control de estado de avance en las diferentes " _ & "tablas deben ser marcadas en iniciado cuando las operaciones o actividades" _ & " se han empezado. Pues de esto depende que más adelante aparezcan o no en " _ & "los formularios siguientes dentro de la aplicación." End Sub Private Sub Comando9_Click() MsgBox "La primera tabla CONTROL PEDIDOS muestra para cada pedido pendiente " _ & "el número, la fecha de entrega dada al cliente y el estado del mismo. " _ & "Siendo usado este último campo por el usuario para indicar cuando " _ & "el pedido esta iniciado marcando la casilla. "_ & "En la tabla CONTROL DETALLE PEDIDO se muestra la composición por productos " _ & "del pedido seleccionado en la tabla CONTROL PEDIDOS y el estado para cada" _ & " uno. Siendo usados estos últimos campos por el usuario para indicar cuando" _
174
& " el producto esta iniciado y/o terminado marcando la casilla respectiva." End Sub Private Sub Control_Operaciones_Click() On Error GoTo Err_Control_Operaciones_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CONTROL OPERACIONES" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Control_Operaciones_Click: Exit Sub Err_Control_Operaciones_Click: MsgBox Err.Description Resume Exit_Control_Operaciones_Click End Sub
Formulario control producción Option Compare Database Private Sub Comando12_Click() MsgBox "La tabla RUTAS PRODUCTO muestra la información necesaria para las " _ & "rutas iniciadas asociadas al producto seleccionado en la tabla DETALLE PEDIDOS. "_ & "La columna 'Pend' es para ingresar las cantidades pendientes o faltantes del componente " _ & "terminado el periodo. Con este nuevo valor se determina la carga de los centros de trabajo " _ & "para el periodo siguiente. "_ & "La tabla OPERACIONES RUTAS muestra para cada ruta seleccionada en la tabla anterior " _ & "las operaciones iniciadas. El campo TERMINADO en ambas tablas es para indicar la " _ & "terminación de la ruta o la operación al marcar la casilla.", , "INFORMACIÓN 2" End Sub Private Sub Comando13_Click() MsgBox "Todas las casillas de control de estado en las diferentes " _ & "tablas (f_entrega_real o terminado) deben ser llenadas o marcadas según las operaciones o actividades" _ & "que se realizan, Pues de esto depende la carga en los diferentes centros de trabajo " _ & "dentro de la aplicación.", , "IMPORTANTE" End Sub Private Sub Comando9_Click() MsgBox "La tabla PEDIDOS muestra para los pedidos iniciados " _ & "el número, la fecha de entrega dada al cliente, el estado del mismo y " _ & "el campo FECHA DE ENTREGA REAL. Siendo usado este último por el usuario " _ & "para indicar cuando el pedido es entregado finalmente al cliente. (El formato es DD/MM/AA) "_ & "La tabla DETALLE PEDIDOS muestra la composición por productos " _ & "del pedido seleccionado en la tabla PEDIDOS. El estado TERMINADO en cada " _ & "producto es usado para indicar cuando la" _ & " realización del producto ha terminado.", , "INFORMACIÓN 1" End Sub
175
Private Sub Control_Operaciones_Click() On Error GoTo Err_Control_Operaciones_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "CONTROL OPERACIONES" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Control_Operaciones_Click: Exit Sub Err_Control_Operaciones_Click: MsgBox Err.Description Resume Exit_Control_Operaciones_Click End Sub Private Sub Carga_operacione_iniciadas_Click() On Error GoTo Err_Carga_operacione_iniciadas_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "cargas_operaciones_iniciadas" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Carga_operacione_iniciadas_Click: Exit Sub Err_Carga_operacione_iniciadas_Click: MsgBox Err.Description Resume Exit_Carga_operacione_iniciadas_Click End Sub Private Sub Form_Activate() Me.Refresh End Sub Private Sub IMPRIMIR_CARGA_INIC_Click() On Error GoTo Err_IMPRIMIR_CARGA_INIC_Click Dim stDocName As String stDocName = "cargas_operaciones_iniciadas" DoCmd.OpenReport stDocName, acPreview Exit_IMPRIMIR_CARGA_INIC_Click: Exit Sub Err_IMPRIMIR_CARGA_INIC_Click: MsgBox Err.Description Resume Exit_IMPRIMIR_CARGA_INIC_Click End Sub
Formulario control detalle pedidos iniciados Option Compare Database Private Sub iniciado_AfterUpdate() Me.Refresh End Sub
176
Private Sub terminado_AfterUpdate() Me.Refresh End Sub
Formulario control operaciones Option Compare Database Private Sub Form_Activate() Me.Refresh End Sub Private Sub idoperación_Click() Me.Refresh End Sub Private Sub idoperación_DblClick(Cancel As Integer) Me.Refresh End Sub Private Sub idoperación_Enter() Me.Refresh End Sub Private Sub iniciada_AfterUpdate() Me.Refresh End Sub Private Sub terminada_AfterUpdate() Me.Refresh End Sub
Formulario control operaciones iniciadas Option Compare Database Private Sub iniciada_AfterUpdate() Me.Refresh End Sub Private Sub terminada_AfterUpdate() Me.Refresh End Sub
Formulario control pedidos iniciados Option Compare Database Private Sub iniciado_AfterUpdate() Me.Refresh End Sub
177
Formulario control ruta Option Compare Database Private Sub Form_Activate() Me.Refresh End Sub Private Sub iniciado_AfterUpdate() Me.Refresh End Sub Private Sub nombre_ruta_AfterUpdate() Dim dbs As Database Dim qdfTemp As QueryDef Dim rstver As Recordset Dim strSQL As String, p As Integer, n As String Set dbs = CurrentDb strSQL = "SELECT rutas.cant_emitir FROM rutas WHERE (((rutas.idpedido)=[p]) AND ((rutas.nombre_ruta)=[n]));" Set qdfTemp = dbs.CreateQueryDef("", strSQL) qdfTemp.Parameters!p = idpedido qdfTemp.Parameters!n = nombre_ruta Set rstver = qdfTemp.OpenRecordset 'Debug.Print rstver!cant_emitir Me!cant_emitir = rstver!cant_emitir rstver.Close dbs.Close If IsNull(cant_pend) Then cantidad = cant_emitir Else: If cant_pend > 0 And cant_pend < cant_emitir Then cantidad = cant_pend Else cantidad = cant_emitir MsgBox "la cantidad ingresada en la casilla pendiente: cero, negativa o superior a la cantidad a emitir inicial", , "error cantidad" End If End If End Sub Private Sub nombre_ruta_Click() Me.Refresh End Sub Private Sub nombre_ruta_DblClick(Cancel As Integer) Me.Refresh End Sub Private Sub nombre_ruta_Enter() Me.Refresh
178
End Sub Private Sub nombre_ruta_GotFocus() Me.Refresh End Sub Private Sub terminado_AfterUpdate() Me.Refresh End Sub
Formulario ct Option Compare Database Private Sub DETALLES_CT_Click() On Error GoTo Err_DETALLES_CT_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "centro_trabajo" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_DETALLES_CT_Click: Exit Sub Err_DETALLES_CT_Click: MsgBox Err.Description Resume Exit_DETALLES_CT_Click End Sub
Formulario entrega Option Compare Database Private Sub Comando9_Click() MsgBox "El botón PROGRAMACIÓN DETALLADA envía al archivo detallada de Excel la " _ & "información de la tabla TIEMPO REQUERIDO para que sea presentada en el grafico de GANTT " _ & "para un secuenciamiento sin solapamientos", vbInformation, "INFORMACIÓN" End Sub Private Sub PROGRAMACIÓN_DETALLADA_Click() On Error GoTo Err_PROGRAMACIÓN_DETALLADA_Click Dim stDocName As String stDocName = "programa_detallado" DoCmd.RunMacro stDocName Exit_PROGRAMACIÓN_DETALLADA_Click: Exit Sub Err_PROGRAMACIÓN_DETALLADA_Click: MsgBox Err.Description Resume Exit_PROGRAMACIÓN_DETALLADA_Click End Sub
Formulario in out planificado Option Compare Database
179
Private Sub hr_Change() output_planificado = capac End Sub Private Sub idcentro_AfterUpdate() On Error GoTo error_Err Dim txtFiltro As String txtFiltro = "idcentro = " & Me!idcentro Me!hr = DLookup("cap_d_hr_reales", "centro_trabajo", txtFiltro) Me!output_planificado = DLookup("cap_d_hr_estándar", "centro_trabajo", txtFiltro) idcentro_AfterUpdate_Exit: Exit Sub error_Err: If Err.Number = -2147352567 Then Resume Next Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" End If Resume idcentro_AfterUpdate_Exit End Sub Private Sub input_planificado_GotFocus() output_planificado = capac End Sub
Formulario inicio Option Compare Database 'Usar orden de la base de datos para las comparaciones de cadenas. Option Explicit Private Sub cmdCerrarFormulario_Click() ' Cerrar la pantalla de presentación. DoCmd.Close End Sub Private Sub cmdCerrarFormulario_Click() ' Cerrar la pantalla de presentación. DoCmd.Close End Sub Private Sub Form_Activate() ' Ocultar la barra de herramientas incorporada Vista Formulario. DoCmd.ShowToolbar "Vista Formulario", acToolbarNo 'DoCmd.ShowToolbar "BASE DE DATOS", acToolbarNo End Sub Private Sub Form_Open(Cancel As Integer) If EstáCargado("Switchboard") Then ' Si está abierto el formulario Switchboard, ' entonces este formulario se abrió como un ejemplo
180
' y se debe mostrar el botón Cerrar. cmdCerrarFormulario.Visible = True Else ' Este formulario se abrió como el formulario de inicio de la aplicación, ' entonces se debe ocultar el botón Cerrar y establecer TimerInterval ' para cerrar el formulatio después de 1.2 segundos. cmdCerrarFormulario.Visible = False Me.TimerInterval = 1200 End If End Sub Private Sub Form_Timer() If Me.TimerInterval 0 Then Me.TimerInterval = 0 End If DoCmd.OpenForm "Switchboard", , , , acNormal DoCmd.Close acForm, "Inicio" End Sub
Formulario johnson Option Compare Database Private Sub Form_Activate() Me.Refresh End Sub
Formulario lista materiales Option Compare Database Private Sub Comando9_Click() MsgBox "Escriba el nombre del elemento en el espacio correspondiente e identifique el tipo del mismo." _ & " Sí en la columna ''tipo'' no encuentra un nombre en las opciones presentadas haga doble clic sobre el espacio tipo para agregar un nuevo registro a la lista " _ & " ", vbInformation, " INFORMACIÓN" End Sub
Formulario lista materiales subformulario Option Compare Database Private Sub Form_Open(Cancel As Integer) DoCmd.GoToRecord , , acNewRec End Sub Private Sub tipo_DblClick(Cancel As Integer) On Error GoTo Err_tipo_DblClick Dim lngtipo As String If IsNull(Me![tipo]) Then Me![tipo].Text = "" Else lngtipo = Me![tipo] Me![tipo] = Null
181
End If DoCmd.OpenForm "tipo", , , , , acWindowNormal, NewRecord Me![tipo].Requery If lngtipo "" Then Me![tipo] = lngtipo Exit_tipo_DblClick: Exit Sub Err_tipo_DblClick: MsgBox Err.Description Resume Exit_tipo_DblClick End Sub Private Sub tipo_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub
Formulario lista rutas Option Compare Database Sub Comando18_Click() factor = fact End Sub Private Sub Comando21_Click() MsgBox "El TIEMPO DE EJECUCIÓN de una operación no es más que el necesario para desarrollarla una vez en el CT " _ & "correspondiente y sus unidades son MINUTOS ESTÁNDAR TIEMPO MEDIO DESPLAZAMIENTO incluye" _ & " el traslado de los materiales que se requieren hasta el CT, y el necesario para mover los inventarios en curso" _ & " dentro del CT y el envío al almacén de elementos finalizados" APROVECHAMIENTO proporción de" _ & " item que cumplen los requisitos de calidad en cada una de las operaciones" End Sub Private Sub Comando9_Click() MsgBox "PRIMERO asigne a la ruta un nombre de los desplegados en el campo, o coloque uno según sea el caso." _ & "SEGUNDO detalle las operaciones en orden, coloque los valores requeridos " _ & "en cada uno de los campos y presione la tecla Enter para ingresar los datos a la base. y "_ & "TERCERO oprima el botón FACTOR para calcular el factor de la ruta", vbInformation, "INFORMACIÓN" End Sub Private Sub Form_Current() nombre_ruta.SetFocus End Sub Private Sub Form_Open(Cancel As Integer) DoCmd.GoToRecord , , acLast
182
End Sub Private Sub nombre_ruta_NotInList(NewData As String, Response As Integer) MsgBox "NO HAY MATERIAL O PRODUCTO con ese nombre en la base de datos. " _ & "Ingrese primero el Nombre en el formulario producto o lista de materiales según sea el caso. " _ Response = acDataErrContinue End Sub Private Sub operaciónes_Subformulario_Exit(Cancel As Integer) factor = fact End Sub Private Sub Comando29_Click() On Error GoTo Err_Comando29_Click DoCmd.GoToRecord , , acNext Exit_Comando29_Click: Exit Sub Err_Comando29_Click: MsgBox Err.Description Resume Exit_Comando29_Click End Sub Private Sub Comando30_Click() On Error GoTo Err_Comando30_Click DoCmd.GoToRecord , , acPrevious Exit_Comando30_Click: Exit Sub Err_Comando30_Click: MsgBox Err.Description Resume Exit_Comando30_Click End Sub Private Sub imprimir_ruta_Click() On Error GoTo Err_imprimir_ruta_Click Dim stDocName As String stDocName = "Hoja_de_rutas" DoCmd.OpenReport stDocName, acPreview Exit_imprimir_ruta_Click: Exit Sub Err_imprimir_ruta_Click: MsgBox Err.Description Resume Exit_imprimir_ruta_Click End Sub
Formulario máquinas Option Compare Database Private Sub idoperación_Click() Me.Refresh End Sub
183
Private Sub idoperación_Enter() Me.Refresh End Sub
Formulario máquinas ct Option Compare Database Private Sub Comando12_Click() MsgBox "En la tabla TIEMPO DE EJECUCIÓN DE LAS MÁQUINAS EN EL CENTRO seleccione " _ & "la operación entre las listadas en la tabla CENTRO OPERACIONES y luego coloque los " _ & "valores para los tiempos de ejecución en minutos estándar para cada una de las " _ & "máquinas del centro.", vbInformation, "INFORMACIÓN" End Sub Private Sub Comando9_Click() MsgBox "Al seleccionar el centro en la tabla CENTROS DE TRABAJO el nombre del mismo " _ & "aparece en el campo Centro Seleccionado. "_ & "La tabla CENTRO OPERACIONES muestra la información de las operaciones " _ & "que se realizan en el centro seleccionado en los periodos ingresados a " _ & "la base de datos.", vbInformation, "INFORMACIÓN" End Sub
Formulario operaciones ruta Option Compare Database Sub factores() fact = aprovech Dim rst As DAO.Recordset, j, n As Integer, i As Single Set rst = Me.Recordset j = rst.RecordCount 'MsgBox j, vbDefaultButton2, "CANTIDAD REGISTROS RUTA" i=1 rst.MoveLast For n = 1 To j If n = 1 Then fact = aprovech i = fact 'MsgBox i, vbQuestion, "valor MovePrevious" rst.MovePrevious Else If n = j Then fact = aprovech fact = i * fact 'MsgBox i Else If n > 1 And n < j Then fact = aprovech fact = i * fact i = fact
184
rst.MovePrevious 'MsgBox i End If End If End If Next n rst.MoveLast End Sub Private Sub fact_Change() factores End Sub Private Sub fact_Click() factores End Sub Private Sub Form_AfterDelConfirm(Status As Integer) factores End Sub Private Sub idcentro_DblClick(Cancel As Integer) On Error GoTo Err_idcentro_DblClick Dim lngidcentro As Long If IsNull(Me![idcentro]) Then Me![idcentro].Text = "" Else lngidcentro = Me![idcentro] Me![idcentro] = Null End If DoCmd.OpenForm "centro_trabajo", , , , , acWindowNormal, NewRecord Me![idcentro].Requery If lngidcentro 0 Then Me![idcentro] = lngidcentro Exit_idcentro_DblClick: Exit Sub Err_idcentro_DblClick: MsgBox Err.Description Resume Exit_idcentro_DblClick End Sub Private Sub idcentro_NotInList(NewData As String, Response As Integer) MsgBox "Haga DOBLE clic en este campo para agregar una entrada a la lista." Response = acDataErrContinue End Sub Private Sub Form_Activate() Me.Refresh End Sub
185
Private Sub operación_Enter() Me.Refresh End Sub
Formulario pedidos Option Compare Database Private Sub Comando9_Click() MsgBox "El botón CANT REQUERIDA muestra las cantidades necesarias por " _ & " partes / componentes para cumplir con el pedido actual. El botón TIEMPO " _ & " DE ENTREGA bajo una programación hacia delante indica la cantidad de días " _ & " necesarios para producir el pedido en condiciones normales de trabajo. "_ & "Las cantidades solo se muestran para los pedidos que no tienen fecha de entrega real." End Sub Private Sub fecha_entrega_LostFocus() ' Este procedimiento se utiliza para validar la introducción de la fecha. Asegurarse ' de que se introduce una fecha válida y de que FechaEntrega no es anterior a FechaPedido. If IsDate(Me!fecha_entrega) Then If Me!fecha_entrega 0 Then ' MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count n = .FoundFiles(i) If n = m Then 'MsgBox "igual" c=0 End If Next i End If End With If c = 0 Then DoCmd.TransferSpreadsheet acExport, 8, "control_input_output", [m], True, "" stAppName = "excel.exe C:\aplicación\in-out.xls" Call Shell(stAppName, 1) Else MsgBox "No se encontró prioridades.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO ENCONTRADO" End If EXPORTAR_IN_OUT_Exit: Exit Function EXPORTAR_IN_OUT_Err: If Err.Number = 3010 Then MsgBox Err.Number & " - Cierre el archivo de Excel ''in-out.xls'' para realizar correctamente "_ & "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO DESTINO ESTA ABIERTO" Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR"
202
End If Resume EXPORTAR_IN_OUT_Exit End Function
Function Exportar_Johnson() On Error GoTo EXPORTAR_JOHNSON_Err Dim i, c As Integer, m, n As String c=1 Set fs = Application.FileSearch With fs .LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\" .SearchSubFolders = True .FileName = "johnson.xls" m = "c:\aplicación\johnson.xls" If .Execute > 0 Then ' MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count n = .FoundFiles(i) If n = m Then 'MsgBox "igual" c=0 End If Next i End If End With If c = 0 Then DoCmd.TransferSpreadsheet acExport, 8, "johnson", [m], True, "" stAppName = "excel.exe C:\aplicación\johnson.xls" Call Shell(stAppName, 1) Else MsgBox "No se encontró johnson.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO ENCONTRADO" End If EXPORTAR_JOHNSON_Exit: Exit Function EXPORTAR_JOHNSON_Err: If Err.Number = 3010 Then MsgBox Err.Number & " - Cierre el archivo de Excel ''johnson.xls'' para realizar correctamente " _ & "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO DESTINO ESTA ABIERTO" Else
203
MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" End If Resume EXPORTAR_JOHNSON_Exit End Function
Function Exportar_Asignación() On Error GoTo EXPORTAR_ASIGNACIÓN_Err Dim i, c As Integer, m, n As String c=1 Set fs = Application.FileSearch With fs .LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\" .SearchSubFolders = True .FileName = "asignación.xls" m = "c:\aplicación\asignación.xls" If .Execute > 0 Then ' MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count n = .FoundFiles(i) If n = m Then 'MsgBox "igual" c=0 End If Next i End If End With If c = 0 Then DoCmd.TransferSpreadsheet acExport, 8, "asignar", [m], True, ""
stAppName = "excel.exe C:\aplicación\asignación.xls" Call Shell(stAppName, 1) Else MsgBox "No se encontró asignación.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO ENCONTRADO" End If EXPORTAR_ASIGNACIÓN_Exit: Exit Function EXPORTAR_ASIGNACIÓN_Err: If Err.Number = 3010 Then MsgBox Err.Number & " correctamente " _
Cierre el archivo de Excel ''asignación.xls'' para realizar
204
& "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO DESTINO ESTA ABIERTO" Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" End If Resume EXPORTAR_ASIGNACIÓN_Exit End Function
Function Exportar_Programa_Detallado() On Error GoTo EXPORTAR_Err Dim i, c As Integer, m, n As String c=1 Set fs = Application.FileSearch With fs .LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\" .SearchSubFolders = True .FileName = "detallada.xls" m = "c:\aplicación\detallada.xls" If .Execute > 0 Then ' MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count n = .FoundFiles(i) If n = m Then 'MsgBox "igual" c=0 End If Next i End If End With If c = 0 Then DoCmd.TransferSpreadsheet acExport, 8, "prog_detallada", [m], True, ""
stAppName = "excel.exe C:\aplicación\detallada.xls" Call Shell(stAppName, 1) Else MsgBox "No se encontró detallada.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR - ARCHIVO NO ENCONTRADO" End If EXPORTAR_Exit: Exit Function EXPORTAR_Err: If Err.Number = 3010 Then
205
MsgBox Err.Number & " - Cierre el archivo de Excel ''detallada.xls'' para realizar correctamente " _ & "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO DESTINO ESTA ABIERTO" Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" End If Resume EXPORTAR_Exit End Function
Function Exportar_FINITA() On Error GoTo EXPORTAR_Err Dim i, c As Integer, m, n As String c=1 Set fs = Application.FileSearch With fs .LookIn = "c:\aplicación" 'para buscar en los discos c y d pege esté comando .LookIn = "c:\;d:\" .SearchSubFolders = True .FileName = "carga_finita.xls" m = "c:\aplicación\carga_finita.xls" If .Execute > 0 Then ' MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count n = .FoundFiles(i) If n = m Then 'MsgBox "igual" c=0 End If Next i End If End With If c = 0 Then DoCmd.TransferSpreadsheet acExport, 8, "cg_finita", [m], True, "" stAppName = "excel.exe C:\aplicación\carga_finita.xls" Call Shell(stAppName, 1) Else MsgBox "No se encontró carga_finita.xls en la ruta ( c:\aplicación ) Copie el archivo ORIGINAL a esta ruta para que la aplicación funcione correctamente.", vbCritical, "ERROR ARCHIVO NO ENCONTRADO" End If EXPORTAR_Exit: Exit Function EXPORTAR_Err:
206
If Err.Number = 3010 Then MsgBox Err.Number & " - Cierre el archivo de Excel ''carga_finita.xls'' para realizar correctamente " _ & "el envio de la información - " & Err.Description, vbCritical, "Error - EL ARCHIVO DESTINO ESTA ABIERTO" Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" End If Resume EXPORTAR_Exit End Function
Modulo funciones de utilidad Option Compare Database Option Explicit
Function estácargado(ByVal txtNombreFormulario As String) As Boolean ' Devuelve Verdadero si se ha cargado el formulario especificado. Const conObjetoEstaCerrado = 0 Const conModoDiseño = 0 If SysCmd(acSysCmdGetObjectState, acForm, txtNombreFormulario) conObjetoEstaCerrado Then If Forms(txtNombreFormulario).CurrentView conModoDiseño Then EstáCargado = True End If End If End Function
Function Verventanabasededatos() On Error GoTo Err_VerVentanaBaseDeDatos Dim txtNombreDoc As String txtNombreDoc = "Centro_trabajo" ' Cerrar el formulario Panel de control principal. DoCmd.Close ' Mandar el enfoque a la ventana de base de datos; seleccionar la tabla ' Categorías (primer formulario de la lista). DoCmd.SelectObject acTable, txtNombreDoc, True Salir_VerVentanaBaseDeDatos: Exit Function Err_VerVentanaBaseDeDatos: MsgBox Err.Description Resume Salir_VerVentanaBaseDeDatos End Function
Function salir() 207
On Error GoTo Err_salir DoCmd.ShowToolbar "BASE DE DATOS", acToolbarYes DoCmd.Quit Exit_salir: Exit Function Err_salir: MsgBox Err.Description Resume Exit_salir End Function
Function cerrar() DoCmd.ShowToolbar "BASE DE DATOS", acToolbarYes CloseCurrentDatabase End Function
Archivos Excel Prioridades.Xls 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de" End Sub
Asignación.Xls 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb Método Húngaro, VER: MACHUCA DOMÍNGUEZ, José Antonio et al. Dirección De Operaciones : Aspectos tácticos y operativos en la producción y los servicios. España : Mc Graw Hill, 1995. 299 p.", vbInformation, "Acerca de" End Sub Sub algoritmo() 208
Dim n, m, i As Integer, aux As Double Dim mat(1 To 99, 1 To 99) As Double Dim cero(1 To 99, 1 To 99) Dim temp(1 To 99, 1 To 99) Dim cont(1 To 99, 1 To 1) Dim fila(1 To 99, 1 To 99) As Double On Error GoTo algoritmo_Err Worksheets("asignar").Select Range("B2:CU99").Select ActiveWorkbook.Names.Add Name:="tabla", RefersToR1C1:="=asignar!R2C2:R99C99" Range("CV2").Select ActiveCell.FormulaR1C1 = "=COUNT(RC[-98]:RC[-1])" n = Range("Cv2") 'busca el limite para las columnas Range("B100").Select ActiveCell.FormulaR1C1 = "=COUNT(R[-98]C:R[-1]C)" m = Range("B100") 'busca el limite para las filas Range("B2").Select If n = 0 Or m = 0 Then 'condicional primario MsgBox "alguno o ambos limites de la matriz igual a cero. verifique que los datos comienzan desde la casilla B2", vbInformation, "ERROR EN LOS LIMITES" Else If n >= m Then ok = m Else: ok = n End If
'control ok para saber en que momento 'las iteraciones son validas
m=m+1 n=n+1 For r = 2 To m 'lee los datos de las celdas y los coloca en la For c = 2 To n 'matriz mat With Worksheets("asignar").Cells(r, c) mat(r, c) = .Value End With Worksheets("asignar").Cells(r, c).Select Next c Next r '***************************************************************** For c = 2 To n ' aux = mat(2, c) For r = 2 To m 'MÍNIMO por COLUMNA If mat(r, c) < aux Then ' aux = mat(r, c) ' 209
End If Next r For r = 2 To m ' resta Mínimo por COLUMNA mat(r, c) = mat(r, c) - aux Next r Next c '***************************************************************** For r = 2 To m 'MÍNIMO por fila OK! aux = mat(r, 2) For c = 2 To n If mat(r, c) < aux Then aux = mat(r, c) End If Next c For c = 2 To n ' resta Mínimo por fila mat(r, c) = mat(r, c) - aux Next c Next r '***************************************************************** Worksheets("Hoja1").Select Range("B2:CU99").Select Selection.ClearContents 'limpia la zona donde se pegan los datos '***************************************************************** fase3 = False Do '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ciclo fase tres\\\\\\\\ 'FASE 3 '---------------------------------------------------------------If fase3 = True Then
For r = 2 To m i=0 For c = 2 To n If cero(r, c) = "asignar" Then i=i+1 End If Next c If i = 0 Then p=r End If Next r
210
For c = 2 To n temp(p, c) = mat(p, c) Next c For c = 2 To n If temp(p, c) = 0 Then For r = 2 To m If cero(r, c) = "asignar" Then For q = 2 To n If cero(r, q) = "asignar" Then temp(r, q) = cero(r, q) Else: temp(r, q) = mat(r, q) End If Next q Else: temp(r, c) = mat(r, c) End If Next r End If Next c For r = 2 To m 'contador de casillas con ceros o i=0 'asignar en la matriz temp For c = 2 To n If temp(r, c) = 0 Or temp(r, c) = "asignar" Then If IsEmpty(temp(r, c)) Then i=i Else: i = i + 1 End If Else: i = i End If Next c If i > 0 Then For c = 2 To n 'asigna las filas con ceros o asignacion fila(r, c) = temp(r, c) 'a la matriz fila, borrando esa casillas temp(r, c) = Null 'de la matriz temp Next c End If Next r For c = 2 To n If fila(p, c) = 0 Then For r = 2 To m fila(r, c) = Null Next r 211
End If Next c aux = fila(2, 2) For r = 2 To m For c = 2 To n If IsEmpty(fila(r, c)) Then Else 'fila If fila(r, c) < aux Then aux = fila(r, c) End If End If Next c Next r
'busca el mínimo en la matriz
For r = 2 To m For c = 2 To m If IsEmpty(fila(r, c)) Then 'resta el mínimo a la matriz Else: fila(r, c) = fila(r, c) - aux 'fila End If If IsEmpty(temp(r, c)) Then 'suma el mínimo a la matriz Else: temp(r, c) = temp(r, c) + aux 'temp End If If IsNull(fila(r, c)) Or IsEmpty(fila(r, c)) Then Else: temp(r, c) = fila(r, c) 'pasa los datos de la End If 'matriz fila a temp If IsNull(temp(r, c)) Or IsEmpty(temp(r, c)) Then Else: mat(r, c) = temp(r, c) 'pasa los datos de la End If Next c Next r End If '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '================================================================ ' FASE DOS BUSQUEDA SOLUCIÓN ÓPTIMA '================================================================ For r = 2 To m 'cambia los ceros por For c = 2 To n 'sus valores en la hoja If mat(r, c) = 0 Then 'de calculo matriz y los With Worksheets("asignar").Cells(r, c) 'guarda en la matriz cero cero(r, c) = .Value End With End If 212
Next c Next r '**********************************************************ciclo externo vacio = False 'valor de la variable de control Do 'inicio del ciclo externo aux = 0: min = 1000 For r = 2 To m 'contador de casillas con números i=0 'en la matriz ceros y guardado de la For c = 2 To n 'cantidad en el vector cont(contador) If cero(r, c) 0 And cero(r, c) "asignar" Then i=i+1 cont(r, 1) = i Else: cont(r, 1) = i End If Next c Next r '---------------------------------------------------------ciclo interno-i=1 Do j=1 For r = 2 To m If cont(r, 1) = 0 Then 'contador de ceros en el vector cont(r,1) j=j+1 End If If j = m Then vacio = True Exit Do 'sale del ciclo interno cuando el vector Else: vacio = False 'este lleno de ceros End If If cont(r, 1) = i Then For c = 2 To n If cero(r, c) 0 Then With Worksheets("asignar").Cells(r, c) aux = .Value If aux < min Then min = aux: p = r: q = c End If End With End If Next c End If Next r 213
If min = 1000 Then i = 1 + i: vacio = True End If Loop Until vacio = False '----------------------------------------------------fin---ciclo interno-If vacio = True Then i=0 For r = 2 To m ' For c = 2 To n ' If cero(r, c) = "asignar" Then i=1+i End If Next c Next r If i = ok Then fase3 = False Exit Do Else: fase3 = True Exit Do End If End If For r = 2 To m 'coloca vacios en la columna If p r Then 'con menor valor y asignar en la cero(r, q) = Null 'posición del menor Else: cero(r, q) = "asignar" ' End If Next r '***************************************************************** For c = 2 To n 'coloca vacios en la fila If q c Then 'con el menor valor cero(p, c) = Null End If Next c Loop Until vacio = True '**************************************************fin****ciclo externo Loop Until fase3 = False '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\fin--ciclo fase tres\\\\\\\\ For r = 2 To m 'imprime los datos del array en For c = 2 To n 'la hoja1 del archivo por columna Cells(r, c) = cero(r, c) 214
Worksheets("Hoja1").Cells(r, c).Select Next c Next r End If ActiveSheet.Shapes(2).Select Range("A1").Select 'MsgBox "fin" algoritmo_Exit: Exit Sub algoritmo_Err: ' Rutina de control de errores. 'MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" If Err.Number = -2147024809 Then cuadro_de_texto Resume Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" Resume algoritmo_Exit End If End Sub 'algoritmo Sub cuadro_de_texto() ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 151.5, 92.25, 299.25, 72#).Select Selection.Font.Bold = False ActiveSheet.Shapes(2).Select Selection.ShapeRange.Line.Visible = msoFalse With Selection .HorizontalAlignment = xlJustify .VerticalAlignment = xlJustify .Orientation = xlHorizontal .AutoSize = False End With Selection.Characters.Text = _ "La palabra ASIGNAR indica que trabajo debe asignarse a que maquina para obtener el menor tiempo de proceso posible." With Selection.Characters(Start:=1, Length:=117).Font .Name = "Times New Roman" .FontStyle = "Normal" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False 215
.Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection.Characters(Start:=12, Length:=7).Font .Name = "Times New Roman" .FontStyle = "Negrita" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 7 End With Range("A1").Select End Sub Johnson.Xls 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub algoritmo() Dim g, t, y, j, m, i As Integer, aux, s As Variant Dim dat(1 To 99, 1 To 3) As Variant Dim JOHN(1 To 99, 1 To 3): Dim graf(1 To 99, 1 To 3) On Error GoTo algoritmo_Err Worksheets("johnson").Select Range("B2:C99").Select ActiveWorkbook.Names.Add Name:="tabla", RefersToR1C1:="=johnson!R2C2:R99C3" Range("B100").Select ActiveCell.FormulaR1C1 = "=COUNT(R[-98]C:R[-1]C)" m = Range("B100") 'busca el limite para las filas Range("B2").Select If m = 0 Then 'condicional primario MsgBox "el limite vertical de la matriz es igual a cero. verifique que los datos comienzan desde la casilla B2", vbInformation, "ERROR EN LOS LIMITES" Else ok = m: i = 2: j = 0: m = m + 1 For r = 1 To m 'lee los datos de las For c = 1 To 3 'celdasy los coloca en With Worksheets("johnson").Cells(r, c) 'la matriz dat dat(r, c) = .Value End With 216
Worksheets("johnson").Cells(r, c).Select Next c Next r Do 'ciclo hasta que la matriz dat este vacía aux = 1000 For r = 2 To m For c = 2 To 3 If dat(r, c) < aux Then aux = dat(r, c) p = r: q = c End If Next c Next r If q = 2 Then For c = 1 To 3 JOHN(i, c) = dat(p, c) dat(p, c) = Null Next c i=i+1 Else t=m-j For c = 1 To 3 JOHN(t, c) = dat(p, c) dat(p, c) = Null Next c j=j+1 End If k=0 For r = 2 To m If IsNull(dat(r, 2)) Then k=k+1 End If Next r If k = ok Then Exit Do End If Loop '***************************************************************** For c = 1 To 3 'copia los encabezados JOHN(1, c) = dat(1, c) 'de la matriz dat a la 217
graf(1, c) = JOHN(1, c) Next c
'matriz john y graf
Worksheets("Hoja1").Select Range("A1:CU99").Select 'limpia la zona donde Selection.ClearContents 'se pegan los datos For r = 1 To m 'imprime los datos del array en For c = 1 To 3 'la hoja1 del archivo por columna Cells(r, c) = JOHN(r, c) Worksheets("Hoja1").Cells(r, c).Select Next c Next r i=0 For c = 2 To 3 For r = 2 To m p=r+i graf(p, c) = JOHN(r, c) Next r i=i+1 Next c q=m+1 s=0 For r = 2 To m s = graf(r, 2) + s Next r s = graf(q, 3) + s graf(2, 3) = JOHN(2, 2) For r = 1 To q 'imprime los datos del array en For c = 1 To 3 'la hoja1 del archivo por columna q=8-c Cells(r, q) = graf(r, c) 'Worksheets("Hoja1").Cells(r, q).Select Next c Next r t=0 g=0 For i = 1 To 3 ActiveSheet.Shapes(i).Select Next i If g = 0 And t = 0 Then 218
g=2 Else: If t 0 Then MsgBox "EN CASO DE REALIZARSE MAL LA OPERACIÓN BORRE EL OBJETO E INTENTE DE NUEVO LA OPERACIÓN. ", vbInformation, "IMPORTANTE" g=2 End If End If ActiveSheet.Shapes(g).Select Selection.Characters.Text = "los trabajos se terminan en " & s & " horas estándar " With Selection.Characters(Start:=1, Length:=43).Font .Name = "Arial" .FontStyle = "Normal" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End If Worksheets("Hoja1").Cells(1, 1).Select algoritmo_Exit: Exit Sub algoritmo_Err: ' Rutina de control de errores. 'MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" If Err.Number = -2147024809 Then y = InputBox("Falta uno de estos elementos en la hoja de cálculo: "_ &" "_ & "1 - El grafico representativo de la Regla de Johnson. "_ & "2 - El Texto explicación de la respuesta obtenida. "_ & "3 - El botón que ejecuta el algoritmo. "_ & "4 - Todas las anteriores", "FALTA ALGO EN LA HOJA DE CÁLCULO") Select Case y Case 1 grafico t=1 Case 2 cuadro_de_texto g=i 219
Case 3 boton t=1 Case 4 grafico cuadro_de_texto boton t=1 Case Else MsgBox "El número no es valido" Resume algoritmo_Exit End Select Resume Else MsgBox Err.Number & "- - " & Err.Description, vbCritical, "ERROR" Resume algoritmo_Exit End If End Sub 'JOHNSON MODULO 2 'Diseñado por Jesús Eduardo Scarpetta '
[email protected] 'Feb 2002 'Trabajo de grado Sub grafico() 'ActiveWindow.Visible = False 'Windows("grafico johnson.xls").Activate Range("A1:C99").Select Charts.Add ActiveChart.HasLegend = False ActiveChart.ChartType = xlBarStacked ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:A99,E1:F99"), _ PlotBy:=xlRows For r = 1 To 98 ActiveChart.SeriesCollection(r).Select Selection.Interior.ColorIndex = xlNone Next r ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Secuenciación Regla de Johnson para N trabajos en 2 maquinas" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With 220
With ActiveChart.Axes(xlCategory) .HasMajorGridlines = False .HasMinorGridlines = False End With With ActiveChart.Axes(xlValue) .HasMajorGridlines = False .HasMinorGridlines = False End With ActiveChart.PlotArea.Select ActiveChart.ChartArea.Select 'MsgBox "borrar" ' ActiveWindow.Visible = False ' Selection.Delete End Sub Sub cuadro_de_texto() ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 203.25, 16.5, _ 388.5, 43.5).Select Selection.ShapeRange.Line.Visible = msoFalse Selection.Characters.Text = "los trabajos se terminan en " & s & " horas estándar" With Selection.Characters(Start:=1, Length:=63).Font .Name = "Arial" .FontStyle = "Normal" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub Sub boton() ActiveSheet.Buttons.Add(49.5, 249, 123.75, 28.5).Select Selection.OnAction = "algoritmo" 'ActiveSheet.Shapes("1").Select Selection.Characters.Text = "JOHNSON" With Selection.Characters(Start:=1, Length:=4).Font .Name = "Arial" .FontStyle = "Normal" .Size = 10 .Strikethrough = False .Superscript = False 221
.Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("A2").Select End Sub Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de" End Sub Detallada.Xls Sub Macro1() ActiveSheet.ChartObjects("Gráfico 12").Activate ActiveChart.Axes(xlValue).Select ActiveChart.ChartArea.Select With ActiveChart .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "he" End With Selection.Left = 282 Selection.Top = 162 Selection.Font.Bold = False End Sub MODULO 2 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de" End Sub Sub grafico() Range("A1:B100").Select 222
Charts.Add ActiveChart.ChartType = xlBarStacked ActiveChart.SetSourceData Source:=Sheets("prog_detallada").Range("A1:B100"), _ PlotBy:=xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:="prog_detallada" ActiveChart.HasLegend = False ActiveChart.Axes(xlCategory).Select Selection.TickLabels.AutoScaleFont = True With Selection.TickLabels.Font .Name = "Arial" .FontStyle = "Normal" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 2 .Background = xlTransparent End With ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 6.75, 24#, 37.5 _ , 22.5).Select Selection.ShapeRange.Line.Visible = msoFalse Selection.Characters.Text = "Pedido" Selection.AutoScaleFont = False With Selection.Characters(Start:=1, Length:=6).Font .Name = "Arial" .FontStyle = "Normal" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With ActiveChart .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "he" End With Range("A1").Select End Sub
223
Carga_Finita.Xls 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de" End Sub Sub Informacion1() MsgBox "Cambie las horas reales de la celda en verde claro para variar las horas reales normales de trabajo que se muestran en la celda de arriba en color naranja. Realice los cambios en la celda verde y observe las modificaciones en el grafico. Al cerrar el archivo copie el nuevo valor de las horas de trabajo para el periodo evaluado en el centro de análisis en la base de datos en Access archivo 'PLANEACIÓN CORTO PLAZO' en el formulario PRODUCCIÓN PLANEADA del menú CONTROL en la columna HR de la tabla INPUT, OUTPUT PLANIFICADO para el centro seleccionado.", vbInformation, "INFORMACIÓN" End Sub Sub Informacion2() MsgBox "Suprima o borre cargas de la columna F (números en Fucsia) y observe los cambios en el grafico al realizar lo anterior", vbInformation, "INFORMACIÓN" End Sub MODULO 2 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub grafico() Range("B5:H8").Select Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Hoja2").Range("B5:H8"), PlotBy:= _ xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja2" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = _ "GANTT de carga finita para el centro seleccionado" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "periodos" 224
.Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "carga" End With ActiveChart.Axes(xlValue).Select ActiveChart.PlotArea.Select Selection.Left = 1 Selection.Top = 61 Selection.Top = 6 Selection.Width = 278 Selection.Height = 135 ActiveChart.Legend.Select Selection.Left = 188 Selection.Top = 25 ActiveChart.Axes(xlCategory).Select Selection.TickLabels.AutoScaleFont = False With Selection.TickLabels.Font .Name = "Arial" .FontStyle = "Normal" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ActiveChart.Axes(xlCategory).AxisTitle.Select Selection.AutoScaleFont = False With Selection.Font .Name = "Arial" .FontStyle = "Negrita" .Size = 7 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With Selection.Left = 230 ActiveChart.Axes(xlValue).Select 225
Selection.TickLabels.AutoScaleFont = False With Selection.TickLabels.Font .Name = "Arial" .FontStyle = "Normal" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ActiveChart.Axes(xlValue).AxisTitle.Select Selection.AutoScaleFont = False With Selection.Font .Name = "Arial" .FontStyle = "Negrita" .Size = 7 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal End With Selection.Left = 3 Selection.Top = 1 ActiveChart.ChartTitle.Select Selection.Left = 117 Selection.Top = 1 Selection.AutoScaleFont = False With Selection.Font .Name = "Arial" .FontStyle = "Negrita" .Size = 10 .Strikethrough = False 226
.Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ActiveChart.Legend.Select Selection.AutoScaleFont = False With Selection.Font .Name = "Arial" .FontStyle = "Normal" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ActiveWindow.Visible = False Windows("carga_finita.xls").Activate Range("B5").Select End Sub In-out.Xls 'Diseñado por Jesús Eduardo Scarpetta
[email protected] 'Feb 2002 Trabajo de grado
Sub msg() MsgBox "TRABAJO DE GRADO Herramienta informática en hoja electrónica para la planeación a corto plazo de la producción en ambientes de planificación jerárquica, para PYMES con sistema de producción por lotes o series cortas. REALIZADO POR Jesús Eduardo Scarpetta y Eliana Cuellar Bernal. Este archivo es un vinculo del archivo en Access HPP-S.mdb", vbInformation, "Acerca de" End Sub MODULO 2 Sub gráfico() Range("D1:E100").Select ActiveWindow.SmallScroll Down:=-8 End Sub 227
Sub graf() Charts.Add ActiveChart.ChartType = xlColumnStacked ActiveChart.SetSourceData Source:=Sheets("control_input_output").Range( _ "D1:E100"), PlotBy:=xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:= _ "control_input_output" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "input para el CT" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With With ActiveChart.Axes(xlCategory) .HasMajorGridlines = False .HasMinorGridlines = False End With With ActiveChart.Axes(xlValue) .HasMajorGridlines = True .HasMinorGridlines = False End With ActiveChart.HasLegend = False ActiveSheet.Shapes("Gráfico 3").ScaleWidth 1.14, msoFalse, _ msoScaleFromBottomRight ActiveSheet.Shapes("Gráfico 3").ScaleHeight 1.34, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 3").IncrementLeft -93.75 ActiveSheet.Shapes("Gráfico 3").IncrementTop 36# End Sub Sub outgraf() Charts.Add ActiveChart.ChartType = xlColumnStacked ActiveChart.SetSourceData Source:=Sheets("control_input_output").Range( _ "F1:G100"), PlotBy:=xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:= _ "control_input_output" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "out para el CT" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With ActiveChart.HasLegend = False 228
ActiveSheet.Shapes("Gráfico 4").ScaleWidth 1.07, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 4").ScaleHeight 1.16, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 4").ScaleWidth 1.05, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 4").ScaleHeight 1.1, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 4").IncrementLeft 192# ActiveSheet.Shapes("Gráfico 4").IncrementTop 54# ActiveSheet.Shapes("Gráfico 4").IncrementLeft -1.5 ActiveSheet.Shapes("Gráfico 4").IncrementTop -17.25 ActiveWindow.Visible = False Windows("in-out.xls").Activate ActiveSheet.ChartObjects("Gráfico 3").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("Gráfico 3").IncrementLeft -8.25 ActiveSheet.Shapes("Gráfico 3").ScaleWidth 0.97, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 3").ScaleHeight 1.01, msoFalse, _ msoScaleFromBottomRight ActiveWindow.Visible = False Windows("in-out.xls").Activate ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("Gráfico 4").IncrementLeft -16.5 ActiveSheet.Shapes("Gráfico 4").IncrementTop -1.5 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll ToRight:=1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll ToRight:=1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll ToRight:=-1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate 229
Windows("in-out.xls").SmallScroll ToRight:=1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll ToRight:=1 Windows("in-out.xls").SmallScroll Down:=3 ActiveSheet.Shapes("Gráfico 4").ScaleWidth 0.94, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("Gráfico 4").ScaleHeight 0.99, msoFalse, _ msoScaleFromBottomRight Windows("in-out.xls").LargeScroll ToRight:=-1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll Down:=-1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll Down:=-1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll Down:=-1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate Windows("in-out.xls").SmallScroll Down:=1 ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate ActiveWindow.Visible = False ActiveSheet.ChartObjects("Gráfico 4").Activate 230
Windows("in-out.xls").SmallScroll Down:=-1 ActiveWindow.Visible = False Windows("in-out.xls").Activate Range("A1").Select End Sub
231