You are on page 1of 51

Especificación de requisitos de

software
Proyecto: TPVXpress (sistema de punto de venta)
Revisión 2.0

Diciembre 2017
Ficha del documento

Fecha Revisión Autor Verificado dep. calidad.


Juan Carlos Barrios Ramirez
13 de Fco. Javier Navarro Valdez
1
diciembre Yael Santiago Peralta
Mario Arturo Morales Luquez

Documento validado por las partes en fecha: 3 Diciembre de 2017

Por el cliente Por la empresa suministradora

PredatorSoft

Fdo. D./ Dña Fdo. D./Dña


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 4

Contenido
Contenido

FICHA DEL DOCUMENTO........................................................................................................... 3

CONTENIDO ................................................................................................................................. 4

1 INTRODUCCIÓN .................................................................................................................. 6

1.1 Propósito ......................................................................................................................... 6

1.2 Alcance ............................................................................................................................ 6

1.3 Personal involucrado ..................................................................................................... 6

1.4 Definiciones, acrónimos y abreviaturas ...................................................................... 7

1.5 Referencias ..................................................................................................................... 7

1.6 Resumen ......................................................................................................................... 7

2 DESCRIPCIÓN GENERAL .................................................................................................. 7

2.1 Perspectiva del producto .............................................................................................. 7

2.2 Funcionalidad del producto .......................................................................................... 8

2.3 Características de los usuarios .................................................................................... 8

2.4 Restricciones .................................................................................................................. 9

2.5 Suposiciones y dependencias ...................................................................................... 9

2.6 Evolución previsible del sistema .................................................................................. 9

3 REQUISITOS ESPECÍFICOS .............................................................................................. 9

3.1 Requisitos comunes de los interfaces ....................................................................... 13


3.1.1 Interfaces de usuario ................................................................................................. 13
3.1.2 Interfaces de hardware .............................................................................................. 13
3.1.3 Interfaces de software ................................................................................................ 13
3.1.4 Interfaces de comunicación ....................................................................................... 13

3.2 Requisitos funcionales ................................................................................................ 13


3.2.1 Requisito funcional clientes ....................................................................................... 13
3.2.2 Requisito funcional 2 .................................................................................................. 14
3.2.3 Requisito funcional 3 .................................................................................................. 16
3.2.4 Requisito funcional 4 .................................................................................................. 17
3.2.5 Requisito funcional 5 .................................................................................................. 18
3.2.6 Requisito funcional 6 .................................................................................................. 20

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 5

3.2.7 Requisito funcional 8 .................................................................................................. 22

4 REQUISITO FUNCIONAL .................................................................................................. 24

4.1 Requisitos no funcionales........................................................................................... 24


4.1.1 Requisitos de rendimiento ......................................................................................... 24
4.1.2 Seguridad ................................................................................................................... 24
4.1.3 Fiabilidad .................................................................................................................... 24
4.1.4 Disponibilidad ............................................................................................................. 25
4.1.5 Mantenibilidad ............................................................................................................ 25
4.1.6 Portabilidad ................................................................................................................ 25

4.2 Otros requisitos ............................................................................................................ 25

5 APÉNDICES ....................................................................................................................... 25

6 ESQUEMA RELACIONAL ................................................................................................. 26

7 ESQUEMA ENTIDAD-RELACIÓN .................................................................................... 27

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 6

1 Introducción
La presente especificación de requerimientos de software (SRS) del sistema a construir,
surge para ser un conjunto de información necesaria que ayuda a los desarrolladores del
software a analizar y entender todos los requisitos y requerimientos que el cliente desea.
Se describirá en forma detallada las interfaces de usuario de software, así como de los
requerimientos del cliente y atributos del sistema, entre otras cosas. Sirviendo como base
para futuras modificaciones.

1.1 Propósito
El propósito de este documento es proporcionar al administrador del sistema información
que le puede ser útil y necesaria, así como en un futuro poder ser la base para
modificaciones. Este programa se encarga de llevar un control de inventario y todo lo
relacionado a ventas. Así como proporcionarle al desarrollador la información del
sistema, como son los requisitos y las especificaciones.

1.2 Alcance
TPVExpress será un sistema que funcionará en un entorno web, que nos permitirá
administrar, consultar y controlar la información de los productos, clientes, empleados y
principalmente ventas, que se realizarán en un abarrote, así como la realización de
facturas.
Este sistema dará apoyo a estas actividades:
 Minimizar el tiempo al momento de captura de información de ventas realizadas.
 Gestión de usuarios del sistema.
 Reportes de ventas al día.

1.3 Personal involucrado


Nombre Juan Carlos Barrios Ramírez
Rol Analista y programador
Categoría profesional Ingeniero en Telemática y sistemas
Responsabilidades  Jefe de proyecto
 Programación de distintos módulos del sistema
Información de contacto Juanbarriosbanamichi@gmail.com

Nombre Yael Santiago Peralta


Rol Analista y programador
Categoría profesional Ingeniero en Telemática y sistemas
Responsabilidades  Análisis y especificación de requerimientos.
 Programación de distintos módulos del sistema.
Información de contacto Springdonkey@gmail.com

