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)); }
public IActionResult Insertar([FromBody] FormularioRegistrarSalida formulario) { ServicioRegistradorSalida servicio = new ServicioRegistradorSalida(); if (servicio.Registrar(formulario)) { return(Accepted()); } return(BadRequest()); }
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); } }