arreglos hechos durante la clase consulta de laureano

falta:
- [ ] Poner en claro las relaciones que no estan bien
especificadas (multiplicidad, y navegabilidad
- [ ] Poner lote como clase intermedia al presupuesto y producto
- [ ] CATEgorias
- [ ] armar un tablero kanban con esto
- [ ] mejorar la narrativa (probablemente saque las imagenes y ponga en
texto)
- [ ] añadir remitos ( y investigar que son )
- [ ] eliminar clase venta por ser parte de la factura
This commit is contained in:
2024-01-17 15:57:44 -03:00
parent 3e7e098a54
commit 81f151ad44
5 changed files with 55 additions and 23 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 216 KiB

View File

@@ -6,6 +6,14 @@
@startuml @startuml
skinparam groupInheritance 2 skinparam groupInheritance 2
class RepositorioLotes {
+ Añadir(detalle): bool
+ Modificar(detalle): bool
+ Eliminar(detalle): bool
}
RepositorioLotes "1" *-- "0..*" Lote
class RepositorioDetalles { class RepositorioDetalles {
+ Añadir(detalle): bool + Añadir(detalle): bool
+ Modificar(detalle): bool + Modificar(detalle): bool
@@ -57,6 +65,7 @@ class RepositorioProductos <where T: Producto> {
} }
RepositorioProductos ..|> Repositorio: Implementa RepositorioProductos ..|> Repositorio: Implementa
RepositorioLotes ..|> Repositorio: Implementa
RepositorioPresupuestos ..|> Repositorio: Implementa RepositorioPresupuestos ..|> Repositorio: Implementa
RepositorioFacturas ..|> Repositorio: Implementa RepositorioFacturas ..|> Repositorio: Implementa
RepositorioClientes ..|> Repositorio: Implementa RepositorioClientes ..|> Repositorio: Implementa
@@ -72,13 +81,22 @@ interface Repositorio<T> {
RepositorioProductos "1" *--> "0..*" Producto RepositorioProductos "1" *--> "0..*" Producto
enum EnvaseTipo {
Plastico,
Enlatado,
Cartón,
}
ProductoNoPercedero --> EnvaseTipo
class ProductoNoPercedero { class ProductoNoPercedero {
+ FechaElaboracion: DateTime + TipoDeEnvase: EnvaseTipo
} }
class ProductoPercedero { class ProductoPercedero {
+ FechaConsumoPreferente: DateTime + MesesHastaConsumoPreferente: int
+ FechaVencimiento: DateTime + MesesHastaVencimiento: int
} }
Producto <|-- ProductoNoPercedero Producto <|-- ProductoNoPercedero
@@ -113,7 +131,7 @@ RepositorioPresupuestos "1" *-- "0..*" Presupuesto
RepositorioProveedores "1" *-- "0..*" Proveedor RepositorioProveedores "1" *-- "0..*" Proveedor
Presupuesto "0..*" <--* "1" Producto Presupuesto "0..*" <--* "1" Producto
Proveedor "1" *-- "0..*" Presupuesto Proveedor <-- Presupuesto
class Proveedor { class Proveedor {
+ id: int + id: int
@@ -131,12 +149,13 @@ class Venta {
+ EliminarDetalle(Detalle): void + EliminarDetalle(Detalle): void
} }
Lote <-- Producto Lote -- Producto
class Lote { class Lote {
+ id: int + id: int
+ Producto: Producto + Producto: Producto
+ CantidadDeProductos: long + CantidadDeProductos: long
+ FechaVencimiento: DateTime
} }
class Detalle <where T: Producto>{ class Detalle <where T: Producto>{
@@ -180,12 +199,12 @@ Detalle --> Producto
skinparam groupInheritance 2 skinparam groupInheritance 2
class ProductoNoPercedero { class ProductoNoPercedero {
+ FechaElaboracion: DateTime + TipoDeEnvase: EnvaseTipo
} }
class ProductoPercedero { class ProductoPercedero {
+ FechaConsumoPreferente: DateTime + MesesHastaConsumoPreferente: int
+ FechaVencimiento: DateTime + MesesHastaVencimiento: int
} }
Producto <|-- ProductoNoPercedero Producto <|-- ProductoNoPercedero
@@ -214,15 +233,17 @@ class Presupuesto {
+ Proveedor: Proveedor + Proveedor: Proveedor
+ Monto: int + Monto: int
+ Cantidad: int + Cantidad: int
+ habilitado: bool
} }
Presupuesto "0..*" <--* "1" Producto Presupuesto "0..*" <--* "1" Producto
Proveedor "1" *--> "1..*" Presupuesto Proveedor <-- Presupuesto
class Proveedor { class Proveedor {
+ id: int + id: int
+ Nombre: string + Nombre: string
+ RazónSocial: string + RazónSocial: string
+ habilitado: bool
} }
class Venta { class Venta {
@@ -264,13 +285,21 @@ Venta "1" *-- "1..*" Detalle
Detalle --> Producto Detalle --> Producto
Producto --> Lote Producto -- Lote
class Lote { class Lote {
+ id: int + id: int
+ Producto: Producto + Producto: Producto
+ CantidadDeProductos: long + CantidadDeProductos: long
+ habilitado: bool
} }
enum EnvaseTipo {
Plastico,
Enlatado,
Cartón,
}
ProductoNoPercedero --> EnvaseTipo
@enduml @enduml
#+end_src #+end_src

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -3,7 +3,7 @@
#+options: date:nil #+options: date:nil
#+LATEX_HEADER: \usepackage{svg} #+LATEX_HEADER: \usepackage{svg}
* Sistema de Gestion de Stock y Proveedores para una Distribuidora Mayorista * Sistema de Gestion de Stock para una Distribuidora Mayorista
El target de nuestro sistema son Mayoristas que aún no tengan un sistema para: El target de nuestro sistema son Mayoristas que aún no tengan un sistema para:
- Gestionar el stock de mercaderia restante, (Ventas y Compras). - Gestionar el stock de mercaderia restante, (Ventas y Compras).
- Registro de Productos en venta, sus respectivos proveedores, Y los presupuestos que nos dan estos para reponer nuestro stock. - Registro de Productos en venta, sus respectivos proveedores, Y los presupuestos que nos dan estos para reponer nuestro stock.
@@ -25,16 +25,16 @@ class Producto {
@enduml @enduml
#+end_src #+end_src
#+ATTR_LATEX: :width 8cm #+ATTR_LATEX: :width 4cm
#+RESULTS: #+RESULTS:
[[file:ProductoIngreso.svg]] [[file:ProductoIngreso.svg]]
Además de en caso de ser percedero se requerirá una fecha de caducacidad: 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
#+begin_src plantuml :file ProductoPercedero.svg #+begin_src plantuml :file ProductoPercedero.svg
@startuml @startuml
class ProductoPercedero { class ProductoPercedero {
+ FechaConsumoPreferente: DateTime + MesesHastaConsumoPreferente: int
+ FechaVencimiento: DateTime + MesesHastaVencimiento: int
} }
class Producto {} class Producto {}
@@ -46,23 +46,23 @@ Producto <|-- ProductoPercedero
#+RESULTS: #+RESULTS:
[[file:ProductoPercedero.svg]] [[file:ProductoPercedero.svg]]
Mientras que uno *no* percedero necesita fecha de Elaboracion también: Mientras que uno *no* percedero necesita tener especificado cual es el tipo de envase que utiliza
#+begin_src plantuml :file ProductoNoPercedero.svg #+begin_src plantuml :file ProductoNoPercedero.svg
@startuml @startuml
class ProductoNoPercedero { class ProductoNoPercedero {
+ FechaElaboracion: DateTime + TipoDeEnvase
} }
class Producto {} class Producto {}
Producto <|-- ProductoNoPercedero Producto <|-- ProductoNoPercedero
@enduml @enduml
#+end_src #+end_src
#+ATTR_LATEX: :width 8cm #+ATTR_LATEX: :width 6cm
#+RESULTS: #+RESULTS:
[[file:ProductoNoPercedero.svg]] [[file:ProductoNoPercedero.svg]]
NOTA: no es necesario cargar los presupuestos que nos hacen los proveedores por renovar el stock de un producto pero es recomendado para que sea más facil calcular los gastos de esa operacion.
*** Registro de proveedores *** 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. Los proveedores se pueden cargar en el sistema, y cada proveedor nos da un presupuesto para renovar el stock de un producto.
@@ -89,6 +89,7 @@ class Presupuesto {
+ Proveedor: Proveedor + Proveedor: Proveedor
+ Monto: int + Monto: int
+ Cantidad: int + Cantidad: int
+ activo: bool
} }
#+end_src #+end_src
@@ -96,7 +97,7 @@ class Presupuesto {
#+ATTR_LATEX: :width 5cm #+ATTR_LATEX: :width 5cm
#+RESULTS: #+RESULTS:
[[file:Presupuesto.svg]] [[file:Presupuesto.svg]]
*No* permitimos que sean modificados una vez cargados. *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
*** Registro de Clientes *** 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: Para poder Registrar una Compra por parte de un cliente vamos a necesitar que el cliente en cuestión se registre en el sistema:
@@ -131,9 +132,11 @@ Tanto el Nombre, Precio y sus posibles proveedores podrán ser modificados.
La Baja de un producto se hace por medio de una baja lógica. La Baja de un producto se hace por medio de una baja lógica.
*** Control de Stock (Ventas) *** Control de Stock (Ventas)
Cuando nos llegue que se efectuó una venta, El sistema creará una factura con sus detalles y se deducirá tantos productos del registro en el stock, como los especificados en los detalles de la venta. Cuando se efectue una venta, El sistema creará una factura con sus detalles y se deducirá tantos productos del registro en el stock, como los especificados en los detalles de la venta.
*** Control de Stock (Compra) *** Control de Stock (Compra)
Se podrá seleccionar un producto y elejir cual de las diferentes ofertas (Presupuestos) dadas por los proveedores vamos a comprar para reponer nuestro stock. Se podrá seleccionar un producto y elejir cual de las diferentes ofertas (Presupuestos) dadas por los proveedores vamos a comprar para reponer nuestro
stock.
Una vez confirmada la compra el stock de un producto se incrementará por la cantidad de productos comprados. Una vez confirmada la compra el stock de un producto se incrementará
por la cantidad de productos comprados y se agregara el lote de la compra para una mejor organizacion de los productos en el programa

BIN
final.pdf

Binary file not shown.