Nombre Francisco Javier Navarro Valdez


Rol Analista y programador
Categoría profesional Ingeniero en Telemática y sistemas
Responsabilidades  Análisis y especificación de requerimientos.
 Programación de distintos módulos del sistema
Información de contacto Fconv7@gmail.com

Nombre Mario Arturo Morales Luquez


Rol Analista y programador
Categoría profesional Ingeniero en Telemática y sistemas

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 7

Responsabilidades  Análisis y especificación de requerimientos.


 Programación de distintos módulos del sistema
Información de contacto Moralesmario757@gmail.com
.

1.4 Definiciones, acrónimos y abreviaturas


SQL: es un gestor de base de satos, que se utiliza para consultar, ´base de datos
manejar.
SRS: Software requeriments specification en español es la especificación de
requerimientos de software.

1.5 Referencias
Referencia Titulo
R1 Documento IEEE

1.6 Resumen
Este documento muestra la información necesaria para el desarrollo del sistema punto
de ventas, se presentan pantallas de cómo el sistema será utilizado.
El SRS está compuesto de la siguiente manera:
 Introducción: en esta sección se detallaran los objetivos que posee el SRS y del
sistema.
 Descripción general: Se describe una representación general del sistema a
desarrollar, así como su funcionalidad, características de usuario y las
limitaciones que se podrá tener.
 Requerimientos específicos: muestra a detalle todos los requerimientos que el
usuario desea en el producto final. Para el cuál se ha utilizado el formato de
documentación de requerimientos con el prototipo del estándar IEEE 830-1998.

2 Descripción general
2.1 Perspectiva del producto
El sistema TPVXpress es un software de punto de venta muy sencillo de utilizar
enfocado a pequeños y medianos negocios, que ayudará a reducir el tiempo en el que
se atiende a sus clientes, así como a manejar todos los productos de su negocio y
aumentar sus ventas, enfocado a que se dedique a vender mientras que el programa
lleva a cabo el control de sus productos y ventas.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 8

2.2 Funcionalidad del producto

2.3 Características de los usuarios


Tipo de usuario Vendedor
Formación Conocimientos básicos de informática.
Habilidades Manejo de computadoras
Actividades Hacer corte, agregar, eliminar, modificar productos, iniciar
sesión, realizar ventas.

Tipo de usuario Administrador


Formación Conocimientos básicos de informática.
Habilidades Manejo de computadoras
Actividades Hacer corte de caja, agregar, modificar, eliminar productos,
clientes, empleados, iniciar sesión, realizar ventas.

Tipo de usuario Almacenista


Formación Conocimientos básicos de informática.
Habilidades Manejo de computadoras
Actividades Agregar, modificar, eliminar productos, iniciar sesión.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 9

2.4 Restricciones
La gestión de la base de datos será mediante SQL 2017, El sistema TPVXpress será
desarrollado en Microsoft Visual Studio 2017en la plataforma .NET, para el cual será
necesario contar con un sistema operativo ya instalado el cual se recomienda sea
Microsoft Windows XP o Windows 7, este sistema no emitirá facturas.

2.5 Suposiciones y dependencias


Para este sistema será necesario contar con una computadora para la instalación del
mismo, el cual lo realizará un ingeniero de la empresa.

2.6 Evolución previsible del sistema


Mas adelante se pretende dar mejoras al sistema, ya sea en cambiar el diseño, mejoras
en algunas de las características con las que cuenta y así tener una mayor competencia
en el mercado contra los sistemas similares que ya tienen tiempo funcionando.

3 Requisitos específicos
Número de requisito RF10
Nombre de requisito Alta de usuarios.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá dar de alta a los nuevos usuarios.

Número de requisito RF11


Nombre de requisito Alta de usuarios.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción Un vendedor no podrá dar de alta a un usuario.

Número de requisito RF12


Nombre de requisito Baja de usuarios
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá dar de baja a algún usuario.

Número de requisito RF13


Nombre de requisito Baja de usuarios.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El vendedor no podrá dar de baja a los usuarios.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 10

Número de requisito RF14


Nombre de requisito Modificación de usuarios.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá modificar cualquier usuario que se
encuentre en el sistema.

Número de requisito RF15


Nombre de requisito Modificación de usuarios.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El vendedor no podrá modificar ningún usuario que ya exista en
el sistema.

Número de requisito RF16


Nombre de requisito Alta de productos.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá dar de alta los nuevos productos.

Número de requisito RF17


Nombre de requisito Alta de productos.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El vendedor no podrá dar de alta los nuevos productos.

Número de requisito RF18


Nombre de requisito Baja de productos.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá dar de baja los productos.

Número de requisito RF19


Nombre de requisito Baja de productos.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El vendedor no podrá dar de baja los productos.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 11

Número de requisito RF20


Nombre de requisito Elaborar reportes.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá elaborar los reportes correspondientes.

Número de requisito RF21


Nombre de requisito Elaboración de reportes.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El vendedor no podrá realizar ninguno de los reportes.

Número de requisito RF22


Nombre de requisito Alta de proveedores.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El administrador podrá dar de alta a los nuevos proveedores.

Número de requisito RF23


