Closed carlospiedrab closed 2 months ago
Hola @carlospiedrab, una consulta. En el return del response deberíamos mostar el objeto kardexInventario o lo dejo así como está? Por ahora retorna un objeto BodegaProducto.
Saludos @merg8511 , Puedes dejarlo como esta, es decir que retorne el Objeto BodegaProducto. La idea de este nuevo servicio es que internamente grabe el registro de Kardex y que se agregue a lo que ya esta desarrollado.
Actualmente la tabla BodegaProducto es la encargada de registrar las cantidades de los productos por bodega. Esta tabla tiene relacion de FK con Bodega y Producto. En el proyecto se encuentra creado el Controlador BodegaProductoController con 2 endpoints: IncrementarCantidades - Encargado de Incrementar las cantidades de los productos en las Bodegas. DisminuirCantidades - Encargado de Disminuir las cantidades de los productos en las Bodegas.
Se necesita de un servicio que registre las entradas y salidas de los productos, es decir que por cada incremento o disminución de las cantidades de un Producto en una bodega este proceso quede registrado y se detalle el usuario que afectó las cantidades y la fecha de esta transacción.
Se creará una tabla llamada KardexInventario con las siguientes columnas:
KardexInventarioId int Not Null (PK) BodegaProductoId int Not Null (FK tabla BodegaProducto) Tipo nvarchar(50) Not Null (aquí se grabara los valores de Entrada o Salida ) Detalle nvarchar(500) Not Null (Un Detalle de la Transacción) StockAnterior int not Null (El Stock anterior del Producto en la Bodega antes del cambio) Cantidad int Not Null (Cantidad afectada ya sea Entrada o Salida) Costo decimal Not Null (Costo del Producto en el momento de la Transacción) Stock int Not Null (Stock final del Producto en la Bodega) Total decimal Not Null (Costo * Stock) UsuarioId nvarchar Not Null (FK tabla Usuarios AspNetUsers) FechaRegistro datetime Not Null (Fecha de registro de la Transacción)
Se debe agregar en el proyecto Integracion en Models/Entidades la clase KardexInventario.cs con las propiedades mapeadas de la tabla KardexInventario.
Se debe de agregar al DbContext el nuevo modelo KardexInventario.
En el proyecto Integracion se creara un nuevo directorio en el proyecto Data llamado Servicios. En el nuevo directorio Data/Servicios se creará lo siguiente:
Una Interfaz llamada IKardexInventarioServicio, esta interfaz tendrá la declaración de un método llamado RegistroKardex el cual recibe los siguientes parámetros:
Task RegistrarKardex(int bodegaProductoId, string tipo, string detalle, int stockAnterior, int cantidad, string usuarioId);
Una clase que implemente la interfaz llamada KardexInventarioServicio y en donde se realice todo el código del método RegistrarKardex.
El servicio de IKardexInventarioServicio debe ser agregado al Program.cs para que puede ser usado por inyección de dependencia y pueda ser invocado desde cualquier controlador del proyecto.
El método RegistrarKardex debe grabar el registro de la transacciòn en la tabla KardexInventario dependiendo si es una entrada o Salida.
El método RegistrarKardex para nuestro ejemplo puede ser invocado desde los endpoints IncrementarCantidades y DisminuirCantidades del controlador BodegaProductoController.cs