Está en la página 1de 24

Taller Gestión Almacén

Modelo de clases del


sistema

Fecha de entrega
02/12/2004

Realizado por:
Álvarez Román, Santiago

Castañón Rodríguez, Alvaro

Corchero Rubio, Rosa María

Diez Diez, Ana

Díez González, Javier


ÍNDICE

1.- Enunciado de los requisitos de la práctica ............................................ 2

2.- Diagrama de clases ............................................................................... 5

3.- Descripción de las clases....................................................................... 6

4.- Aspectos más interesantes del diseño del diagrama ............................. 8

5.- Informe generado por la herramienta AdamCase .................................. 9

1
1. Enunciado de los requisitos de la práctica
Se desea realizar la gestión de un negocio de distribución de productos
en exclusiva de alimentación. Para ello se pide:

1. Gestión clientes
Los clientes pueden ser personas jurídicas o físicas. Los datos que interesa
mantener de los clientes son un código único de cliente, nombre, razón social,
dirección, lista de teléfonos de contacto, ciudad, código postal, CIF/NIF, la
forma de pago (que puede ser contado o crédito; si fuera crédito puede hacerlo
por domiciliación bancaria, enviando talón o por cobrador), comentarios.
Los clientes pueden darse de alta, modificarse y darse de baja. Dar de baja a
un cliente supone desactivarlo no eliminarlo de la base de datos.

2. Gestión de proveedores
De los proveedores interesa mantener los siguientes datos: un código único,
nombre, razón social, dirección, ciudad, código postal, lista teléfonos, fax,
CIF/NIF.
Los proveedores pueden darse de alta, modificarse y darse de baja. Dar de
baja un proveedor supone desactivarlo a él y a los productos que sirve.

3. Gestión de artículos
Los artículos se dividen en familias. Cada familia se caracteriza por un código y
una descripción.
Cada artículo se compone de un código, nombre, IVA que se le aplica, precio
de coste, precio de venta, número de unidades.
Cada artículo lo sirve un único proveedor.
Los artículos pueden darse de alta, modificarse y darse de baja. Dar de baja un
producto supone desactivarlo no eliminarlo de la base de datos.

4. Gestión de albaranes
Un albarán es un documento que recoge los datos de una venta a un cliente.

2
Un albarán estaría formado por una cabecera, por unas líneas de albarán y por
un pie con los totales.
La cabecera tiene el número de albarán, los datos del cliente que se estimen
oportunos y la fecha de creación del albarán.
Cada línea del albarán consta del código y la descripción del artículo, el
número de unidades, el precio de venta (que puede diferir del precio de venta
recogido en la definición del artículo), el número de unidades bonificadas (las
unidades bonificadas son unidades del producto que se le entregan al cliente a
mayores de las compradas a coste cero) y el importe total del artículo.
El pie recoge los totales de la siguiente forma: existirá una fila por cada base
de IVA diferente aplicado en los diferentes artículos. Cada fila tendrá cuatro
columnas, la primera indica la base de IVA aplicado, la segunda la suma de los
importes de los artículos a los que aplicarles ese IVA, la tercera el IVA, la
cuarta sería la suma de los importes con el IVA aplicado. Por último, aparecerá
el total a pagar.

De un albarán debe saberse si está pagado o no.


Los albaranes pueden crearse en cualquier momento. Un albarán puede
borrarse sólo si no existe una factura asociada. Un albarán puede modificarse
siempre, pero teniendo en cuenta que si se modifica un albarán que tiene
asociada una factura, ésta se verá modificada a su vez.

5. Gestión de facturas
Una factura recoge la información de un conjunto de albaranes pertenecientes
a un cliente. Una factura consta de una cabecera, un cuerpo de factura y un
pie de factura.
La cabecera de la factura tiene los siguientes datos: datos fiscales del emisor