Nombre de requisito Alta de proveedores.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El cajero no podrá dar de alta a los nuevos proveedores.

Número de requisito RF24


Nombre de requisito Modificación de proveedores.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El supervisor podrá modificar los proveedores ya existentes en el
sistema.

Número de requisito RF25


Nombre de requisito Modificación de proveedores.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El cajero no podrá modificar ninguno de los proveedores que ya
estén en el sistema.

Número de requisito RF26


Nombre de requisito Baja de proveedores.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 12

Tipo Requisito Restricción


Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El supervisor podrá dar de baja a los proveedores.

Número de requisito RF27


Nombre de requisito Baja de proveedores.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El cajero no podrá dar de baja a los proveedores.

Número de requisito RF28


Nombre de requisito Cortes de caja
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El supervisor podrá realizar los cortes de caja.

Número de requisito RF29


Nombre de requisito Cortes de caja.
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción El cajero no podrá realizar los cortes de caja.

Número de requisito RF30


Nombre de requisito Login
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/
Opcional
Descripción Para poder ingresar al sistema será necesario que el usuario este
dado de alta y cuente con algún correo y contraseña para poder
tener acceso a este.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 13

3.1 Requisitos comunes de los interfaces


Las interfaces de usuario deben de permitir ingresar información y mostrarla cada vez
que esta sea solicitada.

3.1.1 Interfaces de usuario


El usuario podrá acceder al sistema para realizar su trabajo en su horario,
iniciando sesión por lo que no podrá acceder cualquier otra persona que no sea
trabajador de ese negocio. Donde el usuario podrá manipular la información, la
cuál será realizada por el mouse y el teclado.

3.1.2 Interfaces de hardware


Monitor: La información se mostrará a través del monitor con el que contará el
usuario para usar el sistema.
Mouse: El sistema podrá ser manipulado también con el mouse que servirá para
activar nuestros botones y algunos otros campos.
Teclado: Este dispositivo servirá para que el usuario pueda introducir la mayor
parte de la información que almacenará nuestro sistema, como son los nombres,
precios, códigos, contraseñas, nombres de usuario, etc.

3.1.3 Interfaces de software


Este sistema es capaz de realizar operaciones con el objetivo de sumar el precio
de cada uno de los productos que el usuario ingrese a la copra, como también,
será capaz de llevar un control de inventario para un mejor manejo de los
productos, así como la elaboración de un ticket que muestre la compra que
realizo el cliente junto con algunos datos del negocio.

3.1.4 Interfaces de comunicación


El sistema TPVXpress no contará con interfaces de comunicación ya que este no
va a establecer cambio de información con algún otro sistema existente con el
cuál poder interactuar entre sí.

3.2 Requisitos funcionales


En términos generales el sistema mostrará una pantalla en la que el usuario deberá
iniciar sesión con alguna cuenta que se le asignó, para así, poder realizar su trabajo en
el negocio.

3.2.1 Requisito funcional clientes


Número de requisito RF1
Nombre de requisito Alta de clientes
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/ Opcional
Descripción El alta de clientes se realizara con los campos de formulario
Nombre de 50 caracteres,
Apellido de 50 caracteres,
Dirección de 40 caracteres de tipo dirección,
RFC de 13 caracteres,
Email de 50 caracteres de tipo correo,
Número de teléfono de 10 dígitos.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 14

Número de requisito RF2


Nombre de requisito Alta de usuarios
Tipo Requisito Restricción
Fuente del requisito Funcionalidad básica sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/ Opcional
Descripción El alta de usuarios se realizara con los campos de formulario
Nombre de 50 caracteres,
Apellido de 50 caracteres,
Tipo seleccionara obligatoriamente una categoría,
Dirección de 40 caracteres de tipo dirección,
Email de 50 caracteres de tipo correo,
Número de teléfono de 10 dígitos,
Usuario se debe ingresar algún nombre de usuario para su
cuenta,
Contraseña de mínimo 8 caracteres.
5

Número de requisito RF3


Nombre de requisito Validación campo
Tipo Requisito Restricción
Fuente del requisito Validación a campos del sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/ Opcional
Descripción No se permite campos en blanco
No se permite caracteres especiales

Número de requisito RF4


Nombre de requisito Validación de correo
Tipo Requisito Restricción
Fuente del requisito Validación a campos del sistema
Prioridad del requisito Alta/Esencial Media/Deseado Baja/ Opcional
Descripción No se permite campos en blanco
Debe de ser del tipo correo(tiene que contener un @ en la
dirección)

3.2.2 Requisito funcional 2


Número de RF2
requisito
Nombre de Alta, baja y editar usuario
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad del Alta/Esencial Media/Deseado Baja/ Opcional
requisito
Descripción y Esta opción solo se podrá realizar por alguna cuenta con privilegios de
diseño administrador, el cuál dará de alta al usuario que se contratará en el
negocio.
Pero en el usuario administrador si solo se cuenta con uno no se podrá

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 15

eliminar.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 16

3.2.3 Requisito funcional 3


Número de RF3
requisito
Nombre de Login
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad Alta/Esencial Media/Deseado Baja/ Opcional
del
requisito
Descripción El usuario deberá iniciar sesión para poder utilizar el sistema
y diseño

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 17

