Está en la página 1de 146

SISTEMA DE INVENTARIO PARA LA EMPRESA BRINSA S.A.

NIDIA Y. PULIDO ROJAS JORGE A. MARTNEZ FUENTES EDWARD M. YARA CHARRY OSCAR J. MUOZ BENTEZ

Ing. DIANA CAROLINA PINZN CALIDAD DE SOFTWARE

FUNDACION UNIVERSITARIA SAN MARTIN 22 DE NOVIEMBRE DE 2013 INGENIERA DE SISTEMAS VII SEMESTRE ZIPAQUIR

CONTEXTO

En el departamento del almacn de la empresa BRINSA S.A. ubicada en el km 6 va Cajica-Zipaquira, Cundinamarca. Se labora con un grupo de trabajo conformado por el jefe de almacn, el asistente administrativo y tres personas analistas; el manejo de inventarios ha sido muy deficiente debido a la falta de organizacin. El no contar con un sistema para el manejo de inventarios en Brinsa S.A. ha dificultado el correcto funcionamiento y desempeo de las operaciones de recepcionar, ubicar y despachar productos, las personas encargadas del almacn no tienen claras sus funciones y las medidas a tomar en cualquier situacin presentada, los inventarios no se realizan de manera ordenada haciendo que no se cumpla con los niveles de exigencia que requiere la compaa, el rea de inventarios es el ms vulnerable y tentado a inconsistencias en su manejo. El objetivo de contar con sistema que controle el movimiento y almacenaje de productos y materias primas dentro de mltiples bodegas por medio de los procesos de recepcin, ubicacin, transformacin y despacho de mercadera evita prdidas, daos, ajustes ineficientes, adems que el proceso goce de confiablidad y eficacia. Un mal manejo de los inventarios puede dar lugar a excesos en el pedido de materiales, y la prdida del mismo. La mala gestin del inventario en un almacn o en una empresa puede incluso resultar en el robo. Si bien, la responsabilidad de la custodia y el control fsico de las existencias, normalmente, est a cargo del Almacn; la transparencia y veracidad de sus saldos recae en el departamento de contabilidad, debido al impacto directo que tiene sobre el Balance General y los Resultados del ao. La responsabilidad final recae en la gerencia financiera y administrativa.

PROBLEMA

No existe logstica en recepcin, ubicacin y despacho de la materia prima debido a esto se ha presentado diferencias tales como: No hay manejo de rotacin de los lotes oportuno. No se maneja un control exacto de las existencias de la materia prima. Falta un control de ubicacin de cada referencia.

Esto genera ajustes contables para la empresa comprendidas en perdida de dinero, tiempo laboral y materias primas. Por lo anterior, se hace notoria la importancia de controlar todo el material con el que se trabaja por medio de un sistema que asegure su confiabilidad y xito final. Este sistema debe suministrar a la empresa el control de acomodo de mercanca en bodega, uso de espacios, evitar desperdicios, control de almacenaje, rotacin de material, y que el almacenista pueda generar informes del estado del inventario.

LANZAMIENTO DE PROYECTO

NOMBRE: Jorge Armando Martnez FECHA: 6 de octubre de 2013 1. Escriba su experiencia e intereses relevantes Que le puedo aportar al proyecto? De hoy en da trabajo en el rea del almacn y desempeo el cargo de analista de inventarios, el cual a diario interactu con el tema de inventarios, de esta manera la empresa exige realizar un inventario mensual

2. Describa su trabajo en proyectos de trabajo en equipo. Desempeo el rol de calidad, la cual velo por tener un producto de buena calidad, de igual manera se ha venido revisando los avances de todos los compaeros y el trabajo en equipo que hemos obtenido hasta el momento, se ha visto buenos resultados

3. Describa cualquier posicin de liderazgo o administracin que haya tenido. Ser el responsable de un inventario que maneja 200 referencias y tiene un costo sobre los 5 mil millones de pesos, donde es validado por contralora interna y el departamento de costos

4. Califique de 1 (menor) a 5 (mayor) sus preferencias de roles.

LDER DE EQUIPO LDER DE DESARROLLO LDER DE PLANEACIN LDER DE CALIDAD LDER DE SOPORTE

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

5 5 5 5 5

NOMBRE: Edward Yara FECHA: 6 de octubre de 2013 1. Escriba su experiencia e intereses relevantes Actualmente trabajo el Bel Star S:A desempenando el cargo de digitador en bodega de sumistros, en este puesto se facilita el tema de manejo de inventarios ya que esta entrando y saliendo papelera para las diferentes areas. Para este proyecto no es desconocido el tema y puedo aportar para lograr el objetivo del grupo.

2. Describa su trabajo en proyectos de trabajo en equipo. Para este proyecto mi rol es el de lder de planeacin, me parece muy interesante ya que el papel de este lder es elaborar un plan completo y exacto para el equipo, adems que dar un buen soporte al grupo. Lo ms importante es pensar lgica y ordenadamente para apoyar al equipo. Revisando los avances, pienso que hemos sido un grupo muy unido, adems que llevamos un buen desarrollo, para mi concepto es un proyecto con una gran factibilidad.

3. Describa cualquier posicin de liderazgo o administracin que haya tenido. Hace un tiempo desempee el liderazgo de un grupo de personas de la compaa donde loaboro actualmente en el tema de inventarios, fue muy interesante ya que se aprende a conocer las personas tanto el lado bueno como el lado malo, y se genera estrategias de liderazgo para llever al grupo a un mejoramiento continuo, y a tener una buena armona en el lugar de trabajo. Para nuestro proyecto se ha tenido un gran liderazgo ya que somo un grupo unido para sacer dicha meta adelante.

4. Califique de 1 (menor) a 5 (mayor) sus preferencias de roles.

LDER DE EQUIPO LDER DE DESARROLLO LDER DE PLANEACIN LDER DE CALIDAD LDER DE SOPORTE

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

5 5 5 5 5

NOMBRE: Nidia Pulido FECHA: 6 de octubre de 2013 1. Escriba su experiencia e intereses relevantes

Actualmente me encuentro laborando en la empresa Virtual Academy DynEd, en la cual desempeo el cargo de soporte tcnico y me ha facilitado las cosas en cuanto a este proyecto, mis intereses son velar por el uso de las herramientas que se van a utilizar para hacer efectivo nuestro objetivo

2. Describa su trabajo en proyectos de trabajo en equipo.

Mi papel es ejercer el rol o lder de soporte, mediante el cual hemos trabajado en conjunto con los dems participantes los cuales son tambin lderes en diferentes roles y hemos podido compactar la informacin de cada competencia para el resultado final.

3. Describa cualquier posicin de liderazgo o administracin que haya tenido.

Desempear el cargo de soporte tcnico es de mucha responsabilidad y sentido de perteneca, ya que en dicha funcin se impone el cuidado no solo de la parte

tcnica del Software si no tambin se vela por la parte del hardware ya que es de vital importancia el estado fsico de cada herramienta que se use. 4. Califique de 1 (menor) a 5 (mayor) sus preferencias de roles.

LDER DE EQUIPO LDER DE DESARROLLO LDER DE PLANEACIN LDER DE CALIDAD LDER DE SOPORTE NOMBRE: Oscar Javier Muoz FECHA: 6 de octubre de 2013

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

5 5 5 5 5

1. Escriba su experiencia e intereses relevantes

2. Describa su trabajo en proyectos de trabajo en equipo.

3. Describa cualquier posicin de liderazgo o administracin que haya tenido.

4. Califique de 1 (menor) a 5 (mayor) sus preferencias de roles.

LDER DE EQUIPO LDER DE DESARROLLO LDER DE PLANEACIN LDER DE CALIDAD LDER DE SOPORTE

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

5 5 5 5 5

OBJETIVOS DEL PRODUCTO Y DEL PROCESO

OBJETIVO PRINCIPAL

Implementar un sistema WMS (Warehouse Management System) o Sistema de gestin de almacenes para recepcionar, ubicar y despachar el inventario fsico de Brinsa S.A. bajo el control de cdigos de barras.

OBJETIVOS SECUNDARIOS Diagnosticar el proceso de almacenamiento, requerimiento y funcionamiento del inventario para lograr un sistema control permanente. Analizar las funciones y procedimientos necesarios para asegurar la confiabilidad de los inventarios. Aprovechar los recursos informticos y regula la sistematizacin de los formatos logrando trazabilidad.

METAS DE LOS MIEMBROS DEL EQUIPO

Ser un miembro cooperativo y efectivo Mtrica 1: promedio de evaluacin del rol en cuanto a ayuda y soporte superior a 3. Mtrica 2: promedio de evaluacin del rol en cuanto a contribucin general superior a 3. Hacer el trabajo personal de una forma consistente y disciplinada Mtrica 1: porcentaje personal de datos registrados en el libro del proyecto 100%. Realizar una planeacin y seguimiento personal de trabajo. Mtrica 1: porcentaje personal de datos registrados de tareas completadas al 100%. Finalizar el producto a tiempo Mtrica 1: Nmero de das antes o despus de la fecha de finalizacin del desarrollo estimada menor a 4 das. Desarrollar el proyecto de una forma productiva aplicando una buena administracin. Mtrica 1: Errores en la estimacin del tamao del producto menor al 20%. Mtrica 2: Errores en la estimacin del nmero de horas de desarrollo menor al 15%. Mtrica 3: Porcentaje de datos registrado en la documentacin del proyecto 100%.

METAS DEL EQUIPO. Producir un software de calidad Mtrica 1: porcentaje de defectos encontrados ante la primera compilacin 60%. Mtrica 2: requerimientos funcionales incluidos en el proyecto 100%. Desarrollar el proyecto de una forma productiva y bien administrada Mtrica 1: errores en la estimacin del tamao del producto menor al 15%.

Mtrica 2: errores en la estimacin del nmero de horas de desarrollo menor al 20%. Finalizar el producto a tiempo. Mtrica 1: nmero de das de finalizacin del desarrollo menor a 4 das.

METAS DE LOS ROLES. METAS DE LDER DEL EQUIPO Construir y mantener el equipo efectivo. Rendimiento del proyecto versus el costo, programacin, metas de calidad. Motivar a todos los miembros del equipo. Medir el trabajo con las horas a la que se comprometieron cada uno de los lderes. Comprobar todos los miembros del equipo encontr sus compromisos sobre los valores ganados. Los integrantes del equipo seguirn el proceso TSP y registraran todos los datos y completaran las formas requeridas. Resolver los asuntos de cada miembro del equipo que correspondan con el proyecto, que sean comentados por los integrantes. Revisar las evaluaciones PEER del rol del equipo para colaborar y dar soporte. Entregar un informe detallado y completo al profesor sobre el progreso. Detallar el nmero total completado de los reportes semanales. Coordinar las reuniones establecidas en el cronograma. La evaluacin PEER del equipo sobre el proyecto fue una experiencia enriquecedora.

METAS LDER DE DESARROLLO Desarrollar un producto superior. El equipo debe producir una completa y provechosa documentacin del producto que satisfaga las necesidades a los requerimientos bsicos que se exigen. Los requerimientos se deben seguir desde que fueron plasmados en los documentos SRS, SDS y al final de la implementacin. El diseo del producto debe estar completamente documentado y que satisfaga los estndares de diseo estipulados. Utilizar al mximo las habilidades y destrezas de cada uno de los miembros del equipo. La calificacin de la forma PEER debe estar por encima de bueno en la evaluacin del lder de desarrollo. El soporte que se brind debe ser calificado por encima de tres o superior en la forma PEER al lder de desarrollo.

METAS LDER DE CALIDAD Todos los miembros del equipo hacen sus reportes apropiadamente y utilizan debidamente los datos en los procesos TSPi. El equipo sigue fielmente la planeacin de calidad del proceso TSPi y desarrollan un producto de calidad. Todas las inspecciones del equipo son moderadas y reportadas propiamente. Todas las reuniones del equipo son reportadas apropiadamente y los reportes colocados en el libro de proyectos.

METAS DEL LDER DE SOPORTE

Asegurar, verificar y garantizar que todos los miembros del equipo tengan las herramientas adecuadas para la realizacin del proyecto.

El equipo debe utilizar efectivamente las herramientas que tiene a disposicin. El equipo debe utilizar un sistema manejador de cambios, un sistema de registro de problemas, un sistema de manejo de configuraciones, un ambiente comn de desarrollo y el sistema de soporte TSP. Los cambios no autorizados estn hechos para la lnea base del producto.

Todos los elementos del producto final se les hicieron control de configuraciones. Cuando los cambios fueron hechos en el cdigo, estos debieron haber sido reflejados en el diseo de la documentacin de la lnea base. Verificar Todos los riesgos y problemas del equipo, son registrados en el sistema de seguimiento de riesgos y reportados cada semana. Verificar que el equipo reutiliza sus metas para los ciclos de desarrollo.

