paquetes de diseÑo

60
- i - TABLA DE CONTENIDO C DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL ________________________ 1 C.1 PAQUETES DE DISEÑO___________________________________________________ 1 C.2 DIAGRAMAS DE CLASE DE DISEÑO _________________________________________ 3 C.2.1 Caso de uso ValidarAcceso ________________________________________ 4 C.2.2 Caso de uso ModificarContraseña ___________________________________ 9 C.2.2 Caso de uso RealizarPedido _______________________________________ 14 C.2.3 Caso de uso BuscarPedido________________________________________ 30 C.3 DIAGRAMAS INTERACCIÓN DEL SISTEMA ____________________________________ 37 C.3.1 Caso de uso ValidarAcceso _______________________________________ 37 C.3.2 Caso de uso ModificarContraseña __________________________________ 38 C.3.3 Caso de uso RealizarPedido _______________________________________ 40 C.3.3 Caso de uso BuscarPedido________________________________________ 48 C.4 DIAGRAMA DE IMPLANTACIÓN____________________________________________ 50 C.5 DISEÑO DE LA BASE DE DATOS ___________________________________________ 51

Upload: others

Post on 04-May-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PAQUETES DE DISEÑO

- i -

TABLA DE CONTENIDO

C DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL ________________________ 1

C.1 PAQUETES DE DISEÑO___________________________________________________ 1

C.2 DIAGRAMAS DE CLASE DE DISEÑO _________________________________________ 3

C.2.1 Caso de uso ValidarAcceso ________________________________________ 4

C.2.2 Caso de uso ModificarContraseña ___________________________________ 9

C.2.2 Caso de uso RealizarPedido _______________________________________ 14

C.2.3 Caso de uso BuscarPedido________________________________________ 30

C.3 DIAGRAMAS INTERACCIÓN DEL SISTEMA____________________________________ 37

C.3.1 Caso de uso ValidarAcceso _______________________________________ 37

C.3.2 Caso de uso ModificarContraseña __________________________________ 38

C.3.3 Caso de uso RealizarPedido _______________________________________ 40

C.3.3 Caso de uso BuscarPedido________________________________________ 48

C.4 DIAGRAMA DE IMPLANTACIÓN____________________________________________ 50

C.5 DISEÑO DE LA BASE DE DATOS ___________________________________________ 51

Page 2: PAQUETES DE DISEÑO

- ii -

TABLA DE FIGURAS

Figura C-1. Paquetes de diseño__________________________________________________ 1

Figura C-2. Estereotipo de una Client page ________________________________________ 2

Figura C-3. Estereotipo de una Server page _______________________________________ 2

Figura C-4. Estereotipo de un Form ______________________________________________ 3

Figura C-5. Diagrama de clases Validar Acceso, (Estereotipos) _______________________ 4

Figura C-6. Diagrama de clases Validar Acceso ____________________________________ 5

Figura C-7. Diagrama de clases ModificarContraseña, (Estereotipos) __________________ 9

Figura C-8. Diagrama de clases Modificar contraseña ______________________________ 10

Figura C-9. Diagrama de clases caso de uso RealizarPedido ________________________ 14

Figura C-10. Diagrama de clases RealizarPedido, (Adicionar producto al carrito de compras)___________________________________________________________________________ 18

Figura C-11. Diagrama de clases RealizarPedido, (Enviar Pedido) ____________________ 19

Figura C-12. Diagrama de clases caso de uso RealizarPedido, (Eliminar producto del carrito de compras) _________________________________________________________________ 20

Figura C-13. Diagrama de clases Caso de uso RealizarPedido, (Cambiar cantidad de producto a pedir) _____________________________________________________________ 21

Figura C-14. Diagrama de clases, caso de uso BuscarPedido________________________ 30

Figura C-15. Diagrama de clases, caso de uso BuscarPedido, (búsqueda de pedido por un cliente) _____________________________________________________________________ 32

Figura C-16. Diagrama de clases, Caso de uso BuscarPedido, (búsqueda por agente) ___ 33

Figura C-17. Carta de secuencias de mensajes Validar acceso Cliente. ________________ 37

Figura C-18. Carta de secuencia de mensajes Validar Acceso Agente_________________ 38

Figura C-19. Carta de secuencia de mensajes Modificar Contraseña Cliente ___________ 39

Figura C-20. Carta de secuencia de mensajes Modificar Contraseña Agente ___________ 39

Figura C-21. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Cliente _______________________________________________ 41

Page 3: PAQUETES DE DISEÑO

- iii -

Figura C-22. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Agente _______________________________________________ 42

Figura C-23. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Cliente___________________________________________________________________________ 43

Figura C-24. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Agente___________________________________________________________________________ 44

Figura C-25. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Cliente _____________________________________________________ 45

Figura C-26. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Agente _____________________________________________________ 46

Figura C-27. Carta de secuencia de mensajes Realizar Pedido, modificar cantidad de un producto Cliente/Agente _______________________________________________________ 47

Figura C-28. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Cliente___________________________________________________________________________ 48

Figura C-29. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Agente___________________________________________________________________________ 49

Figura C-30. Diagrama de implantación __________________________________________ 50

Figura C-31. Diagrama del paquete de datos, "Análisis del Software" __________________ 52

Figura C-32. Diagrama Entidad-Relación _________________________________________ 53

Figura C-33. Diagrama Entidad-Relación, normalizado______________________________ 53

Page 4: PAQUETES DE DISEÑO

- iv -

LISTA DE TABLAS

Tabla C-1. Descripción técnica del R280d de Ericsson. _____________________________ 51

Tabla C-2. Tabla adminsx, (Administrador del sistema) _____________________________ 54

Tabla C-3. Tabla agente _______________________________________________________ 54

Tabla C-4. Tabla Cliente_______________________________________________________ 55

Tabla C-5. Tabla cliente_agente ________________________________________________ 55

Tabla C-6. Tabla cliente_empresa_______________________________________________ 55

Tabla C-7. Tabla empresa _____________________________________________________ 55

Tabla C-8. Tabla pedido _______________________________________________________ 56

Tabla C-9. Tabla producto _____________________________________________________ 56

Tabla C-10. Tabla productopedido_______________________________________________ 56

Tabla C-11. Tabla transaccion __________________________________________________ 56

Page 5: PAQUETES DE DISEÑO

C-1

C DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C.1 PAQUETES DE DISEÑO

IU_Cliente<<Client page>>

Form_Cliente<<Form>>

Gestion_Usuario

<<Server page>>IU_Agente

<<Client page>>Form_Agente<<Form>>

PHP<<PHP>>

IU_General<<Client page>>

Form_General<<Form>>

Gestion_Empresa

<<Server page>>Gestion_Producto

<<Server page>>Gestion_Pedido

<<Server page>>

Apache<<Apache>>

TCP/IP Windows2000

MySQL

APIPHPMySQL

Capa de aplicación

Capa lógica de mediación

Capa de software del sistema

Diagrama de paquetes de diseño 1(1)

Figura C-1. Paquetes de diseño

De acuerdo al estándar de UML, en la Figura C-1, se muestran los paquetes

utilizados para estructurar los elementos del modelo de diseño. A continuación se

describen los estereotipos a los cuales pertenecen las clases contenidas en cada

paquete.

Client page: Una página cliente, (Cliente page) es un documento HTML distribuido

por un servidor web, utilizando el protocolo http; los navegadores, (clientes)

decodifican el documento y presentan la información contenida el usuario.

Page 6: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-2

La petición de una página cliente se realiza, enviando al servidor web, la dirección

de la página, (URL, Unified Resource Locator), valiéndose, también, del protocolo

http.

Client page

Figura C-2. Estereotipo de una Client page

Server page: Una Server page, (página servidora), se define como una secuencia

de comandos procesados por el servidor, los cuales son ejecutados cuando el

navegador, (cliente), solicita una URL. Mediante le ejecución de estas instrucciones,

se construye una pagina cliente de acuerdo a información obtenida, generalmente,

de una base de datos. Así un servidor está en capacidad de enviar páginas clientes

construidas dinámicamente, como respuesta a peticiones de URLs de Server pages.

Server page

Figura C-3. Estereotipo de una Server page

Form: Se refiere a los formularios contenidos en una Client page, los cuales a su

vez, contienen campos de entrada, tales como cajas de texto, botones y listas de

selección, cajas de chequeo, etc. Cada formulario en una Client page, tiene

asociado una Server page, la cual recibe y procesa la información enviada.

Page 7: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-3

Form

Figura C-4. Estereotipo de un Form

Apache: Es el servidor web, compatible con HTTP/1.1, el cual en conjunto con el

módulo de php se utilizará como plataforma de soporte para el sistema.

PHP: Es un lenguaje scripting1 con HTML embebido, este lenguaje, contiene un API

que permite ejecutar funciones por medio de las cuales es posible realizar consultas

a la base de datos del sistema, utilizando el gestor de la base de datos del sistema,

(MySQL).

MySQL: Es un sistema de administración que permite, adicionar, acceder y