3.2.4 Requisito funcional 4


Número de RF4
requisito
Nombre de Alta, baja y editar categoría.
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad Alta/Esencial Media/Deseado Baja/ Opcional
del
requisito
Descripción Esta opción solo se podrá realizar por alguna cuenta con privilegios de administrador.
y diseño

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 18

3.2.5 Requisito funcional 5


Número de RF6
requisito
Nombre de Alta, baja y editar productos.
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad Alta/Esencial Media/Deseado Baja/ Opcional
del
requisito
Descripción Esta opción solo se podrá realizar por alguna cuenta con privilegios de administrador.
y diseño

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 19

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 20

3.2.6 Requisito funcional 6


Número de RF7
requisito
Nombre de Alta, baja y editar proveedores
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad Alta/Esencial Media/Deseado Baja/ Opcional
del
requisito
Descripción Esta opción solo se podrá realizar por alguna cuenta con privilegios de administrador.
y diseño

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 21

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 22

3.2.7 Requisito funcional 8


Número de RF8
requisito
Nombre de Alta, baja y editar clientes
requisito
Tipo Requisito Restricción
Fuente del Funcionalidad básica sistema
requisito
Prioridad Alta/Esencial Media/Deseado Baja/ Opcional
del
requisito
Descripción Esta opción solo se podrá realizar por alguna cuenta con privilegios de administrador.
y diseño

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 23

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 24

4 Requisito funcional

4.1 Requisitos no funcionales


4.1.1 Requisitos de rendimiento
Este sistema está diseñado para soportar que varios usuarios se puedan conectar
simultáneamente:
ADMINISTRADOR: será capaz de hacer todas las opciones en el sistema como
altas, bajas, modificaciones de cualquier tipo.
ALMACENISTA: solo podrá realizar altas, bajas y modificaciones de productos.
VENDEDOR: este tipo de usuario solo será capaza de realizar ventas y llevar a
cabo cortes de caja.

4.1.2 Seguridad
Todos los usuarios deberán autenticarse y dependiendo su nivel podrán realizar
distintas operaciones dentro del sistema, las contraseñas estarán encriptadas
para brindar tanto al sistema, como a la información la seguridad que estos
necesitan tener.

4.1.3 Fiabilidad
Es uno de los factores que dará confianza al cliente, el sistema será confiable
para así poder brindarle lo que esté necesite al momento que lo ocupe, tendrá el
mínimo margen de error posible.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 25

4.1.4 Disponibilidad
El sistema estará disponible para el usuario, tomando en cuenta las necesidades,
los requisitos, reglas y objetivos de este mismo. Por lo que se encontrará 100 %
disponible cada vez que el usuario desee utilizarlo, es decir las 24 horas del día.

4.1.5 Mantenibilidad
El TPVExpress cuenta con características adaptables, lo que permitirá futuros
mantenimientos. Es decir cada 6 meses se le realizará un mantenimiento
preventivo que se llevará a cabo por un técnico asignado.

4.1.6 Portabilidad
El sistema TPVXpress no podrá ser movido a alguna otra plataforma sin la
autorización de algún ingeniero en sistemas de la empresa Predators.
Será un sistema web 100% portable.

4.2 Otros requisitos


El sistema será diseñado como proyecto final de la materia desarrollo de sistemas

5 Apéndices
Se otorga el permiso para reproducir totalmente este documento en cualquier lugar que lo
desee, siempre y cuando los autores del mismo estén de acuerdo, por lo que cualquier
movimiento o edición a este documento tendrá que ser autorizado por los autores de este.

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 26

6 Esquema Relacional

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 27

7 Esquema Entidad-Relación

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 28

8 Codigo
MODELOS

USUARIO
using TPVE.Enum;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;

namespace TPVE.Models
{
public class User
{
[Key]
public int UserId { get; set; }

[Display(Name = "NOMBRE")]
public string Name { get; set; }

[Display(Name = "APELLIDO")]
public string LastName { get; set; }

[Display(Name = "TIPO")]
public TypeUser TypeUser { get; set; }

[Display(Name = "DIRECCION")]
public string Address { get; set; }

[Display(Name = "TELEFONO")]
public string PhoneNumber { get; set; }

[Display(Name = "EMAIL")]
public string email { get; set; }

[Display(Name = "USUARIO")]
public string UserName { get; set; }

[Required(ErrorMessage = "Requiere {0}")]


[DataType(DataType.Password)]
[Display(Name = "CONTRASEÑA")]
public string Password { get; set; }

[NotMapped]
public string FullName { get { return string.Format("{0} {1}", Name,
LastName); } set { } }

}
}

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 29

PROVEEDOR
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class Supplier
{
[Key]
public int SupplierId{ get; set; }

[Display(Name = "PROVEEDOR")]
public string CompanyName { get; set; }

[Display(Name = "DIRECCION")]
public string Addres { get; set; }

[DataType(DataType.PhoneNumber)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(16)]
[Display(Name = "TELEFONO")]
[RegularExpression(@"^\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})$",
ErrorMessage = "Telefono no válido")]
///\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
public string PhoneNumber { get; set; }

[Display(Name = "EMAIL")]
[Required(ErrorMessage = "El campo no puede estar vacio")]
[DataType(DataType.EmailAddress, ErrorMessage = "Correo no valido")]
public string Email { get; set; }

public virtual ICollection<Product> Products { get; set; }

}
}