El equipo tiene una lista de partes reutilizables. La reutilizacin del equipo y los porcentajes de reutilizacin nueva fueron medidos y registrados. El equipo consigui reutilizar algunas cosas durante el primer ciclo de desarrollo. El grado de reutilizacin se increment con cada ciclo de desarrollo.

METAS LDER DE PLANEACIN META 1: Elaborar un plan completo preciso y exacto para el equipo y para cada miembro del equipo. El plan del equipo cubre todas las tareas en el ciclo de desarrollo.

El promedio de las horas individuales por tarea estn alrededor de 5, y las tareas no individuales son ms de 10 horas. Reportar el estado del equipo cada semana. Se debe proporcionar un reporte semanal apropiado y completo sobre el estado del equipo. Si uno o ms miembros del equipo no hacen el reporte de todos los datos a tiempo, usted buscar ayuda del lder del equipo.

PRIMER ENCUENTRO FORMATO SEMANAL Y PRIMER ENCUENTRO

LDER DE DESARROLLO Nombre: Grupo: Profesor: Fecha: N de ciclo: Semana N: Lder del equipo: Lder de desarrollo: lder de planeacin : lder de calidad: lder de soporte: horas planeadas a trabajar: horas actuales: Oscar Javier Muoz B. Lder de Desarrollo Diana Carolina Pinzn 25 de octubre de 2013 1 1 Oscar J. Muoz Oscar J. Muoz Edward Yara Jorge Martnez Nidia Pulido 440 1

Lista de tareas a realizar:

1. Disear la estrategia de desarrollo. 2. Documentar el ambiente de desarrollo. 3. Dar a conocer la estrategia de desarrollo Unificar los diferentes mdulos. 4. Entregar un informe detallado y completo al lder del proceso sobre el progreso del equipo. 5. Definir el ciclo de vida de desarrollo. Identificar el lenguaje de programacin, las herramientas y software a usar.

Observaciones:

LDER DE PLANEACIN Nombre: Grupo: Profesor: Fecha: N de ciclo: Semana N: Lder del equipo: Lder de desarrollo: lder de planeacin : lder de calidad: lder de soporte: horas planeadas a trabajar: horas actuales: Edward Yara Lder de Planeacin Diana Carolina Pinzn 25 de octubre de 2013 1 1 Oscar J. Muoz Oscar J. Muoz Edward Yara Jorge Martnez Nidia Pulido 440 1

Lista de tareas a realizar:

1. Definir los productos a ser desarrollados y sus tamaos estimados. 2. Especificar las tareas y las horas que se necesitan para desarrollar el producto. 3. Generar el reporte semanal del equipo. Tener ordenadamente la planeacin y divulgarla a los dems miembros para que el equipo pueda adelantar trabajo.

Observaciones:

LDER DE CALIDAD Nombre: Grupo: Profesor: Fecha: N de ciclo: Semana N: Lder del equipo: Lder de desarrollo: lder de planeacin : lder de calidad: lder de soporte: horas planeadas a trabajar: Jorge Martnez Lder de Calidad Diana Carolina Pinzn 25 de octubre de 2013 1 1 Oscar J. Muoz Oscar J. Muoz Edward Yara Jorge Martnez Nidia Pulido 440

horas actuales: Lista de tareas a realizar:

Observaciones:

1 1. Liderar a l equipo en la elaboracin del plan de calidad. 2. Determinar e informar los problemas de calidad que se presenten 3. Establecer y socializar los estndares de calidad del equipo. Debe documentar todo lo relacionado con el equipo, garantizar un mejora continua socializando todo con el equipo

LDER DE SOPORTE Nombre: Grupo: Profesor: Fecha: N de ciclo: Semana N: Lder del equipo: Lder de desarrollo: lder de planeacin : lder de calidad: lder de soporte: horas planeadas a Nidia Pulido Lder de Soporte Diana Carolina Pinzn 25 de octubre de 2013 1 1 Oscar J. Muoz Oscar J. Muoz Edward Yara Jorge Martnez Nidia Pulido 440

trabajar: horas actuales: Lista de tareas a realizar:

Observaciones:

1 1. Evaluar cada cambio en cuanto costo beneficio. 2. Autorizar los cambios solo si tienen una versin controlada. 3. Manejar el sistema de control de configuraciones. 4. Verificar y defender la reutilizacin del cdigo. 5. Determinar las necesidades de soporte del equipo. Debe estar en la capacidad de responder a cualquier miembro del equipo y estar en contacto con ellos para suplir sus necesidades tcnicas.

LDER DEL EQUIPO Nombre: Grupo: Profesor: Fecha: N de ciclo: Semana N: Lder del equipo: Lder de desarrollo: lder de planeacin : lder de calidad: Oscar J. Muoz Lder de equipo Diana Carolina Pinzn 25 de octubre de 2013 1 1 Oscar J. Muoz Oscar J. Muoz Edward Yara Jorge Martnez

lder de soporte: horas planeadas a trabajar: horas actuales: Lista de tareas a realizar:

Nidia Pulido 440 1 1. Motivar los miembros del equipo para que realicen adecuadamente sus tareas. 2. Mantener el libro de los apuntes del proyecto. 3. Hacer el seguimiento de todos los compromisos de las tareas para mirar que estas han sido realizadas. Requiere estar pendiente de cada lder y sus responsabilidades, recae sobre sus hombros mantener de buena forma el libro del proyecto e incentivar actividades de integracin.

Observaciones:

HORA 8:00am 9:00am 10:00am 11:00am 12:00am 1:00pm 2:00pm 3:00pm 4:00pm 5:00pm 6:00pm 7:00pm

LUNES

MARTES

MIERCOLES

JUEVES

VIERNES

SABADO

DOMINGO

Lider Equipo Lider Soporte Lider Calidad Lider Planeacin Lider Desarrollo