3
de la factura, datos fiscales del cliente (CIF/NIF, razón social, nombre...), fecha
y número de factura (el número de factura es único y asignado por el sistema,
iniciándose cada mes de enero).
El cuerpo de la factura estaría formado por los albaranes que forman la factura,
de manera que para cada uno de ellos aparezca el número del albarán y las
líneas del albarán.
El pie de factura sería similar al pie de albarán, pero haciendo referencia a
todos los albaranes que se contemplan en dicha factura.
El proceso de facturación se lleva a cabo dando el rango de clientes a los que
se quiere facturar y un rango de fechas para seleccionar los albaranes.
Las facturas sólo pueden crearse. Si hace falta modificar su contenido se
modifican los albaranes correspondientes. Las facturas no pueden borrarse.

4
2. Diagrama de clases

5
3. Descripción de las clases
Cliente: clase que representa la información de personas que son
clientes del almacén identificadas unívocamente por codigo_cliente.
Esta clase se especializa en otras dos clases que son ClienteFisico y
ClienteJuridico, cada una de ellas identificadas por el NIF y CIF
respectivamente. Se relaciona con la clase Albarán a través de la
asociación pertenece, pudiendo tener varios albaranes, y con la clase
teléfono a través de la asociación tiene.

Albarán: clase que recoge los datos de una venta a un cliente. Un


albarán es un documento que está formado por líneas donde cada una
se corresponde con un artículo (ver siguiente Clase). Se relaciona con la
clase Cliente mediante la asociación pertenece y con Factura mediante
la asociación recoge_info_de.

Línea: recoge toda la información acerca del pedido de un artículo


a un cliente dentro de un albarán. Una o más líneas forman parte de un
albarán. A través de la asociación consta_de se relaciona con la clase
Artículo.

Factura: clase que contiene los datos acerca de un conjunto de


albaranes y los datos del cliente al cual pertenece dicha factura. Se
relaciona con la clase Albarán mediante la asociación recoge_info_de.
Una factura se compone de cabecera, cuerpo y pie, esta información se
recoge dentro de la misma clase factura.

Artículo: almacena los datos sobre los productos servidos por los
proveedores. Cada artículo es parte de una familia y es servido por un
solo proveedor. A través de la asociación consta_de se relaciona con la
clase Línea.

Familia: clase que representa la abstracción de un conjunto de


artículos con características similares.

6
Proveedor: clase que representa la información de personas que
al igual que la clase cliente se especializa en dos clases:
ProveedorFisico y ProveedorJuridico, cada uno de ellos proveedores del
almacén. Se relaciona con la clase Artículo a través de la asociación
provee y con la clase teléfono a través de la asociación tiene.

Teléfono: en este caso se mantendrá una lista de teléfonos


correspondientes a los clientes y a los proveedores, que se
referenciarán por las clases correspondientes a través de los roles
teléfono_cliente y teléfono_proveedor.

7
4. Aspectos más interesantes del diseño del diagrama
<<Enum>> FormaDePago, tipo de dato que hemos creado
especialmente para este diagrama. Los posibles valores que puede
tener son: contado, credito_domiciliacion_bancaria, credito_crobador y
credito_talon. La clase Factura deberá tener un atributo que sea
forma_de_pago de tipo FormaDePago que especifique cómo se va a
pagar dicha factura. En cliente tendremos un método pagar donde
pagaremos la factura asociada a dicho cliente y al que le pasaremos el
tipo de dato FormaDePago.

Como se puede observar en el diagrama, usamos agregación


entre Albarán y Línea; y entre Familia y Artículo. Además,
especializamos Cliente en Físico y Jurídico porque los clientes pueden
ser personas particulares o empresas.

En lugar de tener dos clases para los teléfonos de cliente y


proveedor respectivamente, agrupamos todos los teléfonos en una única
clase los cuales se distinguirán por el rol que utilizan las clases cliente y
proveedor.

8
5. Informe generado por la herramienta AdamCase
o Paquetes
ƒ BASE

Descripción: Es el paquete en que se encuentra incluido todo el


diagrama de clases, y por tanto paquete padre.

o Clases
ƒ Factura

Descripción: Recoge la información de un conjunto de albaranes


asociados a un cliente.

ƒ Atributos
ƒ fecha_factura