DETALLE DE VENTA
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class SaleDetail
{
public int SaleDetailID { get; set; }
public int SaleId { get; set; }
public int ProductId { get; set; }

public float Quantity { get; set; }


public string ProductName { get; set; }
public decimal UnitPrice { get; set; }

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 30

[NotMapped]
public decimal Amount
{
get
{
return UnitPrice * (decimal)Quantity;
}
}

public virtual Customer Customers { get; set; }


public virtual Product Product { get; set; }
}
}

VENTA
using TPVE.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class Sale
{
public int SaleId { get; set; }
public int ? UserId { get; set; }
public int ? CustomerId { get; set; }
public DateTime SaleDate { get; set; }
public PaymentType PaymentType { get; set; }

// Modelos que ocupamos aqui


public virtual User User { get; set; }
public virtual Customer Customer { get; set; }
//
public virtual ICollection<SaleDetail> SaleDetails { get; set; }
}
}
PRODUCTO
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class Product
{
[Key]
public int ProductId { get; set; }

[Display(Name = "CODIGO")]
public string BarCode { get; set; }

[Display(Name = "PRODUCTO")]
public string ProductName { get; set; }

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 31

[Display(Name = "PROVEEDOR")]
public int ? SupplierId { get; set; }

[Display(Name = "CATEGORIA")]
public int? CategoryId { get; set; }

[Display(Name = "PRECIO UNITARIO")]


public decimal UnitPrice { get; set; }

[Display(Name = "DISPONIBLES")]
public float Stock { get; set; }

public virtual Supplier Supplier { get; set; }


public virtual Category Category { get; set; }
public virtual ICollection<SaleDetail> SaleDetail { get; set; }
}

