Beispiel #1
0
        public async Task <ActionResult <Resultado <ResultadoInventarioProducto> > > ObtenerInvetarioProducto(string idProducto)
        {
            List <string> errores = new List <string>();

            if (string.IsNullOrEmpty(idProducto))
            {
                errores.Add("El id del producto no especificado");
            }

            if (idProducto.Length != 36)
            {
                errores.Add("El id del producto no tiene la longitud correcta (36 caracteres)");
            }

            if (errores.Count > 0)
            {
                return(BadRequest(Resultado <ProductoDto> .Failure(errores)));
            }

            Resultado <ResultadoInventarioProducto> resultado = await _servicio.ObtenerInvetarioProducto(idProducto);

            if (resultado.Correcto)
            {
                return(Ok(resultado));
            }
            else
            {
                return(BadRequest(resultado));
            }
        }
Beispiel #2
0
        public async Task <ActionResult <Resultado <MovimientoDto> > > MoverProductoBodegas([FromBody] MovimientoBodegasRequest movimiento)
        {
            if (movimiento == null)
            {
                return(BadRequest(Resultado <MovimientoDto> .Failure("No se encontraron datos para procesar")));
            }
            var resutlado = await _servicio.MoverProductoBodegas(movimiento);

            if (resutlado.Correcto)
            {
                return(Ok(resutlado));
            }
            else
            {
                return(BadRequest(resutlado));
            }
        }
        public async Task <Resultado <ResultadoInventarioProducto> > ObtenerInvetarioProducto(string productoId)
        {
            List <string>        errores = new List <string>();
            Guid                 productoGuid;
            List <InventarioDto> listaInventario = null;
            ProductoDto          producto        = null;

            if (Guid.TryParse(productoId, out productoGuid))
            {
                producto = await _repositorioProducto.BuscarProducto(productoGuid);

                if (producto == null)
                {
                    errores.Add($"El producto con Id {productoId} no esta en el sistema");
                }
            }
            else
            {
                errores.Add("El Id del producto no tiene el formato correcto");
            }
            if (errores.Count > 0)
            {
                return(Resultado <ResultadoInventarioProducto> .Failure(errores));
            }

            listaInventario = await _repositorioInventario.ObtenerInvtarioProducto(productoGuid);

            int     cantidadTotal = listaInventario.Sum(s => s.Cantidad);
            decimal valorTotal    = listaInventario.Sum(s => s.ValorAcumulado);
            ResultadoInventarioProducto respuesta = new ResultadoInventarioProducto()
            {
                Producto      = producto,
                CantidadTotal = cantidadTotal,
                ValorTotal    = valorTotal,
                Detalle       = listaInventario
            };

            return(Resultado <ResultadoInventarioProducto> .Success(respuesta));
        }
Beispiel #4
0
        public async Task <ActionResult <Resultado <ProductoDto> > > Get(string id)
        {
            List <string> errores = new List <string>();

            if (string.IsNullOrEmpty(id))
            {
                errores.Add("Id no especificado");
            }

            if (id.Length != 36)
            {
                errores.Add("Id no tiene la longitud correcta (36 caracteres)");
            }

            Guid idGuid;

            if (!Guid.TryParse(id, out idGuid))
            {
                errores.Add("Id no tiene el formato correcto xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
            }
            if (errores.Count > 0)
            {
                return(BadRequest(Resultado <ProductoDto> .Failure(errores)));
            }

            ProductoDto producto = await _servicioProductos.ObtenerProducto(idGuid);

            if (producto != null)
            {
                return(Ok(Resultado <ProductoDto> .Success(producto)));
            }
            else
            {
                errores.Add("Id no encontrado");
                return(NotFound(Resultado <ProductoDto> .Failure(errores)));
            }
        }
        public async Task <Resultado <MovimientoDto> > CargarProducto(MovimientoRequest movimiento)
        {
            List <string> errores = new List <string>();
            Guid          bodegaId;
            Guid          productoId;
            BodegaDto     bodega   = null;
            ProductoDto   producto = null;

            if (Guid.TryParse(movimiento.BodegaId, out bodegaId))
            {
                bodega = await _repositorioBodega.BuscarBodega(bodegaId);

                if (bodega == null)
                {
                    errores.Add($"La bodega con Id {movimiento.BodegaId} no esta en el sistema");
                }
            }
            else
            {
                errores.Add("La Id de la bodega no tiene el formato correcto");
            }
            if (Guid.TryParse(movimiento.ProductoId, out productoId))
            {
                producto = await _repositorioProducto.BuscarProducto(productoId);

                if (producto == null)
                {
                    errores.Add($"El producto con Id {movimiento.ProductoId} no esta en el sistema");
                }
            }
            else
            {
                errores.Add("La Id del producto no tiene el formato correcto");
            }

            if (movimiento.Cantidad <= 0)
            {
                errores.Add("La cantidad debe ser mayor a 0");
            }

            if (movimiento.Valor <= 0)
            {
                errores.Add("El valor debe ser mayor a 0");
            }

            if (errores.Count > 0)
            {
                return(Resultado <MovimientoDto> .Failure(errores));
            }

            InventarioDto inventario = await _repositorioInventario.ObtenerInventario(bodega.Id, producto.Id);

            int capacidadDisponible = 0;

            if (inventario != null)
            {
                capacidadDisponible = bodega.CapacidadMaxima - inventario.Cantidad;
            }
            else
            {
                capacidadDisponible = bodega.CapacidadMaxima;
            }

            if (movimiento.Cantidad > capacidadDisponible)
            {
                return(Resultado <MovimientoDto> .Failure("La cantidad de producto a ingresar supera el maximo de productos totales permitido en la bodega"));
            }

            MovimientoDto movimientoCrear = new MovimientoDto
            {
                Id = Guid.NewGuid(),
                FechaMovimiento = DateTime.Now,
                Bodega          = bodega,
                Producto        = producto,
                Cantidad        = movimiento.Cantidad,
                Valor           = movimiento.Valor,
                Tipo            = TipoMovimiento.Ingreso
            };

            MovimientoDto movimientoCreado = await _repositorioInventario.GuardarMovimiento(movimientoCrear);

            if (movimientoCreado != null)
            {
                await _repositorioInventario.ActualizarInvetario(movimientoCreado);

                return(Resultado <MovimientoDto> .Success(movimientoCreado));
            }
            else
            {
                errores.Add("Se ha presnetado un problema al guardar el movimiento");
                return(Resultado <MovimientoDto> .Failure(errores));
            }
        }