protected void btnEmitirComprobante_Click(object sender, EventArgs e) { pcValidarComprobante.ShowOnPageLoad = false; List <object> arrayListRemitos = (List <object>)Session["listRemitos"]; List <int> codigoRemitos = new List <int>(); foreach (object[] itmes in arrayListRemitos) { codigoRemitos.Add(Convert.ToInt32(itmes[0].ToString())); } DataTable tablaItemsEntrega = new DataTable(); tablaItemsEntrega.Columns.Add("codigoEntrega"); tablaItemsEntrega.Columns.Add("codigoItemEntrega"); tablaItemsEntrega.Columns.Add("precio"); for (int i = 0; i < gvItemsFactura.VisibleRowCount; i++) { DataRow row = tablaItemsEntrega.NewRow(); row["codigoEntrega"] = gvItemsFactura.GetRowValues(i, "codigoEntrega"); row["codigoItemEntrega"] = gvItemsFactura.GetRowValues(i, "codigoItemEntrega"); row["precio"] = gvItemsFactura.GetRowValues(i, "precioUnitario"); tablaItemsEntrega.Rows.Add(row); } ControladorGeneral.InsertarActualizarFactura(0, Convert.ToInt32(txtNroFactura.Text), Convert.ToDateTime(txtFechaFacturacion.Text), codigoRemitos, Convert.ToInt32(cbTipoMoneda.Value), Convert.ToInt32(cbConcepto.Value), Convert.ToInt32(cbCondicionIVA.Value), Convert.ToDouble(txtSubtotal.Text), Convert.ToDouble(txtTotal.Text), Convert.ToString(cbCondicionVenta.Text), Convert.ToDouble(txtCotizacion.Text), tablaItemsEntrega); //Obtengo ultimo codigo de factura y emito la factura DataTable tablaUltimaFactura = ControladorGeneral.RecuperarUltimaFactura(); string codigoFactura = tablaUltimaFactura.Rows.Count > 0 ? (Convert.ToInt32(tablaUltimaFactura.Rows[0]["codigoFactura"])).ToString() : string.Empty; try { string status = ControladorGeneral.EmitirFactura(Convert.ToInt32(codigoFactura)); lblError.Text = status; pcError.ShowOnPageLoad = true; } catch { lblError.Text = "Ha ocurrido un error. No hay conexion con los servidor de AFIP, vuelva a intentar."; pcError.ShowOnPageLoad = true; } }