CLIENTE
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class Customer
{
[Key]
public int CustomerId { get; set; }

[StringLength(30, ErrorMessage = "El campo {0} es de {2} a {1}


caracteres", MinimumLength = 2)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(31)]
[Display(Name = "NOMBRE")]
public string Name { get; set; }

[StringLength(40, ErrorMessage = "El campo {0} es de {2} a {1}


caracteres", MinimumLength = 2)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(41)]
[Display(Name = "APELLIDO")]
public string LastName { get; set; }

[StringLength(13, ErrorMessage = "El campo {0} es de {2} a {1}


caracteres", MinimumLength = 9)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(14)]
[Display(Name = "RFC")]
public string RFC { get; set; }

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 32

[StringLength(40, ErrorMessage = "El campo {0} es de {2} a {1}


caracteres", MinimumLength = 2)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(41)]
[Display(Name = "DIRECCION")]
public string Address { get; set; }

[DataType(DataType.PhoneNumber)]
[Required(ErrorMessage = "El campo {0} es requerido")]
[MaxLength(16)]
[Display(Name = "TELEFONO")]
[RegularExpression(@"^\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})$",
ErrorMessage = "Telefono no válido")]
///\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
public string PhoneNumber { get; set; }

[Display(Name = "CREDITO")]
public float Credit { get; set; }

[NotMapped]
public string FullName { get { return "RFC: "+string.Format("{2} {1}
{0}", Name, LastName, RFC); } set { } }

}
}

CATEGORIA
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace TPVE.Models
{
public class Category
{
[Key]
public int CategoryId { get; set; }

[Display(Name = "CATEGORIA")]
public string CategoryName { get; set; }

[Display(Name = "DESCRIPCION")]
public string Description { get; set; }

public virtual ICollection<Product> Products { get; set; }


}

CONTROLADORES
USUARIO
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 33

using System.Net;
using System.Web;
using System.Web.Mvc;
using TPVE.Context;
using TPVE.Models;

namespace TPVE.Controllers
{
public class UsersController : Controller
{
private TPVEContext db = new TPVEContext();

// GET: Users
public ActionResult Index()
{

return View(db.Users.ToList());
}

// GET: Users/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}

// GET: Users/Create
public ActionResult Create()
{
return View();
}

// POST: Users/Create
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include =
"UserId,Name,LastName,TypeUser,Address,PhoneNumber,email,UserName,Password")]
User user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(user);

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 34

// GET: Users/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}

// POST: Users/Edit/5
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include =
"UserId,Name,LastName,TypeUser,Address,PhoneNumber,email,UserName,Password")]
User user)
{
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}

// GET: Users/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}

// POST: Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
User user = db.Users.Find(id);
db.Users.Remove(user);
try

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 35

{
db.SaveChanges();
}
catch {
}
return RedirectToAction("Index");
}

public ActionResult Logout()


{
Session.Abandon();

return RedirectToAction("Index", "Home");


}

protected override void Dispose(bool disposing)


{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

PROVEEDOR
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using TPVE.Context;
using TPVE.Models;

namespace TPVE.Controllers
{
public class SuppliersController : Controller
{
private TPVEContext db = new TPVEContext();

// GET: Suppliers
public ActionResult Index()
{
return View(db.Suppliers.ToList());
}

public ActionResult Logout()


{
Session.Abandon();

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 36

return RedirectToAction("Index", "Home");


}

// GET: Suppliers/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Supplier supplier = db.Suppliers.Find(id);
if (supplier == null)
{
return HttpNotFound();
}
return View(supplier);
}

// GET: Suppliers/Create
public ActionResult Create()
{
return View();
}

// POST: Suppliers/Create
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include =
"SupplierId,CompanyName,Addres,PhoneNumber,Email")] Supplier supplier)
{
if (ModelState.IsValid)
{
db.Suppliers.Add(supplier);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(supplier);
}

// GET: Suppliers/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Supplier supplier = db.Suppliers.Find(id);
if (supplier == null)
{
return HttpNotFound();
}
return View(supplier);
}

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 37

// POST: Suppliers/Edit/5
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include =
"SupplierId,CompanyName,Addres,PhoneNumber,Email")] Supplier supplier)
{
if (ModelState.IsValid)
{
db.Entry(supplier).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(supplier);
}

// GET: Suppliers/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Supplier supplier = db.Suppliers.Find(id);
if (supplier == null)
{
return HttpNotFound();
}
return View(supplier);
}

// POST: Suppliers/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Supplier supplier = db.Suppliers.Find(id);
db.Suppliers.Remove(supplier);
db.SaveChanges();
return RedirectToAction("Index");
}

protected override void Dispose(bool disposing)


{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

VENTA
using TPVE.Context;

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 38

using TPVE.Models;
using TPVE.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Web.Mvc;

namespace TPVE.Controllers
{
public class SaleController : Controller
{

TPVEContext db = new TPVEContext();


public ActionResult Index() {
List<SaleDetail> list = db.SaleDetails.ToList();
Session["Detalles"] = list;
var sales = db.Sales.Include(y => y.Customer).Include(y => y.User);
return View(sales.ToList());
}

// GET: Sale
public ActionResult NewSale() {
var SaleView = new SaleView();
SaleView.Customer = new Customer();
SaleView.Products = new List<ProductSale>();
Session["SaleView"] = SaleView;
var list = db.Customers.ToList();

list.Add(new Customer { CustomerId = 0, Name = "[Seleccione un Cliente]" });


list = list.OrderBy(x => x.Name).ToList();
ViewBag.CustomerVB = new SelectList(list, "CustomerID", "FullName");
return View(SaleView);
}

// POST: Orders
[HttpPost]
public ActionResult NewSale(SaleView saleView)
{
saleView = Session["SaleView"] as SaleView;
int customerId = int.Parse(Request["CustomerVB"]);
int UserId = int.Parse(Session["LogedUserID"].ToString());
var listCustomer = db.Customers.ToList();

if (customerId == 0)
{
TempData["Error"] = "ESCOJA UN CLIENTE ";

listCustomer.Add(new Customer { CustomerId = 0, Name = "[Seleccione un cliente]"


});
listCustomer = listCustomer.OrderBy(x => x.FullName).ToList();
ViewBag.CustomerVB = new SelectList(listCustomer, "CustomerID", "FullName");
ViewBag.ProductID = new SelectList(listCustomer, "ProductId", "ProductName");

//orderView.Products = new List<ProductOrder>();


return View(saleView);

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 39

}
var customer = db.Customers.Find(customerId);
if (customer == null)
{
TempData["Error"] = "ESCOJA UN CLIENTE";
listCustomer.Add(new Customer { CustomerId = 0, Name = "[Seleccione un cliente]"
});
listCustomer = listCustomer.OrderBy(x => x.FullName).ToList();
ViewBag.CustomerVB = new SelectList(listCustomer, "CustomerId", "FullName");
ViewBag.ProductId = new SelectList(listCustomer, "ProductId", "ProductName");
saleView.Products = new List<ProductSale>();
return View(saleView);
}

int quantProduct = saleView.Products.Count();

if (quantProduct < 1)
{
//ModelState.AddModelError("ProductId", "Seleccione cliente");
//mandar mensaje
TempData["Error"] = "AGREGUE PRODUCTOS PARA PODER REALIZAR UNA
COMPRA";

listCustomer.Add(new Customer { CustomerId = 0, Name = "[Seleccione un cliente]"


});
listCustomer = listCustomer.OrderBy(x => x.FullName).ToList();
ViewBag.CustomerVB = new SelectList(listCustomer, "CustomerId", "FullName");
ViewBag.ProductId = new SelectList(listCustomer, "ProductId", "ProductName");
return View(saleView);
}

using (var transaccion = db.Database.BeginTransaction())


{
try
{
Sale Sale = new Sale
{
CustomerId = customerId,

SaleDate = DateTime.Now,
PaymentType = Enum.PaymentType.Efectivo,
UserId = UserId
};
db.Sales.Add(Sale);
db.SaveChanges();

var SaleId = db.Sales.ToList().Select(o => o.SaleId).Max();

foreach (var item in saleView.Products)


{
SaleDetail SaleDetail = new SaleDetail()
{
SaleId = SaleId,
ProductId = item.ProductId,
Quantity = item.Quantity,
ProductName = item.ProductName,
UnitPrice = item.UnitPrice

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 40

};
db.SaleDetails.Add(SaleDetail);
db.SaveChanges();

//Math.Sqrt(-25);

TempData["Error"] = "VENTA"+SaleId + " REALIZADA";


transaccion.Commit();
return RedirectToAction("NewSale");
}
catch (Exception)
{
transaccion.Rollback();
TempData["Error"] = "Ya bailo Berta";
}
}

return RedirectToAction("NewSale");
}

public ActionResult Delete(int id)


{
var ses = ((SaleView)(Session["SaleView"]));
try
{
foreach (var item in ses.Products)
{
if (item.ProductId == id)
{
ses.Products.Remove(item);
}
}
}
catch { }

var saleView=Session["SaleView"];
var listC = db.Customers.ToList();
listC.Add(new Customer { CustomerId = 0, Name = "[Seleccione un cliente]" });
listC = listC.OrderBy(x => x.FullName).ToList();
ViewBag.CustomerVB = new SelectList(listC, "CustomerID", "FullName");

return View("NewSale", saleView);

public ActionResult Logout()


{
Session.Abandon();

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 41

return RedirectToAction("Index", "Home");


}

public ActionResult AddProduct()


{
var list = db.Products.ToList();
list.Add(new Product { ProductId = 0, ProductName = "[Seleccione un producto]" });
list = list.OrderBy(x => x.ProductName).ToList();
ViewBag.ProductID = new SelectList(list, "ProductId", "ProductName");
return View();
}

[HttpPost]
public ActionResult AddProduct(ProductSale productOrder)
{
var saleView = Session["SaleView"] as SaleView;

//cantidad, nombre, precio, importe

var productId = int.Parse(Request["ProductId"]);

var list = db.Products.ToList();

if (productId == 0)
{
list.Add(new Product { ProductId = 0, ProductName = "[Seleccione un producto]" });
list = list.OrderBy(x => x.ProductName).ToList();
ViewBag.ProductId = new SelectList(list, "ProductId", "ProductName");

ViewBag.Error = "ESCOGA PRODUCTO VB";

ModelState.AddModelError("ProductI", "ESCOGA PRODUCTO MSAME");

TempData["Error"] = "ESCOGA PRODUCTO TD";


return View(productOrder);

var product = db.Products.Find(productId);

if (product == null)
{
list.Add(new Product { ProductId = 0, ProductName = "[Seleccione un producto]" });
list = list.OrderBy(x => x.ProductName).ToList();
ViewBag.ProductId = new SelectList(list, "ProductId", "ProductName");

ViewBag.Error = "NO EXISTE PRODUCTO VB";

ModelState.AddModelError("ProductID", "NO EXISTE PRODUCTO MSAME");

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 42

TempData["Error"] = "NO EXISTE PRODUCTO TD";


return View(productOrder);
}

bool juan=false;
foreach (var item in saleView.Products)
{
if (item.ProductId == productId) {
item.Quantity += productOrder.Quantity;
juan = true;
}

}
if (!juan) {

var productSale = new ProductSale


{
ProductId = product.ProductId,
Quantity = float.Parse(Request["Quantity"]),
ProductName = product.ProductName,
UnitPrice = product.UnitPrice
};
var aux = productSale;
saleView.productSale = null;
saleView.Products.Add(aux);
aux = null;

var listC = db.Customers.ToList();


listC.Add(new Customer { CustomerId = 0, Name = "[Seleccione un cliente]" });
listC = listC.OrderBy(x => x.FullName).ToList();
ViewBag.CustomerVB = new SelectList(listC, "CustomerID", "FullName");

return View("NewSale", saleView);


}

public ActionResult DeleteSale(int id)


{
Sale sale = db.Sales.Find(id);
db.Sales.Remove(sale);

foreach (var item in db.SaleDetails)


{
if (item.SaleId == id) {
db.SaleDetails.Remove(item);
}
}
db.SaveChanges();
return RedirectToAction("Index");
}

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 43

[HttpPost]
public ActionResult DetailSale(int id2)
{
int id = int.Parse(Request["Id"]);
var list = db.SaleDetails.Include(p => p.ProductName);
List<SaleDetail> list2 = new List<SaleDetail>();

foreach (var item in list)


{
if (item.SaleId==id) {
list2.Add(item);
}
}
return View(list2.ToList());
}
}
}

PRODUCTO
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using TPVE.Context;
using TPVE.Models;

namespace TPVE.Controllers
{
public class ProductsController : Controller
{
private TPVEContext db = new TPVEContext();

public ActionResult Logout()


{
Session.Abandon();

return RedirectToAction("Index", "Home");


}

[HttpPost]
public ActionResult Search()
{

string prod = Request["Buscar"].ToString();


var products = db.Products.Include(p => p.Category).Include(p =>
p.Supplier);
List<Product> products2 = new List<Product>();

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 44

foreach (var item in products)


{

if (prod!=null && (prod == item.BarCode ||


item.ProductName.Contains(prod)==true)){

products2.Add(item);

}
return View("Index",products2.ToList());
}

// GET: Products
public ActionResult Index()
{

if (Session["LogedUserID"] == null)
{

return RedirectToAction("Index", "Home");


}

var products = db.Products.Include(p => p.Category).Include(p =>


p.Supplier);
return View(products.ToList());
}

// GET: Products/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Product product = db.Products.Find(id);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}

// GET: Products/Create
public ActionResult Create()
{

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 45

ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId",


"CategoryName");
ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId",
"CompanyName");
return View();
}

// POST: Products/Create
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include =
"ProductId,BarCode,ProductName,SupplierId,CategoryId,UnitPrice,Stock")] Product
product)
{
if (ModelState.IsValid)
{
db.Products.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}

ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId",


"CategoryName", product.CategoryId);
ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId",
"CompanyName", product.SupplierId);
return View(product);
}

// GET: Products/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Product product = db.Products.Find(id);
if (product == null)
{
return HttpNotFound();
}
ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId",
"CategoryName", product.CategoryId);
ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId",
"CompanyName", product.SupplierId);
return View(product);
}

