Você está na página 1de 120

UNIVERSIDAD NACIONAL DE

INGENIERÍA
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE
SISTEMAS

ENTREGABLE FINAL

SISTEMA DE FERRETERÍA

CURSO : TALLER DE INGENIERIA DE SOFTWARE I (ST-204 U)

PROFESOR : Mg. Ing. SANCHEZ ESPINOZA, JAVIER CONCEPCIÓN

INTEGRANTES :

 PINEDA SALAS, JESÚS FRANCISCO 20142534J

 SALAZAR VALVERDE, FREDDY DICK 20141169F

Lima,1 de diciembre del 2017

1
Índice
CAPITULO I. PERFIL DEL PROYECTO ................................................................................. 4
Objetivo ............................................................................................................................ 4
Misión .............................................................................................................................. 4
Visión ............................................................................................................................... 4
La Empresa........................................................................................................................ 4
4.1. Misión de Ferretería......................................................................................................................... 4
4.1. Visión de Ferretería .......................................................................................................................... 5
MODELO DEL NEGOCIO ...................................................................................................... 5
5.1. Identificación de los procesos del negocio ....................................................................................... 5
5.2. Identificación de los actores del entorno del negocio ..................................................................... 6
5.3. Descripción Breve del Proyecto ..................................................................................................... 13
5.4. Metodología a emplear .................................................................................................................. 13
Recursos a emplear ......................................................................................................... 14
6.1. Recursos Software ......................................................................................................................... 14
6.2. Recursos Hardware ........................................................................................................................ 15
6.3. Recursos Humanos ......................................................................................................................... 15
Costos y Beneficios ......................................................................................................... 16
Diagrama de Gantt ......................................................................................................... 17
CAPITULO II. ANÁLISIS ............................................................................................... 20
Requerimientos Funcionales ........................................................................................... 20
Requerimientos No Funcionales (RNF)............................................................................. 22
2.1. Diagramas Casos de Uso ................................................................................................................ 23
Identificación de los actores del entorno del negocio ....................................................... 24
Diagramas de Actividades ............................................................................................... 32
4.1. Diagrama de Actividades Ingresar Catálogos ................................................................................ 32
4.2. Diagrama de Actividades Ingresar Compras .................................................................................. 33
4.3. Diagrama de Actividades Ingresar Proveedor ............................................................................... 34
4.4. Diagrama de Actividades Ingresar Ventas ..................................................................................... 35

CAPITULO III. DISEÑO.................................................................................................. 36


Arquitectura de Soporte ................................................................................................. 36
Diagrama de Casos de Uso Reales ................................................................................... 36
2.1. DCU Ingresar Compra .................................................................................................................... 36
2.2. Consultar Compra .......................................................................................................................... 36
2.3. Ingresar Venta ............................................................................................................................... 37
2.4. Consultar Venta: ............................................................................................................................ 37
2.5. Ingreso de Pedido: ......................................................................................................................... 37
2.6. Modificar Pedido: .......................................................................................................................... 37
2.7. Ingresar Proveedor: ....................................................................................................................... 37
2.8. Modificar Proveedor: ..................................................................................................................... 37
2.9. Consultar Proveedor: ..................................................................................................................... 38
2.10. Ingresar Catálogo: .......................................................................................................................... 38
2.11. Modificar Catálogo: ....................................................................................................................... 38
2.12. Consultar Catálogo: ....................................................................................................................... 38
Diagramas de Secuencias ................................................................................................ 39
3.1. Diagrama de Secuencias Compra .................................................................................................. 39

2
3.2. Diagrama de Secuencias Consultar Catálogo................................................................................. 40
3.3. Diagrama de Secuencias Consultar Pedido.................................................................................... 41
3.4. Diagrama de Secuencias Consultar Proveedor .............................................................................. 42
3.5. Diagrama de Secuencias Consultar Ventas .................................................................................... 42
3.6. Diagrama de Secuencias Facturación ............................................................................................ 43
3.7. Diagrama de Secuencias Ingresar Catálogo ................................................................................... 44
3.8. Diagrama de Secuencias Ingresar Compras ................................................................................... 45
Diagramas de Estados ..................................................................................................... 46
4.1. Diagrama de Estados Compra........................................................................................................ 46
4.2. Diagrama de Estados Pedido ......................................................................................................... 47
4.3. Diagrama de Estados Producto ..................................................................................................... 48
4.4. Diagrama de Estados Venta ........................................................................................................... 48
Diagrama de Despliegue ................................................................................................. 49
Diagrama de Clases (Físico) ............................................................................................. 50
CAPITULO IV. INTERFACES ........................................................................................... 51
Árbol de Interfaces ......................................................................................................... 51
Interfaces ....................................................................................................................... 52
2.1. Seguridad ....................................................................................................................................... 52
2.2. Registro .......................................................................................................................................... 53
2.3. Consulta ......................................................................................................................................... 54
2.4. Operacional ................................................................................................................................... 55
2.5. Catálogo de Productos................................................................................................................... 57
Código fuente ................................................................................................................. 58
3.1. Main ............................................................................................................................................... 58
3.2. Controller ....................................................................................................................................... 59
3.3. FXML .............................................................................................................................................. 61

CAPITULO V. IMPLEMENTACIÓN ................................................................................ 64


Objetivo .......................................................................................................................... 64
Interfaces. ....................................................................................................................... 64
CODIGO.......................................................................................................................... 67
3.1. Base de Datos. ............................................................................................................................... 67
3.2. Controller. ...................................................................................................................................... 69
3.3. Conexión. ....................................................................................................................................... 71
3.4. Vista Enlazadas. ............................................................................................................................. 79
Estructura del Proyecto................................................................................................... 83
4.1. Clases. ............................................................................................................................................ 84

CAPITULO VI. MANUAL ............................................................................................... 85


MANUAL DE CONFIGURACIÓN ................................................................................ 85
1.1. Instalar SQL Server 2014 Management Studio. .................................................................... 85
1.2. Instalar IntelliJ IDEA 2017.1 .................................................................................................... 102
MANUAL DE USUARIO ............................................................................................ 113
2.1. Menú principal ........................................................................................................................... 113
2.2. Proveedores .............................................................................................................................. 113
2.3. Productos. .................................................................................................................................. 116
2.4. Clientes ....................................................................................................................................... 118

CAPITULO VII. CONCLUSIONES. .................................................................................. 120


CAPITULO VIII. RECOMENDACIONES. ........................................................................... 120

3
CAPITULO I. PERFIL DEL PROYECTO
OBJETIVO
Implementar un sistema que permita a la empresa:

 Manejar un catálogo de productos.


 Manejar y administrar la existencia de los productos.
 La compra y manejo de catálogos de los productos de los proveedores.
 Almacenar la información de los pedidos y ventas de los productos.
 Almacenar información de los clientes habituales.

MISIÓN
El presente proyecto tiene como misión desarrollar un sistema para la gestión de pedidos, compras,
catálogos, ventas para una empresa ferretera con los procesos de acuerdo a los requerimientos
especificados, así como las actividades de verificación, validación, revisión conjunta y solución de
problemas, para lo que se mantendrá la documentación adecuada del desarrollo del presente trabajo
con el fin de obtener un producto software confiable, seguro y útil de acuerdo a las necesidades de la
empresa.

VISIÓN
A través de este proyecto se espera satisfacer los requerimientos actuales de la empresa para una mejor
atención al cliente desempeñando las tareas de apoyo adecuadas para los usuarios de la empresa y para
el cliente de modo que sea un modelo idóneo para la implementación del software que perdure en el
tiempo.

LA EMPRESA

4.1. Misión de Ferretería

El sistema tiene como necesidad suplir el registro manual de las actividades de registro diarios de
ventas, el control de existencia, el pedido a proveedores y un manejo mas especifico de un
catálogo de los productos, lo ultimo es importante debido a que nos permite apreciar que articulo
o producto posee mayor rotación implicando una mayor demanda.

4
4.1. Visión de Ferretería

La empresa espera ser líder, gestora y promotora del desarrollo sostenible y control ambiental a
nivel nacional para una mejor calidad de vida que compromete al desarrollo del país. Así mismo
Internacionalizar los servicios brindados.

MODELO DEL NEGOCIO

5.1. Identificación de los procesos del negocio

Gestion Compras

Proveedor

Gestion Proveedores

Personal Logistica

Gestion Ventas

Personal Ventas

Gestion Pedidos

Cliente

Gestion Catalogos
Adiministrador BD

5
5.2. Identificación de los actores del entorno del negocio

Número Actor Tipo Responsabilidad


 Gestión Compras
ACT01 Personal Logística Primario
 Gestión Proveedores
 Gestión Ventas
ACT02 Personal Ventas Primario
 Gestión Pedidos
ACT03 Administrador BD Primario  Gestión Catálogos
 Gestión Compras
ACT04 Proveedor Secundario
 Gestión Proveedores
 Gestión Ventas
ACT05 Cliente Secundario
 Gestión Pedidos

Número Actor Responsabilidad

Ingresar Compras Registrar Compras Ingresar Proveedor

ACT01
Personal Logistica
Modificar Proveedor Consutar Proveedor

Ingresar Ventas Consultar Ventas Ingresar Pedido

ACT02
Personal Ventas
Modificar Pedido Consultar Pedido

ACT03 Ingresar Catálogo Modificar Catálogo Consultar Catálogo

Adiministrador BD

6
Ingresar Proveedor Consutar Proveedor Ingresar Compras

ACT04
Proveedor
Registrar Compras

Ingresar Ventas Consultar Ventas Ingresar Pedido

ACT05
Cliente
Modificar Pedido Consultar Pedido

Gestión Compras
1. Proceso de Negocio Ingresar Compras
2. Objetivo
3. Actores Personal Logístico (Principal)
Proveedor (Secundario)
4. Pre-condiciones

5. Flujo de Eventos
1) El actor Usuario introduce el número de compra
2) El sistema verifica la información
3) El actor Usuario introduce los datos referentes a dicha compra
4) El sistema evalúa si los datos introducidos son válidos
5) El sistema pide confirmación sobre los datos introducidos
6) El actor Usuario asiente la confirmación
7) El sistema guarda la información
8) El sistema finaliza el caso de uso correctamente
6. Post-condiciones

7. Excepciones

8. Versión 1.0
9. Tiempo de Ejecución
10. Diagrama de Actividades

7
11. Diagrama de Caso de uso

Ingresar Compras

Proveedor
Personal Logistica

Registrar Compras

8
Gestión Proveedor
1. Proceso de Negocio Ingresar Proveedor
2. Objetivo
3. Actores Personal Logístico (Principal)
Proveedor (Secundario)
4. Pre-condiciones

5. Flujo de Eventos
1) El actor Usuario introduce el ID del proveedor
2) El sistema verifica la información
3) El actor Usuario introduce los datos referentes a dicho pedido
4) El sistema evalúa si los datos introducidos son válidos
5) El sistema pide confirmación sobre los datos introducidos
6) El actor Usuario asiente la confirmación
7) El sistema guarda la información
8) El sistema finaliza el caso de uso correctamente
6. Post-condiciones

7. Excepciones

8. Versión
9. Tiempo de Ejecución
10. Diagrama de Actividades

11. Diagrama de Caso de uso

Ingresar Proveedor

Modificar Proveedor

Personal Logistica
Proveedor

Consutar Proveedor

9
Gestion Ventas
1. Proceso de Negocio Ingresar Ventas
2. Objetivo
3. Actores Personal Ventas (Principal)
Cliente (Secundario)
4. Pre-condiciones