procesar datos almacenados en una base de datos. También se podría definir como

un sistema cliente/servidor que consiste en un servidor SQL multi-hilo que soporta

diferentes backends, librerías y programas cliente, herramientas administrativas y

algunas interfaces de programación. MySQL, será el sistema de gestión de la base

de datos de este sistema.

C.2 DIAGRAMAS DE CLASE DE DISEÑO

Los estereotipos por medio de los cuales se definen la relación de asociación entre

clases son los siguientes:

• Build: Esta relación indica la creación de una Client Page por una Server

page, utilizando código PHP.

• Link: Simboliza la invocación de una Client page por otra Client page, a

través de un hipervínculo o botón de selección.

1 Lenguaje que indica al computador como ejecutar un procedimiento específico

Page 8: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-4

• Query: Hace referencia a la necesidad de ejecutar operaciones que

permitan realizar consultas a la base de datos.

• Submit: Simboliza la invocación de una Server page, por una Client page,

por medio de un botón de selección o hipervínculo que implique el envío de

parámetros incluidos en un Form, necesarios para la construcción de otra

Client page.

C.2.1 Caso de uso ValidarAcceso

MenuCliente

(from IU_Cliente)

DatosCliente

(from Gestion_Usuario)

<<build>>

VAForm

(from Form_General)

<<submit>>

API_PHPMySQL(from PHP)

<<PHP>><<query>>

MenuAgente(from IU_Agente)

DatosAgente

(from Gestion_Usuario)

<<submit>>

<<query>>

<<build>>

MenuPrincipal(from IU_General)

ValidarAccesoUsuario

(from IU_General)

11

ValidarAcceso

(from Gestion_Usuario)

<<build>>

MPForm(from Form_General)

11 <<submit>>

Diagrama de clases Validar Acceso 1(1)

Figura C-5. Diagrama de clases Validar Acceso, (Estereotipos)

Page 9: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-5

MenuCliente

Opcion : Int

AceptarClic()

(from IU_Cliente)

<<Client Page>>

DatosCliente

ConstruirIUCliente()

(from Gestion_Usuario)

<<Server Page>>

<<build>>

VAForm

<<input>> Login : String<<input>> Contraseña : String<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

<<submit>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

<<query>>

MenuAgente

Opcion : Integer

AceptarClic()

(from IU_Agente)

<<Client Page>>

DatosAgente

ConstruirIUAgente()

(from Gestion_Usuario)

<<Server Page>>

<<submit>>

<<query>>

<<build>>

MenuPrincipal

Opcion : String

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

ValidarAccesoUsuario

Login : StringContraseña : String

AceptalClic()CancelarClic()

(from IU_General)

<<Client Page>>

11

ValidarAcceso

CosntruirIUValidarA()

(from Gestion_Usuario)

<<Server Page>>

<<build>>

MPForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

11 <<submit>>

Diagrama de clases Validar Acceso 1(1)

Figura C-6. Diagrama de clases Validar Acceso

Este caso de uso, el usuario invoca la Server page ValidarAcceso, realizando un

submit valiéndose del formulario, MPForm, contenido en el MenuPrincipal. De esta

forma la Client page ValidarAccesoUsuario, es construida.

Por medio del formulario contenido en la Client page, ValidarAccesoUsuario, el

usuario puede enviar sus datos, (Nombre de usuario y contraseña), con el fin de ser

identificado por el sistema. Estos datos, dependiendo del tipo de usuario, son

Page 10: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-6

enviados a las Server pages, Datos cliente, (en el caso de un cliente) o Datos

Agente, (para un agente), éstas tienen acceso a la base de datos utilizando el API

de MySQL que proporciona PHP. Finalmente, de acuerdo al resultado obtenido de

la comparación de los datos ingresados por el usuario y los obtenidos en la

consulta, las Server pages construyen las Client pages, MenuCliente o MenuAgente.

Class MenuPrincipal {

Var opcion;

AceptarClic() {

Switch (estaclase->opcion) {

Caso “Ingresar”:

Cargar ValidarAcceso();

break;

Caso “Ayuda”:

Cargar Ayuda();

break;

Caso “Ver empresas”:

MostrarEmpresas();

break;

}

}

}

Class ValidarAcceso {

Var login;

Var contraseña

ConstruirIUValidarA()

}

Class ValidarAccesoUsuario {

Var Usuario;

AceptarClic(ValidarAcceso->login, ValidarAcceso->contraseña) {

Page 11: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-7

estaclase->Usuario=InicialLogin; //Login=InicialLogin + Codigo usuario

//Inicial login es: A ,(para Agente) o C, //( para Cliente)

Si estaclase->Usuario==”A” {

Cargar DatosAgente();

}

Si no Si Usuario==”C”{

Cargar DatosCliente();

}

Si no {

Desplegar mensaje “Nombre de usuario o contraseña incorreta”;

Cargar ValidarAcceso();

}

}

CancelarClic() {

Volver a MenuPrincipal;

}

}

Class DatosCliente {

ConstruirIUCliente(ValidarAcceso->login,ValidarAcceso->contraseña){

Conectar a la base de datos;

consulta=”Seleccionar en la base de datos todos los usuarios de la tabla cliente donde login=’login’ y password=’contraseña’”;

resultado=Ejecutar consulta;

Amacenar resultado;

Numero= Número de filas en el resultado;

Si Numero==1 {

Cargar perfil de usuario;

}

Si no {

Desplegar mensaje “Nombre de usr o contraseña incorrecta”;

Cargar ValidarAcceso();

}

}

Page 12: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-8

}

Class DatosAgente {

ConstruirIUCliente(ValidarAcceso->login, ValidarAcceso->contraseña){

Conectar a la base de datos;

consulta=”Seleccionar en la base de datos todos los usuarios de la tabla agente donde login=’login’ y password=’contraseña’”;

resultado=Ejecutar consulta;

Amacenar resultado;

Numero= Número de filas en el resultado;

Si Numero==1 {

Cargar perfil de usuario;

}

Si no {

Desplegar mensaje “Nombre de usr o contraseña incorrecta”;

Cargar ValidarAcceso();

}

}

}

Page 13: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-9

C.2.2 Caso de uso ModificarContraseña

IUModificarContraseña

(from IU_General)

IUMCForm(from Form_General)

11

API_PHPMySQL(from PHP)

<<PHP>>ModificarDatos(from Gestion_Usuario)

<<submit>>

<<query>>

MClienteForm

(from Form_Cliente)

MenuCliente

(from IU_Cliente)

11

DatosCliente

(from Gestion_Usuario)

<<build>>

MCAgenteForm(from Form_Agente)

ModificarContraseña

(from Gestion_Usuario)

<<submit>>

<<build>>

<<submit>>

IUConfirmacion(from IU_General)

<<build>>

<<link>>

DatosAgente

(from Gestion_Usuario)

<<link>>

MenuAgente(from IU_Agente)

11

<<build>>

Diagrama de clases ModificarContraseña 1(1)

Figura C-7. Diagrama de clases ModificarContraseña, (Estereotipos)

Page 14: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-10

IUModificarContraseña

Contraseña : StringNContraseña : StringConfContraseña : String

AceptarClic()CancelarClid()

(from IU_General)

<<Client Page>>IUMCForm

<<input>> Contraseña<<input>> NContraseña<<input>> ConfContraseña<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

11

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

ModificarDatos

ConstruirIUConfirmacion()

(from Gestion_Usuario)

<<Server Page>>

<<submit>>

<<query>>

MClienteForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_Cliente)

<<Form>>

MenuCliente

Opcion : Integer

AceptarClic()

(from IU_Cliente)

<<Client Page>>

11

DatosCliente

ConstruirIUCliente()

(from Gestion_Usuario)

<<Server Page>>

<<build>>

MCAgenteForm<<select>> Opcion. String<<submit>> Aceptar<<button>> Cancelar

<<Form>>

ModificarContraseña

ContruirIUModificarContraseña()

(from Gestion_Usuario)

<<Server Page>>

<<submit>>

<<build>>

<<submit>>

IUConfirmacion

SeguirClic()timerConfirmacion()

(from IU_General)

<<Client Page>>

<<build>>

<<link>>

DatosAgente

ConstruirIUAgente()

(from Gestion_Usuario)

<<Server Page>>

<<link>>

MenuAgente

Opcion : Integer

AceptarClic()

(from IU_Agente)

<<Client Page>>

11

<<build>>

Diagrama de clases ModificarContraseña 1(1)

Figura C-8. Diagrama de clases Modificar contraseña

El usuario, (Cliente o Agente) inicia el caso de uso cuando realiza la invocación de

la Server page ModificarContraseña, desde el formulario contenido en la Client page

MenuAgente o MenuCliente, según el caso. La Server page, se encarga de construir

la IUModificarContraseña, en la cual se presenta al usuario un formulario que le

solicita la introducción de algunos datos, (Contraseña anterior, Nueva contraseña y

la confirmación de la contraseña nueva), lo cuales se envían a la Server page

