Diagramas y narrativa para presentarle a laureano
This commit is contained in:
BIN
DiagramaConRepos.jpg
Normal file
BIN
DiagramaConRepos.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 187 KiB |
257
DiagramaDeClases.org
Normal file
257
DiagramaDeClases.org
Normal file
@@ -0,0 +1,257 @@
|
||||
#+title: Diagrama De Clases
|
||||
#+LATEX_HEADER: \usepackage{svg}
|
||||
|
||||
* Diagrama de clases con Repositorios
|
||||
#+begin_src plantuml :file DiagramaConRepos.jpg
|
||||
@startuml
|
||||
skinparam groupInheritance 2
|
||||
|
||||
class RepositorioDetalles {
|
||||
+ Añadir(detalle): bool
|
||||
+ Modificar(detalle): bool
|
||||
+ Eliminar(detalle): bool
|
||||
}
|
||||
|
||||
RepositorioDetalles "1" *-- "0..*" Detalle
|
||||
|
||||
class RepositorioFacturas {
|
||||
+ Añadir(Factura): bool
|
||||
+ Modificar(Factura): bool
|
||||
+ Eliminar(Factura): bool
|
||||
}
|
||||
|
||||
RepositorioFacturas "1" *-- "0..*" Factura
|
||||
|
||||
class RepositorioVentas {
|
||||
+ Añadir(Venta): bool
|
||||
+ Modificar(Venta): bool
|
||||
+ Eliminar(Venta): bool
|
||||
}
|
||||
|
||||
RepositorioVentas "1" *-- "0..*" Venta
|
||||
|
||||
class RepositorioClientes {
|
||||
+ Añadir(Cliente): bool
|
||||
+ Modificar(Cliente): bool
|
||||
+ Eliminar(Cliente): bool
|
||||
}
|
||||
|
||||
RepositorioClientes "1" *-- "0..*" Cliente
|
||||
|
||||
class RepositorioProveedores {
|
||||
+ Añadir(Proveedor): bool
|
||||
+ Modificar(Proveedor): bool
|
||||
+ Eliminar(Proveedor): bool
|
||||
}
|
||||
|
||||
class RepositorioPresupuestos {
|
||||
+ Añadir(Presupuesto): bool
|
||||
+ Modificar(Presupuesto): bool
|
||||
+ Eliminar(Presupuesto): bool
|
||||
}
|
||||
|
||||
class RepositorioProductos <where T: ProductoBase> {
|
||||
+ Añadir(T): bool
|
||||
+ Modificar(T): bool
|
||||
+ Eliminar(T): bool
|
||||
}
|
||||
|
||||
RepositorioProductos ..|> Repositorio: Implementa
|
||||
RepositorioPresupuestos ..|> Repositorio: Implementa
|
||||
RepositorioFacturas ..|> Repositorio: Implementa
|
||||
RepositorioClientes ..|> Repositorio: Implementa
|
||||
RepositorioVentas ..|> Repositorio: Implementa
|
||||
RepositorioDetalles ..|> Repositorio: Implementa
|
||||
RepositorioProveedores ..|> Repositorio: Implementa
|
||||
|
||||
interface Repositorio<T> {
|
||||
+ Añadir(T): bool
|
||||
+ Modificar(T): bool
|
||||
+ Eliminar(T): bool
|
||||
}
|
||||
|
||||
RepositorioProductos "1" *--> "0..*" ProductoNoPercedero
|
||||
RepositorioProductos "1" *--> "0..*" ProductoPercedero
|
||||
|
||||
class ProductoNoPercedero {
|
||||
+ FechaElaboracion: DateTime
|
||||
+ FechaCaducacion: DateTime
|
||||
}
|
||||
|
||||
class ProductoPercedero {
|
||||
+ FechaVencimiento: DateTime
|
||||
}
|
||||
|
||||
ProductoBase <|-- ProductoNoPercedero
|
||||
ProductoBase <|-- ProductoPercedero
|
||||
|
||||
class ProductoBase {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ Precio: double
|
||||
- PresupuestosStock: List<Presupuestos>?
|
||||
+ Habilitado: bool
|
||||
|
||||
+ MostrarPresupuestos(): ReadOnlyCollection<Presupuesto>
|
||||
+ AñadirPresupuesto(Presupuesto): bool
|
||||
+ EliminarPresupuesto(Presupuesto): bool
|
||||
}
|
||||
|
||||
class Presupuesto {
|
||||
+ id: int
|
||||
+ Proveedor: Proveedor
|
||||
+ Monto: int
|
||||
+ Cantidad: int
|
||||
}
|
||||
|
||||
RepositorioPresupuestos "1" *-- "0..*" Presupuesto
|
||||
RepositorioProveedores "1" *-- "0..*" Proveedor
|
||||
|
||||
Presupuesto "0..*" o-- "1" ProductoNoPercedero
|
||||
Presupuesto "0..*" o-- "1" ProductoPercedero
|
||||
Proveedor "1" *-- "0..*" Presupuesto
|
||||
|
||||
class Proveedor {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ RazónSocial: string
|
||||
}
|
||||
|
||||
class Venta {
|
||||
+ id: int
|
||||
- Detalles: List<Detalle>
|
||||
|
||||
+ MostrarDetalles(): ReadOnlyCollection<Detalle>
|
||||
+ AñadirDetalle(Detalle): void
|
||||
+ ModificarDetalle(Detalle): void
|
||||
+ EliminarDetalle(Detalle): void
|
||||
}
|
||||
|
||||
class Detalle <where T: ProductoBase>{
|
||||
+ id: int
|
||||
+ Cantidad: int
|
||||
+ PrecioUnitario: double
|
||||
+ Subtotal: double
|
||||
+ Producto: T
|
||||
}
|
||||
|
||||
class Cliente {
|
||||
+ Cuit: string
|
||||
+ Nombre: string
|
||||
+ Apellido: string
|
||||
+ Direccion: string
|
||||
+ Correo: string
|
||||
}
|
||||
|
||||
class Factura {
|
||||
+ Total: double
|
||||
+ Fecha: DateTime
|
||||
+ Cliente: Cliente
|
||||
+ Venta: Venta
|
||||
}
|
||||
|
||||
Cliente <-- Factura
|
||||
Factura --> Venta
|
||||
Venta "1" *-- "1..*" Detalle
|
||||
|
||||
Detalle --> ProductoNoPercedero
|
||||
Detalle --> ProductoPercedero
|
||||
|
||||
@enduml
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:DiagramaConRepos.jpg]]
|
||||
|
||||
* Diagrama de clases sin Repositorios
|
||||
#+begin_src plantuml :file DiagramaSinRepos.jpg
|
||||
@startuml
|
||||
skinparam groupInheritance 2
|
||||
|
||||
class ProductoNoPercedero {
|
||||
+ FechaElaboracion: DateTime
|
||||
+ FechaCaducacion: DateTime
|
||||
}
|
||||
|
||||
class ProductoPercedero {
|
||||
+ FechaVencimiento: DateTime
|
||||
}
|
||||
|
||||
ProductoBase <|-- ProductoNoPercedero
|
||||
ProductoBase <|-- ProductoPercedero
|
||||
|
||||
class ProductoBase {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ Precio: double
|
||||
- PresupuestosStock: List<Presupuestos>?
|
||||
+ Habilitado: bool
|
||||
|
||||
+ MostrarPresupuestos(): ReadOnlyCollection<Presupuesto>
|
||||
+ AñadirPresupuesto(Presupuesto): bool
|
||||
+ EliminarPresupuesto(Presupuesto): bool
|
||||
}
|
||||
|
||||
class Presupuesto {
|
||||
+ id: int
|
||||
+ Proveedor: Proveedor
|
||||
+ Monto: int
|
||||
+ Cantidad: int
|
||||
}
|
||||
|
||||
Presupuesto "0..*" o-- "1" ProductoNoPercedero
|
||||
Presupuesto "0..*" o-- "1" ProductoPercedero
|
||||
Proveedor "1" *-- "0..*" Presupuesto
|
||||
|
||||
class Proveedor {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ RazónSocial: string
|
||||
}
|
||||
|
||||
class Venta {
|
||||
+ id: int
|
||||
- Detalles: List<Detalle>
|
||||
|
||||
+ MostrarDetalles(): ReadOnlyCollection<Detalle>
|
||||
+ AñadirDetalle(Detalle): void
|
||||
+ ModificarDetalle(Detalle): void
|
||||
+ EliminarDetalle(Detalle): void
|
||||
}
|
||||
|
||||
class Detalle <where T: ProductoBase>{
|
||||
+ id: int
|
||||
+ Cantidad: int
|
||||
+ PrecioUnitario: double
|
||||
+ Subtotal: double
|
||||
+ Producto: T
|
||||
}
|
||||
|
||||
class Cliente {
|
||||
+ Cuit: string
|
||||
+ Nombre: string
|
||||
+ Apellido: string
|
||||
+ Direccion: string
|
||||
+ Correo: string
|
||||
}
|
||||
|
||||
class Factura {
|
||||
+ Total: double
|
||||
+ Fecha: DateTime
|
||||
+ Cliente: Cliente
|
||||
+ Venta: Venta
|
||||
}
|
||||
|
||||
Cliente <-- Factura
|
||||
Factura --> Venta
|
||||
Venta "1" *-- "1..*" Detalle
|
||||
|
||||
Detalle --> ProductoNoPercedero
|
||||
Detalle --> ProductoPercedero
|
||||
|
||||
@enduml
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:DiagramaSinRepos.jpg]]
|
||||
BIN
DiagramaSinRepos.jpg
Normal file
BIN
DiagramaSinRepos.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
144
final.org
Normal file
144
final.org
Normal file
@@ -0,0 +1,144 @@
|
||||
#+title: Proyecto Final OOP
|
||||
#+author: Federico Polidoro & Ignacio Diana
|
||||
#+options: date:nil
|
||||
#+LATEX_HEADER: \usepackage{svg}
|
||||
|
||||
* Sistema de Gestion de Stock y Proveedores para una Distribuidora Mayorista
|
||||
El target de nuestro sistema son Mayoristas que aún no tengan un sistema para:
|
||||
- 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.
|
||||
- Almacenar las ventas realizadas a clientes.
|
||||
|
||||
|
||||
y esten en busqueda de =Digitalizar= o =Automatizar= dichas secciones de su negocio.
|
||||
|
||||
** A continuacion se expandirá sobre las funcionalidades del sistema
|
||||
*** Registro de productos en venta
|
||||
La dada de alta de un producto se dividirá sobre si un producto es percedero o no requerirá de que se ingresen con los siguientes datos para registrar un producto:
|
||||
#+begin_src plantuml :file ProductoIngreso.svg
|
||||
@startuml
|
||||
class ProductoBase {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ Precio: double
|
||||
- PresupuestosStock: List<Presupuestos>?
|
||||
+ Habilitado: bool
|
||||
|
||||
+ AñadirPresupuesto(Presupuesto): bool
|
||||
+ EliminarPresupuesto(Presupuesto): bool
|
||||
}
|
||||
@enduml
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 8cm
|
||||
#+RESULTS:
|
||||
[[file:ProductoIngreso.svg]]
|
||||
|
||||
Además de en caso de ser percedero se requerirá una fecha de caducacidad:
|
||||
#+begin_src plantuml :file ProductoPercedero.svg
|
||||
@startuml
|
||||
class ProductoPercedero {
|
||||
+ FechaVencimiento: DateTime
|
||||
}
|
||||
|
||||
class ProductoBase {}
|
||||
ProductoBase <|-- ProductoPercedero
|
||||
@enduml
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 8cm
|
||||
#+RESULTS:
|
||||
[[file:ProductoPercedero.svg]]
|
||||
|
||||
Mientras que uno *no* percedero necesita fecha de Elaboracion también:
|
||||
#+begin_src plantuml :file ProductoNoPercedero.svg
|
||||
@startuml
|
||||
class ProductoNoPercedero {
|
||||
+ FechaElaboracion: DateTime
|
||||
+ FechaCaducacion: DateTime
|
||||
}
|
||||
|
||||
class ProductoBase {}
|
||||
ProductoBase <|-- ProductoNoPercedero
|
||||
@enduml
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 8cm
|
||||
#+RESULTS:
|
||||
[[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
|
||||
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:
|
||||
#+begin_src plantuml :file ProveedorCarga.svg
|
||||
class Proveedor {
|
||||
+ id: int
|
||||
+ Nombre: string
|
||||
+ RazónSocial: string
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 5cm
|
||||
#+RESULTS:
|
||||
[[file:ProveedorCarga.svg]]
|
||||
|
||||
*** 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.
|
||||
#+begin_src plantuml :file Presupuesto.svg
|
||||
class Presupuesto {
|
||||
+ id: int
|
||||
+ Proveedor: Proveedor
|
||||
+ Monto: int
|
||||
+ Cantidad: int
|
||||
}
|
||||
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 5cm
|
||||
#+RESULTS:
|
||||
[[file:Presupuesto.svg]]
|
||||
*No* permitimos que sean modificados una vez cargados.
|
||||
|
||||
*** 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:
|
||||
#+begin_src plantuml :file ClienteRegistro.svg
|
||||
class Cliente {
|
||||
+ Cuit: int
|
||||
+ Nombre: string
|
||||
+ Apellido: string
|
||||
+ Direccion: string
|
||||
+ Correo: string
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+ATTR_LATEX: :width 5cm
|
||||
#+RESULTS:
|
||||
[[file:ClienteRegistro.svg]]
|
||||
|
||||
*** Modificar de Clientes
|
||||
Esta opcion existe en caso de que se necesite cambiar los datos de Nombre, Apellido, Direccion o Correo. No es posible cambiar el Cuit.
|
||||
|
||||
*** Modificar y Baja lógica de Proveedores
|
||||
Desde el sistema se podrá dar una baja lógica de un proveedor, o cambiar los datos de uno en caso de que el proveedor sea adquirido por otra empresa o cambie de nombre.
|
||||
|
||||
En caso de que el proveedor deje de estar en el mercado tambien es posible de darle una baja lógica en el sistema.
|
||||
|
||||
*** Baja lógica de Presupuestos
|
||||
Es necesario que los presupuestos puedan ser dados de baja para que los nuevos presupuestos puedan reemplazar a los viejos.
|
||||
|
||||
*** Modificar y Baja lógica de Productos
|
||||
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.
|
||||
|
||||
*** 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.
|
||||
|
||||
*** 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.
|
||||
|
||||
Una vez confirmada la compra el stock de un producto se incrementará por la cantidad de productos comprados.
|
||||
Reference in New Issue
Block a user