// POST: Products/Edit/5
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include =
"ProductId,BarCode,ProductName,SupplierId,CategoryId,UnitPrice,Stock")] Product
product)

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 46

{
if (ModelState.IsValid)
{
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CategoryId = new SelectList(db.Categories, "CategoryId",
"CategoryName", product.CategoryId);
ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId",
"CompanyName", product.SupplierId);
return View(product);
}

// GET: Products/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Product product = db.Products.Find(id);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}

// POST: Products/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Product product = db.Products.Find(id);
db.Products.Remove(product);
db.SaveChanges();
return RedirectToAction("Index");
}

protected override void Dispose(bool disposing)


{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

CLIENTE

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 47

using System.Net;
using System.Web;
using System.Web.Mvc;
using TPVE.Context;
using TPVE.Models;

namespace TPVE.Controllers
{

public class CustomersController : Controller


{
private TPVEContext db = new TPVEContext();

// GET: Customers
public ActionResult Index()
{
if (Session["LogedUserID"]==null)
{
return RedirectToAction("Index", "Home");
}
return View(db.Customers.ToList());
}

public ActionResult Logout()


{
Session.Abandon();

return RedirectToAction("Index", "Home");


}

// GET: Customers/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Customer customer = db.Customers.Find(id);
if (customer == null)
{
return HttpNotFound();
}
return View(customer);
}

// GET: Customers/Create
public ActionResult Create()
{
return View();
}

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 48

// POST: Customers/Create
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include =
"CustomerId,Name,LastName,RFC,Address,PhoneNumber,Credit")] Customer customer)
{
if (ModelState.IsValid)
{
db.Customers.Add(customer);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(customer);
}

// GET: Customers/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Customer customer = db.Customers.Find(id);
if (customer == null)
{
return HttpNotFound();
}
return View(customer);
}

