public void AgregarLinea(LineasFactura L, int numFac, SqlTransaction _pTransaccion) { SqlCommand oComando = new SqlCommand("AltaLineaFactura", _pTransaccion.Connection); oComando.CommandType = CommandType.StoredProcedure; oComando.Parameters.AddWithValue("@numFac", numFac); oComando.Parameters.AddWithValue("@codArt", L.Articulo.Codigo); oComando.Parameters.AddWithValue("@cantidad", L.Cantidad); SqlParameter _Retorno = new SqlParameter("@Retorno", SqlDbType.Int); _Retorno.Direction = ParameterDirection.ReturnValue; oComando.Parameters.Add(_Retorno); int oAfectados; try { oComando.Transaction = _pTransaccion; oComando.ExecuteNonQuery(); oAfectados = (int)oComando.Parameters["@Retorno"].Value; if (oAfectados == -1) { throw new Exception("No existe un articulo con el codigo especificado"); } if (oAfectados == -2) { throw new Exception("No existe una factura con el numero especificado"); } if (oAfectados == -3) { throw new Exception("La cantidad de lineas de factura no puede superar las 5"); } if (oAfectados == -4) { throw new Exception("Ocurrio un error al intentar agregar la linea de factura"); } } catch (Exception ex) { throw new ApplicationException("Problemas con la base de datos:" + ex.Message); } }
protected void btnAgregarArticulo_Click(object sender, EventArgs e) { int codArt; int cantidad; LineasFactura linea; List <LineasFactura> lineas; lineas = (List <LineasFactura>)Session["Lineas"]; if (lineas == null) { lineas = new List <LineasFactura>(); } List <Articulo> articulos = (List <Articulo>)Session["Articulos"]; try { codArt = Convert.ToInt32(txtCodigoArticulo.Text); cantidad = Convert.ToInt32(txtCantidad.Text); Articulo articuloEncontrado = FabricaLogica.getLogicaArticulos().BuscarArticulo(codArt); if (articuloEncontrado == null) { throw new Exception("El articulo con el codigo especificado no existe"); } else { foreach (LineasFactura L in lineas) { if (L.Articulo.Codigo == codArt) { return; //codigo duplicado } } linea = new LineasFactura(articuloEncontrado, cantidad); lineas.Add(linea); Session["Lineas"] = lineas; gvProductos.DataSource = lineas; gvProductos.DataBind(); } btnAgregar.Enabled = true; txtCodigoArticulo.Text = ""; txtCantidad.Text = ""; } catch (Exception ex) { lblError.Text = ex.Message; } }