Tipo devuelto: date

Descripción: indica la fecha en la que se ha


generado la factura del cliente.

ƒ num_factura

Tipo devuelto: int

Descripción: forma de identificar unívocamente


las facturas del almacén.

ƒ nombre_emisor

Tipo devuelto: string

Descripción: forma de identificar a la persona que


generó la factura.

ƒ cif

Tipo devuelto: string

Descripción: atributo unívoco para identificar al


proveedor

ƒ pagado

Tipo devuelto: bool

Descripción: indica si la factura ha sido abonada


o no.

9
ƒ forma_de_pago

Tipo devuelto: FormaDePago

Descripción: Representa el método de pago


utilizado por el cliente para pagar esta factura.

ƒ Métodos
ƒ crear

Tipo devuelto: No hay tipo disponible.

Descripción: llamada a la generación de la


factura.

ƒ Albaran

Descripción: recoge los artículos adquiridos por un cliente en una


venta junto con sus datos.

ƒ Atributos
ƒ num_albaran

Tipo devuelto: int

Descripción: modo de identificar de forma única a


los albaranes.

ƒ fecha_creacion

Tipo devuelto: date

Descripción: fecha en la que se realizo la compra.

ƒ facturado

Tipo devuelto: bool

Descripción: indica si el albarán se ha incluido


dentro de una factura.

ƒ Métodos
ƒ crear_albaran

Tipo devuelto: No hay tipo disponible.

Descripción: llamada a la generación de un


albarán.

10
ƒ borrar

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para borrar el albarán


solamente si no está asociado a ninguna factura.

ƒ modificar

Tipo devuelto: No hay tipo disponible.

Descripción: método para modificar los datos del


albarán.

ƒ Linea

Descripción: cada línea está formada por una descripción breve


de un artículo, junto con su precio y otros datos.

ƒ Atributos
ƒ num_unidades

Tipo devuelto: long

Descripción: indica el número de unidades de


dicho producto que se han vendido.

ƒ precio_venta

Tipo devuelto: double

Descripción: precio al que se han vendido dichos


productos sin tener en cuenta el IVA.

ƒ unid_bonificadas

Tipo devuelto: long

Descripción: cantidad de dicho producto exento


de pago.

ƒ iva

Tipo devuelto: int

Descripción: base del IVA del producto sobre el


que se calculará el precio final.

11
ƒ Métodos
ƒ calcular_precio

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para calcular el


importe total de la factura.

ƒ FormaDePago

Descripción: clase estereotipada que indica el tipo de pago que


utilizará el cliente.

ƒ Atributos
ƒ contado

Tipo devuelto: bool

Descripción: atributo que indica que el cliente ha


pagado al contado.

ƒ credito_domicializacion_bancaria

Tipo devuelto: bool

Descripción: atributo que indica que el cliente ha


domiciliado el pago de la factura.

ƒ credito_talon

Tipo devuelto: bool

Descripción: atributo que indica que el cliente


quiere pagar mediante un talón bancario.

ƒ credito_cobrador

Tipo devuelto: bool

Descripción: indica que el cliente desea pagar el


importe mediante un cobrador de la empresa a
domicilio.

ƒ Métodos No hay métodos disponibles.

12
ƒ Cliente

Descripción: recoge los datos q interesa mantener de los clientes


del almacén.

ƒ Atributos
ƒ codigo_cliente

Tipo devuelto: long

Descripción: identificación unívoca de cada


cliente en el almacén.

ƒ nombre

Tipo devuelto: string

Descripción: nombre del cliente.

ƒ direccion

Tipo devuelto: string

Descripción: lugar de residencia del cliente.

ƒ ciudad

Tipo devuelto: string

Descripción: ciudad de residencia del cliente.

ƒ cp

Tipo devuelto: long

Descripción: código postal de la residencia del


cliente.

ƒ provincia

Tipo devuelto: string

Descripción: provincia en la que se encuentra el


domicilio del cliente.

ƒ comentarios

Tipo devuelto: string

13
Descripción: información adicional relevante
sobre el cliente.