ModificarDatos y esta se encarga de actualizar los datos en la base de datos, de

acuerdo a un análisis previo de estos, por medio del cual verifica la contraseña,

(realizando una consulta a la base de datos) y si la confirmación de la contraseña

coincide con la nueva contraseña introducida.

Si los datos son correctos, la Server page, ModificarDatos, modifica lo datos en la

base de datos y construye la Client page IUConfirmacion, la cual contiene un timer

Page 15: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-11

que se encarga de invocar a la Server page Datos Cliente o Datos Agente, según el

tipo de usuario.

Class MenuAgente {

Var opcion;

AceptarClic() {

Switch(this->opcion){

Caso “Ver producto”:

DatosEmpresa->ConstruirListaProductos()

break;

Caso “ModificarContraseña”:

ModificarContraseña->ModificarContraseña()

break;

Caso “Salir”:

CerrarSesion();

break;

}

}

}

Class MenuCliente {

Var opcion;

AceptarClic() {

Switch(this->opcion){

Caso “Ver empresas“:

DatosEmpresa->ConstruirListaEmpresas()

break;

Caso “ModificarContraseña”:

ModificarContraseña->ModificarContraseña()

break;

Caso “Salir”:

CerrarSesion();

break;

}

}

Page 16: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-12

}

Class ModificarContraseña {

ConstruirIUModificarContraseña() {

Var Contraseña;

Var Ncontraseña;

Var ConfContraseña;

AceptarClic() {

ModificarDatos->ConstruirIUConfirmacion();

}

CancelarClic() {

Volver a menu agente;

}

}

}

Class ModificarDatos {

ContraseñaAntigua=ModificarContraseña->Contraseña;

ContraseñaNueva=ModificarContraseña->Ncontraseña;

ConfimaciónContraseña=ModificarContraseña->ConfContraseña;

ConstruirIUConfirmacion {

Si ValidarAccesoUsuario->Usuario==C {

TablaConsulta=”Cliente”

}

Si no {

TablaConsulta=”Agente”

}

Query=”Seleccionar Contraseña de la tabla TablaConsulta donde login= ‘ValidarAcceso->login’”;

Resultado=EjecutarConsulta;

Si Resultado[0]==ContraseñaAntigua {

Si ContraseñaNueva==ConfirmacionContraseña {

Query=”Actualizar Contraseña de la tabla TablaConsulta donde login”’ValidarAcceso->login’”;

Page 17: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-13

EjecutarConsulta;

}

Si no {

Error=1;

}

}

Si no {

Error=1;

}

Si Error==1{

Desplegar mensaje “Contraseña o confirmación de contraseña incorrecta”

ModificarContraseña->ConstruitIUModificarContraseña();

}

Si no {

Desplegar mensaje “Constraseña actualizada”;

Iniciar timer;

}

}

}

Class IUConfirmacion {

TimerConfimacion() { //Después de 2 segundos

Si ValidarAccesoUsuario->Usuario==A{

DatosAgente->ConstuirIUAgente();

}

Si no {

DatosCliente->ConstuirIUCliente();

}

}

SeguirClic() {

Si ValidarAccesoUsuario->Usuario==A{

DatosAgente->ConstuirIUAgente();

}

Si no {

DatosCliente->ConstuirIUCliente();

Page 18: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-14

}

}

}

C.2.2 Caso de uso RealizarPedido

MenuCliente(from IU_Cliente)

<<Client Page>>

DetallesProducto(from IU_General)

<<Client Page>>

DatosProducto(from Gestion_Producto)

<<Server Page>>

<<build>>

MenuAgente(from IU_Agente)

<<Client Page>>

MClienteForm(from Form_Cliente)

<<Form>>

11

ListaEmpresas(from IU_Cliente)

<<Client Page>>

ListaProductos(from IU_General)

<<Client Page>>MCAgenteForm

(from Form_Agente)

<<Form>>

11

DatosEmpresa(from Gestion_Empresa)

<<Server Page>><<submit>> <<build>>

<<build>>

<<submit>>

DPForm(from Form_General)

<<Form>>

11

LPForm(from Form_General)

<<Form>>11

<<submit>>

LEForm(from Form_Cliente)

<<Form>>

11

<<submit>>

ConfirmacionAdicion(from IU_General)

<<Client Page>>

<<link>>

VistasCarrito(from IU_General)

<<Client Page>>

VCForm(from Form_General)

<<Form>> 11

VistaPorArticulos(from IU_General)

<<Client Page>>

VPAForm(from Form_General)

<<Form>>

11

ConfirmacionCambio(from IU_General)

<<Client Page>>

ConfirmacionEnvioPedido(from IU_General)

<<Client Page>>

ListaEmpresasPedido(from IU_Cliente)

<<Client Page>>

LEPForm(from Form_Cliente)

<<Form>>

11ListaArticulosPedidosEmpresa

(from IU_General)

<<Client Page>>

LAPEForm(from Form_General)

<<Form>>11

ConfirmacionEliminarProductos(from IU_General)

<<Client Page>>

CarritoCompras(from Gestion_Pedido)

<<Server Page>>

<<submit>>

<<submit>>

<<submit>><<build>>

<<build>><<submit>>

<<build>>

<<submit>>

<<build>>

<<link>>

<<link>>

<<build>>

<<submit>>

<<build>>

<<submit>>

<<build>>

<<link>>

DetallesProductoPedido(from IU_General)

<<Client Page>>

<<build>>

DPPForm(from Form_General)

<<Form>> <<submit>>

11

RealizarPedido(from Gestion_Pedido)

<<Server Page>>

<<submit>>

<<build>>

API_PHPMySQL(from PHP)

<<PHP>>

<<query>>

<<query>>

<<query>>

<<query>>

Diagrama de clases RealizarPedido 1(5)

Figura C-9. Diagrama de clases caso de uso RealizarPedido

Este caso de uso, permite al usuario enviar un listado de productos, los cuales son

presentados a cada empresa, proveedora, como un pedido. El caso de uso puede

ser accedido tanto por Clientes como por Agentes.

Después de haberse validado en el sistema, un Cliente puede hacer la solicitud del

listado a las empresas a las cuales se encuentra suscrito, es decir, para las cuales

Page 19: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-15

se encuentra habilitado para realizar pedidos, escogiendo la opción “Empresas”, en

la Client page MenuCliente, la cual contiene un formulario que se encarga de enviar

la petición a la Server page DatosEmpresa.

La Server page Datos empresa consulta la información del usuario y los datos de las

empresas a las cuales este se encuentra suscrito y construye la lista por medio de la

cual el Cliente puede acceder a la lista de productos de una empresa determinada.

Estos datos son desplegados al Cliente en la Client page ListaEmpresas.

La Client page ListaEmpresas, únicamente, es mostrada a los Clientes debido a que

solamente estos pueden estar suscritos en más de una empresa.

El usuario puede acceder a la lista de productos de una empresa, enviando la

petición a la Server page DatosEmpresa, por medio del formulario que se encuentra

contenido en dicha Client page. De esta forma la Server page, construye una lista

de productos de la empresa y las despliega al cliente en la Client page

ListaProductos.

Un agente solamente puede acceder a la lista de productos de la empresa a la cual

representa. Esto es posible enviando la petición a la Server page DatosEmpresa,

directamente desde la Client page MenuAgente.

Una vez el usuario, (Cliente o Agente), tiene la lista de productos, puede hacer la

petición para que uno de estos sea mostrado en detalle, mediante el Form que se

encuentra en la Client page ListaProductos, éste invoca a la Server page

DatosProducto, para que esta construya la Client page Detalles producto, la cual

contiene un Form, que permite al usuario adicionar el producto al carrito de

compras; si decide hacerlo, datos como cantidad, valor y código del producto son

enviados a la Server page CarritoCompras, la cual se encarga de construir el carrito

de compras del usuario y una Client page de confirmación, la cual dispone de un

timer que invoca a la Server page DatosEmpresa para que construya la lista de

productos, en la cual se encontraba el usuario cuando adicionó el producto al carrito

de compras.

Page 20: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-16

Solamente si el usuario ha agregado, al menos, un producto al carrito de compras,

es posible acceder a él, mediante la opción que se encuentra en las Client page,

ListaProductos y ListaEmpresas, la cual solamente está disponible si existen

productos en el carrito de compras.

La Client page VistasCarrito, en la cual se muestran varias opciones, (Vista de

pedidos por artículos, vista de pedido por empresas y eliminar productos), que

permiten al usuario gestionar los productos que se encuentran en él, es construida

cuando se invoca la Server page CarritoCompras.

La Client page VistaPorArticulos es construida por la Server page CarritoCompras

cuando el usuario, realiza la petición desde el Form, contenido en la Client page

VistasCarrito. Esta Client page, muestra al usuario la información correspondiente a

Referencia, Cantidad, Valor y Valor total de todos los productos contenidos en el

carrito de compras; Además contiene un Form que permite al usuario invocar la

Server page Carrito Compras, para ver en detalle cada producto contenido en el

carrito de compras y a la Server page Realizar Pedido, para enviar la solicitud del

pedido de los productos mostrados en ésta Client page. Esta solicitud es

almacenada en la base de datos, en caso de que en la misma solicitud se envíen

productos de diferentes empresas, se almacenarán un pedido para cada empresa.

Cuando el usuario, realiza un clic sobre la referencia de un producto mostrado en la

Client page VistaPorArticulos; el Form, contenido en ella, envia la petición a la

Server page CarritoCompras la cual se encarga de construir la Client page que

contiene información, almacenada en la base de datos, del producto escogido, y la

cantidad que el usuario quiere de ese producto. Además contiene un enlace que

permite al usuario cambiar la cantidad de producto. Si decide realizar cambios,

estos son enviados a la Server page CarritoCompras,por medio de un Form. Esta

Server page realiza el cambio, actualiza el carrito de compras y construye una Client

page que indica al usuario que el cambio ha sido realizado y reenvia después de un

corto tiempo (aprox. 2 seg) al la Client page en la cual estaba antes de invocar la

Client page DetalleProductoPedido.

Page 21: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-17

También el usuario, utilizando el Form contenido en Client page VistasCarrito,

puede enviar a la Server page CarritoCompras, la solicitud de eliminar productos del

carrito de compras, En este caso, la Server page construye la Client page,

ListaEmpresasPedido, que contiene una lista de las empresas a las cuales se les va

a realizar el pedido, por medio de esta Client page el usuario puede acceder a la

lista de productos que va a pedir de una determinada empresa, enviando la

invocación, desde el Form contenido en la Client page. Esta solicitud es enviada a la

Server page CarritoCompras, la cual construye la lista de productos y la despliega al

usuario en la Client page, ListaArticulosPedidosEmpresa. Por medio del Form

contenido en esta Client page, el usuario puede hacer la petición de eliminación de

un producto del carrito de compras. Esta petición es enviada a la Server page

CarritoCompras la cual envia una Client page al usuario solicitándole la confirmación

de la eliminación del producto del carrito de compras. Si el usuario decide eliminar el

producto, la Server page reconstruye el carrito de compras y envía al usuario la

Client page ListaArticulosPedidosEmpresa, si aún existen artículos en el carrito de

compras de esa empresa, en caso de que no existan, envía al usuario la Client page

inmediatamente superior, que en este caso se trata de la Client page

ListaEmpresasPedido. En caso de que el carrito de compras llegara a quedar vacio

la Server page enviaría al usuario una aviso informándole que el carrito de compras

se encuentra vacío e inmediatamente después a la Client page desde la cual se

envió la solicitud de despliegue de la Client page VistasCarrito, (puede ser

ListaEmpresas o ListaProductos).

Page 22: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-18

Diagrama de clases RealizarPedido 2(5)

MenuCliente

Opcion : Integer

AceptarClic()CancelarClic()

(from IU_Cliente)

<<Client Page>>

MenuAgente

Opcion : Integer

AceptarClic()

(from IU_Agente)

<<Client Page>>

DetallesProducto

CodProducto : IntegerCantidad : Integer

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

LPForm

<<select>> Opcion<<submit>> Aceptar

(from Form_General)

<<Form>>

DPForm

<<submit>> Aceptar<<button>> Cancelar<<input>> Cantidad

(from Form_General)

<<Form>>

11

DatosProducto

ConstruirDetallesProducto()

(from Gestion_Producto)

<<Server Page>>

<<build>>

<<submit>>

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

MClienteForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_Cliente)

<<Form>>

11

ListaEmpresas

Opcion : String

AceptarClic()

(from IU_Cliente)

<<Client Page>>

LEForm

<<select>> Opcion<<submit>> Aceptar

(from Form_Cliente)

<<Form>>

11

ListaProductos

Opcion : String

AceptarClic()

(from IU_General)

<<Client Page>>

11

ConfirmacionAdicion

SeguirClic()Timer()

(from IU_General)

<<Client Page>>

<<build>>

MAgenteForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_Agente)

<<Form>>

11

DatosEmpresa

ConstruirListaEmpresas()ConstruirListaProductos()

(from Gestion_Empresa)

<<Server Page>>

<<submit>> <<build>>

<<submit>>

<<build>>

<<link>>

<<submit>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

<<query>>

<<query>>

<<query>>

Figura C-10. Diagrama de clases RealizarPedido, (Adicionar producto al carrito de

compras)

Page 23: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-19

Diagrama de clases RealizarPedido 3(5)

ListaProductos

Opcion : String

AceptarClic()

(from IU_General)

<<Client Page>>

ListaEmpresas

Opcion : String

AceptarClic()

(from IU_Cliente)

<<Client Page>>LPForm

<<select>> Opcion<<submit>> Aceptar

(from Form_General)

<<Form>>

11

LEForm

<<select>> Opcion<<submit>> Aceptar

(from Form_Cliente)

<<Form>>

11VistasCarrito

Opcion : String

AceptarClic()

(from IU_General)

<<Client Page>>

VCForm

<<select>> Opcion<<submit>> Aceptar

(from Form_General)

<<Form>>

11

ListaEmpresasPedido

Opcion : String

AceptarClic()

(from IU_Cliente)

<<Client Page>>

LEPForm

<<select>> Opcion<<submit>> Aceptar

(from Form_Cliente)

<<Form>>

11

VistaPorArticulos

CodProductos : VariantCantProductos : VariantValorArticulos : Variant

RealizarPedidoClic()Producto()VolverClic()

(from IU_General)

<<Client Page>>

ConfirmacionEnvioPedido

CodPedido : Integer

SeguirClic()InicioClic()

(from IU_General)

<<Client Page>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

RealizarPedido

AlmacenarPedido()ConstruirConfirmacion()

(from Gestion_Pedido)

<<Server Page>>

<<build>><<query>>

VPAForm

<<link>> CantidadProducto<<link>> RealizarPedido<<link>> Volver<<input>> CodCliente

(from Form_General)

<<Form>>

11

<<submit>>

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)

<<Server Page>>

<<submit>><<submit>>

<<build>>

<<submit>>

<<build>><<build>>

<<submit>>

<<link>>

<<query>>

<<submit>>

Figura C-11. Diagrama de clases RealizarPedido, (Enviar Pedido)

Page 24: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-20

Diagrama de clases Caso de uso RealizarPedido 4(5)

VistasCarrito

Opcion : String

AceptarClic()

(from IU_General)

<<Client Page>>

VCForm

<<select>> Opcion<<submit>> Aceptar

(from Form_General)

<<Form>>

11

ListaEmpresasPedido

Opcion : String

AceptarClic()

(from IU_Cliente)

<<Client Page>>

LEPForm

<<select>> Opcion<<submit>> Aceptar

(from Form_Cliente)

<<Form>>

11

ListaArticulosPedidosEmpresa

CodProducto : Integer

EliminarClic()EmpresasClic()

(from IU_General)

<<Client Page>>

LAPEForm

<<select>> Opcion<<submit>> Eliminar<<button>> Volver

(from Form_General)

<<Form>>

11

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

<<build>>

<<submit>>

<<build>>

<<submit>>

ConfirmacionEliminarProductos

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

<<build>>

<<link>>

Figura C-12. Diagrama de clases caso de uso RealizarPedido, (Eliminar producto del

carrito de compras)

Page 25: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-21

Diagrama de clases Caso de uso RealizarPedido 5(5)

DetallesProductoPedido

CantProducto : Integer

AceptarClic()CancelarClic()

(from IU_General)<<Client Page>>

VistaPorArticulos

CodProductos : VariantCantProductos : VariantValorArticulos : Variant

RealizarPedidoClic()Producto()VolverClic()

(from IU_General)<<Client Page>>

VPAForm

<<link>> CantidadProducto<<link>> RealizarPedido<<link>> Volver<<input>> CodCliente

(from Form_General)<<Form>>

11

DPPForm

<<submit>> Aceptar<<button>> Cancelar<<input>> NCantidad

(from Form_General)<<Form>>

11

ConfirmacionCambio

SeguirClic()Timer()

(from IU_General)<<Client Page>>

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)<<Server Page>>

<<build>>

<<build>> <<submit>>

<<submit>>

<<build>>

<<link>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

<<query>>

Figura C-13. Diagrama de clases Caso de uso RealizarPedido, (Cambiar cantidad de

producto a pedir)

Class DatosEmpresa {

ConstruirListaEmpresas() {

Query=”Consultar lista de empresas de la tabla Cliente en donde el cliente se encuentre registrado”;

Resultado=”Ejecutar consulta(query)”;

Desplegar lista resultado;

}

Construir ListaProductos(CodigoEmpresa) {

Query=”Seleccionar Nombre, codigo, referencia de la tabla productos donde codigo empresa=’CodigoEmpresa’”;

Resultado=”Ejecutar consulta(query)”;

Desplegar lista resultado;

}

Page 26: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-22

}