ESTRATEGIA OPERACIONES EN EL ALMACN Las empresas necesitan tener un sistema de estudio de las entradas y las salidas tanto para posibles prdidas en ventas (carencia de mercancas), como por los costos del mantenimiento y conservacin, capital invertido (existencia excesiva de OPERACIONES DE ENTRADA Lo primero que hay que hacer cuando entran productos es identificar el origen y destino para comprobar que no es un error. Seguidamente se identifica el envo para descargarlo por la zona adecuada. Ahora ya est todo preparado para descargar la mercanca. Se avisa al personal cual ser la ubicacin de destino, sitio adecuado de descarga, el rea de devoluciones, zona de preparacin de envos, o el rea de cuarentena (es la zona dnde las mercancas reposan un tiempo antes de ser aptas para vender), como por ejemplo, las cmaras frigorficas en los almacenes de naranjas. Durante la descarga hay que hacer una comprobacin o recepcin externa del gnero (lo que est daado externamente tiene que ser devuelto, pudiendo descargarlo o no, segn el acuerdo establecido). Una vez finalizada esta fase se firma la documentacin del transportista dndole las copias correspondientes. A partir de este momento el repartidor puede abandonar la instalacin. Posteriormente se comprueba la carga (cantidad y calidad) y se separan las mercancas aceptadas, devueltas y las pendientes de algn control. Las aceptadas (normalmente con una etiqueta verde) tienen que ser almacenadas, por lo que hay que buscarle la ubicacin ms idnea para su peso forma y dimensin.

Finalmente debemos introducir la informacin sobre la actividad realizada en el sistema informtico con las caractersticas que se hayan podido dar (incidencias o errores). OPERACIONES DE SALIDA De igual manera que en las operaciones de entrada, analizaremos las diferentes fases de las operaciones de salida del almacn:

La extraccin de mercancas para finalmente enviarlas al cliente se puede hacer de dos maneras. - Extraer los productos en las unidades logsticas especializadas. - Extraer unidades sueltas (picking). Suele ser ms habitual mientras ms nos acercamos al consumidor o usuario. Es decir, el producto suele entrar en pocos envos de mucha cantidad, y sale en muchos de poca cantidad. Por ltimo e igual como ocurre en la entrada del gnero, toda actividad tiene que ser introducida en el sistema informtico. Ahora slo nos quedar embalar, pesar, etiquetar y expedir.

Una vez los productos estn en la zona de preparacin procedemos de esta manera: 1. Verificar si es todo correcto. 2. Embalar y precintar. 3. Pesar (muy importante; tanto para saber el coste como para controlar la carga). 4. -Etiquetar: - la direccin de entrega.

- Identificacin (del peso principalmente). - Mercanca peligrosa cuando lo sea. 5. Emitir documentacin junto a cada volumen. 6. Agrupar los envos que van a ser cargados en el mismo camin. 7. Entregarlos al transportista, habiendo firmado antes la documentacin correspondiente. ARQUITECTURA UTILIZADA El lenguaje en el que se ha realizado el proyecto es Java orientado a objetos, con accesos a una base de datos relacional mediante MySQL. El recorrido que se va a hacer en esta memoria nos presentar, en un primer momento, la arquitectura que va a seguir la aplicacin, a fin de conseguir comunicar el cdigo fuente con la base de datos de este sistema de informacin. Aproximadamente contaremos con un cdigo fuente de 3500 lneas.

PLANEACIN

ACTIVIDAD / TIEMPO EN SEMANAS LANZAMIENTO DEL ENCUENTRO PRIMER ENCUENTRO ESTRATEGIA PLANEACIN ESTIMACIN DEL TIEMPO ANLISIS DE RIESGOS PLAN DE ADMINISTRACIN Y CONFIGURACIN ANLISIS DE REQUERIMIENTOS DISEO CONCEPTUAL O DE ALTO NIVEL DISEO DETALLADO IMPLEMENTACIN DOCUMENTACIN POSTMORTEN PRIMERA REUNIN SEGUNDA REUNIN TERCERA REUNIN CUARTA REUNIN

S1

S2

S3

S4

S5

S6

S7

S8

S9

REPORTE DE CRONOGRAMA SCHEDULE NOMBRE: EDWARD YARA EQUIPO: PLANEACIN PARTE/NIVEL: PLANEADAS Semana No. 1 2 3 4 5 6 7 8 9 Fecha 29/09/13 6/10/13 13/10/13 20/10/13 27/10/13 3/11/13 10/11/13 17/11/13 24/11/13 Horas Directas 26 44 64 86 44 44 44 44 44 Horas Acumuladas 26 70 134 220 264 308 352 396 440 Valor Planeado Horas de Horas FECHA: 01/11/13 INSTRUCTOR: Ing. DIANA PINZN CICLO: 1 ACTUALES Valor Ganado Valor Ganado Acumulado 5,4% 15,9% 35,2% 67,0% 72,4% 77,8% 84,4% 92,4% 100,0%

Acumulado Equipo 6% 16% 30% 50% 60% 70% 80% 90% 100% 17 33 61 100 17 17 21 25 24

Acumuladas Semanalmente 17 50 111 211 228 245 266 291 315 5,4% 10,5% 19,4% 31,7% 5,4% 5,4% 6,7% 7,9% 7,6%

REPORTE DE TAREAS (TASK) VALORES TAREAS I N G E N I


FASE PARTE
AC TU

HORAS PLANEADAS D E L D E R S A R R O L L O
3 1 2 1 1 4 3 3 5 3 2 3 5 4 3 3 1

PLANEADOS H O R A S A C U M
6 11 15 20 27 30 41 51 61

AL

P L A N E A C I N
3 1 2 1 1 3 1 1 1

T S O P O R T E O T A L H O R A S
6 5 4 5 7 3 11 10 10

V A L O R P L A N
1,4 1,1 0,9 1,1 1,6 0,7 2,5 2,3 2,3

V A L O R A C U M
4 4 3 5 5 3 7 6 6

H O H O R A S R A S A C U M
1 1 1 2 2 2 2 3 3

C A LI D A D

S E M A N A S

TAREA

E R O S

Realizar la carta de constitucin del proyecto con los objetivos y


LAUNCH LAUNCH LAUNCH LAUNCH STRAT STRAT STRAT STRAT STRAT ALCANCE

alcance.
EQUIPO ROLES GLOSARIO ESTRATEGIA ESTRATEGIA ESTRATEGIA ESTRATEGIA ESTRATEGIA

1,4 2,5 3,4 4,5 6,1 6,8 9,3 11,6 13,9

4 8 11 16 21 24 31 37 43

Conformacin del equipo de trabajo. Asignacin de roles a cada miembro del equipo Elaboracin del glosario de trminos del proyecto. Definir el ciclo de vida del desarrollo. Elaborar el diseo conceptual. Establecer entregables y criterio de aceptacin Planear los riesgos Planear la administracin de la configuracin

STRAT PLAN PLAN PLAN REQ REQ REQ REQ REQ DES DES DES DES DES DES DES DES DES

ESTRATEGIA P. EQUIPO P. CALIDAD P. INGENIER LISTADO

Documentar el ambiente de desarrollo Elaborar las tareas del equipo Establecer los tems a evaluar en el plan de calidad Asignar las reas a los miembros del equipo. Generar los listados de requerimientos y casos de uso con trazabilidad. 5 4 4 2

4 5 4 4 5 7 2 3 6 2 7 3 5 6 12 6 4 8 2 2 3 3 2 2 3 7 4 4 6 4 5 2 8 4 9 9 7 2 9 5 4 9 4 6 5 2 5 2 5

8 10 13 8 9 7 12 6

69 79 92 100 109 116 128 134 146 154 163 175 192 198 212 224 235 248 259 269 281 325 334 349

1,8 2,3 3,0 1,8 2,0 1,6 2,7 1,4 2,7 1,8 2,0 2,7 3,9 1,4 3,2 2,7 2,5 3,0 2,5 2,3 2,7 10, 0 2,0 3,4

15,7 18,0 20,9 22,7 24,8 26,4 29,1 30,5 33,2 35,0 37,0 39,8 43,6 45,0 48,2 50,9 53,4 56,4 58,9 61,1 63,9 73,9 75,9 79,3

7 5 9 6 8 7 8 2 8 4 5 8 13 3 10 9 6 8 7 10 9 45 9 13

50 55 64 70 78 85 93 95 103 107 112 120 133 136 146 155 161 169 176 186 195 240 249 262

3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7

ESPECIFIC. VALIDACION MODELAMIE. ACEPTACION LINEA BASE STANDARES ARQUITEC DETALLADO BASE DATOS INTEGRACIO PROTOTIPO VALIDACION VALIDACION

Especificar los casos de uso. Validar los requerimientos de acuerdo a la IEEE830 Generar el concepto conceptual de la base de datos Elaborar los casos de prueba de aceptacin Construir la primera lnea base de los tems del producto. Listado de estndares a aplicar en el desarrollo Diseo de alto nivel de la arquitectura de solucin Diseo detallado de los casos de uso Diseo de la base de datos Planear las pruebas de la integracin de la base de datos Construir el prototipo Refinamiento del prototipo Validar el diseo detallado Construir la primera lnea base de los tems del producto. Hasta

3 5

12 8 9 12 17 6 14 12 11 13

IMP MP MP MP MP TEST

LINEA BASE

diseo
ARQUITEC VALIDACION CONSTRUCC DOCUMENTA LINEA BASE

11 10 12

Refinamiento del prototipo arquitectural Validar la arquitectura definitiva del sistema Pruebas de los casos de uso Crear manual de instalacin y configuracin Construir la lnea base de los tems del producto de software

44 9

15

TEST TEST TEST TEST PM PM PM PM

PRUEBAS PRUEBAS PRUEBAS PRUEBAS REPORTE REPORTE REPORTE REPORTE

Realizar pruebas de integracin Realizar pruebas del sistemas Realizar pruebas de Build Crear el manual del usuario Documentar las lecciones aprendidas Revisin del proyecto Evaluacin de roles Reporte de cada ingeniero. 1 7 7 5 3 2

5 4 2 2 4 7 7 5 3 4 3

5 4 4 2 4 1

10 13 10 10 14 14 10 10

359 372 382 392 406 420 430 440

2,3 3,0 2,3 2,3 3,2 3,2 2,3 2,3

81,6 84,5 86,8 89,1 92,3 95,5 97,7 100

6 5 5 4 9 9 7 8

268 273 278 282 291 300 307 315

8 8 8 8 9 9 9 9

ESTIMACIN DE TIEMPO VALORES TAREAS I N G E N I


FASE PARTE
AC TU

HORAS PLANEADAS D E L D E R S A R R O L L O
3 1 2 1 1 4 3 3 5 3 2 3 5 4 3 3 1

PLANEADOS H O R A S A C U M
6 11 15 20 27 30 41 51 61

AL

P L A N E A C I N
3 1 2 1 1 3 1 1 1

T S O P O R T E O T A L H O R A S
6 5 4 5 7 3 11 10 10

V A L O R P L A N
1,4 1,1 0,9 1,1 1,6 0,7 2,5 2,3 2,3

V A L O R A C U M
4 4 3 5 5 3 7 6 6

H O H O R A S R A S A C U M
1 1 1 2 2 2 2 3 3

C A LI D A D

S E M A N A S

TAREA

E R O S

Realizar la carta de constitucin del proyecto con los objetivos y


LAUNCH LAUNCH LAUNCH LAUNCH STRAT STRAT STRAT STRAT STRAT ALCANCE

alcance.
EQUIPO ROLES GLOSARIO ESTRATEGIA ESTRATEGIA ESTRATEGIA ESTRATEGIA ESTRATEGIA

4 4 2 1 2 1 3 2 2

1,4 2,5 3,4 4,5 6,1 6,8 9,3 11,6 13,9

4 8 11 16 21 24 31 37 43

Conformacin del equipo de trabajo. Asignacin de roles a cada miembro del equipo Elaboracin del glosario de trminos del proyecto. Definir el ciclo de vida del desarrollo. Elaborar el diseo conceptual. Establecer entregables y criterio de aceptacin Planear los riesgos Planear la administracin de la configuracin

STRAT PLAN PLAN PLAN REQ REQ REQ REQ REQ DES DES DES DES DES DES DES DES DES

ESTRATEGIA P. EQUIPO P. CALIDAD P. INGENIER LISTADO

Documentar el ambiente de desarrollo Elaborar las tareas del equipo Establecer los tems a evaluar en el plan de calidad Asignar las reas a los miembros del equipo. Generar los listados de requerimientos y casos de uso con trazabilidad.

2 2 3 2 4 4 2 1 4 1 2 2 4 1 3 2 4 4 2 4 4 4 2 2 2 8 2 2 2 5 4 4 2

4 5 4 4 5 7 3 6 2 7 3 5 6 12 6 4 8 3 3 2 2 3 7 4 4 6 4 5 4 9 9 7 2 9 5 4 9 4 6 5 2 5 2 5

8 10 13 8 9 7 12 6

69 79 92 100 109 116 128 134 146 154 163 175 192 198 212 224 235 248 259 269 281 325 334 349

1,8 2,3 3,0 1,8 2,0 1,6 2,7 1,4 2,7 1,8 2,0 2,7 3,9 1,4 3,2 2,7 2,5 3,0 2,5 2,3 2,7 10, 0 2,0 3,4

15,7 18,0 20,9 22,7 24,8 26,4 29,1 30,5 33,2 35,0 37,0 39,8 43,6 45,0 48,2 50,9 53,4 56,4 58,9 61,1 63,9 73,9 75,9 79,3

7 5 9 6 8 7 8 2 8 4 5 8 13 3 10 9 6 8 7 10 9 45 9 13

50 55 64 70 78 85 93 95 103 107 112 120 133 136 146 155 161 169 176 186 195 240 249 262

3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7

ESPECIFIC. VALIDACION MODELAMIE. ACEPTACION LINEA BASE STANDARES ARQUITEC DETALLADO BASE DATOS INTEGRACIO PROTOTIPO VALIDACION VALIDACION

Especificar los casos de uso. Validar los requerimientos de acuerdo a la IEEE830 Generar el concepto conceptual de la base de datos Elaborar los casos de prueba de aceptacin Construir la primera lnea base de los tems del producto. Listado de estndares a aplicar en el desarrollo Diseo de alto nivel de la arquitectura de solucin Diseo detallado de los casos de uso Diseo de la base de datos Planear las pruebas de la integracin de la base de datos Construir el prototipo Refinamiento del prototipo Validar el diseo detallado Construir la primera lnea base de los tems del producto. Hasta

3 5

12 8 9 12 17 6 14 12 11 13

IMP MP MP MP MP TEST

LINEA BASE

diseo
ARQUITEC VALIDACION CONSTRUCC DOCUMENTA LINEA BASE

11 10 12

Refinamiento del prototipo arquitectural Validar la arquitectura definitiva del sistema Pruebas de los casos de uso Crear manual de instalacin y configuracin Construir la lnea base de los tems del producto de software

44 9

15

TEST TEST TEST TEST PM PM PM PM

PRUEBAS PRUEBAS PRUEBAS PRUEBAS REPORTE REPORTE REPORTE REPORTE

Realizar pruebas de integracin Realizar pruebas del sistemas Realizar pruebas de Build Crear el manual del usuario Documentar las lecciones aprendidas Revisin del proyecto Evaluacin de roles Reporte de cada ingeniero.

2 2 2 2 4 4 4 4 1 7 7 5 3 2

5 4 2 2 4 7 7 5 3 4 3

5 4 4 2 4 1

10 13 10 10 14 14 10 10

359 372 382 392 406 420 430 440

2,3 3,0 2,3 2,3 3,2 3,2 2,3 2,3

81,6 84,5 86,8 89,1 92,3 95,5 97,7 100

6 5 5 4 9 9 7 8

268 273 278 282 291 300 307 315

8 8 8 8 9 9 9 9

EJECUTADAS PENDIENTES

ANLISIS DE RIESGOS

IDENTIFICAR RIESGOS

PROCEDIMIENTO DE CONTINGENCIA

NIVEL

No llegar a cumplir con los Tener muy claros los requerimientos del cliente. requerimientos, a travs de las reuniones y avances, y resaltarlos en cada momento de las reuniones con el equipo de trabajo Puede existir un retraso en Delegar parte del equipo para cuanto al tiempo de entrega de apoyar el desarrollo del alguno de los mdulos. mdulo retrasado para compensar tiempo. Malas relaciones interpersonales Promover situaciones y dentro del grupo de trabajo. dinmicas que promuevan valores de solidaridad y tolerancia. Falla elctrica.

ALTO

ALTO

ALTO

Se recomienda la instalacin de una ups en las terminales de trabajo para establecer la proteccin del suministro MEDIO elctrico. Se deber contar con un sistema auditor que valide que las transacciones realizadas hasta el momento del corte, se hayan completado ntegramente.

Falla de servidor comunicaciones.

o Se deber contar con un respaldo diario con el saldo por ubicacin. Se imprimirn

los picking y se recolectara manualmente permitiendo completar el pedido. Que parte del grupo de trabajo no cuente con el conocimiento o la capacitacin necesaria para el desarrollo del proyecto.

MEDIO

Los integrantes del grupo que cuentan con la experiencia y conocimiento darn refuerzo extra por fuera de las reuniones y entregas.

MEDIO

Ausencia de la persona encargada de manipular o Se capacitaran a lo menos a planificador del producto. tres personas para que lo puedan reemplazar. Falla de equipos (computadores Se deber modificar la zona y lectores de cdigos de barras) de acceso a equipo para que otro pueda ejecutar los procesos.

BAJO

PLAN DE ADMINISTRACIN Y CONFIGURACIN Las versiones generadas por el equipo deben ser centralizadas en el lder de desarrollo, Se van clasificar en una carpeta con nombre, numero de la versin y fecha. Se debe realizar un documento donde especifique el cambio realizado N de lnea de cdigo modificado, forma, nombre de quien realiza el cambio, fecha, quien solicita como se ve a continuacin:

Se establece como poltica de configuracin que todo cambio que se desee realizar debe ser notificado con anterioridad al lder de desarrollo y calidad y bajo su autorizacin diligenciar el formato y ejecutar los cambios propuestos.

ANLISIS DE REQUERIMIENTOS El levantamiento de requerimientos y evaluacin segn la ley IEEE/ANSI 830 de 1998 verifica que los requerimientos sean conformes a lo establecido en dicha norma y as, obtener y trabajar con requerimientos de calidad para poder determinar las estimaciones ms precisas. INTRODUCCIN PROPSITO DEL DOCUMENTO DE REQUERIMIENTOS Se precisa determinar las causas y las consecuencias que se generan a partir del manej ineficiente que se hace del departamento de almacn de la empresa Brinsa S.A. y as generar los requerimientos del software necesarios para poder resolver y solventar dicha necesidad ALCANCE DEL PRODUCTO Implementar un sistema WMS (Warehouse Management System) o Sistema de gestin de almacenes para recepcionar, ubicar y despachar el inventario fsico de Brinsa S.A. bajo el control de cdigos de barras. DEFINICIONES, ACRNICOS Y ABREVIATURAS Agrupacin de pedido (OLA): herramienta que permite agrupar pedidos segn mltiples criterios para permitir la asignacin, control de tiempo, carga de trabajo y seguimiento de la tarea de seleccin. Almacenaje Aleatorio: metodologa de almacenamiento mediante el cual una ubicacin de reserva puede ser ocupada por cualquier producto. Codigo de Razn: permiten clasificar los motivos que justifican determinadas transacciones como los ajustes y las recepciones bsicas. Cdigo de Retencin: retiene la mercanca recibida y permiten condicionar el almacenamiento dirigido.

CTO: configure to order/ orden de configurada alistamiento y despacho de varios componentes de un conjunto sin la ejecucin fsica de un ensamble, pero con verificacin del despacho combinado de los mismos. Escanear Cdigo de barras: leer un cdigo de barras con un terminal lector. Familia de Productos: grupo de productos con caractersticas similares. GUI: interfaz grfica de usuario utilizada en todas las sesiones de pc. Pick: alistamiento de pedidos, seleccin. Tag: etiqueta de recepcin pre-impresa para identificar la estiba. Ubicacin de control: es una ubicacin de seguimiento y de solucin a posibles problemas que se presenten dentro de la operacin. Ubicacin dedicada: lugar definido dentro del almacn para el manejo exclusivo de un producto en especial. WMS: Sistema de gestin de bodegas. Equipos mviles Motorola-Symbol: Mltiples procesos del WMS son ejecutados en el piso de la bodega utilizando equipos mviles Motorola-Symbol. La comunicacin entre los handheld Motorola y el servidor del WMS son transacciones en tiempo real, lo que garantiza la exactitud del control de existencias en todo momento. Multi-bodega: WMS permite administrar mltiples bodegas, distribuidas en puntos geogrficos distintos. Cada bodega requiere solamente de un acceso al Internet para que todos los computadores y handheld Motorola se comuniquen al servidor central del WMS en tiempo real. Integracin: WMS puede integrarse con los sistemas centrales de las empresas, tanto en procesos de compras y ventas del ERP como en procesos de Manufactura para requisicin de materias primas e ingreso de productos terminados.

Multi-idioma: WMS funciona en idiomas espaol e ingls. Motorola Authorized Reseller: Soluciones Estratgicas es un representante autorizado para la venta de equipos Motorola Symbol y desarrolla software para proyectos que requieren equipos con niveles de resistencia industrial. REFERENCIAS Este documento incluye informacin relacionada con las especificaciones funcionales y la teora general sobre la cual se va a fundamentar la solucin de software para el manejo de inventarios en el departamento del almacn de la empresa Brinsa S.A. basndose en la problemtica de no contar con un sistema para el manejo de inventarios dificultando el correcto funcionamiento y desempeo de las operaciones de recepcionar, ubicar y despachar productos. DESCRIPCIN GENERAL PERSPECTIVA DEL PRODUCTO Mediante la implementacin del sistema WMS (Warehouse Management System) ambicionamos que la empresa Brinsa logre la satisfaccin en cuanto a la gestin de almacenes ya que se han presentado inconvenientes en cuanto a esta gestin con toda la parte del inventario. Optimizaremos la parte de recepcin, ubicacin y despacho de la materia prima que se encuentra en el inventario fsico de Brinsa S.A. Bajo el control de cdigos de barras habr facilidad para las personas encargadas del almacn, realizar sus funciones de bsqueda, recepcin, entrada y salida de toda la materia prima. Como consecuencia de esto proyecto buscamos mejorar la calidad en la parte de gestin de almacn como tambin la del producto de dicha rea, mediante personas capacitadas e idneas para ejercer dicho cargo.

FUNCIONES DEL PRODUCTO Para que el software administre, genere y gestione los documentos de Ingeniera se necesita: Mdulo Login: Este mdulo autentica al tipo de usuario, permite su ingreso y autoriza de acuerdo el rol la entrada a los diferentes sitios del documento. Modulo Ubicacin: permite asignarle una ubicacin segn la clasifican del producto en base al cdigo de barras. Modulo Despacho/Entradas: determina la entrada del producto tanto cantidad y ubicacin y asigna el estado de salida o entrada. En base al inventario de existencias. Modulo administrar documento: Es el que permite diligenciar el documento (firmarlo, solicitar otra firma, guardarlo, insertar otra pgina, devolver el documento). Modulo gestionar usuarios: Permite asignar los permisos, aadir o excluir usuarios, define los roles para administracin de documentos. Modulo planeacin: Enva el documento al rea de planeacin para dar la efectividad que requiere el documento. Modulo publicacin: Permite enviar al Share Point los documentos que son recibidos de Planeacin y que estn totalmente diligenciados CARACTERSTICAS DEL USUARIO
Personas que manejan equipos de cmputo.

Personas que conocen el proceso sin automatizar. Adaptables al cambio. Esperan poder auto ayudarse. Aprenden con facilidad y entrenamiento. Preguntan y exploran aplicaciones Mantienen un contacto directo con el equipo de cmputo. Dispuestas a recibir capacitaciones de acuerdo al servicio instalado.

RESTRICCIONES GENERALES Las restricciones sern previstas de acuerdo a las polticas de Brinsa S.A. dadas de la siguiente manera:

Poltica seguridad de la informacin Es nuestra Poltica de Seguridad de la Informacin, establecer los criterios y comportamientos para preservar la confidencialidad, integridad y disponibilidad de la informacin, la cual aplica a todos los funcionarios de Brinsa S.A., y dems funcionarios externos ligados al negocio (contratistas, practicantes, terceros, entre otros). La informacin para Brinsa S.A., es un activo primordial para el desarrollo del negocio, razn por la cual es imperativo garantizar la confidencialidad, integridad y disponibilidad de los activos de informacin por medio de: Sistemas de informacin (redes y aplicaciones) operadas en la infraestructura necesaria para salvaguardar el correcto procesamiento, almacenamiento y transferencia de datos. El establecimiento de planes de contingencia que garanticen la continuidad del negocio. El cumplimiento de los requisitos legales que emiten los diferentes organismos. Funcionarios comprometidos con la seguridad de la informacin y que respetan las directrices Establecidas por el departamento de sistemas.

Poltica Salud Ocupacional Brinsa S.A., como empresa lder del sector productivo en Refinacin de la sal, la fabricacin de productos derivados del cloruro de sodio y productos de consumo masivo de aseo, establece la Poltica de Salud ocupacional, con el propsito de prevenir lesiones y enfermedades, comprometindose a: Minimizar los riesgos ocupacionales prioritarios para asegurar lugares de trabajo sano y seguro. Asegurar las buenas prcticas de seguridad de las operaciones y respuesta oportuna ante emergencias brindando los recursos necesarios. Integrar la variable de salud ocupacional en la gestin de cambios a nivel de procesos, productos, servicios y proyectos.

La participacin de nuestros colaboradores, proveedores y clientes en el desarrollo de una cultura basada en el auto cuidado, el cumplimiento de los requisitos legales aplicables, otros compromisos voluntarios y el mejoramiento continuo del desempeo en salud ocupacional son un soporte fundamental para el logro de los compromisos, aportando a la competitividad de la Compaa. poltica de alcohol y drogas Es poltica de Brinsa S.A. mantener lugares de trabajo donde prime la seguridad, la salud y la productividad. Somos conscientes que el alcoholismo, la drogadiccin y el abuso de otras sustancias alucingenas, enervantes o que creen dependencia por parte de nuestros empleados, contratistas o visitantes tienen efectos adversos en sus capacidades y estados afectando seriamente la seguridad y productividad de la organizacin. La indebida utilizacin de medicamentos formulados o el uso, consumo, posesin, distribucin o venta de drogas controladas no recetadas o de sustancias alucingenas, enervantes o que generen dependencia y bebidas alcohlicas, dentro de nuestras instalaciones, vehculos al servicio de la empresa, o en el caso de los trabajadores tambin en el desarrollo de sus cargos est estrictamente prohibido. En el caso de empleados de la organizacin estos hechos se consideran faltas graves y cada uno de ellos son causal de terminacin de contrato de trabajo con justa causa por parte del empleador. Para el caso de bebidas alcohlicas solo se podrn ingresar o consumir dentro de las instalaciones de la empresa o en jornada laboral si hay autorizacin previa de la Gerencia General o de quien este designe para dar dichas aprobaciones. Estos casos se refieren a eventos organizados y controlados por la empresa. poltica basc En todas nuestras instalaciones, propias o contratadas, se podrn llevar a cabo inspecciones no anunciadas en busca de bebidas alcohlicas, drogas, sustancias alucingenas, enervantes o que creen dependencia. Igualmente, se podrn hacer a toda persona que ingrese a nuestras instalaciones pruebas de consumo de estas bebidas y sustancias prohibidas por la presente poltica y a los empleados se les podr exigir que se sometan a evaluaciones mdicas o exmenes de laboratorio.

Las posibles amenazas que permanecen latentes sobre nuestros movimientos de la carga, comprometen a la Compaa a preparar y capacitar a todo su personal en materia de seguridad, dando as a nuestros clientes la satisfaccin, el apoyo y la seguridad necesaria para prevenir cualquier tipo de contrabando. Cualquier intento por debilitar o violar las normas, inversiones, procesos y estndares montados por la empresa para evitar este tipo de riesgos se considera falta grave por lo que todo aquel que labore para la empresa o ingrese a las instalaciones de la misma deber cumplir y comprometerse con el programa BASC que la Compaa ha establecido. Para el logro de este propsito la empresa se vincul al programa BASC (Coalicin Empresarial Anti Contrabando) aplicando as estndares para garantizar un ambiente de seguridad en sus instalaciones y producto. poltica de calidad Es nuestra Poltica de Calidad ofrecer productos y servicios en los cuales la experiencia de uso es nica y superior para nuestros clientes y consumidores. Las innovaciones de Brinsa hacen la diferencia cuando: El mecanismo de entrega es diferente (Empaques, servicios asociados). Crean fascinacin perdurable en los clientes (sabor perdurable, mezclas, aromas, desempeo superior, suministro sin fallas). La innovacin y el mejoramiento continuo de nuestros procesos, productos y servicios sern el camino para que nuestros clientes nos prefieran siempre. Por esta va lograremos tanto la rentabilidad para nuestros accionistas, como el bienestar, la salud y la seguridad de nuestros colaboradores y podremos mantener vigentes nuestros compromisos con la comunidad y el medio ambiente, de los cuales forman parte integral la seguridad tanto fsica como de la informacin y el cumplimiento de los requerimientos de las partes interesadas. poltica de gestin ambiental Brinsa S.A., como empresa lder del sector productivo en Refinacin de la sal, la fabricacin de productos derivados del cloruro de sodio y productos de consumo masivo de aseo, establece la Poltica de Gestin Ambiental, para asegurar la prevencin de impactos negativos, de nuestros procesos y servicios, comprometindose a: Integrar la variable ambiental en la innovacin de nuevos productos y desarrollo de proyectos.

Incrementar el uso eficiente de los recursos hdricos y energticos. Minimizar la generacin de residuos y maximizar su aprovechamiento. Fortalecer las prcticas de manejo seguro de productos qumicos para reducir los riesgos ambientales. Disminuir los riesgos de impactos ambientales asociados a situaciones de emergencia en procesos productivos y de transporte. Desarrollar con la comunidad programas de gestin ambientales. La participacin de nuestros colaboradores y proveedores en actividades de sensibilizacin en las buenas prcticas ambientales, el cumplimiento de los requisitos legales aplicables, otros compromisos voluntarios y el mejoramiento continuo del desempeo ambiental, son un soporte fundamental para lograr estos compromisos, generando valor a la Compaa. SUPOSICIONES Y DEPENDENCIAS Nuestro software realizar un cambio en la empresa Brinsa S.A. en los procesos actuales de entrada, despacho y ubicacin de los productos en el almacn, sin embargo se trabajar con las mismas terminales bajo el programa de WMS operado en Windows y a consecuencia a la positiva respuesta en las pruebas de aceptacin de software, Este funcionara en bajo un 85% en las instancias de pruebas y prototipos estimando el alcance del 100% en la entrega final . REQUERIMIENTOS ESPECFICOS En esta seccin se detalla los requisitos a un nivel suficiente minucioso como para permitir al lder de desarrollo y el equip en general, disear un sistema que satisfaga los requerimientos del cliente, y que permita al equipo de pruebas planificar y realizar dichas pruebas demostrando si el sistema a cabalidad lo propuesto. REQUERIMIENTOS FUNCIONALES El usuario inicia la aplicacin e ingresa su usuario y contrasea asignada. El usuario deber tener la posibilidad de escoger que proceso va a realizar. El sistema proporcionar visores adecuados de existencias y ubicacin para que el usuario pueda llevar a cabo los procesos pertinentes en entrada, despacho y ubicacin del producto, y permitir crear informes detallados del estado del almacn.

A cada producto se le deber asignar un identificador o consecutivo que el usuario podr consultar bajo el sistema de cdigo de barras. Esta plantilla con sus respectivos datos del producto y revisiones, no ser Aprobado, si este no cuenta con todos los campos especificados para su envi.

REQUERIMIENTOS NO FUNCIONALES El sistema debe navegador. visualizarse y funcionar correctamente en cualquier

El sistema debe cumplir las disposiciones recogidas en el reglamento de seguridad de la empresa Brinsa S.A El sistema no deber tardar ms de 20 segundos en mostrar los resultados de bsqueda de cada botn de la interfaz, si supera este plazo, el sistema detiene la bsqueda y muestra un error del sistema. REQUERIMIENTOS DEL PRODUCTO Y EXTERNOS La Interfaz debe ser implementada bajo los trminos de compatibilidad del WMS actual y sus terminales fsicas dirigidas al software de cdigos de barras y sus pistolas lectoras. El proceso de desarrollo debe estar conforme con el sistema de seguridad y gestin de calidad de la empresa Brinsa S.A. La informacin de las plantillas no debe estar al alcance del personal no autorizado.

MEDIDAS DE REQUERIMIENTOS La interfaz debe ser de fcil uso (encuesta verbal) La interfaz debe estar diseada para que pueda ser usada despus de dos horas de capacitacin

APNDICES Uno de los principales problemas al desarrollar software son los errores de ejecucin. Compilar un programa no es garanta suficiente de que funciona de la manera prevista. Es ms, el ciclo de desarrollo de un programa est ocupado, en su mayora por las tareas de diagnosticar y corregir los errores de ejecucin. Para ello se recomienda que durante el desarrollo y las pruebas se tengan en cuenta los siguientes requerimientos. ejecutar un programa lnea a lnea detener la ejecucin temporalmente en una lnea de cdigo concreta detener temporalmente la ejecucin bajo determinadas condiciones visualizar el contenido de los datos en un determinado momento de la ejecucin cambiar el valor del entorno de ejecucin para poder ver su efecto de una correccin en el software (detalle de etiqueta y contenido de las mismas).

DISEO DE ALTO NIVEL El software est diseado en lenguaje de programacin java bajo el compilador de Netbeans, que conecta con una base de datos directamente construida en MySQL la cual se encargar de guardar y gestionar los usuarios del sistema, la carga de los cdigos de barras estar encargada de una pistola lectora de cdigo de barras. El usuario se encontrar con una interfaz amable que permite su excelente navegabilidad, manteniendo la imagen institucional y los colores establecidos por la empresa Brinsa S.A. al ser un programa hecho en los lenguajes ya antes mencionados permite que sea instalado en servidor donde soportara la concurrencia de consulta y elaboracin de documentos optimizando los procesos de toma de decisiones, ampliando los canales de comunicacin y mejorando la seguridad de los datos. Los mdulos que albergara el programa sern: Proveedores: donde se almacenara la informacin de las personas natural o jurdica que proporcionan materia prima. Clientes: informacin de las personas a las que se les despacha el producto. Personal: el login donde el usuario inicia sesin. Orden de Compra: Lugar donde se diligencia la factura para el despacho del producto. Producto: donde se diligencia la entrada del producto a partir de la lectura del cdigo de barras. Kardex: donde se muestra la existencia de los productos. Actualmente para esta primera versin daremos viabilidad a los mdulos de personal, producto y kardex. Dejando listo para programar los dems mdulos. Dejando la ejecucin de la siguiente manera: pantalla de inicio: se podr acceder a los diferentes mdulos ya mencionados.

Proveedores

Clientes

Productos

package Inventario; //Declaracion de librerias import javax.swing.*; import javax.swing.Icon.*; import javax.swing.table.DefaultTableModel; import javax.swing.ListModel.*; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import javax.swing.JOptionPane;

import java.text.DecimalFormat; import java.awt.*;

public class Productos extends javax.swing.JFrame { //Declarando las claces TipoDeCambio objCambio; Arreglo_TipoCambio objArreglo_Cambio; Producto objProducto; Arreglo_Producto objArreglo; DefaultTableModel miModelo; DefaultListModel Lista; String[] cabecera = {"N","Cd. barras", "Codigo", "Cod. Fabric.","Linea", "Marca", "Modelo","Proveedor","Stk.Min.", "Stk. Max."}; String[][] data = {}; //Variables globales int num = 0;

public String Generar_Codigo () { int cod = (int)(Math.random()*(99999-10000))+10000; String codig = String.valueOf(cod);

return codig; }

public Productos() { initComponents(); objArreglo_Cambio = new Arreglo_TipoCambio();

jTxtValor1.setEditable(false); jTxtValor2.setEditable(false); Lista = new DefaultListModel(); jListProductos.setModel(Lista); miModelo = new DefaultTableModel(data, cabecera); jTblProductos.setModel(miModelo); objArreglo = new Arreglo_Producto(); Cargar_Data(); Actualizar_Tabla(); Actualizar_Lista(); jTxtCodigoBarras.requestFocus(); }

public void Carcar_Cambio() { //Lee la data del objeto serializable try { FileInputStream fis = new FileInputStream("Cambio.bin"); ObjectInputStream ois = new ObjectInputStream(fis); if(ois != null) { objArreglo_Cambio = (Arreglo_TipoCambio)ois.readObject(); ois.close(); } }//Fin del try

catch(Exception e) { JOptionPane.showMessageDialog(null,"Error al cargar el archivo binaro: "+e); } }

public void Cargar_Data() { //Lee la data del objeto serializable try { FileInputStream fis = new FileInputStream("Productos.bin"); ObjectInputStream ois = new ObjectInputStream(fis); if(ois != null) { objArreglo = (Arreglo_Producto)ois.readObject(); ois.close(); } }//Fin del try

catch(Exception e) { JOptionPane.showMessageDialog(null,"Error al cargar el archivo binaro: "+e); } }

//METODO PARA GRABAR LA INFORMACION DEL ARREGLO DE OBJETOS AL ARCHIVO BINARIO public void Grabar() { //Guarda la data en el archivo serializado try { FileOutputStream fos = new FileOutputStream("Productos.bin"); ObjectOutputStream out = new ObjectOutputStream(fos); //Comprobando si esta vacio if(out != null) { out.writeObject(objArreglo); out.close(); }//Fin del if

}//Fin del try

catch(Exception e) { JOptionPane.showMessageDialog(null,"Error en la grabacion sobre el arreglo: "+ e);

} }//Fin de Grabar

