private void frmSalidaProducto_Load(object sender, EventArgs e) { dtgDetalleSalidaProducto.AutoGenerateColumns = true; cmbProducto.DataSource = Producto.ObtenerProductos(); cmbMotivo.DataSource = Motivo.ObtenerMotivos(); cmbProducto.SelectedItem = null; cmbMotivo.SelectedItem = null; salida = new SalidaProducto(); }
public async Task <IActionResult> PostSalidaProducto([FromBody] SalidaProducto salidaProducto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { salidaProducto.FechaCreacion = DateTime.Now; sn.Save(salidaProducto); foreach (var item in salidaProducto.Items) { InventarioProducto inventario = await sn.Query <InventarioProducto>() .Where(x => x.IdAlmacen == salidaProducto.Almacen.IdAlmacen && x.IdProducto == item.Producto.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { throw new Exception("Sin stock para el producto: " + item.Producto.Nombre); } item.IdSalidaProducto = salidaProducto.IdSalidaProducto; sn.Save(item); } await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
private void btnGuardar_Click(object sender, EventArgs e) { if (validarNulosCabecera()) { salida.fecharemision = dtpFechaRemision.Value.Date; salida.motivo = (Motivo)cmbMotivo.SelectedItem; salida.direccion = txtDireccion.Text; salida.destinatario = txtDestinatario.Text; salida.nrodocumento = txtNumeroDoc.Text; SalidaProducto.Agregar(salida); LimpiarCab(); dtgDetalleSalidaProducto.DataSource = null; dtpFechaRemision.Value = System.DateTime.Now; cmbMotivo.SelectedItem = null; salida = new SalidaProducto(); } }
public async Task <IActionResult> GetSalidaProducto([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } SalidaProducto salidaProducto = null; using (var sn = factory.OpenSession()) { salidaProducto = await sn.GetAsync <SalidaProducto>(id); salidaProducto.Items = await sn.Query <ItemSalidaProducto>().Where(x => x.IdSalidaProducto == id).ToListAsync(); } if (salidaProducto == null) { return(NotFound()); } return(Ok(salidaProducto)); }
public async Task <IActionResult> PutSalidaProducto([FromRoute] int id, [FromBody] SalidaProducto salidaProducto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != salidaProducto.IdSalidaProducto) { return(BadRequest()); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { List <ItemSalidaProducto> items = await sn.Query <ItemSalidaProducto>() .Where(x => x.IdSalidaProducto == id) .ToListAsync(); foreach (var item in items) { InventarioProducto inventario = await sn.Query <InventarioProducto>() .Where(x => x.IdAlmacen == salidaProducto.Almacen.IdAlmacen && x.IdProducto == item.Producto.IdProducto) .FirstOrDefaultAsync(); inventario.Stock = inventario.Stock + (item.Cantidad * item.Factor); } sn.Delete(string.Format("FROM ItemSalidaProducto WHERE IdSalidaProducto = {0}", id)); foreach (var item in salidaProducto.Items) { InventarioProducto inventario = await sn.Query <InventarioProducto>() .Where(x => x.IdAlmacen == salidaProducto.Almacen.IdAlmacen && x.IdProducto == item.Producto.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { throw new Exception("Sin stock para el producto: " + item.Producto.Nombre); } item.IdSalidaProducto = salidaProducto.IdSalidaProducto; sn.Save(item); } SalidaProducto salidaProductoBD = sn.Get <SalidaProducto>(id); salidaProductoBD.Comentario = salidaProducto.Comentario; await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> DeleteSalidaProducto([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { SalidaProducto salidaProducto = sn.Get <SalidaProducto>(id); List <ItemSalidaProducto> items = await sn.Query <ItemSalidaProducto>() .Where(x => x.IdSalidaProducto == id) .ToListAsync(); foreach (var item in items) { InventarioProducto inventario = await sn.Query <InventarioProducto>() .Where(x => x.IdAlmacen == salidaProducto.Almacen.IdAlmacen && x.IdProducto == item.Producto.IdProducto) .FirstOrDefaultAsync(); inventario.Stock = inventario.Stock + (item.Cantidad * item.Factor); } sn.Delete(string.Format("FROM ItemSalidaProducto WHERE IdSalidaProducto = {0}", id)); if (salidaProducto.IdPedido != null) { Pedido pedido = sn.Get <Pedido>(salidaProducto.IdPedido); pedido.FechaEntrega = null; if (pedido.Pago == 0) { pedido.Estado = Constantes.Pendiente; } else if (pedido.Pago == pedido.Total) { pedido.Estado = Constantes.Pagado; } else if (pedido.Pago < pedido.Total) { pedido.Estado = Constantes.PagoParcial; } } sn.Delete(salidaProducto); await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> Entregar([FromBody] SalidaProducto salidaProducto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { Pedido pedido = sn.Get <Pedido>(salidaProducto.IdPedido); pedido.FechaEntrega = DateTime.Now; pedido.Estado = Constantes.Entregado; SalidaProducto salidaProductoBD = new SalidaProducto(); salidaProductoBD.FechaCreacion = DateTime.Now; salidaProductoBD.Usuario = salidaProducto.Usuario; salidaProductoBD.Almacen = salidaProducto.Almacen; salidaProductoBD.Comentario = "GENERADO DESDE PEDIDO"; salidaProductoBD.IdPedido = salidaProducto.IdPedido; sn.Save(salidaProductoBD); List <ItemPedido> items = sn.Query <ItemPedido>() .Where(x => x.IdPedido == pedido.IdPedido) .ToList(); foreach (var item in items) { InventarioProducto inventario = await sn.Query <InventarioProducto>() .Where(x => x.IdAlmacen == salidaProducto.Almacen.IdAlmacen && x.IdProducto == item.Producto.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { throw new Exception("Sin stock para el producto: " + item.Producto.Nombre); } sn.Save(new ItemSalidaProducto { IdSalidaProducto = salidaProductoBD.IdSalidaProducto, Producto = item.Producto, Unidad = item.Unidad, Factor = item.Factor, Cantidad = item.Cantidad }); } await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }