Compare commits

...

3 Commits

4 changed files with 138 additions and 37 deletions

View File

@@ -193,6 +193,15 @@ Detalle --> Producto
#+RESULTS:
[[file:DiagramaConRepos.jpg]]
* Diagrama de clases sin Repositorios
#+begin_src plantuml :file DiagramaSinRepos.jpg
@startuml
@@ -215,13 +224,11 @@ class Producto {
+ Nombre: string
+ Precio: double
- Categorias: List<Categoria>?
- Lotes: List<Lote>?
+ Habilitado: bool
+ MostrarLotesDeProductos(): ReadOnlyCollection<Lote>
+ AñadirLotesStock(): bool
+ EliminarLotesStock(): bool
+ MostrarStockRemanente(): long
+ MostrarCategoriasDeProductos(): ReadOnlyCollection<Categoria>
+ AñadirCategoriasStock(): bool
+ EliminarCategoriasStock(): bool
}
class Categoria {
@@ -229,18 +236,16 @@ class Categoria {
+ Descripcion: String
}
Categoria "0..*" <--o "1 ." Producto
class Presupuesto {
+ Id: int
+ Fecha: DateTime
+ Proveedor: Proveedor
+ Monto: int
+ CantIdad: int
+ Habilitado: bool
}
- Detalles: List<DetallePresupuesto>
Presupuesto "1" --> "1..*" Lote
Proveedor "1" <-- "1 ." Presupuesto
+ MostrarDetalles(): ReadOnlyCollection<DetallePresupuesto>
+ AñadirDetalle(DetallePresupuesto): bool
}
class Proveedor {
+ Id: int
@@ -249,12 +254,10 @@ class Proveedor {
+ Habilitado: bool
}
class Detalle <where T: Producto>{
+ Id: int
+ CantIdad: int
class DetalleVenta {
+ IdFactura: int
+ PrecioUnitario: double
+ Subtotal: double
+ Producto: T
}
class Cliente {
@@ -265,28 +268,44 @@ class Cliente {
+ Correo: string
}
class Detalle <where T: Producto>{
+ Id: int
+ Producto: T
+ Cantidad: int
}
class Factura {
+ Total: double
+ Fecha: DateTime
+ Cliente: Cliente
- Detalles: List<Detalle>
- detalles: List<DetalleVenta>
+ MostrarDetalles(): ReadOnlyCollection<Detalle>
+ AñadirDetalle(Detalle): voId
+ ModificarDetalle(Detalle): voId
+ EliminarDetalle(Detalle): voId
+ MostrarDetalles(): ReadOnlyCollection<DetalleVenta>
+ AñadirDetalle(DetalleVenta): void
+ ModificarDetalle(DetalleVenta): void
+ EliminarDetalle(DetalleVenta): void
}
Cliente "1" <-- "1" Factura
Factura "1 ." *-- "1..*" Detalle
class DetallePedido {
+ IdPedido: int
}
Detalle "1 ." --> "1" Producto
class PedidoDePresupuesto {
+ Id: int
+ Fecha: DateTime
- detallesPedidos: List<DetallePedido>
+ Proveedor: Proveedor
+ MostrarDetalles(): ReadOnlyCollection<DetallePedido>
+ AñadirDetalle(DetallePedido): void
+ EliminarDetalle(DetallePedido): void
}
Producto "1" --> "1" Lote
class Lote {
+ Id: int
+ Fecha: DateTime
+ Producto: Producto
+ CantIdadDeProductos: long
+ CantidadDeProductos: long
+ Habilitado: bool
}
@@ -296,10 +315,73 @@ Enlatado,
Cartón,
}
class DetallePresupuesto {
+ IdPresupuesto: int
+ CostoUnitario: double
+ Aceptado: bool
}
class OrdenDeCompra {
+ Id: int
- Productos: List<DetalleOrdenDeCompra>
+ Proveedor: Proveedor
+ MostrarDetalles(): ReadOnlyCollection<DetalleOrdenDeCompra>
+ AñadirDetalle(DetalleOrdenDeCompra): bool
+ ModificarDetalle(DetalleOrdenDeCompra): bool
+ EliminarDetalle(DetalleOrdenDeCompra): bool
}
class DetalleOrdenDeCompra {
+ IdOrdenDeCompra: int
}
class Remito {
+ Id: int
- LotesDeProductosEntregados: List<Lote>
+ Proveedor: Proveedor
+ MostrarLotes(): ReadOnlyCollection<Lote>
+ AñadirLote(Lote): bool
}
Detalle <|-- DetalleOrdenDeCompra
Detalle <|-- DetallePedido
Detalle <|-- DetalleVenta
Detalle <|-- DetallePresupuesto
Presupuesto "1" *--> "1..*" DetallePresupuesto
PedidoDePresupuesto "1" --> "1" Proveedor
PedidoDePresupuesto "1" *--> "1..*" DetallePedido
PedidoDePresupuesto "1" --> "1" Presupuesto
OrdenDeCompra "1" --> "1" Proveedor
OrdenDeCompra "1" *--> "1..*" DetalleOrdenDeCompra
Remito "1" --> "1" Proveedor
Remito "1" *--> "1..*" Lote
Producto "1" <-- "1..*" Lote
ProductoNoPercedero "1" --> "1" EnvaseTipo
Cliente "1" <-- "1" Factura
Factura "1 ." *--> "1..*" DetalleVenta
DetalleVenta "1 ." --> "1" Producto
Proveedor "1" <-- "1 ." Presupuesto
Categoria "0..*" <--o "1 ." Producto
@enduml
#+end_src
#+RESULTS:
[[file:DiagramaSinRepos.jpg]]
#+begin_comment
Presupuesto "1" --> "1..*" Lote
#+end_comment

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

@@ -8,9 +8,9 @@ El target de nuestro sistema es una distribuidora. Este empresa basa sus operaci
Solo Buscamos controlar el stock en un solo almacen productos.
Algunas de las funciones principales del sistema consisten en:
- Registrar Ordenes de compra para los proveedores, almacenar los presupuestos que nos dan los proveedores en base a la Orden de Compra y comprobar con el remito que el producto recibido sea la misma orden que emitimos nosotros.
- Registrar Ordenes de compra para los proveedores, almacenar los presupuestos que nos dan los proveedores en base a los pedidos de presupuesto y comprobar con el remito que el producto recibido sea la misma orden que emitimos nosotros.
- Gestionar el stock de mercaderia mercante, es decir, Registrar las compras hechas para deducir de nuestro stock remanente ( Ventas ) Y aumentar el stock mediante lo que el remito (ya asegurados de que este represente lo mismo que pedimos en la Orden de compra).
- Registro de Productos en venta, sus respectivos proveedores.
- Registro de Productos en venta, y sus respectivos proveedores.
- Almacenar las ventas realizadas a clientes.
** A continuacion se expandirá sobre las funcionalidades del sistema
@@ -21,6 +21,8 @@ La dada de alta de un producto se dividirá sobre si un producto es percedero o
+ Precio
+ Y si está habilitado
NOTA: Es necesario que en el nombre del producto se incluya la marca y que és.
Además de en caso de ser percedero se requerirá la cantidad de meses los cuales es recomendable que se consuma el producto y la cantidad de meses hasta que el producto llegue a su fecha de vencimiento.
Mientras que uno *no* percedero necesita tener especificado cual es el tipo de envase que utiliza, este ya sea, Plastico; Enlatado o Cartón.
@@ -33,20 +35,37 @@ Al cargar la categoria solo se debe de ingresar, un nombre para esta.
*** Registro de Proveedores
Los proveedores se pueden cargar en el sistema, y cada proveedor nos da un presupuesto para renovar el stock de un producto.
Para cargar un Proveedor en el sistema se necesita:
+ Nombre
+ RazonSocial
*** Registro de Pedidos de presupuesto
Estos pedidos son creados para que los proveedores nos dén presupuestos de lo que nos va a Costar reponer X cantidad de productos. Por lo que cada item del Pedido debe de tener.
- Cantidad
- Nombre De Producto
Los pedidos están asociados al Proveedor al cual estamos consultando además de la fecha en la que lo estamos haciendo.
*** Registro de Presupuestos
Los presupuestos son dados por los proveedores sobre uno de los productos en venta que tenemos, para poder registrar uno este debe de estar asociado a un proveedor, mostrar el monto propuesto y la cantidad de productos ofresidos, Resumidamente se necesita cargar:
+ Proveedor
+ Monto
+ Cantidad
+ y si está Activo
Los presupuestos son creados en base a los Items qu listemos en el pedido de presupuesto. Los items del presupuesto deben coinsidir con los del pedido en cantidad, Nombre de producto. Esto para asegurarnos de que lo que nos están presupuestando es lo mismo que nosotros les pedimos.
*No* permitimos que sean modificados una vez cargados. sino que el presupuesto debe ser deshabilitado y en su lugar se debe de registrar otro más para mantener la integridad de los presupuestos cargados
Cuando recibimos un presupuesto listamos los items del mismo con los datos de:
- Cantidad de Productos.
- Informacion del producto.
- Costo de cada producto.
- y queda para nosotros marcar si aceptamos el item del presupuesto.
El resto del presupuesto guarda informacion de quien emitio el presupuesto (proveedor), cuando lo recibimos (fecha).
*** Registro Orden de Compra
Las ordenes de compra se realizan en base a cada item aprobado del presupuesto de forma individual. una vez hechas se envian al proveedor.
*** Registro Remitos
Los remitos nos dan la informacion de que mercaderia fue transladada a nuestro deposito. Este dato nos permite cargar los nuevos lotes de productos en nuestro stock.
En todos los casos los lotes traen una fecha de elaboracion, Este dato es el que usamos para calcular la fecha de caducacion y consumo preferente en caso de ser un producto percedero.
*** Registro de Clientes
Para poder Registrar una Compra por parte de un cliente vamos a necesitar que el cliente en cuestión se registre en el sistema sus siguientes datos:
@@ -74,6 +93,6 @@ Tanto el Nombre, Precio y sus posibles proveedores podrán ser modificados. En a
Cuando una Factura sea ingresada al sistema se deducirá del stock la misma cantidad de productos como los detallados en el documento de la venta.
*** Control de Stock (Compra)
Se podrá crear una orden de compra con los productos que estamos interesados en comprar a los proveedores. Estos nos enviarán Presupuestos de los cuales nosotros elejiremos a quien comprar.
Se podrá crear un pedido de presupuesto con los productos que estamos interesados en comprar a los proveedores. Estos nos enviarán Presupuestos de los cuales nosotros elejiremos a quien comprar, Una vez tomada la decision se emitirá una orden de compra hacia tal proveedor.
Una vez que la mercaderia llega a nosotros se debe de comprobar que los productos del remito coinsiden con los de la orden de compra registrada. En caso de ser así los lotes de productos son registrados y contabilizados dentro de nuestro stock.
Una vez que la mercaderia llega a nosotros se debe de comprobar que los productos del remito coinsidan con los de la orden de compra registrada. En caso de ser así los lotes de productos son registrados y contabilizados dentro de nuestro stock.

BIN
final.pdf

Binary file not shown.