ƒ Métodos
ƒ dar_alta

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para activar o


introducir en la base de datos a un cliente.

ƒ dar_baja

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para desactivar


temporal o definitivamente a un cliente. No
supone eliminarlo definitivamente de la base de
datos.

ƒ modificar

Tipo devuelto: No hay tipo disponible.

Descripción: método para actualizar los datos del


cliente.

ƒ pagar(FormaDePago)

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para que el cliente


pague la factura.

ƒ crear_telefono

Tipo devuelto: No hay tipo disponible.

Descripción: método para asociar un teléfono a un


cliente.

ƒ borrar_telefono

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para eliminar un


teléfono de un cliente de la base de datos.

14
ƒ Telefono

Descripción: Aquí almacenamos los teléfonos tanto de los


clientes como de los proveedores.

ƒ Atributos
ƒ num_telefono

Tipo devuelto: string

Descripción: número de teléfono del cliente o


proveedor.

ƒ Métodos
ƒ modificar

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para modificar el


número de teléfono. asociado.

ƒ ClienteFisico

Descripción: especialización de cliente en una persona particular.

ƒ Atributos
ƒ nif

Tipo devuelto: string

Descripción: atributo para identificar de forma


unívocamente a un cliente.

ƒ Métodos No hay métodos disponibles.

ƒ ClienteJuridico

Descripción: especialización de cliente en una empresa.

ƒ Atributos
ƒ cif

Tipo devuelto: string

15
Descripción: atributo para identificar de forma
única a una empresa.

ƒ Métodos No hay métodos disponibles.

ƒ Proveedor

Descripción: clase en la que almacenamos los datos de cada


proveedor.

ƒ Atributos
ƒ cod_proveedor

Tipo devuelto: long

Descripción: código que identifica a cada


proveedor.

ƒ nombre

Tipo devuelto: string

Descripción: nombre del proveedor.

ƒ direccion

Tipo devuelto: string

Descripción: dirección del proveedor.

ƒ ciudad

Tipo devuelto: string

Descripción: ciudad del proveedor.

ƒ cp

Tipo devuelto: long

Descripción: código postal de la dirección del


proveedor.

ƒ provincia

Tipo devuelto: string

16
Descripción: provincia en la que se encuentra
registrado el proveedor.

ƒ comentarios

Tipo devuelto: string

Descripción: información adicional del proveedor.

ƒ Métodos
ƒ dar_alta

Tipo devuelto: No hay tipo disponible.

Descripción: método para activar un proveedor en


la base de datos.

ƒ dar_baja

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para desactivar un


proveedor de la base de datos sin eliminarlo.

ƒ modificar

Tipo devuelto: No hay tipo disponible.

Descripción: método para modificar los datos de


un proveedor de la base de datos.

ƒ crear_telefono

Tipo devuelto: No hay tipo disponible.

Descripción: método para crear un nuevo teléfono


asociado a un proveedor.

ƒ borrar_telefono

Tipo devuelto: No hay tipo disponible.

Descripción: método para eliminar un teléfono de


la base de datos.

ƒ Familia

Descripción: Clase que generaliza artículos del mismo tipo.

17
ƒ Atributos
ƒ cod_familia

Tipo devuelto: long

Descripción: Atributo para identificar una familia


de artículos.

ƒ descripción

Tipo devuelto: string

Descripción: Comentarios sobre una determinada


familia de artículos.

ƒ Métodos
ƒ crear_familia

Tipo devuelto: No hay tipo disponible.

Descripción: Método para insertar en la base de


datos una nueva familia de artículos.

ƒ borrar_familia

Tipo devuelto: No hay tipo disponible.

Descripción: Método que elimina una familia de


la base de datos.

ƒ Articulo

Descripción: son los objetos suministrados por los proveedores y


que se dividen en familias.

ƒ Atributos
ƒ cod_artículo

Tipo devuelto: long

Descripción: atributo que identifica un tipo de


artículos.

ƒ nombre

Tipo devuelto: string

Descripción: nombre del artículo.

