/// <summary> /// Devuelve una lista de cambios si no encuentra nada devuielve excepcion propia /// </summary> /// <param name="idVenta"></param> /// <returns></returns> public List <VentaLineaCambio> BuscarListCambios(int idVenta) { try { string sql = "SELECT * FROM venta_detalle_cambio vdc WHERE vdc.idventa=:p1"; DataTable dt = conn.GetDT(sql, idVenta); if (dt == null || dt.Rows.Count == 0) { throw new ExcepcionPropia("No se han encontrado Cambios"); } else { ControladorArticulos c_art = new ControladorArticulos(conn); List <VentaLineaCambio> listVlc = new List <VentaLineaCambio>(); foreach (DataRow row in dt.Rows) { VentaLineaCambio vlc = new VentaLineaCambio(); vlc.Articulo = c_art.BuscarArticulo(Convert.ToInt32(row["idarticulo"])); vlc.ArticuloAnterior = c_art.BuscarArticulo(Convert.ToInt32(row["idarticulo_anterior"])); vlc.Cantidad = Convert.ToInt32(row["cantidad"]); vlc.FechaCambio = Convert.ToDateTime(row["fecha_cambio"]); vlc.IdVenta = Convert.ToInt32(row["idventa"]); vlc.IdUsuario = Convert.ToInt32(row["idusuario"]); listVlc.Add(vlc); } return(listVlc); } } catch (Npgsql.NpgsqlException ex) { ControladorExcepcion.tiraExcepcion(ex); return(null); } }
/// <summary> /// Realiza el cambio. /// /// </summary> /// <param name="lvNueva"></param> /// <param name="lvCambiada"></param> public void RealizarCambio(VentaLinea lvNueva, VentaLineaCambio lvCambiada) { BeginTransaction(); try { string sql = "DELETE FROM venta_detalle WHERE idventa=:p1 AND idarticulo=:p2"; conn.Execute(sql, lvCambiada.IdVenta, lvCambiada.IdArticuloAnterior); string sql1 = @"INSERT INTO venta_detalle_cambio ( idventa, idarticulo, cantidad, idusuario, fecha_cambio, idarticulo_anterior ) VALUES ( :idventa, :idarticulo, :cantidad, :idusuario, :fecha_cambio, :idarticulo_anterior )"; conn.Execute(sql1, lvCambiada.IdVenta, lvCambiada.IdArticulo, lvCambiada.Cantidad, lvCambiada.IdUsuario, lvCambiada.FechaCambio, lvCambiada.IdArticuloAnterior); insertVentaLinea(lvNueva); ///Actualizo strock articulos Venta v = buscarVenta(lvCambiada.IdVenta); ControladorArticulos c_art = new ControladorArticulos(conn); c_art.ActualizarStockArticulo(lvNueva.Idarticulo, -lvNueva.Cantidad, v.IdSucursal); c_art.ActualizarStockArticulo(lvCambiada.ArticuloAnterior.Idarticulo, lvCambiada.Cantidad, v.IdSucursal); CommitTransaction(); } catch (Npgsql.NpgsqlException ex) { RollbackTransaction(); ControladorExcepcion.tiraExcepcion(ex); } }
protected void btnAceptarModalCambio_Click(object sender, EventArgs e) { try { Articulo artAModificar = new Articulo(); artAModificar.Idarticulo = Convert.ToInt32(hfIdArticuloACambiar.Value); Articulo artNuevo = new Articulo(); artNuevo.Idarticulo = Convert.ToInt32(cbxArticulosModal.SelectedValue); VentaLineaCambio vdc = new VentaLineaCambio(); vdc.IdVenta = ventaActual.Idventa; vdc.Articulo = artNuevo; vdc.ArticuloAnterior = artAModificar; vdc.Cantidad = Convert.ToInt32(txtCantidad.Text); vdc.FechaCambio = DateTime.Today; vdc.IdUsuario = ApplicationSesion.ActiveUser.Idusuario; VentaLinea vl = new VentaLinea(); vl.Articulo = artNuevo; vl.Cantidad = Convert.ToInt32(txtCantidad.Text); vl.Idventa = ventaActual.Idventa; vl.PrecioUnitario = ventaActual.ListLineaVenta.FirstOrDefault(lv => lv.Idarticulo == artAModificar.Idarticulo).PrecioUnitario; using (ControladorVentas c_vemtas = new ControladorVentas()) { c_vemtas.RealizarCambio(vl, vdc); } Response.Redirect(ResolveUrl("~/Venta/Ventas.aspx?m='Cambio Realizado Correctamete'")); } catch (ExcepcionPropia ex) { cerrarModal(modalArticulo); mostrarExcepcion(ex.Message); } catch (FormatException ex) { cerrarModal(modalArticulo); mostrarExcepcion(ex.Message); } }