Class ListaEmpresas {

Var opcion;

AceptarClic() {

Switch (estaclase->opcion) {

Caso “VerCarritoCompras”

CarritoCompras ->ConstuirVistasCarrito;

Break;

Caso “VerProductos”:

DatosEmpresa->ConstruirListaProductos(estaclase ->opcion);

Break;

}

}

}

Class ListaProductos {

Var opcion;

AceptarClic() {

Switch (estaclase->opcion) {

Caso “VerCarritoCompras”

CarritoCompras ->ConstuirVistasCarrito;

Break;

Caso “VerDetalleProducto”:

DatosProducto->ConstruirDetallesProducto(estaclase ->opcion);

Break;

Caso “volver”:

DatosEmpresa->ConstruirListaEmpresas(),

Break;

}

}

}

Page 27: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-23

Class DatosProducto {

ConstruirDetallesProducto() {

Query=”Consultar Nombre, Cantidad, Empresa, Valor de la tabla productos donde Codigo=’ListaProductis->opcion’”;

Resultado=EjecutarConsulta(Query);

Desplegar datos producto;

}

}

Class DetallesProducto {

AceptarClic() {

Adicionar producto al carrito de compras;

CarritoCompras ->TipoConfirmacion=Adicion;

CarritoCompras ->ConstruirConfirmacion();

}

CancelarClic() {

Volver a la lista de productos;

}

}

Class ConfirmacionAdicion {

TimerConfimacion() { //Después de 2 segundos

DatosEmpresa->ConstruirListaProductos();

}

SeguirClic() {

DatosEmpresa->ConstruirListaProductos();

}

}

Class CarritoCompras {

Var TipoConfirmacion;

ConstruirVistasCarrito() {

Page 28: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-24

Desplegar opciones de vistas del carrito; //por artículos, por empresas, //eliminar productos, volver a //lista de empresas o lista de //productos.

}

ConstruirDetallesProductoPedido(codigo) {

Query=consultar todos los datos de la tabla productos donde codigo=’codigo’;

Resultado=Ejecutar consulta;

Desplegar resultados;

}

ConstruirListaEmpresasPedido(codigo) {

Para todos los codigos de las empresas del carrito de compras{

Query=Consultar nombre, codigo de la tabla empresas donde codigo=’codigo’;

Resultado=Ejecutar consulta;

Almacenar resultado;

}

Desplegar resultados;

}

ConstruirListaArticulosPedidosEmpresa(codigo) {

Para todos los codigos de los productos del carrito de compras donde codigo = ‘codigo’ {

Query consultar nombre, codigo de la tabla productos donde codigo=’codigo’;

Resultado=Ejecutar consulta;

Almacenar resultado;

}

Desplegar resultado;

}

ConstruirVistaPorArticulos(CodigoEmpresa) {

Si CodigoEmpresa=”” {

Desplegar los datos de los productos almacenados en el carrito de compras;

Calcular valores totales; //Valor total del pedido;

Desplegar valores totales;

}

Page 29: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-25

}

ConstruirConfirmaciones() {

Switch (estaclase->TipoConfirmacion) {

Caso “Adicion”:

Desplegar “Articulo adicionado”;

IniciarTimer;

Break;

Caso “Cambio”:

Desplegar “Cambio realizado”;

IniciarTimer;

Break;

Caso “Eliminar”:

Desplegar “Esta seguro de que desea eliminar el (los) producto(s) del carrito de compras?”;

Desplegar Boton Aceptar;

Desplegar Boton Cancelar;

Break;

}

}

EliminarProducto(codigo) {

Borrar de la lista de productos el articulo de codigo = codigo;

}

}

Class VistaPorArticulos {

Var CodProductos;

Var CantProductos;

Var ValorArticulos;

Var CodigoP;

RealizarPedidoClic(){

RealizarPedido->AlmacenarPedido();

RealizarPedido->ConstuirConfirmacion();

}

ProductoClic() {

Page 30: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-26

CarritoCompras ->ConstuirDetallesProductoPedido(estaclase->CodigoP);

}

VolverClic() {

Si PaginaAnterior==Empresas {

DatosEmpresa->ConstuirListaEmpresas();

}

Si no {

DatosEmpresa->ConstuirListaProductos();

}

}

}

Class ListaEmpresasPedido {

Var Opcion;

AceptarClic(tipo) {

Si tipo==eliminar {

CarritoCompras ->ConstuirListaArticulosPedidoEmpresa(estaclase->Opcion);

}

else {

CarritoCompras ->ConstruirVistaPorArticulos(estaclase->Opcion);

}

}

}

Class ConfirmacionEnvioPedido {

Si CarritoCompras <> Vacio {

SeguirClic() {

CarritoCompras ->ConstruirVistasCarrito();

}

}

else {

Si ValidarAccesoUsuario ->Login == Cliente {

DatosCliente->ConstruirIUCliente();

Page 31: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-27

}

Else{

DatosAgente->ConstruirIUAgente();

}

}

}

Class RealizarPedido {

AlmacenarPedido() {

CodigosProductos= VistaPorArticulos->CodProductos;

CantProductos= VistaPorArticulos->CantProductos;

ValorProductos=VistaPorArticulos->ValorArticulos;

Query=”Almacenar en la base de datos ProductoPedido CodigosProductos, CantidadProductos, ValorProductos, CodigoCliente, CodigoAgente, Fecha”;

EjecutarConsulta;

EstaClase->ConstruirConfirmacion();

}

ConstruirConfirmacion() {

Desplegar “Pedido realizado”;

Query= ”Seleccionar codigo del ultimo item insertado, por este usuario, en la tabla pedido”;

Resultado=EjecutarConsulta;

Almacenar resultado;

Desplegar “Codigo del pedido: ‘Resultado[0]’”;

}

}

Class DetallesProductoPedido {

AceptarClic(CodigoProducto) {

ActualizarCantidadProductoCarritoCompras;

CarritoCompras ->CosntruirConfirmaciones(“Cambio”);

}

CancelarClic() {

CarritoCompras ->ConstruirDetallesProductoPedido();

}

Page 32: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-28

}

Class ConfirmacionCambio {

TimerConfimacion() { //Después de 2 segundos

CarritoCompras ->ConstruirDetallesProductoPedido();

}

SeguirClic() {

CarritoCompras ->ConstruirDetallesProductoPedido();

}

}

Class ListaArticulosPedidosEmpresa {

EliminarClic() {

CarritoCompras ->EliminarProducto();

}

EmpresasClic() {

CarritoCompras ->ConstruirListaEmpresasPedido;

}

}

Class ListaEmpresasPedido {

Var Opcion;

AceptarClic() {

CarritoCompras ->ConstruirListaArticulosPedidosEmpresa(estaclase ->opcion);

}

}

Class ConfirmacionEliminarProductos {

AceptarClic() {

Si ya no hay mas articulos de la empresa actual {

CarritoCompras -> ConstruirListaArticulosPedidosEmpresa();

}

Si no si hay articulos todavia{

CarritoCompras ->ConstruirListaEmpresasPedido();

Page 33: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-29

}

Si no {

Si ValidarAccesoUsuario ->Login == Cliente {

DatosCliente->ConstruirIUCliente();

}

Else {

DatosAgente->ConstruirIUAgente();

}

}

}

CancelarClic() {

CarritoCompras ->ConstruirListaEmpresasPedido();

}

}

Page 34: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-30

C.2.3 Caso de uso BuscarPedido

Diagrama de clases Caso de uso BuscarPedido 1(3)

MenuCliente(from IU_Cliente)

<<Client Page>>

MenuAgente(from IU_Agente)

<<Client Page>>

CPForm(from Form_General)

<<Form>>L5PForm

(from Form_General)

<<Form>>

CarritoCompras(from Gestion_Pedido)

<<Server Page>>

<<submit>> <<submit>>

ConfirmacionCancelacion(from IU_General)

<<Client Page>><<build>>

DatosCliente(from Gestion_Usuario)

<<Server Page>>

DatosAgente(from Gestion_Usuario)

<<Server Page>>

MClienteForm(from Form_Cliente)

<<Form>>

11

MAgenteForm(from Form_Agente)

<<Form>>

11

CodigoCliente(from IU_Agente)

<<Client Page>>

InicialEmpresa(from IU_Cliente)

<<Client Page>>

ListaEmpresasInicial(from IU_Cliente)

<<Client Page>>

CodigoPedido(from IU_General)

<<Client Page>>

11

CCForm(from Form_Agente)

<<Form>>11

IEForm(from Form_Cliente)

<<Form>>

11

LEIForm(from Form_Cliente)

<<Form>>

11

Lista5Pedidos(from IU_General)

<<Client Page>>

11

TipoBusqueda(from IU_General)

<<Client Page>>TBForm

(from Form_General)

<<Form>>

11

CCancelacionForm(from Form_General)

<<Form>>

11

<<submit>>

<<submit>>

API_PHPMySQL(from PHP)

<<PHP>>

RealizarBusqueda(from Gestion_Pedido)

<<Server Page>><<submit>>