5. Flujo de Eventos
1) El actor Usuario introduce el número de venta
2) El sistema verifica la información
3) El actor Usuario introduce los datos referentes a dicha venta
4) El sistema evalúa si los datos introducidos son válidos
5) El sistema pide confirmación sobre los datos introducidos
6) El actor Usuario asiente la confirmación
7) El sistema guarda la información
8) El sistema finaliza el caso de uso correctamente
6. Post-condiciones

7. Excepciones

8. Versión
9. Tiempo de Ejecución
10. Diagrama de Actividades

11. Diagrama de Caso de uso

Ingresar Ventas

Cliente

Consultar Ventas

Personal Ventas

Gestion Pedido
1. Proceso de Negocio Ingresar Pedido
2. Objetivo
3. Actores Personal Ventas (Principal)

10
Cliente (Secundario)
4. Pre-condiciones

5. Flujo de Eventos
1) El actor Usuario introduce el número de pedido
2) El sistema verifica la información
3) El actor Usuario introduce los datos referentes a dicho pedido
4) El sistema evalúa si los datos introducidos son válidos
5) El sistema pide confirmación sobre los datos introducidos
6) El actor Usuario asiente la confirmación
7) El sistema guarda la información
8) El sistema finaliza el caso de uso correctamente
6. Post-condiciones

7. Excepciones

8. Versión 1.0
9. Tiempo de Ejecución
10. Diagrama de Actividades

11. Diagrama de Caso de uso

Ingresar Pedido

Modificar Pedido
Personal Ventas Cliente

Consultar Pedido

11
Gestion Catálogo
1. Proceso de Negocio Ingresar Catálogo
2. Objetivo
3. Actores Administrador BD (Principal)
4. Pre-condiciones

5. Flujo de Eventos
1) El actor Usuario introduce el ID del catálogo
2) El sistema verifica la información
3) El actor Usuario introduce los datos referentes a dicho catálogo
4) El sistema evalúa si los datos introducidos son válidos
5) El sistema pide confirmación sobre los datos introducidos
6) El actor Usuario asiente la confirmación
7) El sistema guarda la información
8) El sistema finaliza el caso de uso correctamente
6. Post-condiciones

7. Excepciones

8. Versión 1.0
9. Tiempo de Ejecución
10. Diagrama de Actividades

11. Diagrama de Caso de uso

Ingresar Catálogo

Modificar Catálogo
Adiministrador BD

Consultar Catálogo

12
5.3. Descripción Breve del Proyecto

Descripción general

Perspectiva del producto


El sistema tiene como perspectiva estar en el negocio el mayor tiempo posible,
supuestamente los refinamientos del sistema se traducen durante la operación de este.
Para esto se proyecta la menor cantidad de cambios del sistema.

Funciones del producto


Las funciones del sistema de Ferretería son las siguientes:

 Manejo de una catálogo de productos.


 Manejo y administración de la existencia de los productos en bodega.
 La compra y manejo de catálogos de los productos de los proveedores.
 Ventas de productos
 Manejo de pedidos

Características del Usuario

Los destinatarios y usuarios a lo que el sistema está destinado es para una área en la cual cuenta
con un gran gama de productos y un nivel de detalle y especificación de estos que hace al
usuario del sistema De Ferretería adquirir una pronta experticia en el manejo de este sistema ,
se puede apreciar que en la parte de captura de requerimientos queda establecida la
familiaridad que el usuario tiene con las herramientas informatizadas y por tal no posee un
desconocimiento de las tendencias en este rubro y este se debe a que anteriormente el contaba
con un sistema para el manejo de su negocio pero era insuficiente y este se debe al continuo
crecimiento de su negocio (incorporación de nuevo stock, incorporación de nuevos
proveedores, nuevo catálogo de productos), y el sistema anterior no consideraba tales aristas
y como también era un paquete a medida su adaptabilidad se hizo imposible.
A partir de este precedente el usuario visualizaba lo que pretendía como sistema y esto
porque conocía las limitaciones del sistema anterior lo que se tradujo por parte nuestra en un
mayor entendimiento de los requerimientos del sistema de Ferretería.

Limitaciones generales

Se puede apreciar que la limitación más importante se traduce a que es un software a la


medida lo que hace que los refinamientos de este impliquen un mayor trabajo por parte de
los desarrolladores.
En el espectro del usuario se suscita que la adaptabilidad del sistema al entorno nos permite
enfatizar que cuando los cambio sean absolutamente necesarios se modificara al sistema para
satisfacer los nuevos requerimientos y no por cada cambio en el entorno del negocio
implicara un nuevo cambio en el sistema.

5.4. Metodología a emplear

Se empleará la metodología RUP, con el lenguaje UML

13
RECURSOS A EMPLEAR
6.1. Recursos Software
 IntelliJ IDEA version 2017.2.3, IDE Multilenguaje para diseñar, codificar, y
desarrollar sitios web, páginas, y aplicaciones. Ofrece facilidades para la escritura
de código, así como también determina errores en el mismo, brindando
sugerencias, otorgando la posibilidad de escoger entre múltiples sugerencias de
autocompletado. Entre los tipos de documentos que se pueden crear se tienen:
HTML, PHP, ASP VBScript, CSS, Java, FXML, ASP, JavaScript, entre otros.
 Licencia de IntelliJ IDEA version 2017.2.3, para cuya activación se necesita disponer
de una licencia otorgada a un correo electrónico de un usuario.
 Adobe Fireworks CS3 versión 9.0.0.1198, editor de imágenes para las páginas web.
 Tomcat Apache versión 9, Programa que permite instalar en conjunto Apache, Java
y conectar a la base de datos MySQL, PostgreSQL, Oracle, entre otros.
 Ubuntu 17.04 Zesty Zapus: Lanzado el 13 de abril del 2017. Incluye Unity 8 como
entorno de escritorio.

Software Mínimo Requerido Recomendado

Sistema Operativo Ubuntu 17.04 Zesty Zapus; Ubuntu 17.04 Zesty Zapus;
Navegador Web como Mozilla Navegador Web Mozilla
Firefox v3 o v3.5, o Google Firefox v3.5
Chrome v36.0+

Administrador MySQL PostgreSQL


de Base de
Datos

Diseñador Adobe DreamWeaver8 Adobe Dreamweaver CS3


de Página
Web

Editor de imágenes Adobe Fireworks 8 Adobe Fireworks CS3

Conexión de BD Tomcat Apache version 7 Tomcat Apache version 9

14
6.2. Recursos Hardware

Componentes Mínimo Requerido Recomendado

Procesador Core i3 Core i5

Memoria RAM 2 GB DDR3 8 GB DDR4

Memoria Disco 250 GB Toshiba 1TB


Duro

Tarjeta de Video AMD Radeon Graphics Serie AMD Radeon Graphics Serie R9
R5 M200 M200

Nvidia GeForce GT 710 Nvidia GeForce GT 740


Resolución 1280 x 1024 1280 x 1024
Pantalla

Requisitos Mínimos:

Procesador Intel Core i3 2 GB de RAM

Tarjeta de video Nvidia GeForce GT 710

50 MB de espacio disponible aprox. en el disco

duro (instalación) Resolución de pantalla de 1280

x 1024

6.3. Recursos Humanos

El equipo estará compuesto por dos personas:

 1 analista de Sistemas.

 1 programador para el diseño de las páginas Web.


Taller de Ingeniería de Software
Perfil del Proyecto 17 - II

COSTOS Y BENEFICIOS

Descripción Costos
Ubuntu 17.04 Zesty Zapus $ 0.00

Software IntelliJ IDEA versión $ 499.00


2017.2.3
Software adobe FireWorks Creative $ 299.00
Suite 6 version 9
idioma español

Cliente  Permite una mejora en la comunicación con


la empresa.
 del el servicio.

 Estará la reducción de tiempo en trasladar los


documentos, con lo que se evitará retrasos
Empresa de entrega de los mismos.
 Se mejorará la comunicación con los clientes,
permitiendo a través de sus sugerencias
conocer las opiniones acerca de la empresa.
 Mayor control de equipos al registrarse los
materiales empleados en las pruebas de
ensayo, con lo que se mejora la seguridad y
se evitan las pérdidas de equipos.
 Disminución de errores.

16
DIAGRAMA DE GANTT
Taller de Ingeniería de Software
Perfil del Proyecto 17 - II

18
Taller de Ingeniería de Software
Perfil del Proyecto 17 - II

19
CAPITULO II. ANÁLISIS
REQUERIMIENTOS FUNCIONALES
El sistema debe:
1. Facilitar el registro de usuarios de Ferretería S.A.
Reglas:
 Debe registrarse el número de DNI.
 Debe registrarse los nombres y apellidos.
 Debe registrarse el número de teléfono celular.
 Debe registrarse el email del usuario.
 Debe registrarse el código de licencia de usuario.

2. Facilitar el registro de los productos de Ferretería S.A.


Reglas:
 Debe registrarse el número de código de producto.
 Debe registrarse la marca del producto.
 Debe registrarse el precio de venta del producto.
 Debe registrarse el precio de costo del producto.
 Debe registrarse el año en el que ingresó el producto al sistema.
 Debe registrarse la fecha de vencimiento del producto.
 Debe registrarse el estado del producto.

3. Facilitar el registro de los clientes de Ferretería S.A.


Reglas:
 Debe registrarse el número de DNI o RUC del cliente.
 Debe registrarse los nombres y apellidos o la razón social y el rubro
del cliente.
 Debe registrarse la dirección del cliente.
 Debe registrarse el teléfono celular del cliente.
 Debe registrarse el email del cliente.
 Debe registrarse el número de tarjeta de crédito del cliente.

4. Facilitar el registro de los proveedores de Ferretería S.A.


Reglas:
 Debe registrarse la razón social del proveedor.
 Debe registrarse el número de RUC del proveedor.
 Debe registrarse el número de teléfono al cual está asociado el
proveedor.
 Debe registrarse el tipo y número de cuenta bancaria del proveedor.
5. Facilitar la programación de los servicios de Ferretería S.A.

6. Facilitar el registro y generación de las tarifas de los servicios de Ferretería


S.A.

7. Permitir la toma de pedidos de servicios de Ferretería S.A por parte de un


cliente, para su futura programación.
Reglas:
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

 Debe registrarse el lugar de destino del pedido, indicando el nombre


de la calle, avenida o jirón, número y distrito.
 Debe registrarse la hora y fecha de la toma del pedido de un cliente.
 Debe registrarse la hora y fecha en la que el cliente recogerá el pedido.
 Debe registrarse la cantidad de productos pedidos.
 Debe registrarse el tipo de producto
 Debe generar el monto al cual asciende el pedido en total.
 Debe registrarse un lugar de referencia para ubicar la dirección (si el
caso lo amerita).
8. Permitir la actualización del catálogo de productos brindados a un cliente
después de la realización de un servicio de Ferretería Perú.
9. Permitir que los conductores actualicen el estado del servicio del sistema
de Ferretería que estén brindando para facilitar su programación.
Reglas:
 Debe registrarse el estado del servicio, ya sea solicitado, cancelado,
pagado, en ejecución o finalizado.
10. Facilitar la emisión de facturas electrónicas.
Reglas:
 Debe emitirse solo después de la finalización de un servicio del
sistema de Ferretería.
 Debe mostrar el nombre y apellido o la razón social de la empresa a la
cual se le brindó el servicio.
 Debe ser remitida al email del cliente.
 Debe incluir el monto que se pagó por el servicio del sistema de
Ferretería.
 Debe incluir la hora y fecha de finalización del servicio del sistema de
