#+title: Proyecto Final OOP #+author: Federico Polidoro & Ignacio Diana #+options: date:nil #+LATEX_HEADER: \usepackage{svg} * Sistema de Gestion de Stock para una Distribuidora Mayorista El target de nuestro sistema es una distribuidora. Este empresa basa sus operaciones en la compra de productos para luego ser revendidos a Minoristas. 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. - 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. - Almacenar las ventas realizadas a clientes. ** 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 Producto { + Nombre: string + Precio: double + Habilitado: bool } @enduml #+end_src #+ATTR_LATEX: :width 4cm #+RESULTS: [[file:ProductoIngreso.svg]] 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 @startuml class ProductoPercedero { + MesesHastaConsumoPreferente: int + MesesHastaVencimiento: int } class Producto {} Producto <|-- ProductoPercedero @enduml #+end_src #+ATTR_LATEX: :width 8cm #+RESULTS: [[file:ProductoPercedero.svg]] Mientras que uno *no* percedero necesita tener especificado cual es el tipo de envase que utiliza #+begin_src plantuml :file ProductoNoPercedero.svg @startuml class ProductoNoPercedero { + TipoDeEnvase } class Producto {} Producto <|-- ProductoNoPercedero @enduml #+end_src #+ATTR_LATEX: :width 6cm #+RESULTS: [[file:ProductoNoPercedero.svg]] *** 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 + activo: bool } #+end_src #+ATTR_LATEX: :width 5cm #+RESULTS: [[file:Presupuesto.svg]] *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 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 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. 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.