// POST: Customers/Edit/5
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include =
"CustomerId,Name,LastName,RFC,Address,PhoneNumber,Credit")] Customer customer)
{
if (ModelState.IsValid)
{
db.Entry(customer).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(customer);
}

// GET: Customers/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 49

}
Customer customer = db.Customers.Find(id);
if (customer == null)
{
return HttpNotFound();
}
return View(customer);
}

// POST: Customers/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Customer customer = db.Customers.Find(id);
db.Customers.Remove(customer);
db.SaveChanges();
return RedirectToAction("Index");
}

protected override void Dispose(bool disposing)


{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

CATEGORIA
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using TPVE.Context;
using TPVE.Models;

namespace TPVE.Controllers
{
public class CategoriesController : Controller
{
private TPVEContext db = new TPVEContext();

// GET: Categories
public ActionResult Index()
{
return View(db.Categories.ToList());
}

public ActionResult Logout()


{
Session.Abandon();

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 50

return RedirectToAction("Index", "Home");


}

// GET: Categories/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Category category = db.Categories.Find(id);
if (category == null)
{
return HttpNotFound();
}
return View(category);
}

// GET: Categories/Create
public ActionResult Create()
{
return View();
}

// POST: Categories/Create
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include =
"CategoryId,CategoryName,Description")] Category category)
{
if (ModelState.IsValid)
{
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(category);
}

// GET: Categories/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Category category = db.Categories.Find(id);
if (category == null)
{
return HttpNotFound();
}
return View(category);
}

Descripción de requisitos del software


TPVExpress Rev. 1.0
Especificación de requisitos de software Pág. 51

// POST: Categories/Edit/5
// Para protegerse de ataques de publicación excesiva, habilite las
propiedades específicas a las que desea enlazarse. Para obtener
// más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include =
"CategoryId,CategoryName,Description")] Category category)
{
if (ModelState.IsValid)
{
db.Entry(category).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}

// GET: Categories/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Category category = db.Categories.Find(id);
if (category == null)
{
return HttpNotFound();
}
return View(category);
}

// POST: Categories/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Category category = db.Categories.Find(id);
db.Categories.Remove(category);
db.SaveChanges();
return RedirectToAction("Index");
}

protected override void Dispose(bool disposing)


{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

Descripción de requisitos del software

You might also like