Ferretería.
11. Permitir generar automáticamente la tarifa de pago.
Reglas:
 Debe estar en base a la distancia.
 Debe estar en base al tiempo estimado de demora del servicio.
 Debe estar en base al lugar de destino y de origen.
 Debe estar en función del horario en el cual se vaya a realizar el
servicio.
 Debe estar en función a la fecha, ya sea día laborable o feriado.
12. Facilitar la realización de un informe(comentario) al finalizar el servicio
de Ferretería S.A. por parte de un conductor.
Reglas:
 Debe registrar el código de servicio realizado.
 Debe registrar la hora de finalización y de inicio del servicio.
 Debe registrar la descripción del servicio para la retroalimentación del
sistema.

21
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

REQUERIMIENTOS NO FUNCIONALES (RNF).


 Lenguaje de desarrollo

La aplicación para el sistema de información debe ser desarrollado en lenguaje


JavaFX utilizando un DBMS Oracle 11g. Los modelos deben ser construidos
utilizando Power Designer 16. La aplicación deberá operar para ambientes Windows
y Android 2.3+

 De arquitectura

La aplicación debe operar en un ambiente web, que comprenda una capa de usuarios,
otra para la lógica del negocio y otra para los datos. Debe incluir web services para la
posibilidad de acceso a información tanto de clientes, conductores y vehículos desde
una central hacia cualquier otra haciendo uso de una Pc o un dispositivo móvil.

 De documentación

Debe documentarse el sistema, las pruebas, así como entregar los manuales para la
administración, la operación y para el trabajo de los usuarios finales.

 De seguridad

Debe incluir un módulo de seguridad basado en un servidor de autenticación de


usuarios, que incluya la asignación de nombres de usuario y passwords según los roles
que desempeñe el usuario (cliente, conductor, admin). Además, el sistema debe de
estar preparado para afrontar cualquier amenaza, haciendo uso de Latch para la
protección de información de valor importante para la empresal sistema de Ferretería.

 De fiabilidad

A través de las pruebas correspondientes la aplicación debe asegurar al 100% las


operaciones de registro, actualización y eliminación.

 De mantenibilidad

Debe facilitar el mantenimiento de las tablas principales del sistema adecuándolas a


las reglas del negocio, así como asegurar el proceso de backup siguiendo las políticas
trazadas, tales como el RTO (Recovery Time Objective) y el RPO (Recovery Point
Objective).

Diariamente se realizarán los backups incrementales o diferenciales, una vez por


semana se harán los backups completos parciales y una vez al mes, los respaldos
completos totales. Siempre estas decisiones se harán tomando en cuenta el volumen
de los datos, el soporte de almacenamiento disponible y la velocidad de respaldo del
sistema.

 De usabilidad

Debe construirse utilizando el lenguaje y términos del negocio, así como un diseño
amigable a los usuarios.

22
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

 De perform

Los tiempos de respuesta para las operaciones de registro y actualización no deben


superar los 5 segundos, y para las consultas y reportes no debe superar los 15
segundos.

 De servicio (Trabajo por terceros)

Todo inconveniente o reclamo por los servicios prestados debe resolverse en primera
instancia a nivel de conciliación, caso contrario se resolverá en décimo primer juzgado
en lo civil de Lima.

2.1. Diagramas Casos de Uso

Gestion Compras

Proveedor

Gestion Proveedores

Personal Logistica

Gestion Ventas

Personal Ventas

Gestion Pedidos

Cliente

Gestion Catalogos
Adiministrador BD

23
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

IDENTIFICACIÓN DE LOS ACTORES DEL ENTORNO DEL


NEGOCIO

Número Actor Tipo Responsabilidad


 Gestión Compras
ACT01 Personal Logística Primario
 Gestión Proveedores
 Gestión Ventas
ACT02 Personal Ventas Primario
 Gestión Pedidos
ACT03 Administrador BD Primario  Gestión Catálogos
 Gestión Compras
ACT04 Proveedor Secundario
 Gestión Proveedores
 Gestión Ventas
ACT05 Cliente Secundario
 Gestión Pedidos

Número Actor Responsabilidad

Ingresar Compras Registrar Compras Ingresar Proveedor

ACT01
Personal Logistica
Modificar Proveedor Consutar Proveedor

Ingresar Ventas Consultar Ventas Ingresar Pedido

ACT02
Personal Ventas
Modificar Pedido Consultar Pedido

24
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Ingresar Catálogo Modificar Catálogo

ACT03
Adiministrador BD
Consultar Catálogo

Ingresar Proveedor Consutar Proveedor

ACT04
Proveedor
Ingresar Compras Registrar Compras

Ingresar Ventas Consultar Ventas Ingresar Pedido

ACT05
Cliente
Modificar Pedido Consultar Pedido

25
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Gestión Compras
12. Proceso de Negocio Ingresar Compras
13. Objetivo
14. Actores Personal Logístico (Principal)
Proveedor (Secundario)
15. Pre-condiciones

16. Flujo de Eventos


9) El actor Usuario introduce el número de compra
10) El sistema verifica la información
11) El actor Usuario introduce los datos referentes a dicha compra
12) El sistema evalúa si los datos introducidos son válidos
13) El sistema pide confirmación sobre los datos introducidos
14) El actor Usuario asiente la confirmación
15) El sistema guarda la información
16) El sistema finaliza el caso de uso correctamente
17. Post-condiciones

18. Excepciones

19. Versión 1.0


20. Tiempo de Ejecución
21. Diagrama de Actividades

26
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

22. Diagrama de Caso de uso

Ingresar Compras

Proveedor
Personal Logistica

Registrar Compras

27
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Gestión Proveedor
12. Proceso de Negocio Ingresar Proveedor
13. Objetivo
14. Actores Personal Logístico (Principal)
Proveedor (Secundario)
15. Pre-condiciones

16. Flujo de Eventos


9) El actor Usuario introduce el ID del proveedor
10) El sistema verifica la información
11) El actor Usuario introduce los datos referentes a dicho pedido
12) El sistema evalúa si los datos introducidos son válidos
13) El sistema pide confirmación sobre los datos introducidos
14) El actor Usuario asiente la confirmación
15) El sistema guarda la información
16) El sistema finaliza el caso de uso correctamente
17. Post-condiciones

18. Excepciones

19. Versión
20. Tiempo de Ejecución
21. Diagrama de Actividades

22. Diagrama de Caso de uso

Ingresar Proveedor

Modificar Proveedor

Personal Logistica
Proveedor

Consutar Proveedor

28
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Gestion Ventas
12. Proceso de Negocio Ingresar Ventas
13. Objetivo
14. Actores Personal Ventas (Principal)
Cliente (Secundario)
15. Pre-condiciones

16. Flujo de Eventos


9) El actor Usuario introduce el número de venta
10) El sistema verifica la información
11) El actor Usuario introduce los datos referentes a dicha venta
12) El sistema evalúa si los datos introducidos son válidos
13) El sistema pide confirmación sobre los datos introducidos
14) El actor Usuario asiente la confirmación
15) El sistema guarda la información
16) El sistema finaliza el caso de uso correctamente
17. Post-condiciones

18. Excepciones

19. Versión 1.0


20. Tiempo de Ejecución 90 seg
21. Diagrama de Actividades

22. Diagrama de Caso de uso

Ingresar Ventas

Cliente

Consultar Ventas

Personal Ventas

29
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Gestion Pedido
12. Proceso de Negocio Ingresar Pedido
13. Objetivo
14. Actores Personal Ventas (Principal)
Cliente (Secundario)
15. Pre-condiciones

16. Flujo de Eventos


9) El actor Usuario introduce el número de pedido
10) El sistema verifica la información
11) El actor Usuario introduce los datos referentes a dicho pedido
12) El sistema evalúa si los datos introducidos son válidos
13) El sistema pide confirmación sobre los datos introducidos
14) El actor Usuario asiente la confirmación
15) El sistema guarda la información
16) El sistema finaliza el caso de uso correctamente
17. Post-condiciones

18. Excepciones

19. Versión 1.0


20. Tiempo de Ejecución
21. Diagrama de Actividades

22. Diagrama de Caso de uso

Ingresar Pedido

Modificar Pedido
Personal Ventas Cliente

Consultar Pedido

30
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Gestion Catálogo
12. Proceso de Negocio Ingresar Catálogo
13. Objetivo
14. Actores Administrador BD (Principal)
15. Pre-condiciones

16. Flujo de Eventos


9) El actor Usuario introduce el ID del catálogo
10) El sistema verifica la información
11) El actor Usuario introduce los datos referentes a dicho catálogo
12) El sistema evalúa si los datos introducidos son válidos
13) El sistema pide confirmación sobre los datos introducidos
14) El actor Usuario asiente la confirmación
15) El sistema guarda la información
16) El sistema finaliza el caso de uso correctamente
17. Post-condiciones

18. Excepciones

19. Versión 1.0


20. Tiempo de Ejecución
21. Diagrama de Actividades

22. Diagrama de Caso de uso

Ingresar Catálogo

Modificar Catálogo
Adiministrador BD

Consultar Catálogo

31
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

DIAGRAMAS DE ACTIVIDADES
4.1. Diagrama de Actividades Ingresar Catálogos

32
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.2. Diagrama de Actividades Ingresar Compras

33
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.3. Diagrama de Actividades Ingresar Proveedor

34
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.4. Diagrama de Actividades Ingresar Ventas

35
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CAPITULO III. DISEÑO


ARQUITECTURA DE SOPORTE

En este diagrama se muestran los nodos, los componentes que contienen y sus respectivas
relaciones, identificando el tipo de conexión.

DIAGRAMA DE CASOS DE USO REALES


2.1. DCU Ingresar Compra

El actor personal Logístico introduce el número de compra. El sistema


verifica la información. El actor personal Logístico introduce los datos
referentes a dicha compra. El sistema evalúa si los datos introducidos
son válidos. El sistema pide confirmación sobre los datos introducidos.
El actor personal Logístico asiente la confirmación. El sistema guarda
la información. El sistema finaliza el caso de uso correctamente.

2.2. Consultar Compra

El actor personal Logístico realiza la consulta. El sistema muestra los


resultados de la consulta. El actor personal Logístico selecciona de

36
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

entre los resultados la compra deseada y el caso de uso finaliza


correctamente.

2.3. Ingresar Venta

El actor personal de Ventas introduce el número de venta. El sistema


verifica la información. El actor Usuario introduce los datos referentes
a dicha venta. El sistema evalúa si los datos introducidos son válidos.
El sistema pide confirmación sobre los datos introducidos. El actor
personal de Ventas asiente la confirmación. El sistema guarda la
información. El sistema finaliza el caso de uso correctamente

2.4. Consultar Venta:

El actor personal de Ventas realiza la consulta. El sistema muestra los


resultados de la consulta. El actor personal de Ventas selecciona de
entre los resultados la venta deseada y el caso de uso finaliza
correctamente.

2.5. Ingreso de Pedido:

El cliente introduce el número de pedido. El sistema verifica la


información. El cliente introduce los datos referentes a dicho pedido.
El sistema evalúa si los datos introducidos son válidos. El sistema pide
confirmación sobre los datos introducidos. El cliente asiente la
confirmación. El sistema guarda la información. El sistema finaliza el
caso de uso correctamente.

2.6. Modificar Pedido:

Se realiza el caso de uso Consultar Pedido


El cliente realiza los cambios. El cliente presiona Enter. El sistema
evalúa si los datos introducidos son válidos. El sistema pide
confirmación sobre los datos introducidos. El cliente asiente la
confirmación. El sistema realiza las modificaciones y el caso de uso
finaliza con éxito.

