コード例 #1
0
        private bool RegistrarSalida(Pedido pedido, IEnumerable <IDetalle> detalles)
        {
            List <DetalleSalida> salidas = new List <DetalleSalida>();

            foreach (var detalle in detalles)
            {
                salidas.Add(new DetalleSalida {
                    Cantidad = detalle.Cantidad, Producto = detalle.Producto
                });
            }

            // registrar la salida

            var registradorSalida = new ServicioRegistradorSalida();
            var formularioSalida  = new FormularioRegistrarSalida
            {
                Salida = new Salida
                {
                    Fecha       = pedido.Fecha,
                    Observacion = $"Salida para pedido #{pedido.Id}",
                    Pedido      = pedido.Id
                },

                Detalles = salidas
            };

            return(registradorSalida.Registrar(formularioSalida));
        }
コード例 #2
0
        public IActionResult Insertar([FromBody] FormularioRegistrarSalida formulario)
        {
            ServicioRegistradorSalida servicio = new ServicioRegistradorSalida();

            if (servicio.Registrar(formulario))
            {
                return(Accepted());
            }

            return(BadRequest());
        }
コード例 #3
0
        public bool Registrar(FormularioRegistrarSalida formulario)
        {
            RepositorioSalida repoSalida = new RepositorioSalida();

            try
            {
                Salida salida = formulario.Salida;
                IEnumerable <DetalleSalida> detalles = formulario.Detalles;

                salida.Fecha = DateTime.Now;

                if (repoSalida.Insertar(salida))
                {
                    RepositorioDetalleSalida repoDetalle  = new RepositorioDetalleSalida();
                    RepositorioProducto      repoProducto = new RepositorioProducto();

                    int id = repoSalida.UltimoPorId();

                    foreach (DetalleSalida detalle in detalles)
                    {
                        detalle.Salida = id;

                        if (repoProducto.PorId(detalle.Producto) is Producto producto)
                        {
                            if (producto.Existencias > 0 && producto.Existencias >= detalle.Cantidad)
                            {
                                producto.Existencias -= detalle.Cantidad;

                                repoProducto.Editar(producto);
                                repoDetalle.Insertar(detalle);
                            }
                        }
                    }

                    return(true);
                }

                return(false);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(false);
            }
        }