//METODOS QUE PERMITEN MANIPULAR A TABLA Y LA LISTA public void Actualizar_Tabla() { //Vaciando la informacion de la tabla Vaciar_Tabla(); //Capturando el tamao del arreglo int n = objArreglo.Numero_Producto();

for(int i=0; i < n; i++) { String cod_barras = objArreglo.getProducto(i).getCodigo_barras(); String codigo = objArreglo.getProducto(i).getCodigo_producto(); String cod_fab = objArreglo.getProducto(i).getCodigo_fabricante(); String linea = objArreglo.getProducto(i).getLinea(); String marca = objArreglo.getProducto(i).getMarca(); String modelo = objArreglo.getProducto(i).getModelo(); String proveedor = objArreglo.getProducto(i).getProveedor(); int stk_min = objArreglo.getProducto(i).getStk_minimo();

int stk_max = objArreglo.getProducto(i).getStk_maximo();

//Insertando la indormacion en la tabla

Insertar (i+1, cod_barras,codigo,cod_fab,linea,marca,modelo,proveedor,stk_min,stk_max);

}//Fin del for }

public void Insertar(int num,String cod_barras,String codigo,String cod_fab,String linea,String marca,String modelo,String proveedor,int stk_min,int stk_max) { //Llenando la fila de la tabla Object fila [] = {num,cod_barras,codigo,cod_fab,linea,marca,modelo,proveedor,stk_min,stk_max}; //Agregando la fila a nuestro modelo de tabla miModelo.addRow(fila); }

public void Vaciar_Tabla()

{ int filas = jTblProductos.getRowCount(); for(int i =0; i<filas; i++) { miModelo.removeRow(0); //Removiendo la fila de la tabla

}//Fin del for }

public void Actualizar_Lista() { //Vaciamos la informacion de la lista Lista.clear(); //Capturamos el tamao del arreglo int n = objArreglo.Numero_Producto(); //Iniziamos el ciclo repetitivo for(int i = 0; i < n; i++ ) { //Extraemos informacion de cada objeto del arreglo para insertarla en la Lista Lista.addElement( objArreglo.getProducto(i).getNombre().toUpperCase().trim() ); }//Fin del for

public void Resumen_Utilidad () { //Declarando las variables locales float p_compra = Float.parseFloat(jTxtPCompra.getText()); float p_venta = Float.parseFloat(jTxtPVenta.getText()); String util = "";

//Declarando un tipo de formato DecimalFormat df = new DecimalFormat("####.00");

float utilidad = Calcular (p_compra, p_venta); util = df.format(utilidad);

//Imprimiendo la utilidad segun sea el caso de seleccione en S/. jTxtUtilidad1.setText(util); jTxtValor1.setText(String.valueOf(p_venta - p_compra)); }

public float Calcular(float p_compra, float p_venta) { float ut = 100*(p_venta - p_compra)/p_compra; return ut;

public void Resumen_Por_Mayor() { //Declarando un tipo de formato DecimalFormat df = new DecimalFormat("####.00"); //Extraemos variables para el posterior calculo float p_compra = Float.parseFloat(jTxtPCompra.getText()); float p_pmayor = Float.parseFloat(jTxtPPMayor.getText());

//Para el precio al por mayor float utilidad2 = Calcular(p_compra, p_pmayor); //Dandole formato al porcentaje calculado de la utilidad2 String util2 = df.format(utilidad2); //Colocando la informacion de salida jTxtUtilidad2.setText(util2);

jTxtValor2.setText(String.valueOf(p_pmayor - p_compra)); }

//METODOS UTILIZADOS PARA ACTUALIZACION DE DATOS public void Modificar() {

LAS

CONSULTAS,

ELIMINACION

String codigo = JOptionPane.showInputDialog("Ingresar: proveedor").toUpperCase().trim(); String dato = Verifica_Datos(); if(dato.equalsIgnoreCase("")){ if(codigo.equalsIgnoreCase("")) { mensaje("ERROR: Cdico incorrecto"); jTxtCodigoBarras.requestFocus(); } else{ //Se vuelve a buscar el codigo para no repetir el mismo int p = objArreglo.Buscar(codigo); //Se leen los datos de entrada de los text file //Atributos principales del producto String cod_barras = jTxtCodigoBarras.getText();

Cdigo

del

codigo = jLblCodigo.getText(); String cod_fab = jTxtCodigoFabric.getText(); String nombre = jTxtNombre.getText(); String linea = jCbxLinea.getSelectedItem().toString(); String marca = jCbxMarca.getSelectedItem().toString(); String modelo = jTxtModelo.getText(); String obs = jTxaObs.getText(); Icon imagen = jLblImagen.getIcon(); //Detalles de venta del producto String vendedor = jCbxVendedor.getSelectedItem().toString(); String proveedor = jCbxProveedor.getSelectedItem().toString(); String garantia = jCbxGarantia.getSelectedItem().toString(); String fecha = jTxtFecha.getText(); int stk_min = Integer.parseInt(jTxtSMinimo.getText()); int stk_max = Integer.parseInt(jTxtSMaximo.getText()); //Detalles de precio y comisiones del producto float p_venta = Float.parseFloat(jTxtPVenta.getText()); float p_compra = Float.parseFloat(jTxtPCompra.getText()); String moneda = jCbxMoneda.getSelectedItem().toString(); float p_pmayor = Float.parseFloat(jTxtPPMayor.getText()); String utilidad1 = jTxtUtilidad1.getText();

String utilidad2 = jTxtUtilidad2.getText(); float valor1 = Float.parseFloat(jTxtValor1.getText()); float valor2 = Float.parseFloat(jTxtValor2.getText());

//Generando la clace para manejar un Registro objProducto = new Producto ( cod_barras,codigo,cod_fab,nombre,linea,marca,modelo,obs,proveedor,vendedor,g arantia,fecha,stk_min, stk_max, p_compra, utilidad2, valor2, p_pmayor, imagen); moneda, p_venta, utilidad1, valor1,

//Verificando si el codigo existe dentro del arreglo

if(p==-1)//El codigo es nuevo objArreglo.Agregar(objProducto);

else//Codigo ya existente objArreglo.Reemplaza(p, objProducto);

//Limpiando las entradas Limpiar_Entradas(); //Grabamos la informacion en el archivo binario

Grabar(); //Actualizando la tabla Actualizar_Tabla(); Actualizar_Lista(); //Colocando el cursor el en primer area de texto jTxtCodigoBarras.requestFocus(); }//Fin de elser } else mensaje("Debe llenar los campos correspondientes del producto que desea modificar");

}//Fin de modificar

public void Eliminar() { //Se llama al metodo consultar para ver los datos a borrar Consultar(); //Se llama al metodo busca en el arreglo que devuelve la posicion del codigo buscado int p = objArreglo.Buscar(jLblCodigo.getText().toUpperCase()); //Comprobando que el codigo existe

if(p != -1) { int R = JOptionPane.showConfirmDialog(this, "Est seguro de eliminar ste registro?", "Responder", 0); //Si la respuesta es AFIRMATIVA: if(R==0) { //Eliminamos el objeto en la posicion capturada (Posicion "p") objArreglo.Elimina(p); Limpiar_Entradas();//Limpiando las entradas Grabar();//Grabamos la informacion en el archivo binario Actualizar_Tabla();//Actualizamos la tabla Actualizar_Lista(); mensaje("Los datos se eliminaron correctamente"); jTxtCodigoBarras.requestFocus();//Colocando el cursor en el primer area de texto }//Fin del if

//En caso el codigo no exista else mensaje("El cdigo del alumno no existe");

}//Fin del if(Verificando que existe el codigo)

}//Fin del metodo Eliminar

public void Consultar() { String codigo = Cdigo").toUpperCase().trim(); JOptionPane.showInputDialog("Ingresar:

//Se llama al metodo busca que devuelve la posicion del codigo buscado int p = objArreglo.Buscar(codigo); //Comprobando si el codigo existe if(p==-1)//Cuando el codigo no exite { mensaje("Por favor verificar el cdigo"); Limpiar_Entradas(); }

else//Cuando existe el codigo {

//Mostramos los datos en el formulario Imprimir_Datos(p);

}//Fin del else }

//METODOS SECUNDARIOS

public void Imprimir_Datos(int pos) { //Instanciamos el objeto objProducto = objArreglo.getProducto(pos); //Se extrae la ifnromacion de los campos del objeto String cod_barras = objProducto.getCodigo_barras(); String codigo = objProducto.getCodigo_producto(); String cod_fab = objProducto.getCodigo_fabricante(); String nombre = objProducto.getNombre(); String linea = objProducto.getLinea(); String marca = objProducto.getMarca(); String modelo = objProducto.getModelo();

String obs = objProducto.getObs(); Icon imagen = objProducto.getImagen();

//Detalles de venta del producto String vendedor = objProducto.getVendedor(); String proveedor = objProducto.getProveedor(); String garantia = objProducto.getGarantia(); String fecha = objProducto.getFecha(); int stk_min = objProducto.getStk_minimo(); int stk_max = objProducto.getStk_maximo();

//Detalles de precio y comisiones del producto float p_venta = objProducto.getP_venta(); float p_compra = objProducto.getP_compra(); String moneda = objProducto.getMoneda(); float p_pmayor = objProducto.getP_pmayor(); String utilidad1 = objProducto.getUtilidad1(); String utilidad2 = objProducto.getUtilidad2();

float valor1 = objProducto.getValor1();

float valor2 = objProducto.getValor2();

//Colocando la informacion en los objetos del formulario //Atributos principales del producto jTxtCodigoBarras.setText(cod_barras); jLblCodigo.setText(codigo); jTxtCodigoFabric.setText(cod_fab); jTxtNombre.setText(nombre); jCbxLinea.setSelectedItem(linea); jCbxMarca.setSelectedItem(marca); jTxtModelo.setText(modelo); jTxaObs.setText(obs); jLblImagen.setIcon(imagen);

//Detalles de venta del producto jCbxVendedor.setSelectedItem(vendedor); jCbxProveedor.setSelectedItem(proveedor);

jCbxGarantia.setSelectedItem(garantia); jTxtFecha.setText(fecha);

jTxtSMinimo.setText(String.valueOf(stk_min)); jTxtSMaximo.setText(String.valueOf(stk_max));

//Detalles de precio y comisiones del producto jTxtPVenta.setText(String.valueOf(p_venta)); jTxtPCompra.setText(String.valueOf(p_compra)); jCbxMoneda.setSelectedItem(moneda); jTxtPPMayor.setText(String.valueOf(p_pmayor)); jTxtUtilidad1.setText(String.valueOf(utilidad1)); jTxtUtilidad2.setText(String.valueOf(utilidad2)); jTxtValor1.setText(String.valueOf(valor1)); jTxtValor2.setText(String.valueOf(valor2)); }

public void Limpiar_Entradas() { //Atributos principales del producto jTxtCodigoBarras.setText("");

jLblCodigo.setText(""); jTxtCodigoFabric.setText(""); jTxtNombre.setText(""); jCbxLinea.setSelectedIndex(0); jCbxMarca.setSelectedIndex(0); jTxtModelo.setText(""); jTxaObs.setText(""); jLblImagen.setIcon(null);

//Detalles de venta del producto jCbxVendedor.setSelectedIndex(0); jCbxProveedor.setSelectedIndex(0); jCbxGarantia.setSelectedIndex(0);

jTxtFecha.setText(""); jTxtSMinimo.setText(""); jTxtSMaximo.setText("");

//Detalles de precio y comisiones del producto jTxtPVenta.setText("");

jTxtPCompra.setText(""); jCbxMoneda.setSelectedIndex(0); jTxtPPMayor.setText(""); jTxtUtilidad1.setText(""); jTxtUtilidad2.setText(""); jTxtValor1.setText(""); jTxtValor2.setText(""); }

public String Verifica_Datos () { String dato = "";

if(jTxtCodigoBarras.getText().equals("")) {dato="Verifique los datos en el apartado: Codigo de barras "; jTxtCodigoBarras.requestFocus(); return dato; }

if(jTxtCodigoFabric.getText().equals("")) {dato="Verifique los datos en el apartado: Codigo de Fabricante ";

jTxtCodigoFabric.requestFocus(); return dato; }

if(jTxtNombre.getText().equals("")) {dato="Verifique los datos en el apartado: Nombre "; jTxtNombre.requestFocus(); return dato; }

if(jCbxLinea.getSelectedIndex()==0) { dato = "Verifique los datos en el apartado: Linea"; jCbxLinea.setSelectedIndex(0); return dato; }

if(jCbxMarca.getSelectedIndex()==0) { dato = "Verifique los datos en el apartado: Marca"; jCbxMarca.setSelectedIndex(0); return dato; }

if(jTxtModelo.getText().equals("")) {dato="Verifique los datos en el apartado: Modelo "; jTxtModelo.requestFocus(); return dato; }

if(jTxtFecha.getText().equals("")) {dato="Verifique los datos en el apartado: Fecha "; jTxtFecha.requestFocus(); return dato; }

if(jTxaObs.getText().equals("")) {dato="Verifique los datos en el apartado: especificaciones "; jTxaObs.requestFocus(); return dato; }

if(jCbxVendedor.getSelectedIndex()==0)

dato = "Verifique los datos en el apartado: Vendedor"; jCbxVendedor.setSelectedIndex(0); return dato;

if(jCbxProveedor.getSelectedIndex()==0) { dato = "Verifique los datos en el apartado: Proveedor"; jCbxProveedor.setSelectedIndex(0); return dato; }

if(jCbxGarantia.getSelectedIndex()==0) { dato = "Verifique los datos en el apartado: Garantia"; jCbxGarantia.setSelectedIndex(0); return dato; }

if(jTxtSMinimo.getText().equals("")) {dato="Verifique los datos en el apartado: Stk. Mnimo "; jTxtSMinimo.requestFocus();

return dato; }

if(jTxtSMaximo.getText().equals("")) {dato="Verifique los datos en el apartado: Stk. Mximo "; jTxtSMaximo.requestFocus(); return dato; }

if(jTxtPVenta.getText().equals("")) {dato="Verifique los datos en el apartado: Precio de Venta "; jTxtPVenta.requestFocus(); return dato; }

if(jTxtPCompra.getText().equals("")) {dato="Verifique los datos en el apartado: Precio de Compra "; jTxtPCompra.requestFocus(); return dato; }

if(jCbxMoneda.getSelectedIndex()==0) { dato = "Verifique los datos en el apartado: Moneda"; jCbxMoneda.setSelectedIndex(0); return dato; }

if(jTxtPPMayor.getText().equals("")) {dato="Verifique los datos en el apartado: Precio / Mayor "; jTxtPPMayor.requestFocus(); return dato; }

if(jTxtUtilidad1.getText().equals("")) {dato="Verifique los datos en el apartado: Utilidad "; jTxtUtilidad1.requestFocus(); return dato; }

if(jTxtUtilidad2.getText().equals("")) {dato="Verifique los datos en el apartado: Utilidad "; jTxtUtilidad2.requestFocus();

return dato; }

return ""; }

public void mensaje(String texto) { JOptionPane.showMessageDialog(this, texto); }//Fin del mensaje

@SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

GrupoSerie = new javax.swing.ButtonGroup(); jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jListProductos = new javax.swing.JList();

jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jTxtCodigoBarras = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jTxtCodigoFabric = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jTxtNombre = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); jCbxLinea = new javax.swing.JComboBox(); jLabel8 = new javax.swing.JLabel(); jCbxMarca = new javax.swing.JComboBox(); jLabel9 = new javax.swing.JLabel(); jTxtModelo = new javax.swing.JTextField(); jScrollPane2 = new javax.swing.JScrollPane(); jTxaObs = new javax.swing.JTextArea(); jLabel7 = new javax.swing.JLabel(); jBtnImagen = new javax.swing.JButton(); jLblImagen = new javax.swing.JLabel(); jLblCodigo = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel();

jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jTxtPCompra = new javax.swing.JTextField(); jTxtPVenta = new javax.swing.JTextField(); jCbxMoneda = new javax.swing.JComboBox(); jLabel14 = new javax.swing.JLabel(); jTxtPPMayor = new javax.swing.JTextField(); jLabel15 = new javax.swing.JLabel(); jLabel16 = new javax.swing.JLabel(); jTxtUtilidad1 = new javax.swing.JTextField(); jTxtUtilidad2 = new javax.swing.JTextField(); jLabel19 = new javax.swing.JLabel(); jLabel20 = new javax.swing.JLabel(); jTxtValor1 = new javax.swing.JTextField(); jTxtValor2 = new javax.swing.JTextField(); jPanel_Seleccionar = new javax.swing.JPanel(); jLabel25 = new javax.swing.JLabel(); jLabel26 = new javax.swing.JLabel(); jCbxProveedor = new javax.swing.JComboBox(); jCbxVendedor = new javax.swing.JComboBox();

jLabel27 = new javax.swing.JLabel(); jCbxGarantia = new javax.swing.JComboBox(); jLabel28 = new javax.swing.JLabel(); jLabel29 = new javax.swing.JLabel(); jLabel30 = new javax.swing.JLabel(); jTxtSMinimo = new javax.swing.JTextField(); jTxtSMaximo = new javax.swing.JTextField(); jTxtFecha = new javax.swing.JTextField(); jPanel6 = new javax.swing.JPanel(); jBtnImprimir = new javax.swing.JButton(); jBtnBuscar = new javax.swing.JButton(); jBtnGrabar = new javax.swing.JButton(); jBtnSalir = new javax.swing.JButton(); jBtnEliminar = new javax.swing.JButton(); jBtnModificar = new javax.swing.JButton(); jPanel5 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane(); jTblProductos = new javax.swing.JTable(); jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "PRODUCTOS: ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 18))); // NOI18N

jListProductos.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jListProductosKeyPressed(evt); } }); jScrollPane1.setViewportView(jListProductos);

javax.swing.GroupLayout javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout

new

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, 162, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( javax.swing.GroupLayout.DEFAULT_SIZE,

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 417, Short.MAX_VALUE) .addContainerGap()) );

jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "CARACTERSTICAS DEL PRODUCTO: javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, java.awt.Font("Tahoma", 1, 12))); // NOI18N

", new

jLabel1.setText("Codigo de barras: ");

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel3.setText("Codigo:");

jLabel4.setText("Codigo de fabric.:");

jLabel5.setText("Nombre: ");

jLabel6.setText("Seleccionar Lnea:");

jCbxLinea.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "----Seleccione----", "Programas (Utilitarios)", "Componentes de PC", "Perifricos", "Juegos" }));