<<submit>>

<<build>>

<<build>>

<<build>>

<<build>>

<<submit>>

<<submit>>

<<submit>>

<<build>><<build>> <<submit>>

<<submit>>

<<query>>

Figura C-14. Diagrama de clases, caso de uso BuscarPedido

Cuando el Cliente o Agente, desde su respectiva Client page (MenuCliente,

MenuAgente) invoca la interfaz de búsqueda de pedido, la server page

RealizarBusqueda, atiende la solicitud.

Si se trata de un agente, la Server page RealizarBusqueda, construira la Client page

CodigoCliente, la cual contiene un Form, para enviar el codigo del cliente, a nombre

quien se encuentra el pedido que desea buscar. Cuando el Agente retorna el código

del cliente a la server page, esta se encarga de construir otra Client page,

TipoBusqueda, por medio de la cual el usuario puede escoger el criterio de

búsqueda de pedido, (por código o listar los 5 últimos pedidos), esto es enviado a la

Server page utilizando el Form, Tbform, contenido en la Client page. Si escoge la

opción de búsqueda por código. La Server page, construye la Client page

Page 35: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-31

CodigoPedido, que contiene un Form, por medio del cual el Agente puede enviar a

la Server page CarritoCompras el código del pedido que desea ver, de esta forma,

se muestra el pedido en la Client page VistaPorArticulos. De la misma forma si el

Agente escoge la opción, listar los últimos 5 pedidos, la server page

RealizarBusqueda construira, la Client page Lista5Pedidos, la cual contiene una lista

de los últimos 5 pedidos realizados a la empresa. Por medio del Form contenido en

esta Client page el Agente puede enviar el Código del pedido que desea ver a la

Server page CarritoCompras, para que construya la Client page VistaPorArticulos.

En el caso de Cliente la Server page RealizarBusqueda, construye la Client page,

InicialEmpresa, por medio de la cual y valiéndose del Form contenido en ella, el

cliente debe introducir un caracter o caracteres, con los que inicia la empresa a la

cual realizó el pedido que desea ver. Esta inicial es enviada de nuevo a la server

page para que esta construya la Client page ListaEmpresasInicial, la cual contiene

una lista de las empresas a las cuales el cliente esta suscrito y que su nombre

empieza por el(los) caracter(es) introducido(s). Además esta Client page contiene

un Form, por medio del cual el Cliente envía a la Server page la inicial de la

empresa, es decir solamente se buscarán pedidos de la empresa seleccionada. A

continuación la Server page construye la Client page TipoBusqueda y el

procedimiento a seguir es exactamente el mismo que el del agente, desde esta

Client page en adelante.

Page 36: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-32

Diagrama de clases Caso de uso BuscarPedido 2(3)

MenuCliente

Opcion : Integer

AceptarClic()CancelarClic()

(from IU_Cliente)

<<Client Page>>

CPForm

<<input>> CodigoPedido<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

L5PForm

<<select>> ListaPedidos<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

<<submit>>

MClienteForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_Cliente)

<<Form>>

11

InicialEmpresa

InicialEmpresa : String

AceptarClic()CancelarClic()

(from IU_Cliente)

<<Client Page>>IEForm

<<select>> InicialEmpresa<<submit>> Aceptar<<button>> Cancelar

(from Form_Cliente)

<<Form>>

11

ListaEmpresasInicial

Opcion

AceptarClic()CancelarClic()

(from IU_Cliente)

<<Client Page>>

LEIForm

<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar

(from Form_Cliente)

<<Form>>

11

TipoBusqueda

Opcion

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>TBForm

<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

11

CodigoPedido

CodigoPedido : String

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

11

Lista5Pedidos

CodigoPedido

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

11

RealizarBusqueda

ConstruirIUCodigoCliente()ConstruirIUInicialEmpresa()ConstruirListaEmpresas()ConstruirIUIntroduccionCodigoPedido()ConstruirLista5UltimosPedidos()ConstruirTipoBusqueda()BuscarPedido()ConstruirCodigoPedido()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

<<build>> <<submit>>

<<build>>

<<submit>>

<<build>><<submit>>

<<build>>

<<build>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

<<query>>

Figura C-15. Diagrama de clases, caso de uso BuscarPedido, (búsqueda de pedido por

un cliente)

Page 37: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-33

Diagrama de clases Caso de uso BuscarPedido 3(3)

MenuAgente

Opcion : Integer

AceptarClic()

(from IU_Agente)

<<Client Page>>

CPForm

<<input>> CodigoPedido<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

CarritoCompras

ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

L5PForm

<<select>> ListaPedidos<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

<<submit>>

MAgenteForm

<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar

(from Form_Agente)

<<Form>>

11

CCForm

<<input>> CodigoCliente<<submit>> Aceptar<<button>> Cancelar

(from Form_Agente)

<<Form>>

TipoBusqueda

Opcion

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>TBForm

<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar

(from Form_General)

<<Form>>

11

CodigoPedido

CodigoPedido : String

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

11

Lista5Pedidos

CodigoPedido

AceptarClic()CancelarClic()

(from IU_General)

<<Client Page>>

11

CodigoCliente

CodigoCliente : String

AceptarClic()CancelarClic()

(from IU_Agente)

<<Client Page>>

11

RealizarBusqueda

ConstruirIUCodigoCliente()ConstruirIUInicialEmpresa()ConstruirListaEmpresas()ConstruirIUIntroduccionCodigoPedido()ConstruirLista5UltimosPedidos()ConstruirTipoBusqueda()BuscarPedido()ConstruirCodigoPedido()

(from Gestion_Pedido)

<<Server Page>>

<<submit>>

<<build>><<submit>>

<<build>>

<<build>> <<build>>

API_PHPMySQL

mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()

(from PHP)

<<PHP>>

<<query>>

Figura C-16. Diagrama de clases, Caso de uso BuscarPedido, (búsqueda por agente)

Class CodigoCliente {

Var CodigoCliente;

AceptarClic() {

RealizarBusqueda->ConstruirTipoBusqueda();

}

CancelarClic() {

DatosAgente->ConstruirIUAgente();

}

}

Page 38: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-34

Class InicialEmpresa {

Var InicialEmpresa;

AceptarClic() {

RealizarBusqueda->ConstruirListaEmpresas(estaclase->InicialEmpresa);

}

CancelarClic() {

DatosCliente->ConstruirIUCliente();

}

}

ClassListaEmpresasInicial {

Var Opcion;

AceptarClic(){

RealizarBusqueda->ConstruirTipoBusqueda(estaclase->Opcion);

}

CancelarClic() {

RealizarBusqueda->ConstruirIUInicialEmpresas();

}

}

Class TipoBusqueda {

Var Opcion;

AceptarClic() {

Si estaclase->Opcion == “BusquedaPorCodigo” {

RealizarBusqueda->ConstruirIUIntroduccionCodigoPedido();

}

Si no {

RealizarBusqueda->ConstruirLista5UltimosPedidos();

}

}

CancelarClic() {

Si ValidarAccesoUsuario->Login=”Cliente” {

Page 39: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-35

RealizarBusqueda->ConstruirListaEmpresas;

}

Si no {

RealizarBusqueda->ConstruirIUCodigoCliente;

}

}

}

Class CodigoPedido {

Var CodigoPedido;

AceptarClic() {

Query=”Consultar todos lo datos de la tabla pedido donde codigo=’codigo’”;

Resultado=Ejecutar consulta (Query);

AlmacenarResultado;

CarritoCompras ->ConstruirVistaPorArticulos(Resultado);

}

CancelarClic() {

RealizarBusqueda->CosntruirTipoBusqueda();

}

}

Class Lista5Pedidos {

Var CodigoPedido;

AceptarClic() {

Query=”Consultar todos lo datos de la tabla pedido donde codigo=’codigo’”;

Resultado=Ejecutar consulta (Query);

AlmacenarResultado;

CarritoCompras ->ConstruirVistaPorArticulos(Resultado);

}

CancelarClic() {

RealizarBusqueda->CosntruirTipoBusqueda();

}

}

Page 40: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-36