18
ƒ iva

Tipo devuelto: int

Descripción: base del IVA que se aplica al


artículo.

ƒ precio_costo

Tipo devuelto: int

Descripción: precio de fábrica del artículo.

ƒ precio_venta

Tipo devuelto: int

Descripción: precio de venta al público.

ƒ num_unidades

Tipo devuelto: long

Descripción: artículos en stock de ese tipo.

ƒ familia

Tipo devuelto: long

Descripción: atributo que indica la familia a la que


pertenece.

ƒ descripción

Tipo devuelto: string

Descripción: comentarios sobre el artículo.

ƒ Métodos
ƒ dar_alta

Tipo devuelto: No hay tipo disponible.

Descripción: procedimiento para activar un


artículo en la base de datos.

ƒ dar_baja

Tipo devuelto: No hay tipo disponible.

19
Descripción: método que desactiva el artículo de
la base de datos.

ƒ modificar

Tipo devuelto: No hay tipo disponible.

Descripción: función para modificar los datos del


artículo en la base de datos.

o Relaciones
ƒ Relación de tipo Agregación entre clase Lineas y clase Albaran
en diagrama Almacen

Nombre de la relación: No se ha especificado un nombre


concreto.

Descripción: un albarán está compuesto por una o varias líneas.


Éstas a su vez sólo pueden pertenecer a un albarán.

Rol origen: No hay rol origen disponible.

Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 1..n

Cardinalidad destino: 1

ƒ Relación de tipo Asociación entre clase Lineas y clase Articulo


en diagrama Almacen

Nombre de la relación: consta_de

Descripción: en una línea se recoge la información de un solo


artículo. Un mismo tipo de artículo puede aparecer en varias
líneas.

Rol origen: No hay rol origen disponible.

Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 0..n

Cardinalidad destino: 1

20
ƒ Relación de tipo Agregación entre clase Articulo y clase Familia
en diagrama Almacen

Nombre de la relación: No se ha especificado un nombre


concreto.

Descripción: los artículos están divididos en familias. Un artículo


sólo puede pertenecer a una familia.

Rol origen: No hay rol origen disponible.

Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 0..n

Cardinalidad destino: 1

ƒ Relación de tipo Asociación entre clase Proveedor y clase


Articulo en diagrama Almacen

Nombre de la relación: provee

Descripción: un artículo es servido por un único proveedor, pero


un proveedor puede servir varios artículos.

Rol origen: No hay rol origen disponible.

Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 1

Cardinalidad destino: 1..n

ƒ Relación de tipo Asociación entre clase Proveedor y clase


Teléfono en diagrama Almacen

Nombre de la relación: tiene

Descripción: un proveedor tiene una lista de teléfonos de


contacto.

Rol origen: No hay rol origen disponible.

Rol destino: telefono_proveedor

Cardinalidad origen: 0..n

21
Cardinalidad destino: 0..n

ƒ Relación de tipo Asociación entre clase Cliente y clase Teléfono


en diagrama Almacen

Nombre de la relación: tiene

Descripción: un cliente puede tener varios teléfonos de contacto.

Rol origen: No hay rol origen disponible.

Rol destino: telefono_cliente

Cardinalidad origen: 0..n

Cardinalidad destino: 0..n

ƒ Relación de tipo Asociación entre clase Albaran y clase Cliente


en diagrama Almacen

Nombre de la relación: pertenece

Descripción: un albarán recoge la información de un solo cliente


y un mismo cliente puede tener asignado varios albaranes.

Rol origen: No hay rol origen disponible.

Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 0..n

Cardinalidad destino: 1

ƒ Relación de tipo Asociación entre clase Factura y clase Albaran


en diagrama Almacen

Nombre de la relación: recoge_info_de

Descripción: una factura recoge la información de uno o varios


albaranes pero un albarán puede aparecer en una factura o no (si
no se ha facturado).

Rol origen: No hay rol origen disponible.

22
Rol destino: No hay rol Destino disponible.

Cardinalidad origen: 0..1

Cardinalidad destino: 1..n

23

También podría gustarte