jLabel8.setText("Marca: ");

jCbxMarca.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "--------Seleccione---------", "SAMSUNG", "NVIDIA", "PC CHIPS", "INTEL" }));

jLabel9.setText("Modelo:");

jTxaObs.setColumns(20); jTxaObs.setRows(5); jScrollPane2.setViewportView(jTxaObs);

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 13)); // NOI18N jLabel7.setText("Especificaciones:");

jBtnImagen.setText("IMAGEN"); jBtnImagen.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnImagenActionPerformed(evt); } });

jLblCodigo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLblCodigo.setForeground(new java.awt.Color(255, 0, 0));

javax.swing.GroupLayout javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(

jPanel2Layout

new

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jTxtCodigoBarras, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel8) .addComponent(jLabel9) .addGroup(jPanel2Layout.createSequentialGroup()

143,

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(jLabel4) .addComponent(jLabel6) .addComponent(jLabel5) .addComponent(jLabel3))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(jLblCodigo, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addComponent(jCbxMarca, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

0,

.addComponent(jTxtCodigoFabric) .addComponent(jTxtNombre) .addComponent(jCbxLinea, 0, 140, Short.MAX_VALUE) .addComponent(jTxtModelo, javax.swing.GroupLayout.Alignment.TRAILING))))) .addGap(18, 18, 18)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(jLabel7) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