2.7. Ingresar Proveedor:

El actor personal logístico introduce el ID del proveedor. El sistema


verifica la información. El actor personal logístico introduce los datos
referentes a dicho pedido. El sistema evalúa si los datos introducidos
son válidos. El sistema pide confirmación sobre los datos introducidos.
El actor personal logístico asiente la confirmación. El sistema guarda
la información. El sistema finaliza el caso de uso correctamente.

2.8. Modificar Proveedor:

Se realiza el caso de uso Consultar Proveedor. El actor personal


logístico realiza los cambios. El actor personal logístico presiona Enter.
El sistema evalúa si los datos introducidos son válidos. El sistema pide

37
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

confirmación sobre los datos introducidos. El actor personal logístico


asiente la confirmación. El sistema realiza las modificaciones y el caso
de uso finaliza con éxito.

2.9. Consultar Proveedor:

El actor personal logístico realiza la consulta. El sistema muestra los


resultados de la consulta. El actor personal logístico selecciona de entre
los resultados el proveedor deseado y el caso de uso finaliza
correctamente.

2.10. Ingresar Catálogo:

El administrador de base de datos introduce el ID del catálogo. El


sistema verifica la información. El administrador de base de datos
introduce los datos referentes a dicho catálogo. El sistema evalúa si los
datos introducidos son válidos. El sistema pide confirmación sobre los
datos introducidos. El administrador de base de datos asiente la
confirmación. El sistema guarda la información. El sistema finaliza el
caso de uso correctamente.

2.11. Modificar Catálogo:

Se realiza el caso de uso Consultar Catálogo


El administrador de base de datos realiza los cambios en el catálogo. El
administrador de base de datos presiona Enter. El sistema evalúa si los
datos introducidos son válidos. El sistema pide confirmación sobre los
datos introducidos. El administrador de base de datos asiente la
confirmación. El sistema realiza las modificaciones y el caso de uso
finaliza con éxito.

2.12. Consultar Catálogo:

El administrador de base de datos realiza la consulta. El sistema


muestra los resultados de la consulta. El administrador de base de datos
selecciona de entre los resultados el catálogo deseado y el caso de uso
finaliza correctamente.

38
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

DIAGRAMAS DE SECUENCIAS
3.1. Diagrama de Secuencias Compra
DS Compra

Almacen Corrige Datos Base Datos Modificar Reporte

Adiministrador BD
Ingresa Datos

Registra
Valida

Corrige Datos

Actualiza Datos

Genera Reportes

Imprime

39
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.2. Diagrama de Secuencias Consultar Catálogo


DS Consultar Catálogo

Sistema Información :Control Catálogo Base Datos

Adiministrador BD

Ingresar Sistema
Validar Usuario

Catálogo
Consultar Catálogo
Solicitar Productos

Mostrar Productos Información Productos


Visualizar Productos

Seleccionar Productos

Consultar Detalles Productos


Solicitar Detalles

Enviar Detalles
Mostrar Detalles Productos
Visualizar Detalles Productos

40
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.3. Diagrama de Secuencias Consultar Pedido


DS Consultar Pedido

Sistema Información :Control Pedido Base Datos

Personal Ventas
Ingresar Sistema

Validar Usuario

Pedidos Consultar Pedidos


Solicitar Pedidos

Enviar Pedidos
Mostrar Pedidos
Visualizar Pedidos

Seleccionar Pedidos
Consultar Detalles Pedidos
Solicitar Detalles

Enviar Detalles
Mostrar Detalles Pedidos
Visualizar Detalles Pedidos

41
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.4. Diagrama de Secuencias Consultar Proveedor


DS Consultar Proveedor

Sistema Información :Control Proveedor Base Datos

Personal Logistica

Ingresar Sistema
Validar Datos

Proveedores
Consultar Proveedores
Solicitar Proveedores

Información Proveedores
Mostrar Proveedores
Visualiza Proveedores

Detalles Proveedores
Consultar Detalles Proveedores
Solciitar Detalles

Visualiza Detalle Enviar Detalles


Mostrar Detalles Proveedor
Proveedores

3.5. Diagrama de Secuencias Consultar Ventas


DS Consultar Ventas

Sistema Información :Control Pedido :Control Catálogo Base Datos

Personal Ventas
Ingresar Sistema
Validar Usuario
Ventas
Obtener Importe
Solicitar Importe

Enviar Importe
Mostrar Importe

Pedidos
Solicitar Pedidos ObtenerPedidos()

Enviar Pedidos
Mostrar Pedidos

Productos
Solicitar Productos

Enviar Productos
Productos Obtenidos
Visualiza Detalle Ventas Lista Productos

42
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.6. Diagrama de Secuencias Facturación


DS Facturación

Facturación

Personal Ventas

Tomar Orden Pedido


Verificar Existencia

Registro y Verificacion Datos Cliente

Generación de Factura

Descargo Productos Inventario

43
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.7. Diagrama de Secuencias Ingresar Catálogo


DS Ingresar Catálogo

Sistema Información Base Datos

Adiministrador BD

Ingresa ID Catálogo Valida ID

Ingresar Datos Producto


Valida Datos

Solicitar Guardado

Confirmar Guardado Insertar Producto

Mostrar Guardado Guardar Producto


Completado
Guardado Exitoso

44
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.8. Diagrama de Secuencias Ingresar Compras


DS Ingresar Compras

Personal Logistica Personal Ventas Proveedor

Registra Productos Compra

Solicita Registro Producto a Comprar

Aprobración Presupuesto Compra

Recepción Solicitud Compra


Generación Factura

Pago Factura a Proveedor

Recepción Productos Compra

Verificación Productos Compra

Actualización Stock

Ingreso a Inventario

Ubicación Producto en Almacén

45
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

DIAGRAMAS DE ESTADOS
4.1. Diagrama de Estados Compra

crearCompra()

COMPRA PENDIENTE

registraCompra()

COMPRA SOLICITADA esperaCompra() COMPRA EN ESPERA

cancelaCompra()

registraEntrega()

COMPRA CANCELADA
COMPRA ENTREGADA

destruirCompra()

destruirCompra()

46
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.2. Diagrama de Estados Pedido

crearPedido()

PEDIDO PENDIENTE

registrarPedido()

PEDIDO SOLICITADO esperaPedido() PEDIDO EN ESPERA

registraEntrega()
cancelaPedido()
cancelaPedido()

PEDIDO CANCELADO

destruirPedido()

PEDIDO RECIBIDO
destruirPedido()

47
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.3. Diagrama de Estados Producto

registraProducto()

agotadoProducto()
PRODUCTO EN STOCK
reservaProducto()

ventaProducto() dañadoProducto()

PRODUCTO RESERVADO PRODUCTO DAÑADO PRODUCTO AGOTADO


PRODUCTO EN VENTA

registraVentaProducto()
registraVentaProducto()
cancelaReservaProducto()
PRODUCTO VENDIDO destruirProducto()
destruirProducto()

CANCELA RESERVA PRODUCTO


destruirProducto()

destruirProducto()

4.4. Diagrama de Estados Venta

solicitaVenta()

VENTA SOLICITADA

registraVenta()

VENTA EN ESPERA cierraVenta()

cancelaVenta()

VENTA CANCELADA VENTA REALIZADA

destruirVenta()
destruirVenta()

48
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

DIAGRAMA DE DESPLIEGUE
En este diagrama se muestran los nodos, los componentes que contienen y sus respectivas
relaciones, identificando el tipo de conexión.

49
DIAGRAMA DE CLASES (FÍSICO)
COMPRA
- codCompra : int
- codProveedor : int
DETALLE-COMPRA - numDocumto : int
- codProducto : int 1..* - subTotal : Float 1..*
- codCompra : int 1..1 - IGV : Float
1..* - unidades : int - fecha : Date
- precioCosto : Float + compra () : void
+ detalleCompra () : void + ingresar () : void
+ consultar () : void
1..1

PROVEEDOR
- codProveedor : int
- nomProveedor : String
- rucProveedor : int
1..1
- direccionProveedor : String
- ciudadProveedor : String
PRODUCTO DETALLE-PROD-PROV - telefProveedor : int
- codProducto : int - codProducto : int - emailProveedor : String
DETALLE-VENTA - nombre : String - codProveedor : int - formulaProveedor : Float
- codProducto : int - modelo : String - precio : Float 1..* - factorProveedor : Float
- codVenta : int 1..* - cantidad : int 1..1 + proveedor () : void
+ detalleProdProv () : void
- unidades : int 1..1 - precioCosto : Float 1..1 + ingresar () : void
+ ingresar () : void
- precioVenta : Float - stock : int 1..* + consultar () : void
+ modificar () : void
- margen : Float + modificar () : void
+ detalle () : void + consultar () : void
+ producto () : void
+ ingresar () : void 1..1
1..*
+ modificar () : void
+ consultar () : void

1..1
DETALLE-PEDIDO
- codProducto : int
1..*
- codPedido : int
- unidades : int
1..*
1..1 - total : Float
- precio : Float

VENTA + detallePedido () : void

- codVenta : int
- subTotal : Float 1..*
- IGV : Float
- fecha : Date
+ venta () : void
+ ingresar () : void 1..1
+ consultar () : void
PEDIDO
- codPedido : int
- fecha : Date
- total : Float
+ pedido () : void
+ ingresar () : void
+ consultar () : void
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CAPITULO IV. INTERFACES


ÁRBOL DE INTERFACES

Sistema
Ferretería

Catálogo de
Seguridad Registro Consulta Operacional Ventas Compra
Productos

Orden de Detalle
Perfiles Cliente Cliente Ventas Cotizar
Compra Productos

Orden de Configurar
Proveedor Proveedor Compra Entrega
Entrega Productos

51
INTERFACES
2.1. Seguridad
2.1.1. Perfiles
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.2. Registro
2.2.1. Cliente

53
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.2.2. Proveedor

2.3. Consulta
2.3.1. Cliente

54
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.3.2. Proveedor

2.4. Operacional
2.4.1. Ventas
Cotizar

55
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Orden de Entrega

2.4.2. Compra
Orden de Compra

56
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Entrega

2.5. Catálogo de Productos


2.5.1. Detalle Productos

57
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.5.2. Configurar Productos