Class RealizarBusqueda {

ConstruirIUCodigoCliente() {

Desplegar input;

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

ConstruirIUInicialEmpresa() {

Desplegar input

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

ConstruirListaEmpresas(CodigoCliente, Inicial) {

Query="Seleccionar todas las empresas en las que se encuentre registrado el cliente con codigo='codigo' y empiecen por='Inicial'";

Resultado=Ejecutar consulta(query);

AlmacenarResultado;

Desplegar resultado;

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

CosntruirIUIntroduccionCodigoPedido() {

Desplegar input;

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

ConstruirLista5UltimosPedidos(CodigoCliente, CodigoEmpresa) {

Query="Seleccionar codigo de los ultimos 5 registro de la tabla pedido donde CodigoCliente = 'CodigoCliente' y CodigoEmpresa ='CodigoEmpresa'";

Resultado=Ejecutar consulta(Query);

Desplegar resultado;

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

ConstruirTipoBusqueda() {

Page 41: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-37

Desplega select;

Desplegar boton Aceptar;

Desplegar boton Cancelar;

}

C.3 DIAGRAMAS INTERACCIÓN DEL SISTEMA

C.3.1 Caso de uso ValidarAcceso

: Cliente

: MenuPrincipal

: MPForm : ValidarAcceso

: ValidarAccesoUsuario

: VAForm : DatosCliente : API_PHPMySQL

: MenuCliente

1: AceptarClic( )

2: Activa

3: CosntruirIUValidarA( )4: Activa

7: Activa

8: ConstruirIUCliente( )

9: mysql_query( )

11: mysql_fetch_row( )

10: mysql_num_rows( )

12: mysql_free_result( )

13: Activa

5: Muestra

6: AceptalClic( )

14: Muestra

MSC Validar Acceso 1(2)

Figura C-17. Carta de secuencias de mensajes Validar acceso Cliente.

Page 42: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-38

MSC Validar Acceso 2(2)

: MPForm

: Agente

: MenuPrincipal

: ValidarAcceso

: ValidarAccesoUsuario

: VAForm : DatosAgente : API_PHPMySQL

: MenuAgente

1: AceptarClic( )

2: Activa

3: CosntruirIUValidarA( )4: Activa

5: Muestra

6: AceptalClic( )

7: Activa

8: ConstruirIUAgente( )

9: mysql_query( )

11: mysql_fetch_row( )

10: mysql_num_rows( )

12: mysql_free_result( )

13: Activa

14: Muestra

Figura C-18. Carta de secuencia de mensajes Validar acceso, Agente

C.3.2 Caso de uso ModificarContraseña

Ver página siguiente...

Page 43: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-39

: Cliente : MenuCliente : MCliente

Form : ModificarContraseña

: IUModificarContraseña

: IUMCForm : ModificarDatos

: IUConfirmacion

: DatosCliente

1: AceptarClic( )

2: Activa

3: ContruirIUModificarContraseña( )

4: Activa

5: Muestra

6: AceptarClic( )7: Activa

8: ConstruirIUConfirmacion( )

9: Activa

11: timerConfirmacion( )

10: Muestra

12: ConstruirIUCliente( )

13: Activa

14: Muestra

MSC Modificar Contraseña 1(2)

Figura C-19. Carta de secuencia de mensajes Modificar Contraseña Cliente

MSC Modificar Contraseña 2(2)

: Agente : MenuAgente : MAgente

Form : ModificarContraseña

: IUModificarContraseña

: IUMCForm : ModificarDatos

: IUConfirmacion

: DatosAgente

1: AceptarClic( )

14: Muestra

2: Activa

3: ContruirIUModificarContraseña( )

4: Activa

5: Muestra

6: AceptarClic( )7: Activa

8: ConstruirIUConfirmacion( )

9: Activa

11: timerConfirmacion( )

10: Muestra

12: ConstruirIUAgente( )

13: Activa

Figura C-20. Carta de secuencia de mensajes Modificar Contraseña Agente

Page 44: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-40

C.3.3 Caso de uso RealizarPedido

Ver página siguiente...

Page 45: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-41

MSC RealizarPedido 1(7)

: Cliente

: MenuCliente : MClienteForm

: DatosEmpresa

: ListaEmpresas

: LEForm : ListaProductos

: LPForm : DatosProducto

: DetallesProducto

: DPForm : CarritoCompras

: Confirmacion

: API_PHPMySQL

1: AceptarClic( )2: Activa

3: ConstruirListaEmpresas( )

8: Activa9: Muestra

10: AceptarClic( )11: Activa

12: ConstruirListaProductos( )

17: Activa

18: Muestra

19: AceptarClic( )20: Activa

21: ConstruirDetallesProducto( )

26: Activa27: Muestra

28: AceptarClic( )29: Activa

30: ConstruirConfirmaciones(Adicion)

31: Activa

32: Muestra

33: Timer( )

34: ConstruirListaProductos( )

35: Activa

36: Muestra

4: mysql_query( )

5: mysql_num_rows( )

6: mysql_fetch_row( )

7: mysql_free_result( )

13: mysql_query( )

14: mysql_num_rows( )

15: mysql_fetch_row( )

16: mysql_free_result( )

22: mysql_query( )

23: mysql_num_rows( )

24: mysql_fetch_row( )

25: mysql_free_result( )

Figura C-21. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Cliente

Page 46: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-42

MSC RealizarPedido 2(7)

: Agente

: MenuAgente : MAgenteForm

: DatosEmpresa

: ListaProductos

: LPForm : DatosProducto

: DetallesProducto

: DPForm : CarritoCompras

: Confirmacion

: API_PHPMySQL

1: AceptarClic( )

2: Activa

8: Activa

9: Muestra

10: AceptarClic( )

26: Activa27: Muestra

11: Activa

12: ConstruirDetallesProducto( )

17: Activa18: Muestra

19: AceptarClic( )20: Activa

21: ConstruirConfirmaciones(Adicion)

22: Activa

23: Muestra

24: Timer( )

25: ConstruirListaProductos( )

4: mysql_query( )

5: mysql_num_rows( )

6: mysql_fetch_row( )

7: mysql_free_result( )

13: mysql_query( )

14: mysql_num_rows( )

15: mysql_fetch_row( )

16: mysql_free_result( )

3: ConstruirListaProductos( )

Figura C-22. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Agente

Page 47: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-43

MSC RealizarPedido 3(7)

: Cliente : VistasCarrito : VCForm : Carrito

Compras : VistaPorArticulos

: VPAForm : RealizarPedido

: Confirmacion

: API_PHPMySQL

1: AceptarClic( )2: Activa

3: ConstuirVistaPorArticulos(argname)

4: Activa5: Muestra

6: RealizarPedidoClic( )7: Activa

8: AlmacenarPedido()

10: ConstruirConfirmacion()

11: Activa

12: Muestra

13: SeguirClic( )

14: ConstruirVistasCarrito()

15: Activa

16: Muestra

9: mysql_query( )

Figura C-23. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Cliente

Page 48: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-44

MSC RealizarPedido 4(7)

: Agente : VistasCarrito : VCForm : Carrito

Compras : VistaPorArticulos

: VPAForm : RealizarPedido

: Confirmacion

: API_PHPMySQL

: CCForm : CodigoCliente

1: AceptarClic( )

25: Muestra

2: Activa

3: ConstuirVistaPorArticulos(argname)

24: Activa

4: Activa5: Muestra

6: RealizarPedidoClic( )7: Activa

8: ConstruirCodigoCliente

19: ConstruirConfirmacion()

20: Activa

21: Muestra

22: SeguirClic( )

23: ConstruirVistasCarrito()

14: mysql_query( )

9: Activa10: Muestra

11: AceptarClic()12: Activa

13: ConsultarCodigoCliente( )

17: AlmacenarPedido(argname)

18: mysql_query( )

15: mysql_fetch_row( )

16: mysql_free_result( )

Figura C-24. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Agente

Page 49: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-45

MSC RealizarPedido 5(7)

: Cliente : VistasCarrito : VCForm : Carrito

Compras : Lista

Empresas : LEPForm : Lista

Articulos : LAPEForm :

Confirmacion

1: AceptarClic(Opcion)

2: Activa

3: ContstruirListaEmpresasPedido()

4: Activa

5: Muestra

6: AceptarClic( )7: Activa

8: ConstruirListaArticulosPedidosEmpresa()

9: Activa

10: Muestra

11: EliminarClic( )

12: Activa

13: ConstruirConfirmaciones("Eliminar")

14: Activa

15: Muestra

16: AceptarClic( )

17: ConstruirVistasCarrito()

18: Activa19: Muestra

Figura C-25. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Cliente

Page 50: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-46

MSC RealizarPedido 6(7)

: VistasCarrito : Agente

: VCForm : CarritoCompras

: ListaArticulos

: LAPEForm : Confirmacion

1: AceptarClic(Opcion)

2: Activa

3: ConstruirListaArticulosPedidosEmpresa()

13: Activa14: Muestra

4: Activa5: Muestra

6: EliminarClic( )

7: Activa

8: ConstruirConfirmaciones(argname)

9: Activa

10: Muestra

11: AceptarClic( )

12: ConstruirVistasCarrito()

Figura C-26. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Agente

Page 51: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-47

MSC RealizarPedido 7(7)

: Cliente

: VistaPorArticulos

: VPAForm : CarritoCompras

: DetallesProducto

: DPPForm : Confirmacion

: API_PHPMySQL

1: Producto( )2: Activa

3: ConstruirDetallesProductoPedido(Codigo)4: mysql_query( )

5: mysql_fetch_row( )

6: mysql_free_result( )

7: Activa

10: Activa

8: Muestra

9: AceptarClic()

11: ConstruirConfirmaciones(Cambio)

12: Activa

13: Muestra

14: Timer( )

15: ConstuirVistaPorArticulos()16: Activa

17: Muestra

Figura C-27. Carta de secuencia de mensajes Realizar Pedido, modificar cantidad de un producto Cliente/Agente

Page 52: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-48

C.3.3 Caso de uso BuscarPedido

MSC BucarPedido 1(2)

: Cliente

: MenuCliente : MClienteForm

: RealizarBusqueda

: InicialEmpresa

: IEForm : ListaEmpresas

: LEIForm : TipoBusqueda

: TBForm : Lista5Pedidos

: L5PForm : CarritoCompras

: API_PHPMySQL

1: AceptarClic( )

2: Activa

3: ConstruirIUInicialEmpresa( )4: Activa

5: Muestra

6: AceptarClic(codigo)7: Activa

8: ConstruirListaEmpresas( )

13: Activa

14: Muestra

15: AceptarClic(codigo)16: Activa

17: ConstruirTipoBusqueda( )

18: Activa

19: Muestra

20: AceptarClic(Opcion)

25: Activa26: ConstruirLista5UltimosPedidos( )

27: Activa

28: Muestra

29: AceptarClic(Codigo)

30: Activa

31: ConstuirVistaPorArticulos(argname)

9: mysql_query( )

10: mysql_num_rows( )

11: mysql_fetch_row( )

12: mysql_free_result( )

21: mysql_query( )

22: mysql_num_rows( )

23: mysql_fetch_row( )

24: mysql_free_result( )

Figura C-28. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Cliente

Page 53: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-49

MSC BucarPedido 2(2)

: MAgenteForm

: Agente

: MenuCliente : RealizarBusqueda

: CCForm : TipoBusqueda

: TBForm : CodigoPedido

: CPForm : CarritoCompras

: API_PHPMySQL

1: AceptarClic( )2: Activa

3: ConstruirIUCodigoCliente( )

8: ConstruirTipoBusqueda( )

9: Activa

10: Muestra

11: AceptarClic(Opcion)

12: Activa

: CodigoCliente

4: Activa5: Muestra

6: AceptarClic(codigo)7: Activa

19: mysql_query( )

20: mysql_num_rows( )

21: mysql_fetch_row( )

22: mysql_free_result( )

13: ConstruirCodigoPedido( )

14: Activa

15: Muestra

16: AceptarClic(Codigo)

17: Activa

18: BuscarPedido( )

23: ConstuirVistaPorArticulos()

Figura C-29. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Agente

Page 54: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-50

C.4 DIAGRAMA DE IMPLANTACIÓN

Figura C-30. Diagrama de implantación

Este diagrama ilustra la distribución física de los componentes del sistema. En

primer lugar están las Client page desplegadas en el dispositvo móvil, mediante

invocaciones realizadas al servidor de aplicación; en segundo lugar se encuentra

una gateway WAP la cual hace posible el intercambio de información entre la red fija

y la red móvil. Seguidamente está el servidor de aplicaciones el cual alberga las

Server page encargadas de construir las Client page. Finalmente se encuentra el

servidor de base de datos el cual podría estar implementado en el mismo servidor

de aplicación; sin embargo se ilustra de forma separada para describir el caso más

general. A continuación se describe en detalle cada uno de estos componentes.

Dispositivo móvil: El dispositivo para el cual fue desarrollada la aplicación, es el

R280d de Ericsson, la descripción técnica del dispositivo es la siguiente:

Tipo de acceso CDPD, TDMA2.

Versión del naegador Openwave 3.1

2 En Colombia se hace a través de CDPD.

Page 55: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-51

Resolución de la pantalla 101 x 40 pixels

Tamaño del despliegue 3 filas x 15 columnas

Máximo tamaño de. PDU, (Protocol Data Unit) 1492

Tabla C-1. Descripción técnica del R280d de Ericsson.

Servidor de aplicaciones y de base de datos: Es un PC con sistema operativo

windows2000 professional, con Apache Web Server, como servidor web; MySQL,

como gestor de base de datos y PHP, como lenguaje scripting de WML embebido.

En el diagrama también indican los protocolos de comunicación entre componentes

hardware. Entre el dispositivo móvil y la gateway se utiliza WAP, (Wireless

Application Protocol) y entre la gateway y el servidor de aplicaciones se utiliza

TCP/IP. Debido a que el servidor de base de datos se encuentra en el mismo

servidor de aplicaciones se utiliza el API de PHP para MySQL, para la comunicación

entre la aplicación y la base de datos.

C.5 DISEÑO DE LA BASE DE DATOS

A partir de las entidades descritas en el “Análisis del software”, se construyó el

siguiente diagrama de entidad relación:

Page 56: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-52

Diagrama del paquete datos 1(1)

Producto

Codigo : IntNombre : StringValor : IntExistencias : IntDescripcion : TextCodigoEmpresa : IntReferencia : StringEstado : String

AdicionarCarrito()

<<Entity>>

Empresa

Codigo : IntNombre : StringCorreo : StringCiudad : StringDireccion : StringAdministrador : StringContraseña : StringTelefono : StringDescripcion : TextFax : StringEstado : IntNombreReferencia : String

<<Entity>>

ClienteCodigo : IntNombre : StringTelefono : IntCiudad : StringCorreo : StringEmpresasAfiliadas : VariantNombreUsuario : StringContraseña : PasswordDireccion : String

<<Entity>>

PedidoCodigo : IntCodigoEmpresa : IntCodigoTransaccion : IntEstado : StringObservacion : StringReferencia : StringProductoPedido : VariantValorProductoPedido : VariantCantidadProductoPedido : VariantCodigoCliente : IntCodigoAgente : Int

Pedir()Buscar()Modificar()Cancelar()Reenviar()

<<Entity>>

1

0..*

1

0..*

Agente

Codigo : IntNombre : StringE_mail : StringCiudad : StringDireccion : StringTelefono : IntTipo : IntContraseña : StringCodigoEmpresa : IntDescripcion : Text

<<Entity>>

1..*

1..*

1..*

1..*

1

0..*

1

0..*

Figura C-31. Diagrama del paquete de datos, "Análisis del Software"

Page 57: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-53

Empresa

Agente

Pedido

Cliente

Transaccion

Productos

Figura C-32. Diagrama Entidad-Relación

Destruyendo las relaciones muchos a muchos finalmente la base de datos es como

sigue:

Empresa

Agente

Pedido

Cliente

Transaccion

Productos

producto_pedido

cliente_agente

cliente_empresa

Figura C-33. Diagrama Entidad-Relación, normalizado

Page 58: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-54

Los atributos para cada tabla son, (los campos subrayados corresponden a la clave

primaria de la tabla):

adminsx

Campo Tipo

Codigo int(11)

Nombre varchar(100)

IdCiudad int(11)

Login varchar(15)

Password varchar(15)

Direccion varchar(100)

Telefono varchar(30)

E_mail varchar(50)

Estado int(11)

Tabla C-2. Tabla adminsx, (Administrador del sistema)

agente

Campo Tipo

Codigo int(11)

CodigoEmpresa int(11)

IdCiudad int(11)

Nombre char(50)

Login char(30)

Password char(30)

Tipo enum('Visitador', 'Repartidor')

Direccion char(30)

Telefono char(20)

E_mail char(50)

Tabla C-3. Tabla agente

Page 59: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-55

Cliente

Campo Tipo

Codigo int(11)

IdCiudad int(11)

Nombre char(50)

Login char(30)

Password char(30)

Direccion char(30)

Telefono char(20)

E_mail char(50)

Tabla C-4. Tabla Cliente

cliente_agente

Campo Tipo

CodigoCliente int(11)

CodigoAgente int(11)

Tabla C-5. Tabla cliente_agente

cliente_empresa

Campo Tipo

CodigoCliente int(11)

CodigoEmpresa int(11)

Id tinyint(4)

Tabla C-6. Tabla cliente_empresa

empresa

Campo Tipo

Codigo int(11)

Nombre varchar(100)

Administrador varchar(80)

IdCiudad int(11)

Password varchar(15)

Descripcion text

Direccion varchar(100)

Telefono varchar(30)

E_mail varchar(50)

Fax varchar(30)

Estado int(11)

NombreRef varchar(4)

Tabla C-7. Tabla empresa

Page 60: PAQUETES DE DISEÑO

ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL

C-56

pedido

Campo Tipo

Codigo int(11)

CodigoEmpresa int(11)

CodigoTransaccion int(11)

Estado int(11)

Observacion text

Referencia varchar(30)

Tabla C-8. Tabla pedido

producto

Campo Tipo

Codigo int(11)

CodigoEmpresa int(11)

Referencia varchar(30)

Nombre varchar(30)

Descripcion text

Valor int(11)

Existencias int(11)

Estado int(11)

Tabla C-9. Tabla producto

productopedido

Campo Tipo

CodigoProducto int(11)

CodigoPedido int(11)

Cantidad int(11)

Precio int(11)

Tabla C-10. Tabla productopedido

transaccion

Campo Tipo

Codigo Int(11)

CodigoCliente Int(11)

Fecha date

CodigoAgente Int(11)

Tabla C-11. Tabla transaccion