149,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING, false) .addComponent(jBtnImagen, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLblImagen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(10, 10, 10)) );

146,

jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(20, 20, 20)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel1) .addComponent(jTxtCodigoBarras, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel3) .addComponent(jLblCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

16,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel4) .addComponent(jTxtCodigoFabric, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel5) .addComponent(jTxtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING) .addComponent(jLabel6) .addComponent(jCbxLinea, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel8) .addComponent(jCbxMarca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel9) .addComponent(jTxtModelo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(25, 25, 25) .addComponent(jLabel7) .addGap(4, 4, 4)

.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jLblImagen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

153,

167,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBtnImagen))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );

jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "DETALLES DE PRECIO Y UTILIDADES: javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, java.awt.Font("Tahoma", 1, 12))); // NOI18N

", new

jLabel11.setText("Precio de Compra:");

jLabel12.setText("Precio de Venta: ");

jLabel13.setText("Moneda:");

jCbxMoneda.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "-----seleccione-----", "SOLES", "DOLARES" }));

jLabel14.setText("Precio / Mayor:");

jLabel15.setText("Utilidad %");

jLabel16.setText("Utilidad %");

jTxtUtilidad1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTxtUtilidad1MouseClicked(evt); } });

jTxtUtilidad2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTxtUtilidad2MouseClicked(evt); } });