CÓDIGO FUENTE
3.1. Main
package pe.edu.uni.fiis.hardware;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class App extends Application {


public static Stage ventPrinc;
@Override
public void start(Stage primaryStage) throws Exception {
ventPrinc=primaryStage;

Parent root =
FXMLLoader.load(getClass().getClassLoader().getResource("filesfxml/Pro
ductos/Registro.fxml"));
ventPrinc.setTitle("HardWare Store 1.0");
ventPrinc.setScene(new Scene(root, 640, 480));
ventPrinc.setResizable(false);
ventPrinc.show();

ventPrinc.setFullScreen(true);
}

58
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

public static void main(String[] args) {


launch(args);
}

3.2. Controller
package pe.edu.uni.fiis.hardware;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Controller {


@FXML FXMLLoader fxmlLoader;
@FXML Parent root;
String anterior ="";

public void Change(String s){


try{
fxmlLoader = new
FXMLLoader(getClass().getClassLoader().getResource("filesfxml/"+s+".fx
ml"));
root = (Parent) fxmlLoader.load();
/*còmo poner el nuevo fxml en la misma ventana*/
Stage stage = App.ventPrinc;
stage.setTitle("UnIris 1.0");
stage.setScene(new Scene(root));
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

public void handleSubmitCliBtnBack(ActionEvent actionEvent) {


Change(anterior);
}

public void handleSubmitCliBtnSearch(ActionEvent actionEvent) {


Change("Buscar");
}

public void handleSubmitCliBtnNew(ActionEvent actionEvent) {


Change("Clientes/Registro");
}

public void handleSubmitCliBtnDelete(ActionEvent actionEvent) {


}

public void handleSubmitCliBtnUpdate(ActionEvent actionEvent) {


}

public void handleSubmitCliBtnSave(ActionEvent actionEvent) {


}

59
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

public void handleSubmitProvBtnUpdate(ActionEvent actionEvent) {


}

public void handleSubmitProvBtnDelete(ActionEvent actionEvent) {


}

public void handleSubmitProvBtnSearch(ActionEvent actionEvent) {


}

public void handleSubmitProvBtnNew(ActionEvent actionEvent) {


}

public void handleSubmitProvBtnBack(ActionEvent actionEvent) {


}

public void handleSubmitProvBtnSave(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnUpdate(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnDelete(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnNew(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnBack(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnSearch(ActionEvent actionEvent) {


}

public void handleSubmitProdBtnSave(ActionEvent actionEvent) {


}

public void handleSubmitQuoteBtnNew(ActionEvent actionEvent) {


}

public void handleSubmitQuoteBtnlist(ActionEvent actionEvent) {


}

public void handleSubmitSalesBtnBack(ActionEvent actionEvent) {


}

public void handleSubmitPurchBtnNew(ActionEvent actionEvent) {


}

public void handleSubmitPurchOrderBtnlist(ActionEvent actionEvent)


{
}

public void handleSubmitPurchBtnBack(ActionEvent actionEvent) {


}

public void handleSubmitPurchDelBtnNew(ActionEvent actionEvent) {


}

public void handleSubmitPurchDelivBtnlist(ActionEvent actionEvent)


{
}

60
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

public void handleSubmitPurchDelivBtnBack(ActionEvent actionEvent)


{
}
}

3.3. FXML
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<?import java.net.URL?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.text.Text?>
<GridPane alignment="TOP_CENTER" hgap = "10" vgap= "10"
xmlns="http://javafx.com/javafx/8.0.112"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="pe.edu.uni.fiis.hardware.Controller" styleClass="root">
<stylesheets>
<URL value="@../../SteelSheet/Ventas/Ventas.css" />
</stylesheets>
<padding><Insets top="25" right="25" bottom="10"
left="25"/></padding>

<TabPane prefWidth="1200" tabClosingPolicy="UNAVAILABLE"


fx:id="tabPane" GridPane.rowIndex="0" GridPane.columnSpan="10">
<Tab text="Orden de Pedido">
<GridPane alignment = "center" hgap = "10" vgap= "10">
<VBox spacing="10">
<Text id="selecProv" text="Seleccionar Proveedor"
GridPane.columnIndex="1"
GridPane.rowIndex="1"
GridPane.columnSpan="2"/>
<ScrollPane GridPane.columnIndex="1"
GridPane.rowIndex="2" >
<TableView fx:id="detalleProvPurchOrder"
GridPane.columnIndex="0" GridPane.rowIndex="2">
<columns>
<TableColumn text="Codigo">
</TableColumn>
<TableColumn text="RUC">
</TableColumn>
<TableColumn text="Nombre Empresa">
</TableColumn>
<TableColumn text="Estado">
</TableColumn>
<TableColumn text="Monto Total
Comprado">
</TableColumn>
<TableColumn text="Fecha Registro">
</TableColumn>
<TableColumn text="Fecha Ultima
Compra">
</TableColumn>

61
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

</columns>
</TableView>
</ScrollPane>

<HBox spacing="20" alignment="bottom_center"


GridPane.columnIndex="1"
GridPane.rowIndex="5">
<Button id="newPurchOrder" text="Crear Orden
de Compra"
onAction="#handleSubmitPurchBtnNew"
GridPane.columnIndex="3"
GridPane.rowIndex="5"/>
<Button id="searchProv" text="Buscar"
onAction="#handleSubmitProvBtnSearch"
GridPane.columnIndex="6"
GridPane.rowIndex="5"/>
<Button id="listPurchOrder" text="Consultar
Órdenes de Compra"

onAction="#handleSubmitPurchOrderBtnlist"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
<Button id="newProv" text="Nuevo Proveedor"
onAction="#handleSubmitProvBtnNew"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
<Button id="backPurch" text="Volver"
onAction="#handleSubmitPurchBtnBack"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
</HBox>
</VBox>
</GridPane>
</Tab>
<Tab text="Orden de Entrega">
<GridPane alignment = "center" hgap = "10" vgap= "10">
<VBox spacing="10">
<Text id="selecProv" text="Seleccionar Proveedor"
GridPane.columnIndex="1"
GridPane.rowIndex="1"
GridPane.columnSpan="2"/>
<ScrollPane GridPane.columnIndex="1"
GridPane.rowIndex="2" >
<TableView fx:id="detalleProvPurchDeliv"
GridPane.columnIndex="0" GridPane.rowIndex="2">
<columns>
<TableColumn text="Codigo">
</TableColumn>
<TableColumn text="RUC">
</TableColumn>
<TableColumn text="Nombre Empresa">
</TableColumn>
<TableColumn text="Estado">
</TableColumn>
<TableColumn text="Monto Total
Comprado">
</TableColumn>
<TableColumn text="Fecha Registro">
</TableColumn>
<TableColumn text="Fecha Ultima
Compra">

62
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

</TableColumn>
</columns>
</TableView>
</ScrollPane>

<HBox spacing="20" alignment="bottom_center"


GridPane.columnIndex="1"
GridPane.rowIndex="5">
<Button id="newPurchDel" text="Crear Orden de
Entrega"
onAction="#handleSubmitPurchDelBtnNew"
GridPane.columnIndex="3"
GridPane.rowIndex="5"/>
<Button id="searchProv" text="Buscar"
onAction="#handleSubmitProvBtnSearch"
GridPane.columnIndex="6"
GridPane.rowIndex="5"/>
<Button id="listPurchDeliv" text="Consultar
Compras a Entregar"

onAction="#handleSubmitPurchDelivBtnlist"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
<Button id="newProv" text="Nuevo Proveedor"
onAction="#handleSubmitProvBtnNew"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
<Button id="backPurchDeliv" text="Volver"

onAction="#handleSubmitPurchDelivBtnBack"
GridPane.columnIndex="9"
GridPane.rowIndex="5"/>
</HBox>
</VBox>
</GridPane>

</Tab>
</TabPane>

</GridPane>

63
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CAPITULO V. IMPLEMENTACIÓN
OBJETIVO
Implementar un sistema que permita a la empresa:

 Manejar un catálogo de productos.


 Manejar y administrar la lista de clientes.
 Manejar y administrar la lista de Proveedores.

INTERFACES.

64
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

65
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

66
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CODIGO
3.1. Base de Datos.
CREATE DATABASE FERRETERIA
GO

USE FERRETERIA
GO

CREATE TABLE CLIENTE(


codCliente INT PRIMARY KEY NOT NULL,
tipoDto INT NOT NULL,
nroDto VARCHAR(11) NOT NULL,
nomCliente VARCHAR(40) NOT NULL,
nomEmpresa VARCHAR(40) NOT NULL,
direccionEmpresa VARCHAR(60) NOT NULL,
Provincia VARCHAR(15) NOT NULL,
Departamento VARCHAR(15) NOT NULL,
CodigoZIP VARCHAR(10) NOT NULL,
Pais VARCHAR(10) NOT NULL,
estado VARCHAR(20) NOT NULL,
numTelef VARCHAR(11) NOT NULL,
email VARCHAR(40) NOT NULL,
fechaReg DATE NOT NULL,
obs VARCHAR(60) NULL
)

CREATE TABLE PEDIDO(


codPedido INT PRIMARY KEY NOT NULL,
fecha DATE NOT NULL,
total MONEY NOT NULL
)

CREATE TABLE VENTA(


codVenta INT PRIMARY KEY NOT NULL,
subTotal MONEY NOT NULL,
IGV MONEY NOT NULL,
fecha DATE NOT NULL
)

CREATE TABLE PROVEEDOR(


codProveedor INT PRIMARY KEY NOT NULL,
nomProveedor VARCHAR(40) NOT NULL,
rucProveedor VARCHAR(11) NOT NULL,
direccionProveedor VARCHAR(50) NOT NULL,
Provincia VARCHAR(15) NOT NULL,
Departamento VARCHAR(15) NOT NULL,
CodigoZIP VARCHAR(10) NOT NULL,
Pais VARCHAR(10) NOT NULL,
telefProveedor VARCHAR(9) NOT NULL,
emailProveedor VARCHAR(30) NOT NULL,
fechaReg DATE NOT NULL
)

CREATE TABLE PRODUCTO(


codProducto INT PRIMARY KEY NOT NULL,
codProveedor INT NOT NULL FOREIGN KEY REFERENCES PROVEEDOR(codProveedor),
tipo VARCHAR(20) NOT NULL,
marca VARCHAR(20) NOT NULL,
nombre VARCHAR(40) NOT NULL,
unidadMedida VARCHAR(20) NOT NULL,
modelo VARCHAR(20) NOT NULL,

67
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

cantidad INT NOT NULL,


precioCosto MONEY NOT NULL,
stock INT NOT NULL,
precioVenta MONEY NOT NULL,
descripcion VARCHAR(40) NULL
)

CREATE TABLE COMPRA(


codCompra INT PRIMARY KEY NOT NULL,
codProveedor INT NOT NULL FOREIGN KEY REFERENCES PROVEEDOR(codProveedor),
numDocumento INT NOT NULL,
subTotal MONEY NOT NULL,
IGV MONEY NOT NULL,
fecha DATE
)

CREATE TABLE DETALLE_VENTA(


codProducto INT NOT NULL FOREIGN KEY REFERENCES
PRODUCTO(codProducto),
codVenta INT NOT NULL FOREIGN KEY REFERENCES VENTA(codVenta),
unidades INT NOT NULL,
precioVenta MONEY
)

CREATE TABLE DETALLE_COMPRA(


codProducto INT NOT NULL FOREIGN KEY REFERENCES
PRODUCTO(codProducto),
codCompra INT NOT NULL FOREIGN KEY REFERENCES COMPRA(codCompra),
unidades INT NOT NULL,
precioCosto MONEY NOT NULL
)

CREATE TABLE DETALLE_PROD_PROV(


codProducto INT NOT NULL FOREIGN KEY REFERENCES
PRODUCTO(codProducto),
codProveedor INT NOT NULL FOREIGN KEY REFERENCES PROVEEDOR(codProveedor),
precio MONEY
)

CREATE TABLE DETALLE_PEDIDO(


codProducto INT NOT NULL FOREIGN KEY REFERENCES
PRODUCTO(codProducto),
codPedido INT NOT NULL FOREIGN KEY REFERENCES PEDIDO(codPedido),
unidades INT NOT NULL,
total MONEY NOT NULL,
precio MONEY NOT NULL
)

INSERT INTO PROVEEDOR VALUES


(1,'PROVEEDOR1','RUC1','DIRECCION1','PROVINCIA1','DEPART1','LIMA','PERU','TELEF1'
,'EMAIL1','2015/05/05')
SELECT*FROM PROVEEDOR

INSERT INTO PRODUCTO VALUES


(1,1,'TIPO1','MARCA1','PRODUCTO1','ONZAS','MODELO1',10,20.00,8,25.00,'DESCRIPCION
1')
SELECT*FROM PRODUCTO

INSERT INTO CLIENTE


VALUES(1,1,'10203040','CLIENTE1','EMPRESA1','DIRECCIONEMP1','PROVINCIA1','DEPART1
','LIMA','PERU','ACTIVO','987654321','EMAIL1@EMAIL.COM','2010/05/05','OBS1')
SELECT*FROM CLIENTE

68
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

INSERT INTO PEDIDO VALUES (1,'1992/05/05',20.00)


SELECT*FROM PEDIDO

DELETE FROM PEDIDO WHERE codPedido=2

INSERT INTO VENTA VALUES (1,45.00,12.00,'1992/05/05')


SELECT*FROM VENTA
DELETE FROM VENTA WHERE codVenta=2

INSERT INTO COMPRA VALUES (1,1,123,124.00,15.00,'1992/05/05')


SELECT*FROM COMPRA

3.2. Controller.
@FXML private TableView<cliente> detalleCli = new
TableView<cliente>();
@FXML private TableColumn<cliente, Integer> codCliente = new
TableColumn<cliente, Integer>();
@FXML private TableColumn<cliente, Integer> tipoDto = new
TableColumn<cliente, Integer>();;
@FXML private TableColumn<cliente, String> nroDto = new
TableColumn<cliente, String>();
@FXML private TableColumn<cliente, String> nomCliente = new
TableColumn<cliente, String>();
@FXML private TableColumn<cliente, String> estado = new
TableColumn<cliente, String>();
@FXML private TableColumn<cliente, String> fechaReg = new
TableColumn<cliente, String>();
@FXML private TextField codCli = new TextField();
@FXML private TextField nameCli = new TextField();
@FXML private TextField company = new TextField();
@FXML private TextField direccCli = new TextField();
@FXML private TextField provCli = new TextField();
@FXML private TextField departCli = new TextField();
@FXML private TextField zipCodeCli = new TextField();
@FXML private TextField countryCli = new TextField();
@FXML private TextField emailCli = new TextField();
@FXML private TextField nroCelCli = new TextField();
@FXML private TextArea observCli = new TextArea();
ObservableList<cliente> clients;
private void showClientDetails(String code) {
cnxCliente cnxcliente = new cnxCliente();
cliente busca = cnxcliente.buscarCliente(code);
if (busca != null) {
// Fill the labels with info from the person object.
codCli.setText(String.valueOf(busca.getCodCliente()));
nameCli.setText(busca.getNomCliente());
company.setText("Apple");
direccCli.setText("Calle Las Brisas Mz. H Lt.25");
provCli.setText("San Miguel");
departCli.setText("Lima");
zipCodeCli.setText("Lima 32");
emailCli.setText("jdz@gmail.com");
nroCelCli.setText("986250147");
countryCli.setText("Perú");
observCli.setText("Pues consume nivel medio. Saludos.");

69
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

// TODO: We need a way to convert the birthday into a String!


// birthdayLabel.setText(...);
} else {
// Person is null, remove all the text.
codCli.setText("");
nameCli.setText("");
company.setText("");
direccCli.setText("");
provCli.setText("");
departCli.setText("");
zipCodeCli.setText("");
emailCli.setText("");
nroCelCli.setText("");
countryCli.setText("");
observCli.setText("");
}
}
@FXML
void initialize(){
assert detalleCli != null : "fx:id=\"detalleCli\" was not
injected: check your FXML file 'Consulta.fxml'.";
codCliente.setCellValueFactory(
new PropertyValueFactory<cliente,
Integer>("codCliente"));
tipoDto.setCellValueFactory(
new PropertyValueFactory<cliente,
Integer>("tipoDto"));
nroDto.setCellValueFactory(
new PropertyValueFactory<cliente, String>("nroDto"));
nomCliente.setCellValueFactory(
new PropertyValueFactory<cliente,
String>("nomCliente"));
estado.setCellValueFactory(
new PropertyValueFactory<cliente, String>("estado"));
fechaReg.setCellValueFactory(
new PropertyValueFactory<cliente,
String>("fechaReg"));

clients = FXCollections.observableArrayList();
cnxCliente cnxcliente = new cnxCliente();
clients = cnxcliente.lecturaCliente();
detalleCli.setItems(clients);

showClientDetails("0");

detalleCli.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) ->
showClientDetails(String.valueOf(newValue.getCodCliente())));
/**************************************************/
assert detalleProd != null : "fx:id=\"detalleProd\" was not
injected: check your FXML file 'Consulta.fxml'.";
codProducto.setCellValueFactory(
new PropertyValueFactory<producto,
Integer>("codProducto"));
tipoProducto.setCellValueFactory(
new PropertyValueFactory<producto,
String>("tipoProducto"));
marca.setCellValueFactory(
new PropertyValueFactory<producto, String>("marca"));

70
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

modelo.setCellValueFactory(
new PropertyValueFactory<producto, String>("modelo"));
unidadMedida.setCellValueFactory(
new PropertyValueFactory<producto,
String>("unidadMedida"));
stock.setCellValueFactory(
new PropertyValueFactory<producto, String>("stock"));
previoVenta.setCellValueFactory(
new PropertyValueFactory<producto,
String>("precioVenta"));

products = FXCollections.observableArrayList();
cnxProducto cnxproducto = new cnxProducto();
products = cnxproducto.lecturaProducto();
detalleProd.setItems(products);
showProdDetails("0");

detalleProd.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) ->
showProdDetails(String.valueOf(newValue.getCodProducto())));

3.3. Conexión.
3.3.1. Cliente.
package conexion;

import dto.clases.cliente;

import dto.clases.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import java.sql.*;

public class cnxCliente {

ObservableList<cliente> clientes =
FXCollections.observableArrayList();

public cnxCliente(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

Connection conn =
DriverManager.getConnection(url,user,psw);
System.out.println("Conexión establecida");
conn.close();
} catch (Exception e) {
System.err.println("Error al conectar");
System.err.println(e.getMessage());
}

71
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

public cliente buscarCliente(String codigo){


cliente aux = new cliente(0,0,"","","","");
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user = "sa";
String psw = "1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query = "SELECT * FROM CLIENTE where


codCliente="+codigo;

Connection conn = DriverManager.getConnection(url, user,


psw);
Statement statement = conn.createStatement();

ResultSet resultSet;
resultSet = statement.executeQuery(query);
resultSet.next();
int codcliente =resultSet.getInt(1);
int tipo =resultSet.getInt(2);
String nro = resultSet.getString(3);
String nombre = resultSet.getString(4);
String estado = resultSet.getString(5);
String fecha = resultSet.getString(6);
aux=new cliente(codcliente,tipo,nro,nombre,estado,fecha);
conn.close();
} catch (Exception e) {
System.err.println("Error al leer");
System.err.println(e.getMessage());
return null;
}
return aux;
}

public ObservableList<cliente> lecturaCliente(){


try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query ="SELECT * FROM dbo.CLIENTE";

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
ResultSet resultSet;
//lectura
resultSet = statement.executeQuery(query);
while(resultSet.next()) {
int codcliente =resultSet.getInt(1);
int tipo =resultSet.getInt(2);
String nro = resultSet.getString(3);
String nombre = resultSet.getString(4);
String estado = resultSet.getString(5);

72
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

String fecha = resultSet.getString(6);


cliente aux=new
cliente(codcliente,tipo,nro,nombre,estado,fecha);
clientes.add(aux);
}
conn.close();
} catch (Exception e) {
System.err.println("Error al leer");
System.err.println(e.getMessage());
}
return clientes;
}
public void insertarCliente(cliente aux){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query = "INSERT INTO CLIENTE


VALUES("+aux.getCodCliente()+","+aux.getTipoDto()

+","+aux.getNroDto()+",'"+aux.getNomCliente()+"','"+aux.getEstado()
+"','"+aux.getFechaReg()+"')";

Connection conn =
DriverManager.getConnection(url,user,psw);
//inserta
Statement statement = conn.createStatement();
int x = statement.executeUpdate(query);
System.out.println("Filas afectadas "+x);
conn.close();
} catch (Exception e) {
System.err.println("Error al insertar");
System.err.println(e.getMessage());
}
}
public void eliminarCliente(int delete){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query="DELETE FROM CLIENTE WHERE codCliente


="+delete;

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
//elimina
statement.executeUpdate(query);
conn.close();
} catch (Exception e) {
System.err.println("Error al eliminar");
System.err.println(e.getMessage());
}

73
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

}
}

3.3.2. Producto.
package conexion;

import dto.clases.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import java.sql.*;

public class cnxProducto {

ObservableList<producto> productos =
FXCollections.observableArrayList();

public cnxProducto(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

Connection conn =
DriverManager.getConnection(url,user,psw);
System.out.println("Conexión establecida");
conn.close();
} catch (Exception e) {
System.err.println("Error al conectar");
System.err.println(e.getMessage());
}
}
public producto buscarProducto(String codigo){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user = "sa";
String psw = "1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query = "SELECT * FROM PRODUCTO where


codProducto="+codigo;

Connection conn = DriverManager.getConnection(url, user,


psw);
Statement statement = conn.createStatement();

ResultSet resultSet;
resultSet = statement.executeQuery(query);
resultSet.next();
int codproducto =resultSet.getInt(1);
String tipo = resultSet.getString(2);
String marca = resultSet.getString(3);
String name = resultSet.getString(4);
String und = resultSet.getString(5);

74
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

String model = resultSet.getString(6);


int cant= resultSet.getInt(7);
float preciocosto = resultSet.getFloat(8);
int stocks = resultSet.getInt(9);
float margens = resultSet.getFloat(10);
producto aux=new producto(codproducto,tipo,marca,name,und
,model,cant,preciocosto,stocks,margens);
conn.close();
return aux;
} catch (Exception e) {
System.err.println("Error al leer");
System.err.println(e.getMessage());
return null;
}
}
public ObservableList<producto> lecturaProducto(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query ="SELECT * FROM dbo.PRODUCTO";

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
ResultSet resultSet;
//lectura
resultSet = statement.executeQuery(query);
while(resultSet.next()) {
int codproducto =resultSet.getInt(1);
String tipo = resultSet.getString(2);
String marca = resultSet.getString(3);
String name = resultSet.getString(4);
String und = resultSet.getString(5);
String model = resultSet.getString(6);
int cant= resultSet.getInt(7);
float preciocosto = resultSet.getFloat(8);
int stocks = resultSet.getInt(9);
float margens = resultSet.getFloat(10);
producto aux=new
producto(codproducto,tipo,marca,name,und
,model,cant,preciocosto,stocks,margens);
productos.add(aux);
}
conn.close();
} catch (Exception e) {
System.err.println("Error al leer");
System.err.println(e.getMessage());
}
return productos;
}
public void insertarProducto(producto aux){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";

75
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query = "INSERT INTO PRODUCTO VALUES


("+aux.getCodProducto()+",'"+aux.getTipoProducto()

+"','"+aux.getMarca()+"','"+aux.getNombre()+"','"+aux.getUnidadMedida(
)+"','"

+aux.getModelo()+"',"+aux.getCantidad()+","+aux.getPrecioCosto()+","
+aux.getStock()+","+aux.getMargen()+")";

Connection conn =
DriverManager.getConnection(url,user,psw);
//inserta
Statement statement = conn.createStatement();
int x = statement.executeUpdate(query);
System.out.println("Filas afectadas "+x);
conn.close();
} catch (Exception e) {
System.err.println("Error al insertar");
System.err.println(e.getMessage());
}
}
public void eliminarProducto(int delete){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query="DELETE FROM PRODUCTO WHERE codProducto


="+delete;

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
//elimina
statement.executeUpdate(query);
conn.close();
} catch (Exception e) {
System.err.println("Error al eliminar");
System.err.println(e.getMessage());
}
}

3.3.3. Proveedor.
package conexion;

import dto.clases.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import java.sql.*;

76
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

public class cnxProveedor {


ObservableList<proveedor> proveedors =
FXCollections.observableArrayList();

public ObservableList<proveedor> getProveedores() {


return proveedors;
}

public cnxProveedor(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

Connection conn =
DriverManager.getConnection(url,user,psw);
System.out.println("Conexión establecida");
conn.close();
} catch (Exception e) {
System.err.println("Error al conectar");
System.err.println(e.getMessage());
}
}
public ObservableList<proveedor> lecturaProveedor(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query ="SELECT * FROM dbo.PROVEEDOR";

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
ResultSet resultSet;
//lectura
resultSet = statement.executeQuery(query);
while(resultSet.next()) {
int codproveedor=resultSet.getInt(1);
String name = resultSet.getString(2);
String ruc = resultSet.getString(3);
String direccion = resultSet.getString(4);
String ciudad = resultSet.getString(5);
String telef = resultSet.getString(6);
String email = resultSet.getString(7);
float formula = resultSet.getFloat(8);
float factor = resultSet.getFloat(9);
String fechas=resultSet.getString(10);
proveedor aux=new
proveedor(codproveedor,name,ruc,direccion,ciudad,telef
,email,formula,factor,fechas);
proveedors.add(aux);
}
conn.close();
} catch (Exception e) {

77
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

System.err.println("Error al leer");
System.err.println(e.getMessage());
}
return proveedors;
}
public void insertarProveedor(proveedor aux){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query = "INSERT INTO PROVEEDOR VALUES


("+aux.getCodProveedor()+",'"+aux.getNomProveedor()

+"','"+aux.getRucProveedor()+"','"+aux.getDireccionProveedor()+"','"+a
ux.getCiudadProveedor()

+"','"+aux.getTelefProveedor()+"','"+aux.getEmailProveedor()+"',"+aux.
getFormulaProveedor()

+","+aux.getFactorProveedor()+",'"+aux.getFechaReg()+"')";

Connection conn =
DriverManager.getConnection(url,user,psw);
//inserta
Statement statement = conn.createStatement();
int x = statement.executeUpdate(query);
System.out.println("Filas afectadas "+x);
conn.close();
} catch (Exception e) {
System.err.println("Error al insertar");
System.err.println(e.getMessage());
}
}
public void eliminarProveedor(int delete){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String user ="sa";
String psw="1234";
String url =
"jdbc:sqlserver://localhost:1433;databaseName=FERRETERIA";

String query="DELETE FROM PROVEEDOR WHERE codProveedor


="+delete;

Connection conn =
DriverManager.getConnection(url,user,psw);
Statement statement = conn.createStatement();
//elimina
statement.executeUpdate(query);
conn.close();
} catch (Exception e) {
System.err.println("Error al eliminar");
System.err.println(e.getMessage());
}
}
}

78
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

3.4. Vista Enlazadas.


3.4.1. Clientes.
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.*?>

<?import java.net.*?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.text.Text?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import javafx.collections.FXCollections?>

<GridPane alignment = "center" hgap = "10" vgap= "10"


xmlns="http://javafx.com/javafx/8.0.112"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="pe.edu.uni.fiis.hardware.Controller" styleClass="root">
<stylesheets>
<URL value="@../../SteelSheet/Clientes/Consulta.css" />
</stylesheets>
<padding><Insets top="25" right="25" bottom="10"
left="25"/></padding>

<VBox spacing="15">
<Text id="consultaCli" text="Consulta de Clientes"
GridPane.columnIndex="1" GridPane.rowIndex="0"
GridPane.columnSpan="2"/>

<HBox spacing="185">
<Label id="detalleCliente" text="Lista de Clientes"
GridPane.columnIndex="1" GridPane.rowIndex="1"
GridPane.columnSpan="2"/>
<VBox></VBox>
<VBox></VBox>
<Label id="crearCliente" text="Detalle Cliente"
GridPane.columnIndex="8" GridPane.rowIndex="1"
GridPane.columnSpan="2"/>
</HBox>
<HBox spacing="20">
<VBox spacing="10">
<ScrollPane GridPane.columnIndex="1"
GridPane.rowIndex="2" >
<TableView fx:id="detalleCli"
GridPane.columnIndex="0" GridPane.rowIndex="2">
<columns>
<TableColumn text="Codigo"
fx:id="codCliente">
</TableColumn>
<TableColumn text="Tipo Docmto."
fx:id="tipoDto">
</TableColumn>

79
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

<TableColumn text="Nro. Docmto."


fx:id="nroDto">
</TableColumn>
<TableColumn text="Nombre/Razón Social"
fx:id="nomCliente">
</TableColumn>
<TableColumn text="Estado" fx:id="estado">
</TableColumn>
<TableColumn text="Fecha Registro"
fx:id="fechaReg">
</TableColumn>
</columns>
</TableView>
</ScrollPane>
</VBox>

<VBox spacing="10">
<HBox spacing="20" GridPane.columnIndex="1"
GridPane.rowIndex="4">
<VBox spacing="10">
<HBox spacing="24">
<VBox spacing="10">
<Label text="Código de Cliente:"/>
<TextField fx:id="codCli" text=""/>
</VBox>
<VBox spacing="10">
<Label text="Nombre del Cliente:"/>
<TextField fx:id="nameCli" text=""
prefWidth="320"/>
</VBox>
</HBox>
<HBox spacing="20" GridPane.columnIndex="1"
GridPane.rowIndex="6" GridPane.columnSpan="10">
<GridPane alignment="CENTER" hgap = "10"
vgap= "10" >
<Label text="Compañía / Empresa:"
GridPane.halignment="LEFT"
GridPane.columnIndex="0"
GridPane.rowIndex="1"/>
<TextField fx:id="company" text=""
GridPane.halignment="RIGHT" prefWidth="320"
GridPane.columnIndex="6"
GridPane.rowIndex="1"/>
</GridPane>
</HBox>
<HBox spacing="20" GridPane.columnIndex="1"
GridPane.rowIndex="7" GridPane.columnSpan="10">
<GridPane alignment="center" hgap = "10"
vgap= "10">
<Label text="Dirección de Envío: "
GridPane.halignment="LEFT"
GridPane.columnIndex="0"
GridPane.rowIndex="1"/>
<TextField fx:id="direccCli" text=""
GridPane.halignment="RIGHT" prefWidth="320"
GridPane.columnIndex="6"
GridPane.rowIndex="1"/>
</GridPane>
</HBox>
</VBox>
<VBox spacing="10">

80
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

<Label text="Foto del Cliente:"/>


<ImageView fx:id="imgCli" fitHeight="112.5"
fitWidth="150">
<image>
<Image url="@../../Images/user.jpeg"/>
</image>
</ImageView>
</VBox>
</HBox>

<HBox spacing="20" GridPane.columnIndex="1"


GridPane.rowIndex="8">
<VBox spacing="10">
<Label text="Provincia:"
GridPane.columnIndex="1"
GridPane.rowIndex="7"/>
<TextField fx:id="provCli" text=""
GridPane.columnIndex="1"
GridPane.rowIndex="8"/>
</VBox>
<VBox spacing="10">
<Label text="Departamento:"
GridPane.columnIndex="4"
GridPane.rowIndex="7"/>
<TextField fx:id="departCli" text=""
GridPane.columnSpan="1"
GridPane.columnIndex="4"
GridPane.rowIndex="8"/>
</VBox>
<VBox spacing="10">
<Label text="Código ZIP:"
GridPane.columnIndex="7"
GridPane.rowIndex="7"/>
<TextField fx:id="zipCodeCli" text=""
GridPane.columnSpan="1"
GridPane.columnIndex="7"
GridPane.rowIndex="8"/>
</VBox>
<VBox spacing="10">
<Label text="País:"
GridPane.columnIndex="10"
GridPane.rowIndex="7"/>
<TextField fx:id="countryCli" text=""
GridPane.columnSpan="1"
GridPane.columnIndex="10"
GridPane.rowIndex="8"/>
</VBox>
</HBox>
<HBox spacing="20" GridPane.columnIndex="1"
GridPane.rowIndex="9">
<VBox spacing="10">
<Label text="Email:"/>
<TextField fx:id="emailCli" text=""
GridPane.columnSpan="4" prefWidth="320"
GridPane.columnIndex="1"
GridPane.rowIndex="10"/>
</VBox>
<VBox spacing="10">
<Label text="Nro. de Celular:"
GridPane.columnIndex="7"
GridPane.rowIndex="9"/>

81
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

<TextField fx:id="nroCelCli" text=""


GridPane.columnSpan="4" prefWidth="320"
GridPane.columnIndex="7"
GridPane.rowIndex="10"/>
</VBox>
</HBox>

<HBox spacing="20" GridPane.columnIndex="1"


GridPane.rowIndex="12">
<Label text="Observaciones:"/>
<TextArea fx:id="observCli" text=""
prefWidth="320" prefHeight="100"
GridPane.columnSpan="4"/>
</HBox>

<HBox spacing="20" alignment="bottom_center"


GridPane.columnIndex="1" GridPane.rowIndex="13">
<Button id="newCli" text="Modificar"
onAction="#handleSubmitCliBtnUpdate"
GridPane.columnIndex="4"
GridPane.rowIndex="13"/>
<Button id="newCli" text="Dar de Baja"
onAction="#handleSubmitCliBtnDelete"
GridPane.columnIndex="7"
GridPane.rowIndex="13"/>
</HBox>
</VBox>
</HBox>
<HBox spacing="20" alignment="bottom_center"
GridPane.columnIndex="1" GridPane.rowIndex="5">
<Button id="newCli" text="Agregar"
onAction="#handleSubmitCliBtnNew"
GridPane.columnIndex="3" GridPane.rowIndex="5"/>
<Button id="searchCli" text="Buscar"
onAction="#handleSubmitCliBtnSearch"
GridPane.columnIndex="6" GridPane.rowIndex="5"/>
<Button id="backCli" text="Volver"
onAction="#handleSubmitCliBtnBack"
GridPane.columnIndex="9" GridPane.rowIndex="5"/>
</HBox>
</VBox>

</GridPane>

82
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

ESTRUCTURA DEL PROYECTO.

83
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

4.1. Clases.

84
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CAPITULO VI. MANUAL


MANUAL DE CONFIGURACIÓN
1.1. Instalar SQL Server 2014 Management Studio.

Paso 1:

Primero que nada usted necesita descargar los archivos de instalación de SQL Server
Management Studio (SQLManagementStudio_x64_ENU.exe /
SQLManagementStudio_x86_ENU.exe) desde la página de descargas de SQL
Server dependiendo del tipo de su servidor (x64, x86), y mantenerlos en una carpeta
separada.

85
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 2:

Una vez que ha descargado el archivo respectivo para su tipo de servidor, usted
necesita ejecutarlo. Eso lo llevará a la primera pantalla llamada SQL Server Installation
Center, como se muestra a continuación. Esta es la pantalla primaria de instalación de
SQL Server. Otras instalaciones de herramientas de SQL Server pueden ser lanzadas
desde aquí también. Una vez que esté en esta pantalla, usted necesita seleccionar “New
SQL Server stand-alone installation or add features to an existing installation” para
proceder con la instalación.

86
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 3:

Una vez que seleccione la opción “New SQL Server stand-alone installation or add
features to an existing installation”, tal opción seleccionará las reglas de configuración
(pre-requisitos) en el servidor y lo llevará a la pantalla de términos de licencia. Los
términos de licencia deben ser leídos y aceptados como los términos de cualquier otra
aplicación. Por favor note que usted debe pasar las reglas de configuración para
proceder con la instalación.

Paso 4:

Una vez que acepta los términos de licencia, es tiempo de escanear todas las
actualizaciones disponibles para el producto. Las actualizaciones requeridas, el tamaño
y los detalles serán mostrados. De todas maneras, si usted necesita más detalles, usted
puede seleccionar More Information, lo cual lo llevará a la página de soporte, donde
usted encontrará todos los detalles relacionados a las actualizaciones. Usted puede
ignorar estas actualizaciones deseleccionando la opción ‘Include SQL Server product
updates’ en este punto.

Se recomienda descargar las actualizaciones junto con la instalación. Este paso puede
tomar algo de tiempo dependiendo del tamaño de los archivos actualizados.

87
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 5:

El siguiente paso es Install Setup Files, donde la configuración de SQL Server


Management Studio (SSMS) descargará e instalará todos los archivos de configuración
necesarios para su servidor.

88
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 6:

Una vez que la configuración de SQL Server Management Studio (SSMS) está termina
la instalación de los archivos de configuración, se verifican las reglas de soporte de
configuración para proceder. Luego lo envía a la pantalla de selección de características.
Esta es una pantalla exhaustiva que ha detallado información acerca de cada
característica. Cuando corremos la instalación de SQL Server Management Studio
(SSMS), se selecciona Management Tools por defecto, así que usted no necesita
seleccionar nada aquí. Adicionalmente usted puede seleccionar Management tolos –
Basic. Para obtener más información acerca de esta característica usted puede ver la
descripción detallada de la característica en el lado derecho.

Esta pantalla también le da la habilidad de seleccionar y deseleccionar todas las


características de una sola vez. Esto ahorra mucho tiempo cuando usted necesita
instalar múltiples características. También provee información detallada acerca de los
pre requisitos, las características seleccionadas, qué pre requisitos han sido ya
instalados y cuáles serán instalados a través de ésta instalación. Usted sólo necesita
hacer clic en el botón Next para continuar.

89
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 7:

En este paso, SQL Management Studio (SSMS) verificará las reglas de instalación (pre
requisito para SSMS). Sólo haga clic en el botón Next para continuar.

Paso 8:

En este paso la configuración de SQL Server Management Studio (SSMS) verificará el


espacio del disco. Por favor asegúrese de que tiene suficiente espacio de disco
disponible. No tener suficiente espacio de disco puede resultar en fallas en la instalación.
Haga clic en el botón Next para continuar.

90
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 9:

En este paso, usted tiene la oportunidad de decidir si mandar o no notificaciones de


error a Microsoft. Esto es altamente recomendado para ayudar a Microsoft a mejorar
futuros lanzamientos y para solucionar errores en el lanzamiento existente.

91
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 10:

Una vez que hace clic en el botón Next, se verificarán las reglas de configuración y si
pasaron, el asistente continuará. Este paso tomará tiempo para instalar SQL Server
Management Studio.

92
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 11:

Este paso muestra el estado de instalación de SQL Server Management Studio (SSMS)
junto con cada característica, como un resumen. Esta pantalla realmente ayuda a ver
qué ha sido instalado y qué no. En el caso de que una de las características no pueda
ser instalada, usted puede volver a correr el mismo procedimiento de instalación e
instalar esa característica particular.

93
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 12:

Para verificar si SQL Server Management


Studio (SSMS) se ha instalado exitosamente,
usted necesita seleccionar el menú de inicio
de su servidor y después seleccionar el menú
SQL Server 2012. Usted encontrará el enlace
a SQL Server Management Studio ahí.

94
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

1.1.1. Configurar usuario “SA”

Paso 1:

Iniciar SQL Server 2014 en modo Windows Autentication.

Paso 2:

- Ingresar a la ruta Security > Logins > sa


- Clic derecho sobre el usuario sa.

95
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

- Clic en Propiedades.

96
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 3:

Configurar las propiedades.

GENERAL:
- Ingresar como Password: “1234”.
- De la misma manera ingresar en Confirm Password el valor: “1234”.

97
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

STATUS:
- Seleccionar “ENABLED” en como opción de Login.
- Dar clic en OK.

98
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 4:

- Clic derecho sobre el primer ítem en la lista de “Object Explorer” (“ADMIN PC”
valor por defecto).
- Clic en Propiedades.

Paso 5:

- Ir a Security.
- Seleccionar “SQL Server and Windows Authentication mode” como opción en
“Server Authentication”.
- Clic en “OK”.

99
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 6:

- Clic derecho sobre el primer ítem en la lista de “Object Explorer” (“ADMIN PC”
valor por defecto).
- Clic en “Restart”.
- Clic en “Sí” en la nueva ventana que aparecerá.

100
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Paso 7:

- Cerrar el SQL y abrir nuevamente en modo SQL Server Authentication.

101
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

1.2. Instalar IntelliJ IDEA 2017.1

DESCARGA.

- Ingresar al siguiente link.


https://www.jetbrains.com/idea/download/index.html#section=windows

- Descargar la versión ULTIMATE siguiendo los pasos de la imagen.

- Ejecutar el ideaIU.exe archivo que ha descargado.


- Siga las instrucciones en el asistente de instalación.

102
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

INSTALACIÓN.

PASO 1:

- Siga las instrucciones en el asistente de instalación.


- Importar la configuración (en caso se tenga) sino escoger “Do not import settings”.

PASO 2:

Seleccione el tema de la interfaz de usuario.


- Luego, se le pedirá que seleccione el tema de UI. Puede elegir entre el tema claro
predeterminado y el esquema Drácula:

103
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

PASO 3:

Deshabilitar los complementos innecesarios.

104
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

PASO 4:

Descargue e instale complementos adicionales

1.2.1. Importar Proyecto

Descargar el proyecto.

En el navegador web ingresar a la siguiente dirección:

GitHub: https://github.com/gmgutierrez/Project

Descargar las 2 carpetas al ordenador.

105
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Comience un proyecto en IntelliJ IDEA


Clic en Open

Seleccionar la ruta donde se descargó el proyecto.

106
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Clic en OK
1.2.2. Configurar SDK

PASO 1:

Descargar java 1.8 del siguiente link e instalar.

https://www.java.com/es/download/

107
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

PASO 2:

Configurar SDK en IntelliJ IDEA

Ir a File > Project Structure

Entramos a la ventana siguiente:

Clic en el “+” de color verde.

Clic en JDK

108
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Seleccionar la ruta donde se encuentra el SDK de java.

(Ruta por defecto en la imagen).

109
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Ir a MODULE, en la misma ventana.

Ir a la pestaña DEPENDENCIES.

Seleccionar 1.8 (java versión…)

1.2.3. Importar librerías.

Librería SQL.

Ir a Libraries, en la misma ventana.

Clic en “+” y seleccionar Java.

110
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Seleccionar la ruta donde se encuentra la librería de SQL de java.

(Descargado junto con el proyecto).

1.2.4. Conectar con la base de datos.

DataBase Tool Window

Clic en DataBase.

111
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Clic en “+”

Ir a la ruta Data Source > SQL Server Microsoft

Configurar los campos como:

Host: localhost // Port: 1433

Database: FERRETERIA

User: sa // Password: 1234

Clic en OK.

112
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

MANUAL DE USUARIO
2.1. Menú principal

El gráfico nos muestra 3 opciones las cuales nos permite ingresar a Proveedores,
Productos y Clientes respectivamente en orden descendente.

2.2. Proveedores

Al hacer clic en proveedores, nos envía a la interfaz de consulta de proveedores


donde aparece un listado de todos los proveedores del sistema, con sus
respectivos productos.

113
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Se puede pasar a Consultar el proveedor al seleccionar un proveedor de la tabla


haciendo que aparezcan sus datos.

Se pasa a Registrar a un nuevo proveedor, dando clic en el botón Agregar.

114
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Se debe de registrar el número de RUC de la empresa a la cual está asociada el


proveedor, el nombre de la Compañía que es el nombre de la empresa que
proveerá a la ferretería de productos; la dirección del local que es la referencia
del lugar físico donde se encuentra ubicada la empresa; así como la provincia,
el departamento, el código ZIP y el país donde se encuentra ubicada la empresa
proveedora.

Además, se deberá de registrar el email de la empresa proveedora y el número


de celular asociada a la mima.

Finalmente se deberá de registrar la lista de productos que el Proveedor


ingresará en el sistema.

115
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.3. Productos.

Al hacer clic en productos, nos envía a la interfaz de consulta de productos donde


aparece un listado de todos los productos existentes en el sistema, con sus
respectivos campos.

Se puede pasar a Consultar el producto al seleccionar un producto de la tabla


haciendo que aparezcan sus datos.

Se pasa a Registrar a un nuevo producto, dando clic en el botón Agregar.

116
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Se debe de seleccionar el tipo de producto, el proveedor del nuevo producto, la


marca, el modelo.

Así mismo se debe de llenar los campos de Precio de Compra, Precio al cuál se
compró el producto; Precio de Venta, precio al cuál se venderá el producto;
Unidad de Medida en la que se ofertará el producto; y Stock del Producto, que
es la cantidad ingresada del producto en el sistema.

117
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

2.4. Clientes

Al hacer clic en clientes, nos envía a la interfaz de consulta de clientes donde


aparece un listado de todos los clientes existentes en el sistema, con sus
respectivos campos.

Se puede pasar a Consultar el cliente al seleccionar un cliente de la tabla


haciendo que aparezcan sus datos.

Se pasa a Registrar a un nuevo cliente, dando clic en el botón Agregar.

118
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

Se deberá de ingresar el nombre del Cliente, en nombre de la


Compañía/Empresa, en caso existiese un vínculo del nuevo cliente con alguna
empresa; la dirección de Envío, que es el lugar físico al que se enviarán los
productos solicitados a la ferretería, así como la Provincia, Departamento,
Código ZIP, y País asociado a la dirección

Además, se deberá de ingresar el email y el número de celular asociados al


nuevo cliente de la ferretería.

En caso sea necesario se considerará ingresar algunas observaciones en el


registro de cliente, observaciones como si compra algún tipo específico de
producto en la empresa o relacionado con el monto de compras a realizar por
parte del cliente en el sistema.

119
Taller de Ingeniería de Software
Proyecto Ferretería 17 - II

CAPITULO VII. CONCLUSIONES.


Este entregable tiene muchas aplicaciones, ya que se puede adaptar a múltiples sistemas
de ferretería.

Además, cuenta con características propias de un sistema como es la consulta, la


modificación y el registro de los diferentes actores de un sistema de ferretería.

Podemos así mencionar que este sistema es muy potente por su usabilidad como por su
adaptabilidad a cualquier sistema.

CAPITULO VIII. RECOMENDACIONES.


Como recomendaciones se puede mencionar que es posible mejorar el sistema en caso se
desee personalizar algún tipo de atributo o campo del cliente, como modificar dichos
campos tanto en la base de datos (haciendo uso del script SQL) como en las vistas
enlazadas (haciendo uso del código FXML).

Además se puede sugerir una optimización en los procesos presentes en los manuales de
usuarios, ya que se puede buscar una automatización en el sistema si se desea un ingreso
ya no manual de los datos por parte de la empresa que use este software.

120

Você também pode gostar