Academia.eduAcademia.edu

TESIS COMPLETA

1 UNIVERSIDAD TECNOLÓGICA ISRAEL FACULTAD DE SISTEMAS INFORMÁTICOS TEMA: Desarrollo de un sistema de control de procesos de entrada y salida de un producto mediante tecnología móvil en empresas comerciales Estudiante María Eulalia Gutiérrez Tuapante Tutor Ing. Pablo Tamayo Cuenca – Ecuador Diciembre 2011 2 UNIVERSIDAD TECNOLÓGICA ISRAEL FACULTAD DE SISTEMAS INFORMÁTICOS CERTIFICADO DE AUTORÍA El documento de tesis con título “Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales” ha sido desarrollado por María Eulalia Gutiérrez Tuapante con C.I Nº 010495243-7 persona que posee los derechos de autoría y responsabilidad, restringiéndose la copia o utilización de cada uno de los productos de esta tesis sin previa autorización. María Eulalia Gutiérrez Tuapante 3 UNIVERSIDAD TECNOLÓGICA ISRAEL FACULTAD DE SISTEMAS INFORMÁTICOS CERTIFICADO DE RESPONSABILIDAD Yo, Ing. Pablo Tamayo, certifico que la señora María Eulalia Gutiérrez Tuapante con C.I, Nº. 010495243-7 realizó la presente tesis con el título “Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales”, y que es autor intelectual del mismo, que es original, auténtico y personal. ______________________________ Ing. Pablo Tamayo 4 UNIVERSIDAD TECNOLÓGICA ISRAEL FACULTAD DE SISTEMAS INFORMÁTICOS CERTIFICA: Que el presente trabajo de investigación “Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales”, realizado por la Sra. María Eulalia Gutiérrez Tuapante, egresada de la facultad Sistemas Informáticos, se ajusta a los requerimientos técnicos-metodológicos y legales establecidos por la Universidad Tecnológica Israel, por lo que se autoriza su presentación. Cuenca, 1 de Diciembre de 2011 ___________________________ Ing. Pablo Tamayo DIRECTOR DE TESIS 5 UNIVERSIDAD TECNOLÓGICA ISRAEL FACULTAD DE SISTEMAS INFORMÁTICOS ACTA DE CESIÓN DE DERECHOS Yo, María Eulalia Gutiérrez Tuapante declaro conocer y aceptar la disposición de la Normativa de la Universidad Tecnológica Israel que en su parte pertinente textualmente dice: “Forma parte del Patrimonio de la Universidad la propiedad intelectual de las investigaciones, trabajos científicos o técnicos y tesis de grado que se realicen a través, o con el apoyo financiero, académico o institucional (operativo) de la Universidad”. Cuenca, Diciembre 1 del 2011 ___________________________ María Eulalia Gutiérrez Tuapante 6 AGRADECIMIENTO Quiero agradecer y reconocer la colaboración de todas las personas que hicieron posible que esta tesis se realizara, es por ello que agradezco a todos los profesores que durante el tiempo que he permanecido en esta Institución, han plasmado sus enseñanzas en el contenido teórico y práctico en esta tesis, pero en especial a mi Tutor el Ingeniero Pablo Tamayo, por todo su apoyo brindado al desarrollo de este proyecto, que ayudó a que esta idea se convierta en realidad, y quien con su colaboración, esfuerzo, paciencia y comprensión, ha sido la coautor de este importante logro obtenido. 7 DEDICATORIA La presente Tesis de Grado la dedico primeramente a Dios por guiarme en cada instante de mi vida, por darme la salud y la fuerza para poder culminar esta etapa de mi carrera y por ser el amigo incondicional que está siempre junto a mí y que con su bondad me permitió alcanzar una meta más de las que me he propuesto. A mi esposo y mis padres quienes con sus sacrificios diarios se constituyeron en los principales gestores del objetivo que hoy alcanzo, que con paciencia y compresión ha permanecido a mi lado en buenos y malos momentos. Gracias al apoyo de todos ellos conseguiré una educación que permitirá en el futuro ser una profesional de provecho para mi familia y la sociedad. 8 TABLA DE CONTENIDO Pág. CAPITULO I INTRODUCCIÓN 1 1.1 Tema de investigación 2 1.2 Planteamiento del Problema 2 1.2.1 Antecedentes 2 1.3 Diagnóstico o planteamiento de la problemática general 3 1.3.1 Causa 3 1.3.2 Efectos 3 1.4 Sistematización 4 1.4.1 Diagnostico 4 1.4.2 Pronostico. 4 1.4.3 Control del Pronóstico 5 1. 1.5 Objetivos 5 1.5.1 Objetivo general 5 1.5.2 Objetivos específicos 5 1.6 Justificación 6 1.6.1 Justificación Teórica 6 1.6.2 Justificación Práctica 6 1.6.3 Justificación Metodológica 7 1.7 Estudios de factibilidad 8 1.7.1 Factibilidad Técnica 8 1.7.2 Factibilidad Operativa 8 1.7.3 Factibilidad Económica 9 CAPITULO II 2. MARCO DE REFERENCIA 10 2.1 Marco Conceptual 10 2.1.1 Definición de Empresa 10 2.1.2 10 Empresas Comerciales 9 2.1.3 Definición de Sistema Informático 10 2.1.4 Software de control de entradas y salidas 11 2.1.5 Tecnología Inalámbrica 12 2.1.5.1Ventajas de la Tecnología Inalámbrica 13 2.1.6 Red Inalámbrica 13 2.1.7 La seguridad en las WLAN 13 2.1.8 Dispositivos móviles 14 2.1.8.1PDA (Personal Digital Assistant) 14 2.1.8.2Pocket PC 17 2.1.8.3Handheld PC 18 2.1.8.4Tablet PC 18 2.1.8.5Smartphone 19 2.1.8.6Teléfonos celulares 20 2.1.9 20 Sistemas Operativos Móviles 2.1.9.1Windows Mobile 20 2.1.9.2Symbian 21 2.1.9.3Palm OS 23 2.1.9.4Android 24 2.1.10 Plataformas de desarrollo de aplicaciones móviles 24 2.1.10.1 J2ME 24 2.1.10.2 Microsoft .NET 25 2.1.11 Emuladores para Dispositivos Móviles 29 2.1.12 Centro de dispositivos de Windows Mobile 31 2.1.13 Gestores de Base de Datos 32 2.1.13.1 SQL Server 2005 Compact Edition 32 2.1.13.2 Oracle 32 2.1.13.3 MySQL 33 2.1.13.4 PostgreSQL 34 2.2 Marco Temporal/Espacial 35 CAPITULO III 3. 3.1. METODOLOGÍA Metodología de Investigación 36 36 10 3.1.1 Tipo de Investigación 36 3.1.2 Métodos 36 3.1.3 Técnicas 37 3.2. Metodología de desarrollo de software 3.2.1 Proceso Unificado de Desarrollo 38 38 3.2.1.1 Descripción de RUP (Rational Unified Process) 39 3.2.1.2 Fases del RUP 40 3.3. 42 Tecnología 3.3.1 3.3.1.1 Sistemas Operativos para dispositivos móviles 42 Comparación de los detalles básicos y el funcionamiento de los Sistemas Operativos 43 3.3.2 Herramientas para el desarrollo de la aplicación móvil 45 3.3.3 Software de Desarrollo 45 3.3.3.1 Visual Studio 2008 46 3.3.4 Funcionalidad del Emulador en Windows Mobile 47 3.3.5 Centro de dispositivos de Windows Mobile 50 3.3.6 Gestor de Base de Datos a desarrollo en la aplicación 51 3.3.6.1 SQL Server 2005 Compact Edition 3.3.6.2 51 Comparación de SQL Server con otros gestores de base de 53 datos CAPITULO IV 4. DESARROLLO 54 4.1 Perspectiva del sistema 54 4.2 Restricciones del sistema de entrada y salida 54 4.3 Interfaces externas 55 4.3.1 Interfaces de usuario 55 4.3.2 Interfaces hardware 55 4.3.3 Interfaces software 56 4.4 Flujo de trabajo (Workflow) del sistema 56 4.4.1 56 Fase de Inicio 4.4.1.1 Análisis del sistema actual 56 4.4.1.2 Descripción de Actores 58 11 4.4.1.3 Identificación de los casos de uso 58 4.4.1.4 Catálogo de Requerimientos del sistema 59 4.4.2 Fase de Elaboración 62 4.4.2.1 Modelado de Caso de Uso 62 4.4.2.1.1 Aplicación de Casos de Uso 63 4.4.2.1.1.1 Caso de uso Mantenimiento de Usuarios 63 4.4.2.1.1.2 Caso de uso Mantenimiento de Bodega 64 4.4.2.1.1.3 Caso de uso Mantenimiento de Producto 65 4.4.2.1.1.4 Caso de uso Mantenimiento de Proveedor 66 4.4.2.1.1.5 Caso de uso Movimiento de Entrada 67 4.4.2.1.1.6 Caso de uso Movimiento de Salida 68 4.4.2.1.2 Descripción de casos de uso 69 4.4.2.2 Diagrama de Actividad 81 4.4.2.2.1 Diagrama de Actividad Ingreso al Sistema 81 4.4.2.2.2 Diagrama de Actividad Movimiento de Entrada 82 4.4.2.2.3 Diagrama de Actividad Movimiento de Salida 83 4.4.2.2.4 Diagrama de Actividad Consultas de los Movimientos 84 4.4.2.3 Diagrama de Colaboración 85 4.4.2.3.1 Diagrama de Colaboración Inicio de Sesión 85 4.4.2.3.2 Diagrama de Colaboración del Movimiento de Entrada 85 4.4.2.3.3 Diagrama de Colaboración del Movimiento de Salida 86 4.4.2.4 Diseño del sistema 86 4.4.2.4.1 Descripción de las clases 86 4.4.2.4.2 Diccionario de clases 87 4.4.2.4.3 Diagrama de Clases 88 4.4.2.4.4 Diagrama de Secuencia 89 4.4.2.4.4.1 Diagrama de Secuencia Ingreso al Sistema 89 4.4.2.4.4.2 Diagrama de Secuencia Movimiento de Entrada 90 4.4.2.4.4.3 Diagrama de Secuencia Movimiento de Salida 91 4.4.2.4.5 92 Diagrama de Estado 4.4.2.4.5.1 Diagrama de Estado Inicio de Sesión 92 4.4.2.4.5.2 Diagrama de Estado de Ingreso de Productos 92 12 4.4.2.4.5.3 Diagrama de Estado de la Salida de Productos 93 4.4.2.4.6 94 Diseño de Interfaces 4.4.2.4.6.1 Pantalla Ingreso al Sistema 94 4.4.2.4.6.2 Menú Principal del Administrador 94 4.4.2.4.6.3 Mantenimiento de Proveedores 95 4.4.2.4.6.4 Mantenimiento de Bodega 95 4.4.2.4.6.5 Mantenimiento de Usuarios 96 4.4.2.4.6.6 Mantenimiento de Productos 96 4.4.2.4.6.7 Menú Principal del Bodeguero 97 4.4.2.4.6.8 Entrada de Mercadería 97 4.4.2.4.6.9 Salida de Mercadería 98 4.4.2.4.6.10 Consulta de los Movimiento de Entrada y Salida 98 4.4.2.4.6.11 Kardex del Producto 99 4.4.2.5 Implementación 99 4.4.2.5.1 Creación de tablas 99 4.4.2.5.2 Modelo Entidad Relación 100 4.4.3 Fase de Construcción 102 4.4.3.1 Plan de Prueba 102 4.4.3.2 Objetos Evaluados 103 4.4.3.3 Acciones de Prueba 103 CAPITULO IV 5. CONCLUSIONES Y RECOMENDACIONES 106 5.1 Conclusiones 106 5.2 Recomendaciones 106 BIBLIOGRAFÍA 107 ANEXOS 108 13 LISTA DE CUADOR Y GRAFICOS Pág. Figura 1. Matriz de Hardware necesario para el sistema 9 Figura 2 Matriz de Software necesario para el sistema 9 Figura 3. Matriz del costos de la implementación del sistema 9 Figura 4. Gráfico de la Interfaz de la aplicación 11 Figura 5. Ejemplos de los PDA 16 Figura 6. Ejemplo de un Pocket PC 17 Figura 7. Ejemplo de un Handheld PC 18 Figura 8. Ejemplo de un Tablet PC 19 Figura 9. Ejemplos de Smartphones 19 Figura 10. 21 Vista del Sistema Operativo de Windows Mobile Figura 11. Vista de la Plataforma S60 22 Figura 12. Vista de la Plataforma UIQ 22 Figura 13. Vista del Sistema Operativo de Palm OS 23 Figura 14. Vista del Sistema Operativo de Android 24 Figura 15. Esquema de Comunicación de J2ME 25 Figura 16. Componentes de Visual C# 29 Figura 17. Centro de dispositivos de Windows Mobile 31 Figura 18. Fases del RUP 40 Figura 19. Comparación de los detalles básicos entre los Sistemas Operativos Móviles Figura 20. 43 Comparación sobre el Funcionamiento de los Sistemas Operativos Móviles 44 Figura 21 Dispositivos móviles que se pueden programar con .NET 47 Figura 22. Administrador de emuladores de dispositivos 48 Figura 23. Emulador del Pocket PC 49 Figura 24. Matriz comparativa de gestores de base de datos 53 Figura 25. Matriz de Interfaz con el Hardware 55 Figura 26. Diagrama de Flujo de datos 57 14 Figura 27. Matriz de Actores del sistema 58 Figura 28. Diagrama de caso de uso 62 Figura 29. Caso de uso control de usuarios 63 Figura 30. Caso de uso control de bodegas 64 Figura 31. Caso de uso control de producto 65 Figura 32. Caso de uso control de proveedores 66 Figura 33. Caso de uso movimiento entrada 67 Figura 34. Caso de uso movimiento salida 67 Figura 35. Diagrama de Actividad Ingreso al sistema 81 Figura 36. Diagrama de Actividad del Movimiento de Entrada 82 Figura 37. Diagrama de Actividad del Movimiento de Salida 83 Figura 38. Diagrama de Actividad sobre consulta de los movimientos 84 Figura 39. Diagrama de Colaboración de Inicio de Sesión 85 Figura 40. Diagrama de Colaboración del Movimiento de Entrada 85 Figura 41. Diagrama de Colaboración del Movimiento de Salida 86 Figura 42. Descripción de clases 86 Figura 43. Matriz Diccionario de clases 87 Figura 44. Diagrama de clases 88 Figura 45. Diagrama de Secuencia Ingreso al Sistema 89 Figura 46. Diagrama de Secuencia Movimiento de Entrada 90 Figura 47. Diagrama de Secuencia Movimiento de Salida 91 Figura 48. Diagrama de Estado de Inicio de Sesión 92 Figura 49. Diagrama de Estado de la Entrada de Productos 92 Figura 50. Diagrama de Estado de la Salida de Productos 93 Figura 51. Pantalla Ingreso al Sistema 94 Figura 52. Menú Principal del Administrador 94 Figura 53. Mantenimiento de Proveedores 95 Figura 54. Mantenimiento de Bodega 95 Figura 55. Mantenimiento de Usuarios 96 Figura 56. Mantenimiento de Productos 96 Figura 57. Menú Principal del Bodeguero 97 15 Figura 58. Entrada de Mercadería 97 Figura 59. Entrada de Mercadería 98 Figura 60. Consulta de los Movimiento de Entrada y Salida 98 Figura 61. Kardex de productos 99 Figura 62. Tabla Bodega 99 Figura 63. Tabla Producto 100 Figura 64. Tabla Movimiento Cabecera 100 Figura 65. Tabla Movimiento Detalle 100 Figura 66. Tabla Usuario 101 Figura 67. Tabla Proveedor 101 Figura 68. Tabla Proveedor 101 Figura 69. Diagrama de Entidad Relación 102 Figura 70. Caso de Prueba Entrada de Productos 103 Figura 71. Caso de Prueba Salida de Productos 104 Figura 72. Caso de Prueba Consulta de los movimientos 104 Figura 73. Caso de Prueba Kardex de los productos 105 16 RESUMEN El presente tema de tesis tiene como objetivo el resolver la problemática que afronta actualmente la distribuidora “Orellana”, el cual no dispone de ningún tipo de automatización en el proceso de Control de entrada y salida de producto, ya que al realizarlo de forma manual está propenso a que se cometan muchos errores y pérdidas de información. Se ha propuesto una alternativa efectiva y viable a este problema, la cual soluciona de manera eficaz los contratiempos que en este momento afronta la empresa. La solución para automatizar y mejorar el Control de Inventario de bodega, es desarrollar un software que realice este proceso de manera segura y confiable, usando tecnología de punta y muy actual, como es el caso de los Asistentes Personales Digitales, que accederán en tiempo real y de forma inalámbrica a la base de datos de la aplicación, registrando de forma inmediata la información necesaria para llevar correctamente el inventario de bodega de la empresa. 17 SUMMARY The present thesis theme is to resolve the trouble that the enterprise "Orellana" has right now, as they don’t have any software for the inventory control process because when you do it by hand you can make a lot of mistakes and can miss information. Our proposal is a new effective choice for this problem, which solves effectively all the problems that the enterprise has right now. The solution to improve the control of the inventory of cellar, is development software that makes this process trustful, using actual technology, like the personal digital assistance (PDA´s), that will access in real time and wireless to the database of the application, registering immediately the required information to maintain the inventory of cellar of the company correctly. 18 1. INTRODUCCIÓN Hoy en día, la informática en red se ha convertido en un factor importante en la vida de una empresa la razón principal implica la cantidad de información que actualmente se maneja, hace que el tratamiento automático de la información sea realmente útil y necesario. En la actualidad los sistemas de información están basados en computadoras que son objetos de gran consideración en la toma de decisiones oportunas, confiables y efectivas en cuanto a técnicas de planificación, programación y administración con el fin de garantizar su éxito, limitar el riesgo y reducir costos y aumentar las ganancias. Debido a esta razón, nace la idea de automatizar el control de entradas y salidas de los productos de una empresa; cabe mencionar el vertiginoso avance de las telecomunicaciones y el progreso que han experimentado las ciencias informáticas que permiten entrar al moderno mundo de la tecnología, y ser más competitivos. Mediante el análisis de las técnicas de investigación nos identifica claramente falencias que afectan el funcionamiento de la empresa, situación que se ha hecho evidente en la forma como se ejecuta el proceso de control de entrada y salida de un artículo. 19 Por lo tanto, estos aspectos son importantes para la elaboración y diseño de sistemas de información, así satisfacer los requerimientos de los usuarios y mejoras las tareas de control del producto de la empresa. Es importante en toda empresa, que se dedique a la comercialización de productos, tener un sistema eficiente de control de artículos, el cual permita saber, cuánto y cuándo se debe pedir para el reabastecimiento de la bodega de mercaderías para la venta. 1.1 Tema de investigación Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales. 1.2 Planteamiento del Problema 1.2.1 Antecedentes La Distribuidora Orellana fue creada en el año 2005, actualmente está ubicada en la calle Paseo de los Cañarís de la ciudad de Cuenca. Su objetivo es la compra y venta de productos terminados, Actualmente no mantienen datos actualizados de los niveles de stock la mayor parte del tiempo, esto debido a que la empresa realiza sus controles de forma manual, por lo que la entrada y salida de productos del inventario no son lo suficientemente efectivos para poder controlar la información. En conclusión si los procesos de carga y descarga del inventario no se realizan directamente al sistema, si no que incluyen un proceso manual con papeleo se 20 genera una pérdida de tiempo que conlleva a la falta de información actualizada y al desaprovechamiento de recursos humanos, de tiempo y financieros 1.3 Diagnóstico o planteamiento de la problemática general 1.3.1 Causa La inversión que debe realizar una empresa en adquirir un software para el control de los procesos de entrada y salida del inventario es baja, teniendo en cuanta que su principal capital está en sus activos que posee. Es por eso que la forma tradicional de manejar el control de inventarios en un sistema manual es insegura ya que puede existir la modificación o pérdida de información. 1.3.2 Efectos La no inversión de tecnología en una empresa que apoye a los principales procesos disminuirá el nivel de competitividad y productividad de una organización. Al mantenerse con un sistema manual de procesos, no se tendrá un soporte en la toma de decisiones, para ello necesitan llevar a cabo una buena administración, por lo cual se propone desarrollar un sistema que facilite la administración de los recursos y que a su vez proporcione información veraz y oportuna en tiempo real. 21 1.4 Sistematización 1.4.1 Diagnostico Mediante la investigación que se ha realizado dentro de la Distribuidora “Orellana” se ha determinado el siguiente diagnóstico. Esta empresa viene trabajando hace 6 años atrás, Su objetivo es la compra y venta de productos terminados, actualmente maneja sus procesos de forma manual, su visión es poder controlar sus procesos mediante un sistema automatizado que le permita agilizar sus actividades. En este momento la empresa maneja el proceso de entrada mediante una hoja de Excel y en cuanto al proceso de salida lo realiza de forma manual, es decir este control es registro en una hoja de papel, para luego realizar la descarga del inventario. Esos controles actualmente no mantienen datos actuales y conlleva a no tener una información oportuna. 1.4.2 Pronostico. Una empresa al no utilizar un sistema informático, que le ayude a controlar la entrada y la salida de un producto, implica que no tendrá una información oportuna de su mercancía y por ello no se pueda tomar decisiones para el bienestar de la empresa. Es por ello que se propone desarrollar una aplicación que cubra estos requerimientos, con el fin de automatizar y agilizar los procesos. 22 1.4.3 Control del Pronóstico Debido al pronóstico antes mencionado surge la idea de automatizar las actividades de control de entradas y salidas de un producto; cabe mencionar el vertiginoso avance de las telecomunicaciones y el progreso que experimentado las ciencias informáticas que obliga a estar a tono y entrar al moderno mundo de la tecnología, para poder ser competitivos. Con han este software se pretende controlar las entradas y salidas de los productos, también se podrá realizar consultas sobre los producto. Este proyecto a su vez optimizará los recursos materiales y tiempo, ya que el usuario se podrá conectar en cualquier momento y lugar. 1.5 Objetivos 1.4.1 Objetivo general Desarrollar un sistema de control de entradas y salidas de productos mediante el uso de tecnología móvil en el área de bodega, permitiendo automatizar y agilizar el proceso. 1.4.2 Objetivos específicos Analizar y Diseñar un modelo de control de entradas de productos. Analizar y Diseñar un modelo de control de salida de productos Control del movimiento de los productos de entrada y salida. Generación de consultas de los movimientos de entrada y salida. 23 1.6 Justificación 1.5.1 Justificación Teórica El software elegido a desarrollar previa la obtención del título de Ingeniería de Sistemas se debe a los avances tecnológicos y además porque existen muchos empresas comerciales que no cuentan con un sistema que les permita manejar sus principales actividades de una manera eficaz y eficiente, dentro de nuestro país muchas organizaciones ya disponen de un software que controle sus productos, siendo este una gran ayuda para el profesional de esta rama. La realización de este software se lo realizara Microsoft Visual Studio 2008 herramientas de actualidad y con una base de datos SQL Server C.E, estas herramientas facilitaran el mejor desarrollo de programas. Con el fin de solucionar el control de productos de una empresa. El desarrollo del sistema permite plasmar cada uno de los conocimientos adquiridos en clases y de esta manera también adquirir nuevos conocimientos a través de la investigación. 1.5.2 Justificación Práctica El presente tema de tesis tiene como objetivo el resolver la problemática que afronta actualmente la Distribuidora Orellana, el cual no dispone de ningún tipo de automatización en los procesos de Control de Entrada y Salida de sus productos, ya que al realizarlo de forma manual está propenso a que se cometan muchos errores y pérdidas de información. 24 Se ha propuesto una alternativa efectiva y viable a este problema, la cual soluciona de manera eficaz los contratiempos que en este momento afronta el almacén. La solución para automatizar y mejorar el Control de Entrada y Salida es desarrollar un software que realice estos procesos de manera segura y confiable, usando tecnología de punta y muy actual, como es el caso de los Asistentes Personales Digitales (PDA’s), que accederán en tiempo real y de forma inalámbrica a la base de datos de la aplicación, registrando de forma inmediata la información necesaria para llevar correctamente el inventario de bodega de la empresa. 1.5.3 Justificación Metodológica El sistemas se lo realizar mediante una investigación aplicada, la que nos permitirá conocer de manera amplia la problemática que se está viviendo dentro de las empresas comerciales. También se utilizara la metodología inductiva-deductiva para poder determinar los requerimientos. Se empleara la técnica de las entrevistas, para recabar información en forma verbal, ya que las opiniones, comentarios, ideas o sugerencias en relación a como se podría hacer solucionar los problemas que están surgiendo dentro del proceso de entrada y salida de los producto. 25 1.7 Estudios de factibilidad 1.6.1 Factibilidad Técnica Dentro de la factibilidad técnica de este proyecto está la parte del hardware necesario para el funcionamiento de la aplicación, como es un Pocket PC y una PC Pentium IV 1.8 Ghz. En cuanto al Software, para el desarrollo de la aplicación se usará el Visual Studio .NET, con la cual tendremos la posibilidad de una vez desarrollada la misma, cargarlo en el emulador de Microsoft Windows Mobile .NET proporcionado por la Microsoft como Edición Gratuita, así comprobar su funcionamiento. Además será necesario SQL Server 2005 Compact Edition para la Base de datos. 1.6.2 Factibilidad Operativa En cuanto a la factibilidad operativa, para el desarrollo de este proyecto, no existe resistencia al cambio por parte de los usuarios al automatizar sus procesos actuales, ya que estos cambios permitirá trabajar de manera óptima y eficaz, con el fin de mejorar su productividad y atención y servicio al cliente. 1.6.3 Factibilidad Económica En la factibilidad económica se establecen los costos y beneficios del proyecto. A continuación se presenta un cuadro que muestra un resumen de los costos de implantación del Sistema para el Control de Entrada y Salida. 26 Hardware Cantidad Descripción Costo 1 Pocket PC 350 Costo del Hardware 350$ Figura 1. Matriz de Hardware necesario para el sistema Software Descripción Costo Visual Studio 2008 Professional Windows Mobile 5.0 0 SQL Server 2005 Compact Edition 0 Costo del Software $ Figura 2. Matriz de Software Costo de la implementación del sistema Descripción Hardware Costo 350 Software Gastos de operación (Gastos de 200 papelería, impresión de documentos, energía electica, otros gastos) Costo total de implementación 550$ Figura 3. Matriz del costos de la implementación del sistema 27 2. MARCO DE REFERENCIA 2.1 Marco Conceptual 2.1.1 Definición de Empresa La empresa es la organización económico-social en la que el capital, el trabajo y la dirección planifican y coordinan para realizar una producción socialmente útil, de acuerdo con las exigencias de la sociedad que nos rodea. El objetivo de una empresa es de satisfacer las necesidades del mercado mediante la utilización de recursos materiales y humanos. Se encarga, por tanto, de la organización de los factores de producción, capital y trabajo. 2.1.2 Empresas Comerciales Estas empresas son aquellos intermediarios entre el productor y el consumidor, su función principal es la compra y venta de productos terminados y sus canales de distribución son los mercados mayoristas, minoristas o detallistas y los comisionistas. 2.1.3 Definición de Sistema Informático Un sistema informático, es el conjunto de elementos interconectados para el procedimiento de la información, en el cual se incluyen elementos físicos hardware y elementos lógicos como el software. Dentro del hardware están los procesadores, memoria, sistemas de almacenamiento externo, etc. Y dentro del software incluye al sistema operativo, firmware, aplicaciones, y los sistemas de gestión de bases de datos. 28 2.1.4 Software de control de entradas y salidas El software de control de entradas y salidas, es una herramienta que nos permitirá controlar los productos ingresados a la área de bodega de la empresa de igual manera el control de la salida del producto se lo llevara mediante el traslado entre sucursales o almacenes registrados en el sistema. Hoy en día mediante el uso de tecnología móvil, este sistema tiene la ventaja de realizar la actualización y consulta de información en tiempo real, hacia la base de datos del sistema de forma directa, lo cual agiliza las actividades de control de entradas y salidas de productos. Esta aplicación nos permite saber la cantidad de producto que disponemos y la que se ha trasladado a las respectivas sucursales o almacenes. Mediante este sistema, las empresas comerciales obtendrán información real de los proceso del inventario de bodega con que se cuenta físicamente, el usuario tener información oportuna y actualizada para poder tomar decisiones a bienestar de la empresa. Figura 4. Gráfico de la Interfaz de la aplicación 29 2.1.5 Tecnología Inalámbrica La tecnología inalámbrica ofrece una oportunidad extraordinaria para que las empresas extiendan su información y servicios hasta los usuarios móviles. La combinación de estos factores puede aumentar la productividad, reducir los costes operativos e incrementar la satisfacción de los clientes. Existen una gran cantidad de aplicaciones para la tecnología inalámbrica como una aplicación de entradas y salidas de productos para una empresa comercial mediante un dispositivo móvil, este tipo de aplicación nos permite saber la cantidad exacta de productos que ingresan a bodega y los que son trasladados a las diferentes sucursales La implementación de este tipo de tecnología es gracias a los diferentes tipos de equipos móviles que poseen funciones similares a las de un computador personal, con esto los usuarios solo necesitan un dispositivo móvil para acceder a las aplicaciones empresariales y por consiguiente a su información, con lo que se verá incrementado su rendimiento y la velocidad de respuesta en un proceso. Con la implementación de este tipo de aplicaciones se consigue la disminución de costos, incremento en la satisfacción de sus clientes, incremento en la velocidad de respuesta, mayor productividad de los empleados e incremento en las utilidades de la empresa. 2.1.5.1 Ventajas de la Tecnología Inalámbrica La tecnología inalámbrica aporta las siguientes ventajas: Rapidez de instalación. 30 Desaparición del cableado. Facilidad de funcionamiento. Movilidad: Se debe de tomar en cuenta la zona de cobertura inalámbrica (muy útil para PDAs, portátiles, etc.) Bajo coste de adquisición y mantenimiento. Escalabilidad: Se puede expandir a centenares de usuarios en una red local inalámbrica. Portabilidad: Se puede trasladar una red local sin depender de complejos cableados fijos. 2.1.6 Red Inalámbrica Una red inalámbrica es un sistema de comunicación de datos que proporciona conexión inalámbrica entre equipos situados dentro de la misma área (interior o exterior) de cobertura. En lugar de utilizar el par trenzado, el cable coaxial o la fibra óptica, utilizado en las redes LAN convencionales, las redes inalámbricas transmiten y reciben datos a través de ondas electromagnéticas, con esta tecnología, los empleados de las empresas pueden permanecer conectados a las aplicaciones de productividad y a los recursos informativos prácticamente en todo momento y lugar. 2.1.7 La seguridad en las WLAN El tema de la seguridad representa un gran inconveniente en este tipo de redes pues es muy difícil controlar el acceso a ellas, pues, en redes con cables suele contarse con un firewall que impide el acceso desde el exterior a personas no autorizadas, y no puede saltearse este dispositivo porque el cable pasa por él y 31 no hay forma de eludirlo. En cambio, en una red inalámbrica, un firewall puede esquivarse, pues las ondas viajan en todas direcciones, con lo cual un intruso puede saltear esa protección. Por ello, para proteger estas redes se utiliza un método de autentificación y cifrado. El primero impide el acceso a personas no autorizadas mediante un nombre de usuario y una contraseña, y el segundo impide que algún intruso que intercepte una comunicación pueda descifrarla. 2.1.8 Dispositivos móviles Gran variedad de dispositivos móviles existen en la actualidad, cada uno con diferentes funciones que se ajustan a las necesidades de los usuarios. Este proyecto va dirigido a los Pocket PC 1 pero existen una gran variedad de dispositivos que permiten utilizar aplicaciones inalámbricas. Entre estos tenemos: 2.1.8.1 PDA (Personal Digital Assistant) Es un pequeño ordenador de bolsillo equipado con pantalla de cristal líquido que no posee teclado físico, tiene un lápiz digital que hace las veces de ratón y teclado. Este incluye un conjunto de programas útiles para el control de las actividades personales: lista de teléfonos, planificador de citas, bloc de notas, calculadora, hoja de cálculo, etc. Estos dispositivos poseen un MODEM o tarjeta inalámbrica tienen acceso a Internet con lo que es posible correr aplicaciones móviles, algunos tienen incorporadas una pequeña cámara digital y con esto es posible enviar imágenes mediante correo electrónico. También 1 Pocket PC: es un ordenador de bolsillo, también llamado PDA (Personal Digital Assistant) 32 permite almacenar correo electrónico que el usuario desee. Este dispositivo utiliza las redes de telefonía celular para acceder a Internet y correr aplicaciones móviles. Ya que los PDA’s carecen de teclado, utilizan como método de introducción de datos un sistema de reconocimiento de escritura. El usuario escribe sobre la pantalla del PDA con un lápiz de plástico (Stylus), y la máquina interpreta sus trazos y los convierte en las letras correspondientes. Elementos básicos de un PDA Sistema operativo. Los más frecuentes son: - PalmOS de Sony. - Windows Mobile, también conocido como Pocket PC. Procesador. Los PDA basados en Palm OS están equipados con procesadores de pocos Mhz (unos 16), pues resultan más que suficientes para el tipo de aplicaciones que tienen que ejecutar, mientras que los PDA basados en Windows u otros sistemas operativos incluyen procesadores más potentes (hasta 150 Mhz). Memoria. La memoria RAM de los PDA basados en Palm OS suele ser de 2, 4 u 8 MB, y en muchas ocasiones no puede ampliarse; la de los Pocket PC y Handheld PC, entre otros, es como mínimo de 16 ó 32 MB, pudiendo generalmente ampliarse mediante tarjetas de memoria flash. Puertos expansión. Es el término que hace referencia a las posibles ranuras de expansión existentes en un PDA, es decir, los puertos en que pueden conectarse las tarjetas de memoria o módems. Los PDA 33 basados en Palm OS no siempre disponen de una ranura para tarjetas de memoria. Pantalla. Supone casi el 80% de la superficie del aparato. Existen pantallas monocromas y con pantallas a color. La resolución es otra consideración clave. Generalmente se miden en píxeles horizontales por verticales, determinando así el número de puntos en pantalla. Por ejemplo las de 160 x 160 son de baja resolución, mientras que las 640 x 480 constituyen las mejores. Peso y ergonomía. Debido al tipo de uso, su PDA está destinado a convertirse en un acompañante diario. Por ello es necesario considerar su peso. Generalmente, los modelos de más de 200 gr o demasiado gruesos no son realmente funcionales. Es el peso óptimo se encuentra alrededor de los 110 y los 130 gr. En lo que respecta al tamaño, debe adaptarse lo mejor posible al de su mano. Figura 5. Ejemplos de los PDA 34 2.1.8.2 Pocket PC Una Pocket PC es un dispositivo que brinda al usuario las funciones más comunes de un computador, diseñado para ocupar el mínimo espacio y ser fácilmente transportable que ejecuta el sistema operativo Windows CE de Microsoft entre otros, el cual le proporciona capacidades similares a los PC de escritorio. Entre sus principales funciones son: Organizador de tareas, permite organizar y recordar tareas pendientes Bloc de notas, se puede almacenar cualquier tipo de nota. Hoja de cálculo y editor de texto, da la facilidad de realizar cualquier tipo de informe desde este dispositivo. Permite reproducir archivos de audio y video Acceso a Internet, se puede almacenar correo electrónico y correr aplicaciones móviles desde este dispositivo. Este no posee teclado, en su lugar posee un lápiz digital llamado stylus. De igual manera que el PDA este tiene acceso mediante las redes de telefonía celular a Internet y a las aplicaciones móviles. Figura 6. Ejemplo de un Pocket PC 35 2.1.8.3 Handheld PC Sus características son similares que un PDA y un Pocket PC, su diferencia está en sus características físicas ya que estos poseen una pantalla más grande y tienen incorporado un teclado. Estos dispositivos son ideales al momento de redactar cualquier tipo de informes gracias a su teclado y su software de edición de texto y hoja de cálculo. A diferencia de los dispositivos anteriores este posee un módem el cual permite el acceso a Internet mediante la línea telefónica convencional. Figura 7. Ejemplo de un Handheld PC 2.1.8.4 Tablet PC Estos dispositivos básicamente no poseen teclado pero tienen un puerto por el cual es posible conectar un teclado para facilidad del usuario. Sus características son similares a un computador personal por el software que tiene instalado, de igual manera sus principales funciones son: organizador de citas, libreta de direcciones, bloc de notas, editor de texto, hoja de cálculo, administración de correo electrónico, etc. 36 Tienen acceso a redes inalámbricas mediante el protocolo 802.11 2 Wi-Fi, por lo cual es posible correr aplicaciones móviles empresariales. Figura 8. Ejemplo de un Tablet PC 2.1.8.5 Smartphone Estos dispositivos tienen características similares a un teléfono celular, además incluyen las principales funciones de un PDA que son: libreta de direcciones, organizador de tareas, bloc de notas, calculadora, hoja de cálculo, etc. Al tener la capacidad de un teléfono celular para realizar comunicaciones es posible acceder a diferentes tipos de aplicaciones móviles usando tecnologías de comunicación celular. Figura 9. Ejemplos de Smartphones 2 802.11: es un estándar internacional que define las características de una red de área local inalámbrica 37 2.1.8.6 Teléfonos celulares Son los más utilizados en nuestro medio, su función principal es la comunicación. Actualmente existen teléfonos celulares que incorporan diferentes funciones como libreta de direcciones, calculadora, organizador de tareas, etc. Mediante estos dispositivos es posible acceder a diferentes tipos de aplicaciones móviles, la limitación de estos es la capacidad de procesamiento y el tipo de pantalla que poseen que limita el acceso a diferentes aplicaciones móviles. 2.1.9 Sistemas Operativos Móviles Un Sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un PC. Su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es lograr que el sistema de cálculo se use de manera cómoda y que el hardware del PC se emplee de manera eficiente. Entre los Sistemas Operativos Móviles más vistos en los dispositivos están: 2.1.9.1 Windows Mobile El desarrollo de este proyecto está bajo esta Sistemas Operativos Móviles, debido a que está basado al PocketPC. Este sistema operativo es el que cuenta con la mayor difusión en el mercado de PDAs. 38 Windows Mobile, permite una fácil conexión a una gran variedad de redes inalámbricas, detecta automáticamente las redes Wi-Fi y se conecta de forma sencilla a ellas y a las redes de área personal a través de Bluetooth. Los lenguajes de programación que se pueden utilizar mediante Visual Studio para desarrollar una aplicación son; C#, C++, J#, JScript o ASP .Net. Figura 10. Vista del Sistema Operativo de Windows Mobile 2.1.9.2 Symbian Es el Sistemas Operativos instalado en mayor número de dispositivos móviles en la actualidad, sobre todo en teléfonos móviles. Tiene dos plataformas: S60 y UIQ Plataforma S60 Es una plataforma para terminales móviles que utilicen el sistema operativo Symbian OS. Esta plataforma consiste en un conjunto de bibliotecas y aplicaciones informáticas estándar, tales como telefonía, herramientas de gestión de información personal, y reproductores multimedia. Se puede encontrar en terminales móviles modernos de amplias características, con 39 pantallas en color muy grandes, que son conocidos comúnmente como terminales Smartphone. Figura 11. Vista de la Plataforma S60 Plataforma UIQ UIQ (Interfaz de Usuario Quartz) es una plataforma para terminales móviles desarrollada por UIQ Technology basada en el sistema operativo Symbian. Se caracteriza por agregar soporte para pantallas táctiles. Se usa principalmente en smartphones de Sony Ericsson. Figura 12. Vista de la Plataforma UIQ Symbian está basado en un micro kernel, una mínima porción del sistema tiene privilegios del kernel. Una de las tareas del kernel es manejar las interrupciones 40 y prioridades. El sistema posee componentes que permiten el diseño de aplicaciones multiplataforma, diferentes tamaños de pantalla, color, resolución, teclados, etc. La mayoría de estos componentes han sido diseñados en C++. Las empresas que han intervenido en el desarrollo de aplicaciones de la plataforma Symbian son: IBM, Lotus, Oracle, SAP, Sybase, Nokia Developer Community. Los lenguajes de programación utilizados en la plataforma Symbian son: C++, Java y Visual Basic sobre un emulador. 2.1.9.3 Palm OS Palm OS es un sistema operativo para móviles inicialmente desarrollado por Palm Inc, está diseñado para ser de fácil uso con una interfaz gráfica de usuario basada en el touch screen, en este vienen incluidas aplicaciones básicas para la administración de información personal (calendario, calculadora, notas, etc.). Dentro de las versiones más recientes de este sistema operativo fueron extendidas para soportar smartphones. Figura 13. Vista del Sistema Operativo de Palm OS 41 2.1.9.4 Android Android es el sistema operativo de Google, y está basado en el núcleo Linux, diseñado originalmente para dispositivos móviles, tales como teléfonos inteligentes, pero que posteriormente se expandió su desarrollo para soportar otros dispositivos tales como tablet, reproductores MP3, netbook, PC, entre otros. Es a código abierto y existen de aplicaciones gratis. Figura 14. Vista del Sistema Operativo de Android 2.1.10 Plataformas de desarrollo de aplicaciones móviles 2.1.10.1 J2ME J2ME es la versión de Java orientada a los dispositivos móviles con poca capacidad de memoria, poca capacidad de proceso y pantallas de reducidas dimensiones, es multiplataforma y se ejecuta bajo una máquina virtual especial. Dentro de los dispositivos que se pueden utilizar con J2ME esta los siguiente; Teléfonos Celulares Convencionales Smart Phones Palms Hanhelds Otros Dispositivos Portátiles 42 La arquitectura J2ME brinda además conectividad a Internet a través de GPRs3, con lo cual todos los dispositivos telefónicos celulares convencionales tienen enlace a Internet, evitando así disponibilidad de Wifi u otros servicios. Figura 15. Esquema de Comunicación de J2ME 2.1.10.2 Microsoft .NET Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Los componentes principales de la plataforma .NET son: Un entorno de ejecución de aplicaciones, también llamado “Runtime”. Un conjunto de bibliotecas Un conjunto de lenguajes de programación de alto nivel, junto con sus compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma .NET. Un conjunto de herramientas de desarrollo para simplificar las tareas más comunes del proceso de desarrollo de aplicaciones 3 GPRs (General Packet Radio Service) oservicio general de paquetes vía radio es una extensión del Sistema Global para Comunicaciones Móviles. 43 Microsoft .NET Framework Este es el modelo de programación de Microsoft .NET para desarrollar aplicaciones de tipo Web, cliente y servicios Web XML.4 Dentro de la plataforma de Microsoft .NET existen algunas herramientas como son: Common Language Runtime (CLR) Este es responsable de los servicios en tiempo de ejecución. Librerías de clases, proporcionan funcionalidad estándar, manipulación de strings, gestión de la seguridad, comunicaciones en redes, etc. Además nos permite tener acceso a bases de datos con ADO.Net y páginas Web dinámicas y Servicios Web con ASP.Net Visual Studio.NET Visual Studio .NET es un conjunto completo de herramientas de desarrollo para la construcción de aplicaciones; Web ASP, servicios Web XML, aplicaciones para escritorio y aplicaciones móviles. Visual Basic, Visual C++, Visual C#, estos lenguajes de programación aprovechan las funciones de .NET Framework. Visual Studio cuenta con un framework (.Net 3.5) y está diseñado para mejoras de desempeño, escalabilidad y seguridad. 4 Los servicios Web XML son un conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. 44 Visual Basic .NET Es un lenguaje orientado a objetos y eventos que soporta encapsulación, herencia y polimorfismo. Visual Basic permite a los desarrolladores centrar el diseño en Windows, el Web y dispositivos móviles. Como con todos los lenguajes que tienen por objetivo Microsoft .NET Framework, los programas escritos en Visual Basic se benefician de la seguridad y la interoperabilidad de lenguajes, ofrece una manera rápida y fácil de crear aplicaciones basadas en .NET Framework. Esta plataforma cuenta con un entorno de desarrollo de alto rendimiento, es posible aprovechar su entorno para construir una amplia gama de aplicaciones móviles, Web, Windows y basadas en Office. Presenta mejoras en el IDE, además de que proporciona soporte de depuración remoto, posibilidad de generar aplicaciones de 64 bits, y acceso completo a los servicios del sistema y a las bases de datos. Incluye Crystal Reports para la generación de reportes y proyectos de instalación basados en Windows Installer. Visual C++ .NET Visual C++ .NET es un completo conjunto de herramientas para la creación de aplicaciones basadas en Microsoft Windows y Microsoft .NET, aplicaciones Web dinámicas y servicios Web XML utilizando el lenguaje de programación C++. Este sólido entorno de desarrollo incluye las bibliotecas estándar como son; ATL (Active Template Library) y MFC (Microsoft Foundation Class), extensiones avanzadas del lenguaje y eficaces características del entorno de 45 desarrollo integrado (IDE) que permiten a los programadores editar y depurar código fuente de un modo eficaz. Entre las nuevas características de Visual C++ .NET, se encuentran atributos de C++, extensiones administradas, servidor ATL y numerosas optimizaciones y mejoras de las bibliotecas, el IDE y el compilador. Visual C++ .NET es único entre los lenguajes compatibles con .NET porque admite tanto el modelo de código administrado que proporciona .NET Framework como el modelo de código nativo no administrado basado en Windows. Al ser compatible con ambos modelos de programación, Visual C++ .NET mantiene y mejora el código y los conocimientos existentes, y proporciona las máximas opciones posibles para los programadores y las organizaciones. Visual C# .NET C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. C# permite la creación de aplicaciones para Windows, servicios web, herramientas de bases de datos, componentes, controles, etc. Ventajas de Visual C# La facilidad del lenguaje permite crear aplicaciones para Windows en muy poco tiempo. Es decir, permite un desarrollo eficaz y menor inversión en tiempo que con otros lenguajes. 46 Permite generar librerías dinámicas (DLL) mediante una reconfiguración de su enlazador en el proceso de compilación. Figura 16. Componentes de Visual C# 2.1.11 Emuladores para Dispositivos Móviles Los emuladores nos permiten probar nuestras aplicaciones sin necesidad de utilizar un dispositivo real. Es importante recalcar el hecho de que los emuladores con los que vamos a trabajar emulan y no simulan los dispositivos reales. Esto significa que nuestras aplicaciones se ejecutan tal y como se ejecutarían sobre el dispositivo real, pues lo que se emula es realmente el hardware tipo de una PDA. Existe algunos tipos de emuladores de móvil, entre estos hay tres categorías principales: 47 Emuladores de dispositivos: Generalmente los ofrecen los fabricantes de dispositivos y simulan el dispositivo real. Son válidos para las pruebas de aplicación del sitio web en un dispositivo o conjunto de dispositivos. Emuladores de navegadores: Simulan los navegadores de los entornos móviles. Son útiles para determinan la funcionalidad disponible en un navegador, pero no valen para la prueba específica del dispositivo. Emuladores del sistema operativo: Microsoft proporciona emuladores para Windows Mobile y Google proporciona un emulador de Android. Se ejecutan en un entorno simulado de dispositivos móviles y proporcionan acceso a aplicaciones que se ejecutan en el sistema operativo. El SDK de Windows consiste en un conjunto de herramientas, ejemplos de código, documentación, compiladores, encabezados y bibliotecas que pueden usar los desarrolladores para crear aplicaciones que se ejecuten en los sistemas operativos con modelos de programación nativos (Win32) o administrados (.NET Framework).Así tenemos actualmente los siguientes SDKs disponibles: Windows Mobile 5.0 Pockets PC SDK: En el SDK de Windows Mobile 5.0 para Pocket PC se puede escribir software administrado y nativo de aplicaciones dirigidas a Windows Mobile 5.0 dispositivos basados en Pocket PC. Que contiene un emulador de dispositivo. 48 2.1.12 Centro de dispositivos de Windows Mobile El Centro de dispositivos de Windows Mobile es un software de sincronización desarrollado por Microsoft, y el sucesor de ActiveSync 5. Está diseñado para sincronizar el contenido de diversas aplicaciones como música, vídeo, contactos, calendario de eventos, favoritos del navegador web, y otros archivos entre los dispositivos de Windows Mobile y el sistema operativo de Microsoft Windows. Centro de dispositivos de Windows Mobile tiene la capacidad de sincronizar lo siguiente: Fotos con Galería fotográfica de Windows Videos con Windows Media Player Música con Windows Media Player Favoritos de Internet Explorer Carpetas / archivos generales con el Explorador de Windows Los programas de Windows Mobile y actualizaciones de la versión Figura 17. Centro de dispositivos de Windows Mobile 5 ActiveSync es la aplicación que nos permitirá conectar nuestro Pocket PC con la computadora de escritorio para intercambiar información entre ambos dispositivos. 49 2.1.13 Gestores de Base de Datos Una base de datos es un sistema formado por un conjunto de datos almacenados en discos que permite guardar grandes cantidades de información de forma organizada para luego poder encontrar y utilizar fácilmente. El presente proyecto está realizado mediante la base de datos SQL Server CE, pero existen otros tipos de base de datos como son Oracle, PostgreSQL o MySQL. 2.1.13.1 SQL Server 2005 Compact Edition Microsoft SQL Server 2005 Compact Edition (anteriormente denominada Microsoft SQL Server 2005 Mobile Edition) es una base de datos compacta ideal para ser incrustada en aplicaciones móviles y de escritorio. SQL Server Compact Edition proporciona a los programadores un modelo de programación común a otras ediciones de SQL Server para el desarrollo tanto de aplicaciones nativas como administradas. Ofrece funcionalidad de base de datos relacional en un espacio reducido: un sólido almacén de datos, un procesador de consultas de optimización y una conectividad escalable y de confianza. 2.1.13.2 Oracle Oracle es un sistema de administración de base de datos, fabricado por Oracle Corporation. Se considera a Oracle como el sistema de bases de datos más 50 completo que existe, debido al soporte de transacciones, su gran estabilidad, seguridad, es multiplataforma y soporta PL/SQL. La arquitectura de un servidor Oracle se compone por tres partes importantes: 1. Procesos de usuarios. 2. Estructuras lógicas de memoria que en conjunto son conocidas como la instancia Oracle (Oracle instance). 3. Estructuras de archivos físicos que en conjunto son llamados la base de datos oradle (oradle database). Oracle es básicamente una herramienta cliente/servidor para la gestión de Bases de Datos. Es un producto vendido a nivel mundial, aunque la gran potencia que tiene y su elevado precio hacen que sólo se vea en empresas muy grandes y multinacionales. 2.1.13.3 MySQL MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos. MySQL es la base de datos open source más popular y, su continuo desarrollo y su creciente popularidad está haciendo de MySQL un competidor cada vez más directo de gigantes en la materia de las bases de datos como Oracle MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de 51 programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos. También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet. 2.1.13.4 PostgreSQL PostgreSQL es un gestor de bases de datos orientadas a objetos, muy conocido y usado en entornos de software libre porque cumple los estándares SQL92 y SQL99, y también por el conjunto de funcionalidades avanzadas que soporta, lo que lo sitúa al mismo o a un mejor nivel que muchos SGBD comerciales. PostgreSQL es un motor de bases de datos relacionales, que verifica integridad referencial con gran funcionalidad como base de datos, aunque un poco más lenta que otros motores. PostgreSQL se distribuye bajo licencia BSD, lo que permite su uso, redistribución, modificación con la única restricción de mantener el copyright del software a sus autores, PostgreSQL Global Development Group y la Universidad de California PostgreSQL corre en casi todos los principales sistemas operativos como son; Linux, Unix, Solaris, BSDs, Mac OS, Beos, Windows, etc. Soporta los lenguajes más populares del medio como es; PHP, C, C++, Java, Perl, Python, Ruby, etc. 52 2.2 Marco Temporal/Espacial El tiempo estimado para el análisis y realización de este proyecto planteado, es de dos meses, es decir hasta Noviembre del presente año. La empresa en donde se va a recopilar la información es en la Distribuidora “Orellana” que está ubicada Paseo de los Cañarís 53 3. METODOLOGÍA 3.1. Metodología de Investigación 3.1.1 Tipo de Investigación El tipo de investigación que se empleara en este proyecto es aplicada, debido a que se utilizara conocimientos existentes para aplicarlos a la solución de un problema o necesidad en un corto tiempo. Conjuntamente se empleara una investigación descriptiva, ya que éste describe las situaciones y eventos, es decir cómo se manifiesta el fenómeno a investigar. Esta investigación es importante para el proyecto puesto que nos ayudará a tener en cuenta cuales son las necesidades más prioritarias para la mejora del sistema actual. 3.1.2 Métodos Se utilizar el Método Inductivo, debido a que partiremos de la investigación de las actividades desarrolladas dentro de la Empresa, para luego partir de la información obtenida, se puedan organizar los datos en forma de procesos establecidos. Mediante este método se lograra la recolección de información de manera independiente de varias fuentes, para luego realizar un estudio e investigación exhaustiva de los puntos que estén relacionados 54 3.1.3 Técnicas La técnica que se implementara es la entrevista, con la cual se recaudar información precisa de las actividades o procesos de que realizan en cuanto al manejo de datos y las actividades que se desarrollan dentro de la empresa. Con el fin de conocer más a fondo el funcionamiento del control de entrada y salida del producto de bodega de la empresa. Preguntas de la entrevista 1. ¿Cómo se manejan los procedimientos de control de entrada y salida del producto de la empresa? 2. El tiempo de respuesta acerca de los productos del inventario de bodega es rápida y eficaz 3. ¿La venta de sus productos lo hace mediante vendedores? 4. ¿Utiliza algún Sistema en red para el ingreso y salida de sus productos? 5. ¿Conoce usted acerca de los Sistemas de control de entrada y salida de productos con tecnología móvil? 6. ¿Usted se interesaría en adquirir un sistema utilizando la tecnología móvil? Conclusiones de la entrevista: Durante la entrevista se pudo recabar la información necesaria, con respecto al volumen de actividad que se presenta dentro de la empresa es muy buena, el manejo de los registro se lleva mediante hojas de Excel, los datos que son manipulados es el código del producto, el nombre del producto, cantidad en 55 stock y un campo de observación en el que se puede describir información que suceda con el producto. En cuanto a la seguridad de la información de la empresa, no tienen mayor seguridad por cuanto que una parte es llevada en hojas de Excel y otra es registrada en papel, estos documentos tangibles son archivados en un fichero, con el riesgo de ser alterados o extraviados. Existe otro problema que es al momento de realizar una búsqueda de un producto, ya que se dificulta mucho, porque hay que realizar una búsqueda por fichero, siendo esto una desventaja para el cliente por el tiempo de espera y para el usuario por no tener información oportuna para poder tomar decisiones a beneficio de la empresa. 3.2. Metodología de desarrollo de software 3.2.1 Proceso Unificado de Desarrollo Un proceso es un conjunto de pasos ordenador parcialmente, para alcanzar un objetivo. En la ingenieria del software, el objetivo es entregar un producto software que satisfaga las necesidades del usuario, de foma efeciente. 3.2.1.1 Descripción de RUP (Rational Unified Process) RUP es un proceso de ingenieria de software para modelado orientado a objetos, basado en la notación UML (Lenguaje Unificado de Modelado). Centrandose en los casos de uso y la arquitectura, es interactivo e incremental. 56 UML es bastane independiente del proceso, lo que significa que se puede utilizar con diferentes proceso de ingenieria de software. El Proceso Unificado de Rational (RUP), es uno de esos enfoques de ciclo de vida que se adapta especialmete bien a UML. Las características de RUP son: Está basado en UML. Orientado a sistemas de información de gestión. Simple, eficaz y pequeño, fácil de aprender y usar. Centrado en el análisis y diseño. Permite el desarrollo iterativo e incremental del software. Está dirigido por casos de uso y permite la administración de requerimientos. Control de cambios. Modelado visual del software Verificación de la calidad del software El objetivo del Proceso Unificado de Rational es permitir la produccion de un software de la mayor calidad que satisfaga las necesidades de los usuarios finales, dentro de planificaciones y presupuesto predecibles. El El Proceso Unificado de Rational captura algunas de las mejores practicas de desarrollo de software, de una forma que es adaptable a un amplio rango de proyectos y organizaciones. En el aspecto de la gestión, el El Proceso Unificado de Rational proporciona un enfoque disciplinado sobre como asignar tares y responsabilidades dentro de una organización de desarrollo de software. 57 3.2.1.2 Fases del RUP Una fase es el intervalo de tiempo entre dos hitos importantes del proceso durante la cual se cumple un conjunto bien definido de objetivos, completan artefactos y se toman las decisiones sobre si pasa a la siguiente fase. El Proceso Unificado de Rational consta de las cuatrro fases siguientes: Iniciación: Establece la planificación del proyecto. Elaboración: Establece un plan para el proyecot y una arquitectura. Construccion: Desarrollar el sistema Transición: Proporcinar el sitema a sus usuarios finales. Figura 18. Fases del RUP Las fases de iniciación y elaboración incluyen las actividades de diseño de ciclo de vida del desarrollo; la construcción y la transición constituyen su producción. Dentro de cada fase hay varias iteraciones. Una iteración representa un ciclo de desarrollo completo, desde la captura de requisitos en el análisis hasta la 58 implementación y pruebas, que produce como resultado la entrega al cliente o la salida al mercado de un proyecto ejecutable. Fase de inicio: Durante la fase de iniciación, se establece la planificación del proyecto y se delimita su alcance. La planificación del proyecto incluye los criterios de éxito, la evaluación del riesgo, estimulaciones de recursos que se necesita y un plan de fases que muestra la planificación de los hitos principales. Durante la iniciación, es frecuentemente crear un prototipo ejecutable que sirva para probar los conceptos. Al final de la fase de inicio se examinan los objetivos del ciclo de vida del proyecto y se decide si proceder con el desarrollo del sistema. Fase de Elaboración: Los objetivos de la fase de elaboración son analizar el dominio del problema, establecer una base arquitectónica sólida, desarrollar el plan de proyecto y eliminar los elementos de más alto riesgo del proyecto. Esto implica que se debe describir la mayoría de los requisitos del sistema. Fase de Construcción: Durante la fase de construcción, se desarrolla de forma iterativa e incremental un producto completo que está preparado para la transición hacia la comunidad de usuarios. Esto implica describir los requisitos restantes y los criterios de aceptación, refinando el diseño y completando la implementación y las pruebas del software. Fase de Transición: Durante la fase de transición, el software se despliega en la comunidad de usuarios. Una vez que el sistema ha sido puesto en manos de los usuarios finales, a menudo aparecen cuestiones que requieren un desarrollo adicional para ajustar el sistema, corregir algunos problemas no 59 detectados o finalizar algunas características que habían sido pospuestas. Esta fase comienza normalmente con una visión beta del sistema, que luego será reemplazada con el sistema de producción. Al final de la fase de transición se decide si se han satisfecho los objetivos de ciclo de vida del proyecto, y se determina si se debería empezar otro ciclo de desarrollo. 3.3. Tecnología 3.3.1 Sistemas Operativos para dispositivos móviles Como se mensiono anteriormente que el Sistema Operativo, facilita al usuario las herramientas e interfaces adecuadas para realizar sus tareas informáticas. Podemos deducir que el uso de uno u otro Sistema Operativo determinarán las capacidades multimedia de los dispositivos, y la forma de éstas de interactuar con el usuario. Este proyecto estara bajo el sistema operativo de Windows Mobile, pero existen multitud de opciones en cuanto a los Sistema Operativo, si bien las más conocido hoy en día son; Symbian, BlackBerry OS y recientemente iPhone OS y el sistema móvil de Google, Android, además por supuesto de los dispositivos con sistema operativo Linux. 60 3.3.1.1 Comparacion de los detalles básicos y el funcionamiento de los Sistemas Operativos Tipo de núcleo Android BlackBerry S60 5th Palm Windows Cupcake OS 4.7 Edition WebOS Mobile 6.5 Linux Propietario Symbian Linux Windows CE Nada BlackBerry Exchange, Exchange Exchange, Domino, Domino, BlackBerry BlackBerry Soporte para empresas Tecnologías inalámbricas GSM, WiFi GSM, CDMA, WiFi GSM, WiFi GSM, GSM, CDMA, CDMA, WiFi WiFi Figura 19. Comparacion de los detalles basicos entre los Sistemas Operativos Móviles 61 Android BlackBerry OS S60 5th Cupcake 4.7 Edition Bandeja Notificación Pop-up, fondo Pop-up Palm WebOS Windows Mobile 6.5 Bandeja Bandeja, popup Administración de Google BES, BIS contactos Exchange, Synergy Exchange, Domino, Domino, BlackBerry, BlackBerry, iSync ActiveSync Multitasking Sí Sí Sí Sí Sí Copiar / pegar Sí Sí Sí Sí Sí Ecosistema / Soporte Amazon iTunes sin Ovi Amazon Windows Media DRM multimedia Player Búsqueda global No No Sí Sí No Actualización de firmware OTA Tethered, OTA Tethered, OTA Desconocido Tethered, OTA Motor del navegador WebKit Propietario WebKit WebKit Internet Explorer Tethering (módem) Sí (no oficial) Sí Sí Sí Sí Bluetooth estéreo Sí Sí Sí Sí Sí Figura 20. Comparación sobre el Funcionamiento de los Sistemas Operativos Móviles 62 3.3.2 Herramientas para el desarrollo de la aplicación móvil Para el desarrollo de este proyecto fueron necesario instalar las siguientes herramientas; Visual Studio 2008 Professional Emulador en Windows Mobile − Windows Mobile 5.0 Pocket PC SDK Centro de dispositivos de Windows Mobile Microsoft SQL Server 2005 Compact Edition 3.3.3 Software de Desarrollo Las herramientas usadas en este proyecto como Visual Studio .Net facilita la interfaz para el desarrollo de aplicaciones de varios tipos como son: aplicaciones distribuidas, aplicaciones para Web y aplicaciones para servicios móviles. Esta herramienta presenta facilidades en el momento de programar, como conexión a la base de datos, creación de componentes, etc. Para el desarrollo de este proyecto se utilizará específicamente el lenguaje Visual C# de Visual Studio.Net. De igual manera se usará SQL Server 2005 Compact Edition para el almacenamiento de datos de la aplicación. 63 3.3.3.1 Visual Studio 2008 Visual Studio 2008 proporciona múltiples versiones de. NET Framework desde el mismo entorno de desarrollo, es decir se puede crear aplicaciones que se dirigen al. NET Framework 2.0, 3.0 o 3.5, lo que significa que puede soportar una amplia variedad de proyectos en el mismo entorno. Visual Studio .Net Visual Studio .NET proporciona una herramienta que permite generar aplicaciones para Microsoft Windows y el Web. Visual Studio .NET permite crear aplicaciones para dispositivos compatibles con Internet que se integren en cualquier plataforma, también permite optimizar la programación basada en el Web y brinda facilidad para la creación de aplicaciones basadas en Windows. Para el mayor alcance posible de dispositivos compatibles con Internet, Visual Studio .NET proporciona características de Internet Móvil que permite generar una interfaz Web móvil compatible con una amplia gama de dispositivos móviles. Para el desarrollo de aplicaciones móviles Visual Studio.Net dispone de un módulo que permite el desarrollo de una manera rápida de este tipo de aplicaciones.Para el desarrollo de esta aplicación se utilizara el lenguaje Visual C# de la aplicación Visual Studio.Net 64 Existe una gran ventaja al trabajar con la plataforma .NET ya que se puede acceder a toda la gama de equipos móviles en el mercado, ya sea con aplicaciones online o aplicaciones ejecutables. Figura 21. Dispositivos moviles que se pueden programar con .NET Este proyecto esta desarrollado bajo la plataforma de Visual Studio 2008 en el Lenguaje de progamación Visual C# .NET y esta orientado hacia los dispositivos moviles Pocket PC, en el siguente cuadro comparativo nos muestra las razones de porque se a utilizado este lenguaje. 3.3.4 Funcionalidad del Emulador en Windows Mobile Como se menciono anteriormente el emularo nos permitira probar nuestra aplicacion sin necesidad de utilizar un dispositivo real. Es muy importante señalar que los emuladores con los que vamos a trabajar emulan y no simulan los dispositivos reales. Esto significa que nuestra aplicación se ejecutara tal y como se ejecutarían sobre el dispositivo real, pues lo que se emula es realmente el hardware de una PDA. 65 Para abrir la ejecución del emulador de Windows Mobile, accedemos a la barra de herramientas y a continuación abrimos el Administrador de emuladores de dispositivos. En el proyecto a presentar se utilizara Windows Mobile 5.0 Pocket PC y se realiza la coneccion. Figura 22. Administrador de emuladores de dispositivos Al momento que hacemos click en conectar lanzaremos a ejecución el emulador correspondiente. La pantalla del emulador nos ofrece tres menús: Archivo, Flash y Ayuda. A través del menú Archivo podremos guardar el estado del emulador, borrar un estado guardado, realizar una reinicialización hardware o software y configurar el emulador. La diferencia entre una reinicialización hardware y uno software es que mediante el primero realizamos el restablecimiento de los ajustes de fábrica de la PDA, mientras que con el segundo no perdemos los programas instalados ni los datos almacenados, simplemente vaciamos la RAM del sistema. 66 Figura 23. Emulador del Pocket PC El emulador del dispositivo contiene exactamente una copia de un dispositivo real y puede ser utilizado como tal. Además se puede administrar el dispositivo desde las opciones del menú realizando acciones tales como: Guardar el estado: Esta acción realiza la emulación de conservación en memoria de todo lo que se encuentra en el dispositivo, esta opción es útil ya que cada vez que se lanza el dispositivo es como un nuevo inicio desde cero. Borrar el estado guardado: En esta opción nos permite formatear la PC y volver a instalar el Sistema Operativo. Restablecer software: En este caso se reinicia el sistema operativo de la máquina, es un reinicio normal del sistema operativo. Restablecer hardware: Es una forma de reiniciar el sistema operativo desde cero, como formatear el dispositivo. 67 Configurar: El emulador del dispositivo se puede configurar para estar siempre presente, cambiar de modo de visualización y utilizar recursos del pc como parte del emulador. 3.3.5 Centro de dispositivos de Windows Mobile El Centro de dispositivos de Windows Mobile ofrece administración de dispositivos y sincronización de datos entre un dispositivo basado en Windows Mobile y un equipo. El Centro de dispositivos de Windows Mobile incluye las siguientes características: Programa de instalación optimizada: El Centro de dispositivos de Windows Mobile tiene un asistente de asociación nuevo y simplificado y ha mejorado la administración de asociación. Sincronización sólida Administración de foto: La función de administración de fotos le ayuda a detectar nuevas fotos en un dispositivo basado en Windows Mobile. Por lo tanto, esta característica le ayuda etiquetar las fotografías e importarlas en la Galería fotográfica de Windows Vista. Sincronización de medios: Puede usar el Reproductor de Windows Media de Microsoft para sincronizar archivos de música y para reproducir aleatoriamente estos archivos en un dispositivo basado en Windows Mobile. Búsqueda de archivos: Una nueva experiencia de búsqueda de dispositivo le permite examinar rápidamente archivos y carpetas. 68 Además, puede abrir documentos que se encuentren en un dispositivo basado en Windows Mobile directamente desde el equipo. Interfaz de usuario mejorada: El Centro de dispositivos de Windows Mobile tiene una interfaz de usuario simple que ayuda a obtener acceso rápido a tareas importantes y a configurar un dispositivo basado en Windows Mobile. 3.3.6 Gestor de Base de Datos a desarrollo en la aplicación 3.3.6.1 SQL Server 2005 Compact Edition SQL Server Compact Edition es una tecnología de bases de datos versátil compatible con todas las plataformas de Windows y tiene una evolución de la tecnología de bases de datos de Windows Mobile conocida como SQL Server Mobile Edition (SQL Mobile). SQL Server Compact Edition cuenta con muchas características nuevas y actualizadas que mejoran la confiabilidad y el rendimiento de las bases de datos. Estas mejoras se pueden dividir en categorías generales: motor de almacenamiento y procesador de consultas. Las caracteristicas de SQL Server Compact Edition Un motor de base de datos compacto y un sólido optimizador de consultas. Compatibilidad con la réplica de mezcla y el acceso a datos remotos. Integración con Microsoft SQL Server 2005. Integración con Microsoft Visual Studio. 69 Acceso a datos remotos y réplica de mezcla para sincronizar datos. Compatibilidad con Microsoft ADO.NET Posee un subconjunto de sintaxis SQL. Se implementa como una base de datos incrustada en equipos de escritorio, dispositivos móviles y Tablet PC. Ventajas de SQL Server Compact Edition Funciones más básicas de BD relacional en un formato compacto Ideal para aplicaciones de móviles y de escritorio, como ciertas aplicaciones de conexión esporádica Se puede inserta dentro de las aplicaciones La descarga, desarrollo, instalación y redistribución son gratuitas En conclusion el motor de base de datos para este proyeto sera SQL Server 2005 Compact Edition, por su flexibilidad y por sus caracteristicas antes mencionad, una de las ventajas de esta base de datos es que el usuario pueden tener acceso a los resultados mediante un método más completo y sencillo. 70 3.3.6.2 Comparación de SQL Server con otros gestores de base de datos SQL CARACTERÍSTICAS SERVER ORACLE MYSQL POSTGRESQL Soporte de transacciones Si Si Si Si Escalabilidad, estabilidad Si Si No No Si No Si No Si No Si No SI No No No SI No SI No No SI No No SI No No No y seguridad. Soporta procedimientos almacenados. Permite realizar Vistas, Triggers Posee un entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente. Permite trabajar en modo cliente-servidor Su soporte multiplataforma Posee un entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente. Figura 24. Matriz comparativa de gestores de base de datos 71 4. DESARROLLO El sistema de Control de Entradas y Salidas, responde a la necesidad que tienen, las empresas comerciales de crear un sistema que automatice el control de inventario de bodega, brindando de esta manera un servicio de calidad e innovador. Este sistema ha sido diseñado pensando en el usuario, ya que su acceso y navegación será de fácil comprensión y manejo, el sistema presentara mensajes de error y de ayuda entendibles cuando fuese necesario, para resolver problemas. 4.1 Perspectiva del sistema La idea fundamental de este sistema es proveer facilidades a los encargados de inventarios de bodega de la empresa, automatizando los procesos de entrada y salida de los producto, para tener una reducción de tiempo considerable comparada con la forma manual de llevar inventarios. Nuestro futuro sistema interactuará con una base de datos que almacenará a todas las sucursales o almacenes para realizar los respectivos traspasos de productos, con este proceso se dará de baja a los productos del inventario. 4.2 Restricciones del sistema de entrada y salida El sistema de entrada y salida de productos tendrá las siguientes restricciones: No poder operar en un sistema abierto a cualquier plataforma, como por ejemplo en Linux, ya que fue especialmente ideado para que funcione en Windows. 72 En cuanto a las limitaciones del hardware debemos tener en cuenta que cada usuario tiene una velocidad de acceso a la red diferente. Para poder tener acceso en tiempo real a cualquier tipo de información. En cuanto a la seguridad del sistema, deberemos protegerlo frente a cualquier intento de acceso no permitido, por ello todo usuario dispondrá de una contraseña para poder acceder al sistema. 4.3 Interfaces externas 4.3.1 Interfaces de usuario Estas interfaces permitirán realizar procesos de registros de productos, ingreso de artículos, y salida de productos, además nos presentara las consultas necesarias. El ingreso al sistema requiere un tipo de usuario y contraseña. Nuestra aplicación funcionará bajo el entorno de Windows y dentro de éste, la interfaz hacia el usuario se mostrará mediante un emulador de dispositivo, para introducir datos en los respectivos campos. 4.3.2 Interfaces hardware El sistema soportará las siguientes actividades: Navegación entre interfaces Mouse y Teclado. Ingresos de datos Teclado, Administrador del Emulador del dispositivo. Salida de datos Monitor Figura 25. Matriz de Interfaz con el Hardware 73 4.3.3 Interfaces software Se usará el siguiente software: Herramienta UML para el análisis y diseño del Herramientas Base de Datos − SQL Server 2005 Compact Edition Herramientas de desarrollo − Visual Studio .Net 2008. Lenguaje Visual C# .NET Para Documentar − Microsoft Word. 4.4 Flujo de trabajo (Workflow) del sistema 4.4.1 Fase de Inicio 4.4.1.1 Análisis del sistema actual Los métodos tradicionales que se han utilizado para llevar el control de entrada y salida de un producto, de cierta forma son inseguros. La problemática que se vive actualmente dentro de la Distribuidora es que los procesos son llevados de forma manual, provocando pérdida de tiempo en la actualización de datos y la falta de información al momento de tomar una decisión. Hoy en día gracias a los avances de la tecnología permite que las organizaciones se hagan competitivas en este mundo globalizado en el que las organizaciones luchan por mantenerse en el mercado. Es favorable para nuestro país la implementación de tecnología mediante la implementación de proyectos como este, el mismo que permite mantener la información a toda hora y en todo lugar. La necesidad de obtener la información de una manera 74 rápida y eficiente no surge de recién, sino desde que existen las empresas que manejan grandes cantidades de información y el servicio al cliente es parte esencial de la empresa, es por ello que se plantea el desarrollo de un sistema de control de entradas y salidas de productos utilizando tecnología PDA. Con esto nos ayudara a tener una información rápida, segura y que ayude a la gerencia en la toma de decisiones para lograr ser más productivos. Figura 26. Diagrama de Flujo de datos 75 4.4.1.2 Descripción de Actores ACTORES DEL SISTEMA Administrador Responsable de la gestión y buen funcionamiento del sistema, y dar mantenimiento de usuarios, bodega, productos y proveedores. Bodegueros Cualquier persona que utilice el sistema para la entrada y salida del producto. Figura 27. Matriz de Actores del sistema 4.4.1.3 Identificación de los casos de uso El sistema de control de entradas y salidas está constituido por los siguientes casos de uso que son: ACTOR CASO DE USO Mantenimiento de Usuarios Administrador Mantenimiento de Productos Mantenimiento de Bodegas Mantenimiento de Proveedores Bodeguero Control de entrada de productos Control de salida de productos Consulta de movimientos Figura 28. Matriz de identificación de casos de uso 76 4.4.1.4 Catálogo de Requerimientos del sistema IRQ Nº 1 Mantenimiento de Usuarios Actor Administrador Descripción El sistema deberá tener la opción de mantenimiento de usuarios, permitirá crear, modificar y eliminar un usuario del sistema. Datos Específicos Nombre del usuario Contraseña Importancia Alta Comentario Es necesario crear los usuarios para acceder a los diferentes menús del sistema. IRQ Nº 2 Mantenimiento de Productos Actor Administrador Descripción El sistema deberá tener la opción de mantenimiento de productos, permitirá crear, modificar y eliminar un producto del sistema. Datos Específicos Código Nombre del producto Stock Importancia Alta Comentario Es necesario crear los productos ya que estos nos servirán para realizar el movimiento de entrada y salida. 77 IRQ Nº 3 Mantenimiento de Bodegas Actor Administrador Descripción El sistema deberá tener la opción de mantenimiento de bodegas, permitirá crear, modificar y eliminar una bodega del sistema. Datos Específicos Código Nombre del bodega Importancia Alta Comentario El mantenimiento de bodegas nos servirá para realizar el movimiento de salida del producto. IRQ Nº 4 Mantenimiento de Proveedores Actor Administrador Descripción El sistema deberá tener la opción de mantenimiento de proveedores, permitirá crear, modificar y eliminar un proveedor del sistema. Datos Específicos Nombre del Proveedor Dirección Teléfono RUC Importancia Alta Comentario La lista de los proveedores se utilizara al momento de realizar el movimiento de entrada del producto. 78 IRQ Nº 5 Control de Entrada de productos Actor Bodeguero Descripción El sistema permitirá al usuario bodeguero realizar el movimiento de entrada de un producto hacia el inventario de bodega. Datos Específicos Fecha Usuario Bodega Proveedor Producto Importancia Alta Comentario Con este movimiento se actualizara el Kardex de productos. IRQ Nº 5 Control de Salida de productos Actor Bodeguero Descripción El sistema permitirá al usuario bodeguero realizar el movimiento de salida del producto del inventario de bodega. Datos Específicos Fecha Usuario Bodega Observación Producto Importancia Alta Comentario Con este movimiento se actualizara el Kardex de productos. 79 4.4.2 Fase de Elaboración 4.4.2.1 Modelado de Caso de Uso Identificador y nombre Actores Control de entrada y salida de productos Administrador y Bodeguero Diagrama detallado Figura 29. Diagrama de caso de uso 80 4.4.2.1.1 Aplicación de Casos de Uso 4.4.2.1.1.1 Caso de uso Mantenimiento de Usuarios Caso de uso # 1 Identificador y nombre Actores Control de Usuarios Administrador Diagrama Control de Usuarios detallado Registra Nuevo Usuario Modifica Usuario Elimina Usuario Administrador Figura 30. Caso de uso control de usuarios 81 4.4.2.1.1.2 Caso de uso Mantenimiento de Bodega Caso de uso # 2 Identificador y nombre Actores Control de Bodegas Administrador Diagrama Control de Bodegas detallado Registra Nueva Bodega Modifica Bodega Elimina Bodega Administrador Figura 31. Caso de uso control de bodegas 82 4.4.2.1.1.3 Caso de uso Mantenimiento de Producto Caso de uso # 3 Identificador y nombre Actores Control de Productos Administrador Diagrama Control de Productos detallado Registra Nueva Producto Modifica Producto Elimina Producto Administrador Figura 32. Caso de uso control de producto 83 4.4.2.1.1.4 Caso de uso Mantenimiento de Proveedor Caso de uso # 4 Identificador y nombre Actores Control de Proveedor Administrador Diagrama detallado Figura 33. Caso de uso control de proveedores 84 4.4.2.1.1.5 Caso de uso Movimiento de Entrada Caso de uso # 5 Identificador y nombre Actores Control de Entrada del Producto Bodeguero Diagrama Control de Entrada de Producto detallado Ingresa al menu Ingreso de Productos Selecciona el proveedor Selecciona el producto Bodeguero Selecciona la cantidad «extends» Actualiza el Stock Figura 34. Caso de uso movimiento entrada Consultar 85 4.4.2.1.1.6 Caso de uso Movimiento de Salida Caso de uso # 6 Identificador y nombre Actores Control de Salida del Producto Bodeguero Diagrama detallado Figura 35. Caso de uso movimiento salida 86 4.4.2.1.2 Descripción de casos de uso El sistema debe gestionar información relacionada con el usuario. Nombre Iniciar sesión Objetivo Identificar el nivel de acceso de los usuarios al sistema Conexión a la base de datos satisfactoria Precondición Que el usuario este registrado en el sistema Que se haya iniciado el programa Usuario Sistema 1. Inicia cuando el 2. El sistema despliega usuario pide una interfaz de usuario funcionalidad para para iniciar sesión, con iniciar sesión. dos campos de contraseña y usuario Flujo del Sistema 3. El usuario, ingresa el 4. El sistema valida los usuario y la contraseña. datos 5. El sistema consulta la existencia del usuario en la base de datos 6. El sistema despliega la interfaz gráfica para dicho usuario. 87 Caso de uso # 1 Nombre Registra Nuevo Usuario Objetivo Registrar un nuevo usuario Actor Administrador Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario pide 4. El sistema despliega la funcionalidad a registrar interfaz gráfica para nuevo usuario registrar un nuevo usuario 5. El usuario llena los 6. El sistema valida los atributos del nuevo datos introducidos por el usuario solicitados por usuario la interfaz gráfica dada por el sistema 7. El sistema guarda en la base de datos el nuevo usuario 88 Caso de uso # 1 Nombre Modificar usuario Objetivo Registrar modificaciones en un usuario deseado Actor Administrador Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario selecciona 4. El sistema despliega Modificar Usuario una interfaz gráfica para modificar 5. El usuario selecciona 6. El sistema valida los los atributos del usuario datos entrantes. que desee modificar. 7. El sistema actualiza en la base de datos la nueva modificación 89 Caso de uso # 1 Nombre Eliminar usuario Objetivo Eliminar del sistema un usuario ya sea por causas no relacionadas con el sistema sino con la empresa Actores Precondición Administrador Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario selecciona 4. El sistema despliega Eliminar Usuario una interfaz gráfica para eliminar 5. El usuario selecciona 6. El sistema valida el dato el usuario a eliminar entrante. 7. El sistema actualiza la base de datos 90 El sistema debe gestionar información relacionada con Bodega. Caso de uso # 2 Nombre Crea Nueva Bodega Objetivo Registrar un nuevo Bodega Actor Administrador Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario pide 4. El sistema despliega la funcionalidad a crear interfaz gráfica para nueva bodega registrar un nueva bodega 5. El usuario llena los 6. El sistema valida los campos de la nueva datos introducidos por el bodega solicitados por usuario la interfaz gráfica dada por el sistema 7. El sistema guarda en la base de datos la nueva bodega 91 Caso de uso # 2 Nombre Modificar Bodega Objetivo Registrar modificaciones en una bodega deseada Actor Administrador Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario selecciona 4. El sistema despliega Modificar Bodega una interfaz gráfica para modificar 5. El usuario selecciona 6. El sistema valida los los campos de la datos entrantes. bodega que desee modificar. 7. El sistema actualiza en la base de datos la nueva modificación 92 El sistema debe gestionar información relacionada con el Producto. Caso de uso # 3 Nombre Crea Nueva Producto Objetivo Registrar un nuevo producto para poder realizar las entradas de los productos al inventario de bodega Actor Precondición Administrador Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario pide 4. El sistema despliega la funcionalidad a crear interfaz gráfica para nueva producto registrar un nueva producto 5. El usuario llena los 6. El sistema valida los campos del nuevo datos introducidos por el producto solicitados por usuario la interfaz gráfica dada por el sistema 7. El sistema guarda en la base de datos el nuevo producto 93 Caso de uso # 3 Nombre Modificar producto Objetivo Registrar modificaciones en un producto deseado Actor Administrador Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario selecciona 4. El sistema despliega Modificar producto una interfaz gráfica para modificar 5. El usuario selecciona 6. El sistema valida los los campos del producto datos entrantes. que desee modificar. 7. El sistema actualiza en la base de datos la nueva modificación 94 Caso de uso # 3 Nombre Eliminar producto Objetivo Eliminar del sistema un producto ya sea por causas no relacionadas con el sistema sino con la empresa Actores Precondición Administrador Conexión a la base de datos satisfactoria Haber iniciado sesión un Administrador Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene administrador al sistema nivel de accesibilidad de administrador Flujo del Sistema 3. El usuario selecciona 4. El sistema despliega Eliminar producto una interfaz gráfica para eliminar 5. El usuario selecciona 6. El sistema valida el dato el producto a eliminar entrante. 7. El sistema actualiza la base de datos 95 El sistema debe controlar la entrada del producto de la empresa. Caso de uso # 4 Nombre Objetivo Actor Precondición Flujo del Sistema Registrar la entrada del producto Controlar las entradas de los productos hacia el área de Bodega. Bodeguero Conexión a la base de datos satisfactoria Haber iniciado sesión un Bodeguero Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene bodeguero al sistema nivel de accesibilidad de bodeguero 3. El usuario selecciona 4. El sistema despliega la entrada de productos interfaz gráfica para registrar la entrada de un producto. 5. El usuario llena los campos; fecha, nombre del proveedor, nombre del usuario, en la interfaz gráfica dada por el sistema 6. El usuario graba esta 7. El sistema muestra la información lista de los productos disponible para realiza la carga al inventario. 8. El usuario selecciona 9. El sistema valida los el nombre del producto datos introducidos por el y la cantidad que desee usuario ingresar. 10. El sistema guarda en la base de datos el ingreso de los productos y actualiza el stock. 96 El sistema debe controlar la salida del producto de la empresa. Caso de uso # 5 Nombre Objetivo Actor Precondición Flujo del Sistema Registrar la salida del producto Controlar las salidas del productos Bodeguero Conexión a la base de datos satisfactoria Haber iniciado sesión un Bodeguero Usuario Sistema 1. El usuario a 2. El sistema valida si el ingresado como usuario en sesión tiene bodeguero al sistema nivel de accesibilidad de bodeguero 3. El usuario selecciona 4. El sistema despliega la salida de productos interfaz gráfica para registrar la salida de un producto. 5. El usuario llena los campos; fecha, nombre del bodega, nombre del usuario, en la interfaz gráfica dada por el sistema 6. El usuario graba esta 7. El sistema muestra la información lista de los productos disponible para realiza la descarga del inventario. 8. El usuario selecciona 9. El sistema valida los el nombre del producto datos introducidos por el y la cantidad que desee usuario transferir. 10. El sistema guarda en la base de datos la salida de los productos y actualiza el stock. 97 El sistema debe generar las consultas de entrada y salida del producto Caso de uso # 4, 5 Nombre Consulta de las entradas y salidas de los productos Objetivo Ver la lista de los productos entrantes y salientes del sistema. Donde nos muestre el stock actualizado. Actores Bodeguero Precondición Conexión a la base de datos satisfactoria Haber iniciado sesión un Bodeguero Flujo del Sistema Usuario Sistema 1. El usuario desea ver 2. El sistema despliega la lista de los productos una interfaz gráfica para de entrada y salida que consultar las entradas y se han realizado en el salidas de los productos, día mediante la fecha de ingreso o egreso del producto. 3. El usuario ingresa la 4. El sistema consulta en fecha desde y hasta que base de datos la desea ver los producto existencia de dichos productos 3. El sistema despliega una interfaz gráfica mostrando la lista de productos actualizada. 98 4.4.2.2 Diagrama de Actividad 4.4.2.2.1 Diagrama de Actividad Ingreso al Sistema Usuario Ingreso de Usuario y contraseña valido Validad parámetros de acceso al sistema No Usuario no existe Si Conectar a la Base de Datos del Sistema Acceso al Sistema Figura 36. Diagrama de Actividad Ingreso al sistema 99 4.4.2.2.2 Diagrama de Actividad Movimiento de Entrada Iniciar seción como bodeguero Interfaz del menu principal Ingresar al movimiento de entrada No Retorna Si Ingresa Datos Tipo de dato correcto No Corregir dato Si Graba los datos validados Muestra datos en la pantalla Figura 37. Diagrama de Actividad del Movimiento de Entrada 100 4.4.2.2.3 Diagrama de Actividad Movimiento de Salida Iniciar seción como bodeguero Interfaz del menu principal Ingresar al movimiento de salida No Retorna Si Ingresa Datos Tipo de dato correcto No Corregir dato Si Graba los datos validados Muestra datos en la pantalla Figura 38. Diagrama de Actividad del Movimiento de Salida 101 4.4.2.2.4 Diagrama de Actividad Consultas de los Movimientos Iniciar seción como bodeguero Interfaz del menu principal Consulta de movimientos Selecciona el tipo de movimiento (Entrada / Salida) Valida la fecha Realiza la consulta en la BD Muestra Información Figura 39. Diagrama de Actividad sobre consulta de los movimientos 102 4.4.2.3 Diagrama de Colaboración 4.4.2.3.1 Diagrama de Colaboración Inicio de Sesión 2. Datos del Usuario 1. Ingresar al sistema Interfaz Usuario Sistema 5. Inicio de Secion 4. Verificación Usuario del Sistema 3. Conexión Base de Datos Figura 40. Diagrama de Colaboración de Inicio de Sesión 4.4.2.3.2 Diagrama de Colaboración del Movimiento de Entrada 1. Ingresar al sistema 2. Ingreso de Datos Interfaz Sistema Movimiento Entrada 5. Muestra información de la entrada Bodeguero 4. Guarda 3. Conexión Base de Datos Figura 41. Diagrama de Colaboración del Movimiento de Entrada 103 4.4.2.3.3 Diagrama de Colaboración del Movimiento de Salida 1. Ingresar al sistema 2. Ingreso de Datos Interfaz Sistema Movimiento Salida 5. Muestra información de la salida 4. Guarda Bodeguero 3. Conexión Base de Datos Figura 42. Diagrama de Colaboración del Movimiento de Salida 4.4.2.4 Diseño del sistema 4.4.2.4.1 Descripción de las clases Figura 43. Descripción de clases 104 4.4.2.4.2 Diccionario de clases CLASE DESCRIPCIÓN Esta clase representa las sucursales o Bodega almacén donde se vende los productos Es la clase que registra las características Usuaridat principales que identifican a usuario administrador o usuario bodeguero. Rol Almacena los tipos de usuarios del sistema Proveedor Permite almacenar las características principales que identifican a un proveedor. Es la clase que registra las características Producto principales que identifican a un producto Esta clase nos permite sacar los datos por MovimientoC rango de fechas Consulta Filtrada Esta clase nos permite sacar el movimiento del kardex del producto Figura 44. Matriz Diccionario de clases 105 4.4.2.4.3 Diagrama de Clases Bodega -codigo -descripcion +Eliminar() +Insertar() +LlenarBodega() +Modificar() +ObtieneBodega() MovimientoC Proveedor -Bodcod -Fecha -Observacion -Tipo -UsuCod +Insertar() +LlenarMoviC() +ObtieneMovxNum() +ObtieneUltimo() -codigo -direccion -nombre -ruc -telefono +Eliminar() +Insertar() +LlenarProveedor() +Modificar() +ObtieneProveedor() Consulta Filtrada Usuario -clave -codigo -descripcion -rol +Eliminar() +Insertar() +LlenarUsuario() +Modificar() +ObtieneUsuario() +ConsultaDetalle() +ConsultaKardex() +ConsultaxFechas() Producto -descripcion -stock +ActualizaStock() +Eliminar() +Insertar() +LlenarProducto() +Modificar() +ObtieneProducto() Rol -codigo -descripción +Eliminar() +Insertar() +LlenarRol() +Modificar() +ObtieneRol() Figura 45. Diagrama de clases 106 4.4.2.4.4 Diagrama de Secuencia 4.4.2.4.4.1 Diagrama de Secuencia Ingreso al Sistema Conexion BD Interfaz con el sistema Usuario 1. Ingresar Usuario 2. Solicita contraseña 3. Ingresa Contraseña 4. Set_Usuario 5. Set_contraseña 6. Comparar contraseña 7. Inicia Seción 8. Muestra Inicio de Seción Figura 46. Diagrama de Secuencia Ingreso al Sistema 107 108 4.4.2.4.4.2 Diagrama de Secuencia Movimiento de Entrada Interface Usuario Menu Principal Movimiento Entrada Interface Base de Datos Base de Datos Bodeguero 1. Inicia secion 2. Ingresa Usuario y Contraseña 3. Validación de los datos 4. Busca si existe el usuario 5. Acepta que existe 6. Despliega el menu principal 7. Selecciona Movimiento de Entrada 8. Registra informacion para la entrada del producto 9. Registra el nombre y cantidad del producto 10. Maneja Evento (Guardar) 11. Execute Create (SQL) 12. Aceptar 13. Salir Figura 47. Diagrama de Secuencia Movimiento de Entrada 109 4.4.2.4.4.3 Diagrama de Secuencia Movimiento de Salida Interface Usuario Menu Principal Movimiento Salida Interface Base de Datos Base de Datos Bodeguero 1. Inicia secion 2. Ingresa Usuario y Contraseña 3. Validación de los datos 4. Busca si existe el usuario 5. Acepta que existe 6. Despliega el menu principal 7. Selecciona Movimiento de Salida 8. Registra informacion para la salida del producto 9. Registra el nombre del producto 10. Maneja Evento (Guardar) 11. Execute Create (SQL) 12. Aceptar 13. Salir Figura 48. Diagrama de Secuencia Movimiento de Salida 110 4.4.2.4.5 Diagrama de Estado 4.4.2.4.5.1 Diagrama de Estado Inicio de Sesión Comparar contraseña (Contraseña incorrecta) Volver a entrar Comparar contraseña (contraseña incorrecta) En reposo Se introduce la contraseña Comparando Comparar contraseña (contraseña correcta) Activación correcta Seleccionando Figura 49. Diagrama de Estado de Inicio de Sesión 4.4.2.4.5.2 Diagrama de Estado de Ingreso de Productos Inicio Ingreso de nuevos producto a bodega Bodeguero Verifica Ingresa los productos al inventario de bodega Modulo Productos Actualiza el stock Sistema Fin Figura 50. Diagrama de Estado de Ingreso de Productos 111 4.4.2.4.5.3 Diagrama de Estado de la Salida de Productos Inicio Bodeguero Recibe Solicitud de salida Inventario Descarga de Productos Sistema Actualiza el stock Fin Figura 51. Diagrama de Estado de la Salida de Productos 112 4.4.2.4.6 Diseño de Interfaces 4.4.2.4.6.1 Pantalla Ingreso al Sistema Figura 52. Pantalla Ingreso al Sistema 4.4.2.4.6.2 Menú Principal del Administrador Figura 53. Menú Principal del Administrador 113 4.4.2.4.6.3 Mantenimiento de Proveedores Figura 54. Mantenimiento de Proveedores 4.4.2.4.6.4 Mantenimiento de Bodega Figura 55. Mantenimiento de Bodega 114 4.4.2.4.6.5 Mantenimiento de Usuarios Figura 56. Mantenimiento de Usuarios 4.4.2.4.6.6 Mantenimiento de Productos Figura 57. Mantenimiento de Productos 115 4.4.2.4.6.7 Menú Principal del Bodeguero Figura 58. Menú Principal del Bodeguero 4.4.2.4.6.8 Entrada de Mercadería Figura 59. Entrada de Mercadería 116 4.4.2.4.6.9 Salida de Mercadería Figura 60. Entrada de Mercadería 4.4.2.4.6.10 Consulta de los Movimiento de Entrada y Salida Figura 61. Consulta de los Movimiento de Entrada y Salida 117 4.4.2.4.6.11 Kardex del Producto Figura 62. Kardex de productos 4.4.2.5 Implementación 4.4.2.5.1 Creación de tablas Tabla Bodega Figura 63. Tabla Bodega 118 Tabla Productos Figura 64. Tabla Producto Tabla Rol Figura 65. Tabla Proveedor Tabla Movimiento Cabecera 119 Figura 66. Tabla Movimiento Cabecera Tabla Movimiento Detalle Figura 67. Tabla Movimiento Detalle Tabla Usuario Figura 68. Tabla Usuario Tabla Proveedor Figura 69. Tabla Proveedor 120 4.4.2.5.2 Modelo Entidad Relación Figura 70. Diagrama de Entidad Relación 4.4.3 Fase de Construcción 4.4.3.1 Plan de Prueba Mediante el Proceso Unificado de Desarrollo de Software, determina que la fase de pruebas es la encargada de; Planificar las pruebas en cada iteración, incluyendo las pruebas de interacción del sistema. Ejecutar las diferentes pruebas y manejar los resultados de cada prueba sistemáticamente. 121 4.4.3.2 Objetos Evaluados Para el plan de pruebas identificamos los siguientes artefactos a ser probados. Entrada de productos Salida de productos Consulta de los movimientos Kardex de Productos 4.4.3.3 Acciones de Prueba Caso de Prueba Entrada de productos Nº Acción Resultado Éxito 1 Verificar si ingreso correcto Se ingresó de manera correcta si Se despliega correctamente si Se ejecuta sin problema esta si como bodeguero 2 Seleccionar entrada de productos 3 Validación de los campos acción. 4 5 Carga de productos Grabar el movimiento Se mostró todos los productos que dispone la empresa si Se ejecuta correctamente y si actualiza los datos. Figura 71. Caso de Prueba Entrada de Productos 122 Caso de Prueba Salida de productos Nº Acción Resultado Éxito 1 Verificar si ingreso correcto Se ingresó de manera correcta si Se despliega correctamente si Se ejecuta sin problema esta si como bodeguero 2 Seleccionar la opción salida de productos 3 Validación de los campos acción. 4 5 Carga de productos Grabar el movimiento Se mostró todos los productos que dispone la empresa si Se ejecutó correctamente y si actualiza los datos. Figura 72. Caso de Prueba Salida de Productos Caso de Prueba Consulta de los Movimientos Nº Acción Resultado Éxito 2 Seleccionar la opción Se despliega correctamente si Selecciona la fecha y el tipo Se ejecuta esta acción si de movimiento correctamente. Seleccionar la opción Se carga los datos en la grilla. Consulta de movimientos 3 si Consultar 4 5 Ver detalle Selecciona Salir Nos muestra el producto que ha sido ingresa o egresado si Regresa al menú principal del si bodeguero. Figura 73. Caso de Prueba Consulta de los movimientos 123 Caso de Prueba Kardex de los productos Nº Acción Resultado Éxito 2 Seleccionar la opción Kardex Se despliega correctamente si Selecciona la fecha y el Se ejecuta esta acción si nombre del producto correctamente. Seleccionar la opción Nos muestra el movimiento Consultar que ha tenido un producto. Selecciona Salir Regresa al menú principal del de los productos 3 5 bodeguero. Figura 74. Caso de Prueba Kardex de los productos si si 124 5. CONCLUSIONES Y RECOMENDACIONES 5.1 Conclusiones La utilización de un sistema automatizado mediante un dispositivo móvil brindará soluciones efectivas al proceso de entrada y traslado de productos, logrando así dar un servicio eficiente y de calidad a sus clientes. Acortar el tiempo de búsqueda, acceso y abastecimiento de productos requeridos en almacén. Información precisa y confiable Con la utilización de la tecnología móvil se logra optimizar el tiempo en el proceso de gestión de entrada y traslado, así como también la reducción en cuanto a gastos de útiles de oficina como la utilización de papel. La portabilidad de un dispositivo móvil hace que los usuarios puedan manejarlos en todo momento y lugar ya que este dispositivo tiene casi el mismo tamaño que un teléfono celular. 5.2 Recomendaciones Se recomienda fomentar la utilización de la tecnología de dispositivos móviles en un mayor porcentaje, dentro del sector industrial y comercial de nuestra ciudad así como también a nivel nacional. Se recomienda capacitar a los usuarios en cuanto a las aplicaciones en tecnología móvil. 125 BIBLIOGRAFÍA - [1] Wikipedia (sf) consultado el 06.sep.2011 Copiado de: - http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_inal%C3%A1mbric a - [2] Wikipedia (sf) consultado el 02.sep.2011 Copiado de: http://es.wikipedia.org/wiki/Proceso_Unificado_de_Rational - [3] Wikipedia (sf) consultado el 02.sep.2011 Copiado de: http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado - [4] Wikipedia (sf) consultado el 26.ago.2011 Copiado de: http://es.wikipedia.org/wiki/Microsoft_SQL_Server 126 ANEXOS MANUAL DE USUARIO INTRODUCCIÓN El manual del sistema de entrada y salida, permite visualizar de manera perceptible su entorno gráfico y su operatividad, ya que en él se explica detalladamente los pasos que deben seguir para el manejo general de las estructuras de las pantallas, así como las funciones de los iconos básicos. Por consiguiente, el usuario obtendrá información valiosa para el manejo de las herramientas que le permitirán aprovechar las bondades que le ofrece el Sistema. Entre las bondades que ofrece el Sistema, se pueden citar las siguientes: Es amigable y de fácil manejo, ya que queda a conveniencia del usuario utilizar desde el emulador o mediante un dispositivo móvil. Facilita la gestión de manejo y control de procesos del inventario, a través de los procesos de entrada y salida. Contiene mensajes en caso que el usuario ingrese alguna información mal. 127 Ingreso al sistema El sistema de Entrada y Salida cuenta con tres tipos de usuarios. Para realizar los mantenimientos del sistema se ingresara como Administrador. Para acceder al sistema es necesario tener un nombre del usuario y contraseña. Menú Principal del Administrador Dentro del menú principal del administrador, esta los mantenimientos de Usuarios, Productos, Proveedores, Bodegas 128 Mantenimiento de Proveedores La aplicación permite crear, modificar y eliminar un proveedor del sistema Nuevo Proveedores Al seleccionar Nuevo se abre una pantalla mostrandomos los campos que se debe llenar (Nombre, Direccion, Telefono, RUC), luego de llenar estos datos, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido creado y si no queremos guardar damos clik en Cerrar y nos regresaremos al mantenimiento de proveedores. 129 Modificar Proveedores Al seleccionar Modificar se abre una pantalla mostrandomos los campos que deseemos cambiar (Nombre, Direccion, Telefono, RUC), luego de modificar los datos, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido modificado, presionamos ok y regresa al mantenimiento del proveedores y si no queremos guardar los cambios damos clik en Cerrar y nos regresaremos al mantenimiento de proveedores. Eliminar Proveedores Al seleccionar Eliminar se abre una pantalla mostrandomos los campos de lo que vamos a eliminar (Nombre, Direccion, Telefono, RUC), hacemos clik en Eliminar y nos visualiza un mensaje “Realmente desea Eliminar”, si damos clik en Si se eliminara automaticamente y regresa al mantenimiento del proveedores y si no queremos eliminar damos clik en No y nos regresaremos al mantenimiento de proveedores. 130 Mantenimiento de Bodega La aplicación permite crear, modificar y eliminar una bodega del sistema Nuevo Bodega Al seleccionar Nuevo se abre una pantalla mostrandomos el campo que se debe llenar (Descripción), luego de llenar ese dato, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido creado y si no queremos guardar damos clik en Cerrar y nos regresaremos al mantenimiento de bodega. 131 Modificar Bodega Al seleccionar Modificar se abre una pantalla mostrando el campo a cambiar cambiar (Descripción), luego de modificar el dato, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido modificado, presionamos ok y regresa al mantenimiento del bodega y si no queremos guardar los cambios damos clik en Cerrar y nos regresaremos al mantenimiento de bodega. 132 Eliminar Bodega Al seleccionar Eliminar se abre una pantalla mostrandomos el campo que vamos a eliminar (Descripción), hacemos clik en Eliminar nos visualiza un mensaje “Realmente desea Eliminar”, si damos clik en Si se eliminara automaticamente y regresa al mantenimiento del producto y si no queremos eliminar damos clik en Cerrar y nos regresaremos al mantenimiento de bodega. Mantenimiento de Usuarios La aplicación permite crear, modificar y eliminar un usuario del sistema 133 Nuevo Usuario Al seleccionar Nuevo se abre una pantalla mostrandomos los campos que se debe llenar (Descripción, Rol, Clave), luego de llenar estos datos, hacemos clik en Grabar si deseamos que se guarde la información y no damos clik en Cerrar y nos regresaremos al mantenimiento de usuarios. Modificar Usuario Al seleccionar Modificar se abre una pantalla mostrandomos los campos que deseemos cambiar (Descripción, Rol, Clave), luego de modificar los datos, hacemos clik en Grabar si deseamos que se guarde la información y no damos clik en Cerrar y nos regresaremos al mantenimiento de usuarios. 134 Eliminar Usuario Al seleccionar Eliminar se abre una pantalla mostrandomos los campos de lo que deseemos eliminar (Descripción, Rol, Clave), al dar clik en Eliminar nos muestra un mensaje, si estamos seguros que deseamos elimar la información si estamos seguros damos clik en Si y se elimian el dato y si damos clik en No regresaremos al mantenimiento de usuarios. 135 Mantenimiento de Productos La aplicación permite crear, modificar y eliminar un producto del sistema Nuevo Productos Al seleccionar Nuevo se abre una pantalla mostrandomos los campos que se debe llenar (Descripción, Stock), luego de llenar estos datos, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido creado y si no queremos guardar damos clik en Cerrar y nos regresaremos al mantenimiento de productos. 136 Modificar Productos Al seleccionar Modificar se abre una pantalla mostrandomos los campos que deseemos cambiar (Descripción, Rol, Clave), luego de modificar los datos, hacemos clik en Grabar y nos visualiza un mensaje que el producto a sido modificado, presionamos ok y regresa al mantenimiento del producto y si no queremos guardar los cambios damos clik en Cerrar y nos regresaremos al mantenimiento de productos. Eliminar Productos Al seleccionar Eliminar se abre una pantalla mostrandomos los campos de lo que vamos a eliminar (Descripción, Rol, Clave), hacemos clik en Eliminar y nos visualiza un mensaje “Realmente desea Eliminar”, si damos clik en Si se eliminara automaticamente y regresa al mantenimiento del producto y si no queremos eliminar damos clik en Cerrar y nos regresaremos al mantenimiento de productos. 137 Menú Principal del Bodeguero Dentro del menú principal del bodeguero, esta los movimientos de entrada y salida, consultas de los movimientos y kardex del producto. 138 Entrada de Mercadería Luego de haber ingresado como usuario Bodeguero, tiene la opción de realizar este movimiento de entrada, para esta acción se debe registrar los campos solicitados (Fecha, Usuario, Proveedor, Bodega, Observación), luego de llenar esta información, hacemos clik en Grabar, no aparece un mensaje “movimiento registrado se procede a solicitar la mercadería”, damos clik en ok y se carga la lista de los productos en el cual nos aparece le stock actual de los mismos, el usuario debe colocar la cantidad que va a ingresar al sistema, luego de esto damos clik en Grabar y nos muestra un mensaje “Producto Grabado” y damos clik en ok y seguimos cargando los productos, si ya no se quiere damos clik en Salir. Salida de Mercadería Esta opción realizar este movimiento de salida del producto, para registrar la salida se debe registrar los campos solicitados (Fecha, Usuario, Proveedor, Bodega, Observación), luego de llenar esta información, hacemos clik en 139 Grabar, no aparece un mensaje “movimiento registrado se procede a solicitar la mercadería”, damos clik en ok y se carga la lista de los productos en el cual nos aparece le stock actual de los mismos, el usuario debe colocar la cantidad que va a ingresar al sistema, luego de esto damos clik en Grabar y nos muestra un mensaje “Producto Grabado” y damos clik en ok y seguimos cargando los productos, si ya no se quiere damos clik en Salir. Salida de Mercadería Esta opción realizar este movimiento de salida del producto, para registrar la salida se debe registrar los campos solicitados (Fecha, Usuario, Bodega, Observación), luego de llenar esta información, hacemos clik en Grabar, no aparece un mensaje “movimiento registrado se procede a solicitar la mercadería”, damos clik en ok y se carga la lista de los productos en el cual nos aparece le stock actual de los mismos, el usuario debe colocar la cantidad que va a ingresar al sistema, luego de esto damos clik en Grabar y nos muestra un mensaje “Producto Grabado” y damos clik en ok y seguimos cargando los productos, si ya no se quiere damos clik en Salir. 140 Consulta de Entrada y Salida El sistema permite realizar consultas sobre los movimientos de entrada y salida de los productos, para ello el usuario deberá colocar la fecha desde y hasta, luego seleccionar el tipo de movimiento (Entrada o Salida), y dar clik en Consultar. A continuación nos muestra en la grilla la información solicitada y para ver con más detalle de que producto se trata damos clik en Ver Detalle y nos muestra el producto que ha tenido la acción. Kardex de Producto El usuario podrá consultar el historial de cada uno de los productos, para ello debe ingresar la fecha desde y hasta, el nombre del producto y dar clik en Consulta, y en seguida nos muestra los movimientos que ha tenido el producto. Si se desea salir damos clik en Salir y regresamos al menú principal del bodeguero. 141 Menú del Programador Esta opción es para el programador del sistema en casa que se desee crear más roles dentro del sistema 142 Mantenimiento de Roles La aplicación permite crear, modificar y eliminar los roles del sistema Nuevo Rol Al seleccionar Nuevo se abre una pantalla mostrandomos el campo que se debe llenar (Descripción), luego de llenar ese dato, hacemos clik en Grabar y nos visualiza un mensaje “Rol Creado”, damos clik en ok y regresamos al mantenimiento de roles y si no queremos guardar damos clik en Cerrar y nos regresaremos al mantenimiento de roles. Modificar Rol Al seleccionar Modificar se abre una pantalla mostrando el campo a cambiar cambiar (Descripción), luego de modificar el dato, hacemos clik en Grabar y 143 nos visualiza un mensaje “Rol Modificado”, damos clik ok y regresa al mantenimiento del roles y si no queremos guardar los cambios damos clik en Cerrar y nos regresaremos al mantenimiento de roles. Eliminar Rol Al seleccionar Eliminar se abre una pantalla mostrandomos el campo que vamos a eliminar (Descripción), hacemos clik en Eliminar nos visualiza un mensaje “Realmente desea Eliminar”, si damos clik en Si se eliminara automaticamente y regresa al mantenimiento del roles y si no queremos eliminar damos clik en Cerrar y nos regresaremos al mantenimiento de roles. 144 UNIVERSIDAD TECNOLÓGICA ISRAEL DIRECCIÓN DE POSGRADOS AUTORIZACIÓN DE EMPASTADO DE: Ing. Miriam Almache PARA: Msc. Luis Andrés Chávez Ing. DIRECTOR DEL SINED DE LA UNIVERSIDAD ISRAEL ASUNTO: Autorización de Empastado FECHA Cuenca, Diciembre 1 de 2011 Por medio de la presente certifico que la pregradista María Eulalia Gutiérrez Tuapante con CI No.0104952437 han realizado las modificaciones solicitadas de acuerdo a la última revisión realizada en mi tutoría, al documento de tesis titulada Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales, del título de ingenieros en sistemas informáticos Atentamente _______________________________ Ing. Miriam Almache 145 UNIVERSIDAD TECNOLÓGICA ISRAEL DIRECCIÓN DE POSGRADOS AUTORIZACIÓN DE EMPASTADO DE: Ing. Henry Córdova PARA: Msc. Luis Andrés Chávez Ing. DIRECTOR DEL SINED DE LA UNIVERSIDAD ISRAEL ASUNTO: Autorización de Empastado FECHA Cuenca, Diciembre 1 de 2011 Por medio de la presente certifico que la pregradista María Eulalia Gutiérrez Tuapante con CI No.0104952437 han realizado las modificaciones solicitadas de acuerdo a la última revisión realizada en mi tutoría, al documento de tesis titulada Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales, del título de ingenieros en sistemas informáticos Atentamente _______________________________ Ing. Henry Córdova 146 UNIVERSIDAD TECNOLÓGICA ISRAEL DIRECCIÓN DE POSGRADOS AUTORIZACIÓN DE EMPASTADO DE: Ing. Max Zúñiga PARA: Msc. Luis Andrés Chávez Ing. DIRECTOR DEL SINED DE LA UNIVERSIDAD ISRAEL ASUNTO: Autorización de Empastado FECHA Cuenca, Diciembre 1 de 2011 Por medio de la presente certifico que la pregradista María Eulalia Gutiérrez Tuapante con CI No.0104952437 han realizado las modificaciones solicitadas de acuerdo a la última revisión realizada en mi tutoría, al documento de tesis titulada Desarrollo de un sistema para el control de entradas y salidas de un producto mediante tecnología móvil en empresas comerciales, del título de ingenieros en sistemas informáticos Atentamente _______________________________ Ing. Max Zúñiga 147 Manual de Programación Podremos revisar en nuestro trabajo que está desarrollado con la técnica de programación orientada a objetos, para eso hemos creado una para cada tipo de movimiento, es decir, tenemos clases como: Bodega, Consulta Filtrada, MovimientoC, producto, etc. A continuación revisaremos las mismas donde detallamos el código fuente: CLASE BODEGA.using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil.Bodegas { classBodega { publicstaticTesisBD_ESDataSet.BodegaDataTable llenarBodega() { TesisBD_ESDataSet.BodegaDataTable dat = newTesisBD_ESDataSet.BodegaDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); 148 { conn.Open(); string sql = @"select * FROM Bodega"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return dat; } publicstaticstring Insertar(string Descripcion) { TesisBD_ESDataSet.BodegaDataTable dat = newTesisBD_ESDataSet.BodegaDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Insert into Bodega(Descripcion)values('" + Descripcion + "')"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Modificar(int Codigo, string Descripcion) { TesisBD_ESDataSet.BodegaDataTable dat = newTesisBD_ESDataSet.BodegaDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { 149 string sql = @"Update Bodega Set Descripcion ='" + Descripcion + "' Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticstring Eliminar(int Codigo) { TesisBD_ESDataSet.BodegaDataTable dat = newTesisBD_ESDataSet.BodegaDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Delete from Bodega Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticstring ObtieneBodega(int Codigo) { string Descripcion; System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.BodegaDataTable dat = newTesisBD_ESDataSet.BodegaDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; 150 string sql = @"Select * from Bodega where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); Descripcion = reader.GetString(1).Trim(); } while (reader.NextResult()); reader.Close(); cn.Close(); return Descripcion; } } } Clase MOVIMIENTOC using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil { classMovimientoC { publicstring Tipo; publicDateTime Fecha; publicint UsuCod; publicint Bodcod; publicstring Observacion; publicint PrvCod; publicstaticTesisBD_ESDataSet.MoviCDataTable llenarMoviC() { TesisBD_ESDataSet.MoviCDataTable dat = newTesisBD_ESDataSet.MoviCDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( 151 ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { conn.Open(); string sql = @"select * FROM MoviC"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return dat; } publicstaticstring Insertar(string Tipo, DateTime Fecha, int UsuCod, int BodCod, string Observacion, int Estado, int Proveedor) { TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string LaFecha; LaFecha = Fecha.ToString("MM/dd/yyyy hh:mm"); string sql = @"Insert into MoviC(Tipo, Fecha, UsuCod, BodCod, Observacion, Estado, PrvCod)values('" + Tipo + "','" + LaFecha + "', " + UsuCod + ", " + BodCod + ", '" + Observacion + "', 1, " + Proveedor + ")"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Insertar(string Tipo, DateTime Fecha, int UsuCod, int BodCod, string Observacion, int Estado) { 152 TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string LaFecha; LaFecha = Fecha.ToString("MM/dd/yyyy hh:mm"); string sql = @"Insert into MoviC(Tipo, Fecha, UsuCod, BodCod, Observacion, Estado, PrvCod)values('" + Tipo + "','" + LaFecha + "', " + UsuCod + ", " + BodCod + ", '" + Observacion + "', 1, 0)"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticMovimientoC ObtieneMovxNum(int NumMov) { MovimientoC MC = newMovimientoC(); System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.MoviCDataTable dat = newTesisBD_ESDataSet.MoviCDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from MoviC where Numero = " + NumMov; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); 153 MC.Tipo = reader.GetString(1).Trim(); MC.Fecha = reader.GetDateTime(2); MC.UsuCod = reader.GetInt32(3); MC.Bodcod = reader.GetInt32(4); MC.Observacion = reader.GetString(5); MC.PrvCod = reader.GetInt32(6); } while (reader.NextResult()); reader.Close(); cn.Close(); return MC; } publicstaticint ObtieneUltimo() { int Numero; System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.MoviCDataTable dat = newTesisBD_ESDataSet.MoviCDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from MoviC order by Numero Desc"; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); reader.Read(); Numero = reader.GetInt32(0); return Numero; } } } CLASE CONSULTAFILTRADA using System; using System.Linq; 154 using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; namespace Tesis_ES_Movil { classConsultaFiltrada { publicstaticTesisBD_ESDataSet.MoviCDataTable ConsultaxFechas(DateTime desde, DateTime hasta, string Consultar) { string tipo; if (Consultar == "Entrada") tipo = "E"; else tipo = "S"; TesisBD_ESDataSet.MoviCDataTable dt = newTesisBD_ESDataSet.MoviCDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"select * FROM MoviC where fecha >= '"+ desde.ToString("MM/dd/yyyy")+ " 00:00:01' and fecha <= '"+ hasta.ToString("MM/dd/yyyy")+ " 23:59:59' and tipo = @tipo"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.Parameters.AddWithValue("@tipo", tipo); SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dt); } return dt; } publicstaticTesisBD_ESDataSet.MoviDDataTable ConsultaDetalle(int NumMov) { TesisBD_ESDataSet.MoviDDataTable dat = newTesisBD_ESDataSet.MoviDDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio 155 n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"select MoviD.Secuencia, MoviD.MoDCantidad, MoviD.ProCod, Producto.Descripcion FROM MoviD inner join Producto on MoviD.ProCod = Producto.codigo and Numero = @NumMov "; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.Parameters.AddWithValue("@NumMov", NumMov); SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); } return dat; } publicstaticTesisBD_ESDataSet.MoviDDataTable ConsultaKardex(DateTime desde, DateTime hasta, int CodPro) { TesisBD_ESDataSet.MoviDDataTable dt = newTesisBD_ESDataSet.MoviDDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"select * FROM MoviD where MoDfecha >= '"+desde.ToString("MM/dd/yyyy")+ " 00:00:01' and MoDfecha <= '"+ hasta.ToString("MM/dd/yyyy")+ " 23:59:59' and ProCod = @CodPro Order By Orden"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.Parameters.AddWithValue("@CodPro", CodPro); SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dt); } return dt; } } 156 } CLASE PRODUCTO using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil.Productos { classProducto { publicstring Descripcion; publicint Stock; publicstaticTesisBD_ESDataSet.ProductoDataTable llenarProducto() { TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { conn.Open(); string sql = @"select * FROM Producto"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return dat; } publicstaticstring Insertar(string Descripcion) { TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( 157 ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Insert into Producto(Descripcion, Stock)values('" + Descripcion + "', 0)"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Modificar(int Codigo, string Descripcion) { TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Update Producto Set Descripcion ='" + Descripcion + "' Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticstring Eliminar(int Codigo) { TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( 158 ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Delete from Producto Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticProducto ObtieneProducto(int Codigo) { Producto MiProducto = newProducto(); System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from Producto where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); MiProducto.Descripcion = reader.GetString(1).Trim(); MiProducto.Stock = reader.GetInt32(2); } while (reader.NextResult()); reader.Close(); cn.Close(); return MiProducto; } 159 publicstaticint ActualizaStock(int Codigo, string Operacion, int Cantidad) { Producto MiProducto = newProducto(); int Cant2; TesisBD_ESDataSet.ProductoDataTable dat = newTesisBD_ESDataSet.ProductoDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Update Producto Set Stock = Stock " + Operacion + Cantidad.ToString() +" Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); TesisBD_ESDataSet.ProductoDataTable dat2 = newTesisBD_ESDataSet.ProductoDataTable(); SqlCeCommand cmd2 = newSqlCeCommand(); cmd2.Connection = conn; sql = @"Select Stock from Producto where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat2); conn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); MiProducto.Stock = reader.GetInt32(0); } while (reader.NextResult()); reader.Close(); conn.Close(); Cant2 = MiProducto.Stock; } return Cant2; } } 160 } CLASE PROVEEDOR using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil.Proveedores { publicclassProveedor { publicint Codigo; publicstring Nombre; publicstring Direccion; publicstring Telefono; publicstring Ruc; publicstaticTesisBD_ESDataSet.ProveedorDataTable llenarProveedor() { TesisBD_ESDataSet.ProveedorDataTable dat = newTesisBD_ESDataSet.ProveedorDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { conn.Open(); string sql = @"select * FROM Proveedor"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return dat; } publicstaticstring Insertar(string Nombre, string Direccion, string Telefono, string Ruc) { 161 TesisBD_ESDataSet.ProveedorDataTable dat = newTesisBD_ESDataSet.ProveedorDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Insert into Proveedor(Nombre, Direccion, Telefono, Ruc)values('" + Nombre + "','" + Direccion + "','" + Telefono + "','" + Ruc + "' )"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Modificar(int Codigo, string Nombre, string Direccion, string Telefono, string Ruc) { TesisBD_ESDataSet.ProveedorDataTable dat = newTesisBD_ESDataSet.ProveedorDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Update Proveedor Set Nombre ='" + Nombre + "', Direccion='" + Direccion + "', Telefono='"+Telefono + "', Ruc='"+Ruc+"' Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticstring Eliminar(int Codigo) 162 { TesisBD_ESDataSet.ProveedorDataTable dat = newTesisBD_ESDataSet.ProveedorDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Delete from Proveedor Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticProveedor ObtieneProveedor(int Codigo) { Proveedor MiProveedor = newProveedor(); System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.ProveedorDataTable dat = newTesisBD_ESDataSet.ProveedorDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from Proveedor where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); MiProveedor.Nombre = reader.GetString(1).Trim(); MiProveedor.Direccion = reader.GetString(2).Trim(); MiProveedor.Telefono = reader.GetString(3).Trim(); MiProveedor.Ruc = reader.GetString(4).Trim(); } while (reader.NextResult()); 163 reader.Close(); cn.Close(); return MiProveedor; } // } } CLASE ROL using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil { publicclassRol { publicstaticTesisBD_ESDataSet.RolDataTable llenarRol() { TesisBD_ESDataSet.RolDataTable dat = newTesisBD_ESDataSet.RolDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { conn.Open(); string sql = @"select * FROM Rol"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } 164 return dat; } publicstaticstring Insertar(string Descripcion) { TesisBD_ESDataSet.RolDataTable dat = newTesisBD_ESDataSet.RolDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Insert into Rol(Descripcion)values('"+Descripcion+"')"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Modificar(int Codigo, string Descripcion) { TesisBD_ESDataSet.RolDataTable dat = newTesisBD_ESDataSet.RolDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Update Rol Set Descripcion ='" + Descripcion + "' Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } 165 publicstaticstring Eliminar(int Codigo) { TesisBD_ESDataSet.RolDataTable dat = newTesisBD_ESDataSet.RolDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Delete from Rol Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticstring ObtieneRol(int Codigo) { string Descripcion; System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.RolDataTable dat = newTesisBD_ESDataSet.RolDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from Rol where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); Descripcion = reader.GetString(1).Trim(); } while (reader.NextResult()); 166 reader.Close(); cn.Close(); return Descripcion; } } } CLASE USUARIO using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data.SqlServerCe; using System.Data; namespace Tesis_ES_Movil.Usuarios { publicclassUsuario { publicint Codigo; publicstring Descripcion; publicint Rol; publicstring Clave; publicstaticTesisBD_ESDataSet.UsuarioDataTable llenarUsuario() { TesisBD_ESDataSet.UsuarioDataTable dat = newTesisBD_ESDataSet.UsuarioDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { conn.Open(); string sql = @"select * FROM Usuario"; System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return dat; 167 } publicstaticstring Insertar(string Descripcion, int CodRol, string Clave) { TesisBD_ESDataSet.UsuarioDataTable dat = newTesisBD_ESDataSet.UsuarioDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Insert into Usuario(Nombre, Rol, Clave)values('" + Descripcion + "',"+CodRol+",'" + Clave + "' )"; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); conn.Close(); } return"OK"; } publicstaticstring Modificar(int Codigo, string Descripcion, int CodRol, string Clave) { TesisBD_ESDataSet.UsuarioDataTable dat = newTesisBD_ESDataSet.UsuarioDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Update Usuario Set Nombre ='" + Descripcion + "', Rol="+ CodRol +", Clave = '"+ Clave +"' Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; 168 } publicstaticstring Eliminar(int Codigo) { TesisBD_ESDataSet.UsuarioDataTable dat = newTesisBD_ESDataSet.UsuarioDataTable(); System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); { string sql = @"Delete from Usuario Where Codigo=" + Codigo; conn.Open(); System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); } return"OK"; } publicstaticUsuario ObtieneUsuario(int Codigo) { Usuario MiUsuario = newUsuario(); System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); TesisBD_ESDataSet.UsuarioDataTable dat = newTesisBD_ESDataSet.UsuarioDataTable(); SqlCeCommand cmd = newSqlCeCommand(); cmd.Connection = cn; string sql = @"Select * from Usuario where Codigo = " + Codigo; cmd.CommandText = sql; SqlCeDataAdapter da = newSqlCeDataAdapter(cmd); da.Fill(dat); cn.Open(); SqlCeDataReader reader = cmd.ExecuteReader(); do { reader.Read(); MiUsuario.Descripcion = reader.GetString(1).Trim(); MiUsuario.Rol = reader.GetInt32(2); 169 MiUsuario.Clave = reader.GetString(3); } while (reader.NextResult()); reader.Close(); cn.Close(); return MiUsuario; } } } ORGANIZACIÓN Debemos ser organizados en nuestra programación para poder realizar modificaciones al mismo sin tener que perderse entre tantos objetos, para esto usamos carpetas que nos sirven para agrupar determinados temas de nuestro proyecto, de esta forma: Como vemos en el ejemplo de los Productos los agrupamos dentro la pantalla de lista de productos, la clase que realiza las actividades, y la pantalla de digitación de los datos del producto. De esta forma esta cada uno de los temas o tópicos de nuestro proyecto. CONEXIÓN Para las conexiones que haremos a nuestra Base de Datos se utilizará la siguiente cadena, se la pone en este manual pues es un poco complicado armarla ya que los directorios de instalación de la aplicación dentro del dispositivo móvil (EMULADOR) son diferentes al de una Pc común. 170 System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection( ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflectio n.Assembly.GetExecutingAssembly().GetName().CodeBase), "TesisBD_ES.sdf") + ";Max Database Size=2047"))); Donde TesisBD_ES.sdf es nuestra BD local que se migra al emulador. VISION DE PROGRAMACION SOBRE EL USO DE LOS OBJETOS Según nuestro criterio el usuario se facilitaría si todo está claro para él, por ello, pensamos en listar la información que estamos utilizando, es decir, si deseo utilizar los productos, entonces lo primero que debemos hacer es mostrar un listado de productos el cual el usuario puede utilizar para realizar cualquier acción: Como vemos tenemos una grilla donde se cargará los productos, y a su vez tenemos 3 acciones más, como es crear un productos con el botón NUEVO, modificar los datos de algún producto que seleccionemos en la grilla o también eliminarlo si se necesita. Para Modificar o Eliminar debemos seleccionar la fila en la grilla y de ahí dar clic en el botón respectivo. Una vez q presiones una acción el sistema me enviará a una pantalla donde se realizará dicha acción, en este caso la pantalla Producto: 171 Aquí digitaremos los nuevos datos, cambiaremos los datos o confirmaremos la eliminación según sea la acción que se eligió en la pantalla anterior. Una vez grabado se retorna a la pantalla de listado con una grilla llena de información actualizada. OBJETOS UTILIZADOS. A continuación listaremos los objetos utilizados para la elaboración del programa. Formulario Botones de comando Labels y TextBox DateTimePicker ComboBox 172 MenuForm DataGrid DataSet’s Enlaces a la BD Adaptadores Base de Datos