jLabel19.setText("Valor:");

jLabel20.setText("Valor:");

javax.swing.GroupLayout javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup(

jPanel3Layout

new

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(24, 24, 24)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel11)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtPCompra, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup()

74,

.addComponent(jLabel13)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCbxMoneda, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGap(18, 18, 18) 0,

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(jLabel12) .addComponent(jLabel14))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addComponent(jTxtPVenta) .addComponent(jTxtPPMayor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

63,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addGroup(jPanel3Layout.createSequentialGroup()

.addComponent(jLabel15)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtUtilidad1)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel16)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtUtilidad2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(18, 18, 18)

68,

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel19)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtValor1)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel20)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jTxtValor2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(29, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup(

90,

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel11) .addComponent(jTxtPCompra, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(5, 5, 5)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jCbxMoneda, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel13))) .addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel12) .addComponent(jTxtPVenta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel15) .addComponent(jTxtUtilidad1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING) .addComponent(jLabel14)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jTxtPPMayor, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel16) .addComponent(jTxtUtilidad2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel19) .addComponent(jTxtValor1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel20) .addComponent(jTxtValor2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(14, Short.MAX_VALUE)) );

jPanel_Seleccionar.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "SELECCIONAR ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N

jLabel25.setText("Proveedor:");

jLabel26.setText("Vendedor:");

jCbxProveedor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "--------Seleccione--------", "TERABYTE", "COMPUPLAZA", "MEGAPLAZA", "RADIOSHARK" }));

jCbxVendedor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "--------Seleccione--------", "JUAN JOSE ROMERO LIZANO", "JOEL LEIVA AGUILAR" }));

jLabel27.setText("Garanta: ");

jCbxGarantia.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "--------Seleccione--------", "Sin Garanta", "01 Mes", "02 meses", "03 Meses", "04 Meses", "04 Meses", "05 Meses", "06 Meses", "07 Meses", "08 Meses", "09 Meses", "10 Meses", "11 Meses", "1 Ao", "2 Aos" })); jCbxGarantia.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jCbxGarantiaActionPerformed(evt); } });

jLabel28.setText("Fecha:");

jLabel29.setText("Stk. Mnimo: ");

jLabel30.setText("Stk. Mximo:");

javax.swing.GroupLayout jPanel_SeleccionarLayout javax.swing.GroupLayout(jPanel_Seleccionar); jPanel_Seleccionar.setLayout(jPanel_SeleccionarLayout); jPanel_SeleccionarLayout.setHorizontalGroup(

new

jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel_SeleccionarLayout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.LEADING, false)

.addGroup(jPanel_SeleccionarLayout.createSequentialGroup() .addComponent(jLabel25)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jCbxProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel_SeleccionarLayout.createSequentialGroup() .addComponent(jLabel26) .addGap(10, 10, 10) .addComponent(jCbxVendedor, 0, 1, Short.MAX_VALUE))) .addGap(51, 51, 51)

144,

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.LEADING) .addComponent(jLabel27) .addComponent(jLabel28))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.LEADING) .addComponent(jTxtFecha, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) .addComponent(jCbxGarantia, 0, 129, Short.MAX_VALUE))

.addGap(24, 24, 24)

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.LEADING) .addGroup(jPanel_SeleccionarLayout.createSequentialGroup() .addComponent(jLabel29)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtSMinimo, javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE)) .addGroup(jPanel_SeleccionarLayout.createSequentialGroup() .addComponent(jLabel30)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTxtSMaximo, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE))) .addContainerGap()) ); jPanel_SeleccionarLayout.setVerticalGroup(

jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel_SeleccionarLayout.createSequentialGroup()

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.BASELINE) .addComponent(jLabel25) .addComponent(jCbxProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel27) .addComponent(jCbxGarantia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTxtSMinimo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel29))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel_SeleccionarLayout.createParallelGroup(javax.swing.GroupLayo ut.Alignment.BASELINE) .addComponent(jCbxVendedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel26) .addComponent(jLabel28)

.addComponent(jTxtSMaximo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel30) .addComponent(jTxtFecha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );

jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());

jBtnImprimir.setBackground(new java.awt.Color(255, 255, 255)); jBtnImprimir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/iconPrint.gif"))); // NOI18N jBtnImprimir.setText("Imprimir");

jBtnBuscar.setBackground(new java.awt.Color(255, 255, 255)); jBtnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/ico_search.jpg"))); // NOI18N jBtnBuscar.setText("Buscar");

jBtnBuscar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnBuscarActionPerformed(evt); } });

jBtnGrabar.setBackground(new java.awt.Color(255, 255, 255)); jBtnGrabar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/save.png"))); // NOI18N jBtnGrabar.setText("Grabar"); jBtnGrabar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnGrabarActionPerformed(evt); } });

jBtnSalir.setBackground(new java.awt.Color(255, 255, 255)); jBtnSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/eqsl_exit.png"))); // NOI18N jBtnSalir.setText("Salir"); jBtnSalir.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnSalirActionPerformed(evt); } });

jBtnEliminar.setBackground(new java.awt.Color(255, 255, 255)); jBtnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/RTEmagicC_EliminarPag_10_png.png"))); // NOI18N jBtnEliminar.setText("Eliminar"); jBtnEliminar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnEliminarActionPerformed(evt); } });

jBtnModificar.setBackground(new java.awt.Color(255, 255, 255)); jBtnModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/icon_edit_large.gif"))); // NOI18N jBtnModificar.setText("Modificar"); jBtnModificar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jBtnModificarActionPerformed(evt); } });

javax.swing.GroupLayout javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup(

jPanel6Layout

new

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING, false) .addComponent(jBtnSalir, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jBtnImprimir, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jBtnEliminar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jBtnModificar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) .addComponent(jBtnBuscar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jBtnGrabar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(14, Short.MAX_VALUE)) ); jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addComponent(jBtnGrabar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(6, 6, 6) .addComponent(jBtnBuscar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

56,

56,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jBtnModificar, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBtnEliminar)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBtnImprimir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

54,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jBtnSalir, 59, Short.MAX_VALUE) .addContainerGap()) ); javax.swing.GroupLayout.DEFAULT_SIZE,

jTblProductos.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null, null, null, null, null, null}, {null, null, null, null, null, null, null, null, null, null}, {null, null, null, null, null, null, null, null, null, null}, {null, null, null, null, null, null, null, null, null, null} },

new String [] { "Title 1", "Title 2", "Title 3", "Title 4", "Ttulo 5", "Ttulo 6", "Ttulo 7", "Ttulo 8", "Ttulo 9", "Ttulo 10" } )); jScrollPane3.setViewportView(jTblProductos);

javax.swing.GroupLayout javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup(

jPanel5Layout

new

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 1011, Short.MAX_VALUE) .addContainerGap()) ); jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE)

.addContainerGap()) );

jButton1.setText("LIMPIAR ENTRADAS"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });

javax.swing.GroupLayout layout javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

new

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI NG, false) .addComponent(jPanel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

0,

.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(layout.createSequentialGroup() .addGap(6, 6, 6)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI NG, false) .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel_Seleccionar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(layout.createSequentialGroup() .addGap(40, 40, 40) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG, false) .addComponent(jButton1, 0, 0, Short.MAX_VALUE) .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(19, 19, 19) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, Short.MAX_VALUE) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

9,

43,

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel_Seleccionar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) );

pack(); }// </editor-fold>

private void jBtnSalirActionPerformed(java.awt.event.ActionEvent evt) { setVisible(false); }

private void jBtnGrabarActionPerformed(java.awt.event.ActionEvent evt) { String dato = Verifica_Datos(); if(dato.equalsIgnoreCase("")) {

//Se leen los datos de entrada de los text file //Atributos principales del producto String cod_barras = jTxtCodigoBarras.getText(); String codigo = Generar_Codigo ();

String cod_fab = jTxtCodigoFabric.getText(); String nombre = jTxtNombre.getText(); String linea = jCbxLinea.getSelectedItem().toString(); String marca = jCbxMarca.getSelectedItem().toString(); String modelo = jTxtModelo.getText(); String obs = jTxaObs.getText(); Icon imagen = jLblImagen.getIcon();

//Detalles de venta del producto String vendedor = jCbxVendedor.getSelectedItem().toString(); String proveedor = jCbxProveedor.getSelectedItem().toString(); String garantia = jCbxGarantia.getSelectedItem().toString(); String fecha = jTxtFecha.getText();

int stk_min = Integer.parseInt(jTxtSMinimo.getText()); int stk_max = Integer.parseInt(jTxtSMaximo.getText());

//Detalles de precio y comisiones del producto float p_venta = Float.parseFloat(jTxtPVenta.getText());

float p_compra = Float.parseFloat(jTxtPCompra.getText()); String moneda = jCbxMoneda.getSelectedItem().toString(); float p_pmayor = Float.parseFloat(jTxtPPMayor.getText()); String utilidad1 = jTxtUtilidad1.getText(); String utilidad2 = jTxtUtilidad2.getText(); float valor1 = Float.parseFloat(jTxtValor1.getText()); float valor2 = Float.parseFloat(jTxtValor2.getText());

//Generando la clace para manejar un registro objProducto = new Producto ( cod_barras,codigo,cod_fab,nombre,linea,marca,modelo,obs,proveedor,vendedor,g arantia,fecha,stk_min, stk_max, p_compra, utilidad2, valor2, p_pmayor, imagen); moneda, p_venta, utilidad1, valor1,

//Verificando si el codigo existe dentro del arreglo if(objArreglo.Buscar(objProducto.getCodigo_producto())!= -1) mensaje("Codigo Repetido");//Se muestrea el mensaje

else { //Se agrega el objeto al arreglo objArreglo.Agregar(objProducto);

//Insertando la ifnromacion en la tabla Insertar cod_barras,codigo,cod_fab,linea,marca,modelo,proveedor,stk_min,stk_max); //Limpiando las entradas Limpiar_Entradas(); //Grabando la ifnromacion en el archivo binario Grabar(); //Actualizando la tabla de registros Actualizar_Tabla(); Actualizar_Lista(); (0,

}//Fin del else } else { mensaje(dato); jTxtCodigoBarras.requestFocus(); } }

private void jBtnBuscarActionPerformed(java.awt.event.ActionEvent evt) {

Consultar(); }

private void jBtnModificarActionPerformed(java.awt.event.ActionEvent evt) { Modificar(); }

private void jBtnEliminarActionPerformed(java.awt.event.ActionEvent evt) { Eliminar(); }

private void jListProductosKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) { if(jListProductos.getSelectedIndex()==-1) mensaje("No hay un nombre seleccionado"); else { String nombre = jListProductos.getSelectedValue().toString(); int p = objArreglo.BuscarPorNombre(nombre); //Certificando la existencia de los datos

if(p != -1) { Imprimir_Datos(p); jListProductos.requestFocus(); } }

}//Fin de cndicion de key pressed }

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Limpiar_Entradas(); }

private void jTxtUtilidad1MouseClicked(java.awt.event.MouseEvent evt) { Resumen_Utilidad (); } // TODO add your handling code here:

private void jTxtUtilidad2MouseClicked(java.awt.event.MouseEvent evt) { Resumen_Por_Mayor(); }

private void jBtnImagenActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser dlg = new JFileChooser(); //Abre la ventana de dialogo int option = dlg.showOpenDialog(this); //Si hace click en el boton abrir del dialogo if(option==JFileChooser.APPROVE_OPTION) { //Obtiene nombre del archivo seleccionado String file = dlg.getSelectedFile().getPath(); jLblImagen.setIcon(new ImageIcon(file)); //Modificando la imagen ImageIcon icon = new ImageIcon(file); //Se extrae la imagen del icono Image img = icon.getImage(); //Se modifica su tamao Image newimg img.getScaledInstance(140,170,java.awt.Image.SCALE_SMOOTH); //SE GENERA EL IMAGE ICON CON LA NUEVA IMAGEN ImageIcon newIcon = new ImageIcon(newimg); //Se coloca el nuevo icono modificado jLblImagen.setIcon(newIcon); =

//Se cambia el tamao de la etiqueta jLblImagen.setSize(256,256); } // TODO add your handling code here: code here: } // TODO add your handling

private void jCbxGarantiaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Productos().setVisible(true); } }); }

// Variables declaration - do not modify private javax.swing.ButtonGroup GrupoSerie;

private javax.swing.JButton jBtnBuscar; private javax.swing.JButton jBtnEliminar; private javax.swing.JButton jBtnGrabar; private javax.swing.JButton jBtnImagen; private javax.swing.JButton jBtnImprimir; private javax.swing.JButton jBtnModificar; private javax.swing.JButton jBtnSalir; private javax.swing.JButton jButton1; private javax.swing.JComboBox jCbxGarantia; private javax.swing.JComboBox jCbxLinea; private javax.swing.JComboBox jCbxMarca; private javax.swing.JComboBox jCbxMoneda; private javax.swing.JComboBox jCbxProveedor; private javax.swing.JComboBox jCbxVendedor; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16;

private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JLabel jLblCodigo; private javax.swing.JLabel jLblImagen; private javax.swing.JList jListProductos; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3;

private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel_Seleccionar; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable jTblProductos; private javax.swing.JTextArea jTxaObs; private javax.swing.JTextField jTxtCodigoBarras; private javax.swing.JTextField jTxtCodigoFabric; private javax.swing.JTextField jTxtFecha; private javax.swing.JTextField jTxtModelo; private javax.swing.JTextField jTxtNombre; private javax.swing.JTextField jTxtPCompra; private javax.swing.JTextField jTxtPPMayor; private javax.swing.JTextField jTxtPVenta; private javax.swing.JTextField jTxtSMaximo; private javax.swing.JTextField jTxtSMinimo; private javax.swing.JTextField jTxtUtilidad1; private javax.swing.JTextField jTxtUtilidad2; private javax.swing.JTextField jTxtValor1;

private javax.swing.JTextField jTxtValor2; // End of variables declaration

Personal package Inventario; import javax.swing.*; public class Acceso_Administrador extends javax.swing.JFrame { Vendedores vendedor = new Vendedores(); public Acceso_Administrador() { initComponents(); }

public void Validacion() { String pass1 = jPass1.getText(); String pass2 = jPass2.getText(); if(pass1.equalsIgnoreCase("acreditacion") pass2.equalsIgnoreCase("acreditacion")) { vendedor.setVisible(true); this.hide(); Limpiar_Entradas(); } else if (pass1.equalsIgnoreCase(pass2) != true) { mensaje("No conside la contrasea"); Limpiar_Entradas(); jPass1.requestFocus(); } else { mensaje ("Contrasea incorrecta"); } } public void Limpiar_Entradas() { jPass1.setText(""); jPass2.setText(""); } public void mensaje(String texto) { JOptionPane.showMessageDialog(this, texto); }//Fin del mensaje @SuppressWarnings("unchecked") &&

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jPass1 = new javax.swing.JPasswordField(); jLabel4 = new javax.swing.JLabel(); jPass2 = new javax.swing.JPasswordField(); jLabel5 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jBtnOk = new javax.swing.JButton(); jBtnCancel = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 13)); // NOI18N jLabel1.setText("Nivel de acceso:"); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 0, 0)); jLabel2.setText("ADMINISTRADOR"); jLabel3.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N jLabel3.setText("Ingresar contrasea:"); jPass1.setText("jPasswordField1"); jPass1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jPass1MouseClicked(evt); } }); jPass1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jPass1ActionPerformed(evt); } }); jPass1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jPass1KeyPressed(evt); } }); jLabel4.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N jLabel4.setText("Confirmar contrasea:"); jPass2.setText("jPasswordField2"); jPass2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jPass2MouseClicked(evt); } }); jPass2.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jPass2KeyPressed(evt); } }); jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/keys.gif"))); // NOI18N jPanel2.setBackground(new java.awt.Color(255, 255, 255)); jBtnOk.setBackground(new java.awt.Color(255, 255, 255)); jBtnOk.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/icon_confirm.jpg"))); // NOI18N jBtnOk.setText("Ok"); jBtnOk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnOkActionPerformed(evt); }

}); jBtnOk.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jBtnOkKeyPressed(evt); } }); jBtnCancel.setBackground(new java.awt.Color(255, 255, 255)); jBtnCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/icon48Delete.png"))); // NOI18N jBtnCancel.setText("Cancel"); jBtnCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnCancelActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( = new

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jBtnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jBtnCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );

jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.TRAILING, false) .addComponent(jBtnCancel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jBtnOk, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 47, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel1Layout javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( = new

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap(30, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addComponent(jLabel1) .addComponent(jLabel3)

.addComponent(jLabel4)) .addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING, false) .addComponent(jPass2) .addComponent(jPass1) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jLabel5) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(58, 58, 58)))) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(23, 23, 23) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jLabel1) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jLabel3) .addComponent(jPass1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jLabel4) .addComponent(jPass2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(48, Short.MAX_VALUE) .addComponent(jLabel5) .addGap(86, 86, 86)) ); javax.swing.GroupLayout layout javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( = new

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// </editor-fold> private void jPass1MouseClicked(java.awt.event.MouseEvent evt) { jPass1.setText(""); } private void jPass2MouseClicked(java.awt.event.MouseEvent evt) { jPass2.setText(""); } private void jPass1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jBtnOkActionPerformed(java.awt.event.ActionEvent evt) { Validacion(); } private void jBtnCancelActionPerformed(java.awt.event.ActionEvent evt) { setVisible(false); }

private void jPass1KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) { jPass2.requestFocus(); jPass2.setText(""); }

} private void jPass2KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) Validacion(); } private void jBtnOkKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) Validacion(); }

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Acceso_Administrador().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jBtnCancel; private javax.swing.JButton jBtnOk; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2; private javax.swing.JPasswordField jPass1; private javax.swing.JPasswordField jPass2; // End of variables declaration } package Inventario; import java.io.FileInputStream; import java.io.ObjectInputStream; import javax.swing.JOptionPane; public class Identificacion extends javax.swing.JFrame { Tipo_Cambio tipo_de_cambio = new Tipo_Cambio (); vendedor objVendedor; Arreglo_Vendedores objArreglo_Vendedor; public Identificacion() { initComponents(); objArreglo_Vendedor = new Arreglo_Vendedores(); Cargar_Data(); }

public void Validacion () { String dato = Verifica_Datos(); if(dato.equalsIgnoreCase("")) { switch (jCbxNivel_acces.getSelectedIndex()) { case 1: //ADMINISTRADOR Validar_Administrador(); break; case 2://VENDEDOR Validar_Vendedor(); break;

}//Fin del switch }//Fin de if else mensaje(dato); } public void Validar_Administrador() { String password = jPasswordField1.getText(); if (jCbxNivel_acces.getSelectedItem().toString().equalsIgnoreCase("ADMINIS TRADOR") && password.equalsIgnoreCase("acreditacion")) { tipo_de_cambio.setVisible(true); this.hide(); Limpiar_Entradas(); } else mensaje ("Contrasea incorrecta"); } public void Validar_Vendedor() { String password = jPasswordField1.getText(); if(jCbxNivel_acces.getSelectedItem().toString().equalsIgnoreCase("VENDE DOR") && password.equalsIgnoreCase("usuario")) { //Extraemos el codigo del vendedor String codigo = jTxtCodigo.getText().toUpperCase(); //Se llama al metodo busca que devuelve la posicion del codigo buscado int p = objArreglo_Vendedor.Buscar(codigo); //Comprobando si el codigo existe con los valores de retorno if(p==-1)//Cuando el codigo no exite { mensaje("Cdigo incorrecto");

Limpiar_Entradas(); } else//Cuando existe el codigo { //Mostramos el formulario tipo_de_cambio.setVisible(true); this.hide(); Limpiar_Entradas(); }//Fin del else }//Fin del if } public void Cargar_Data() { //Lee la data del objeto serializable try { FileInputStream fis = new FileInputStream("Vendedores.bin"); ObjectInputStream ois = new ObjectInputStream(fis); if(ois != null) { objArreglo_Vendedor = (Arreglo_Vendedores)ois.readObject(); ois.close(); } }//Fin del try catch(Exception e) { JOptionPane.showMessageDialog(null,"Error al cargar el archivo binaro: "+e); } } public void Limpiar_Entradas() { jCbxNivel_acces.setSelectedIndex(0);

jTxtCodigo.setText(""); jPasswordField1.setText(""); } public void mensaje(String texto) { JOptionPane.showMessageDialog(this, texto); }//Fin del mensaje public String Verifica_Datos() { String dato=""; if(jCbxNivel_acces.getSelectedIndex()==0) {dato="Verifique el NIVEL DE ACCESO"; jCbxNivel_acces.requestFocus(); return dato; } if(jPasswordField1.getText().equals("")) {dato="Verifique la CONTRASEA "; jPasswordField1.requestFocus(); return dato; } return ""; } public void EvaluarNiveDelAcceso() { if (jCbxNivel_acces.getSelectedItem().toString().equalsIgnoreCase("ADMINIS TRADOR")) { jTxtCodigo.setEnabled(false);jLblCod.setEnabled(false);} else {jTxtCodigo.setEnabled(true);jLblCod.setEnabled(true);jTxtCodigo.requestF ocus();} }

@SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jCbxNivel_acces = new javax.swing.JComboBox(); jPasswordField1 = new javax.swing.JPasswordField(); jBtnOk = new javax.swing.JButton(); jBtnExit = new javax.swing.JButton(); jLblCod = new javax.swing.JLabel(); jTxtCodigo = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jButton1.setText("jButton1");

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE ); jPanel2.setBackground(new java.awt.Color(255, 255, 255)); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel2.setText("NIVEL DE ACCESO: "); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel3.setText("CONTRSEA:"); jCbxNivel_acces.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "---------Seleccione--------", "ADMINISTRADOR", "VENDEDOR" })); jCbxNivel_acces.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jCbxNivel_accesMouseClicked(evt); } });

jCbxNivel_acces.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCbxNivel_accesActionPerformed(evt); } }); jCbxNivel_acces.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jCbxNivel_accesKeyPressed(evt); } }); jPasswordField1.setText("jPasswordField1"); jPasswordField1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jPasswordField1MouseClicked(evt); } }); jPasswordField1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jPasswordField1KeyPressed(evt); } }); jBtnOk.setBackground(new java.awt.Color(255, 255, 255)); jBtnOk.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/icon_confirm.jpg"))); // NOI18N jBtnExit.setBackground(new java.awt.Color(255, 255, 255)); jBtnExit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/icon_cancel.png"))); // NOI18N jBtnExit.setText("Exit"); jBtnExit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jBtnExitActionPerformed(evt); }

}); jLblCod.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLblCod.setText("Codigo:"); jTxtCodigo.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jTxtCodigoKeyPressed(evt); } }); jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos graficos/candado.png"))); // NOI18N javax.swing.GroupLayout jPanel2Layout javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( = new

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.TRAILING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.TRAILING) .addComponent(jLabel2) .addComponent(jLblCod)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D)

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING, false) .addComponent(jTxtCodigo) .addComponent(jCbxNivel_acces, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jBtnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addComponent(jBtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel3) .addGap(18, 18, 18) .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGap(0, 17, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jCbxNivel_acces, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELA TED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jTxtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLblCod)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.BASELINE) .addComponent(jLabel3) .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING, false) .addComponent(jBtnOk, 0, 0, Short.MAX_VALUE)

.addComponent(jBtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel1) .addGap(37, 37, 37))) .addContainerGap(10, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( =

44,

new

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// </editor-fold> private void jBtnExitActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }

private void jBtnOkActionPerformed(java.awt.event.ActionEvent evt) { Validacion(); } private void jPasswordField1MouseClicked(java.awt.event.MouseEvent evt) { jPasswordField1.setText(""); } private void jCbxNivel_accesActionPerformed(java.awt.event.ActionEvent evt) { EvaluarNiveDelAcceso(); } private void jCbxNivel_accesMouseClicked(java.awt.event.MouseEvent evt) { } private void jCbxNivel_accesKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) { if(jCbxNivel_acces.getSelectedItem().toString().equalsIgnoreCase("VENDE DOR")) jTxtCodigo.requestFocus(); else if (jCbxNivel_acces.getSelectedItem().toString().equalsIgnoreCase("ADMINIS TRADOR")) { jPasswordField1.requestFocus(); jPasswordField1.setText(""); } } } private void jTxtCodigoKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) {

jPasswordField1.setText(""); jPasswordField1.requestFocus(); } } private void jPasswordField1KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==evt.VK_ENTER) Validacion(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Identificacion().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jBtnExit; private javax.swing.JButton jBtnOk; private javax.swing.JButton jButton1; private javax.swing.JComboBox jCbxNivel_acces; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLblCod; private javax.swing.JPanel jPanel2; private javax.swing.JPasswordField jPasswordField1; private javax.swing.JTextField jTxtCodigo; // End of variables declaration }

Orden de Compra

CASOS DE USO

Entrada Usuario

Determina Ubicacion Salida Usuario

USUARIO

Lectura Codigo

Entrada Producto

Movimientos Productos

Listado de productos Listado mivimientos


OPERARIO

Listado Inventario

DIGITADOR

Listado Ubicaciones

Salida Producto

También podría gustarte