public static void ActualizarDatosFactura(ResponsePublicarNF responseNF, Int32 nuevoEstado, long idDocumentoFiscalERP) { DBAxon db = new DBAxon(); db.OpenFactoryConnection(); try { db.BeginTransaction(); db.SetLockModeToWait(); db.SetDateFormat(); if (responseNF != null) { #region RESPUESTA int responsequery = 0; string codRespuesta = responseNF.respuesta.codRespuesta; string txtRespuesta = responseNF.respuesta.txtRespuesta; #endregion DBAxon.Parameters[] prs = new DBAxon.Parameters[4] { new DBAxon.Parameters("nuevoEstado", nuevoEstado, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codRespuesta", codRespuesta, ParameterDirection.Input, DbType.String, 10), new DBAxon.Parameters("txtRespuesta", txtRespuesta, ParameterDirection.Input, DbType.String, 200), new DBAxon.Parameters("idDocumentoFiscalERP", idDocumentoFiscalERP, ParameterDirection.Input, DbType.Int32) }; string queryUpdate = "UPDATE fehfe SET fehfepnfe=?, fehfepnfc=? , fehfepnft=? " + "WHERE fehfeiddf=?"; responsequery = db.ExecuteNonQuery(CommandType.Text, queryUpdate, prs); if (responsequery > 0) { db.CommitTransaction(); } } } catch (Exception eEx) { db.RollbackTransaction(); throw new Exception(eEx.Message, eEx); } finally { db.CloseFactoryConnection(); db = null; } }
public void GeneraFacturaestandar() { int index = cbxEstadoFactura.SelectedIndex; string estadoFactura = string.Empty; if (index != -1) { //MessageBox.Show("Debe seleccionar un estado"); switch (index) { case 0: estadoFactura = "100"; break; case 1: estadoFactura = "200"; break; default: break; } } int indexTipoFactura = cbxTipoFactura.SelectedIndex; string tipoFactura = string.Empty; if (indexTipoFactura != -1) { //MessageBox.Show("Debe seleccionar un estado"); switch (indexTipoFactura) { case 0: tipoFactura = "1"; break; case 1: tipoFactura = "2"; break; case 2: tipoFactura = "3"; break; default: break; } } Axon.DAL.Conexion oConexion = new Axon.DAL.Conexion(); oConexion.CargarDatosConfiguracion(tipoConexion, baseDatos, dataSource, userId, password, clientLocale, dbLocale); DBAxon db = new DBAxon(); try { DataTable ult = new DataTable(); ult = ObtenerUltimoIDE(); int NroFacturaInicio = int.Parse(ult.Rows[0][0].ToString()) + 1; int esLote; if (!checkBox1.Checked) { esLote = 0; // 0 no es lote 1 es lote } else { esLote = 1; } int Identificadorlote = 0; int Cantidadlote = Convert.ToInt32(textBox2.Text); //cantidad de facturas que se van a generar int contingencia = 0; // si las facturas son de contingencia int CantidadDetalles = Convert.ToInt32(textBox1.Text); string query = ""; string Cabecera; string Detalle; int iddf = 0; int nfac = 0; int item = 0; int limite = NroFacturaInicio + Cantidadlote; db.OpenFactoryConnection(); db.SetLockModeToWait(); db.BeginTransaction(); for (int i = NroFacturaInicio; i < limite; i++) { query = ""; iddf = i; nfac = i; Cabecera = "INSERT INTO fehfe" + "(" + "fehfenfac, fehfedire, fehfeciud, fehfezona, fehfenmed, fehfefemi, fehfegest, fehfemmes, fehfectdi, fehfeccuf, fehfendoc, " + "fehfecomp, fehfecsuc, fehfecpve, fehfenest, fehfersoc, fehfeteve, fehfeleve, fehfefeve, fehfeaeve, fehfensal, fehfedsal, " + "fehfecmon, fehfemser, fehfedoco, fehfedico, fehfenpre, fehfemtot, fehfemtaf, fehfemled, fehfeccli, fehfel317, fehfemtsi, " + "fehfemtmo, fehfetcam, fehfemtoj, fehfemtsl, fehfecdse, fehfenemi, fehfecmpa, fehfemdes, fehfeleye, fehfeusua, fehfentar, " + "fehfepfac, fehfecpai, fehfepveh, fehfetenv, fehfemice, fehfenpro, fehfenrle, fehfecpag, fehfepent, fehfechue, fehfechab, " + "fehfecmay, fehfecmen, fehfefiho, fehfenotu, fehfersot, fehfeckwh, fehfecmcu, fehfedley, fehfetase, fehfetalu, fehfeidca, " + "fehfemtpu, fehfeomon, fehfeinco, fehfepdes, fehfeldes, fehfepvbr, fehfegtfr, fehfesfro, fehfetffr, fehfemtfr, fehfemsin, " + "fehferemi, fehfecons, fehfelapu, fehfeidbd, fehfemrcb, fehfestat, fehfecres, fehfetres, fehfecufd, fehfecont, fehfelote, " + "fehfeidlo, fehfeufac, fehfectip" + ")" + "VALUES" + "(" + " " + nfac + "," + " 'Gualberto villarroel 123', NULL, NULL, NULL, " + "20190205162700" + ", NULL, NULL, 1, NULL, '5642111', NULL, 0, 0, NULL, 'Juan Perez', NULL," + " NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, 50.5, NULL, NULL, 55421, NULL, NULL, 50.5, 6.97, NULL, NULL," + tipoFactura + "," + //fehfecdse " 1028305029, " + //--fehfenemi " 1," + " null, " + //--fehfemdes " 'Ley N 453: Est', 'FTL', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL," + " NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL," + " 0, " + estadoFactura + ", NULL, NULL, NULL, " + "0, " + //fehfecont contingencia "0, " + //fehfelote es lote "0, " + //fehfeidlo id del lote "1, " + //fehfeufac ultima factura "1" + //fehfectip codigo tipo factura ");"; query += Cabecera; for (int j = 1; j <= CantidadDetalles; j++) { Detalle = " INSERT INTO fedfe" + "( fedfeiddf, fedfeitem, fedfeaeco, fedfecpsi, fedfecpro, fedfectha, fedfecnan, fedfedesc, fedfecdia, fedfecant, fedfemice, fedfepuni, fedfestot, fedfemdes, fedfeumed, fedfenser, fedfeespe, fedfeedet, fedfenqso, fedfeemed, fedfename, fedfenifm, fedfenofm, fedfefmed, fedfepdid, fedfenaci, fedfemrcb, fedfestat ) " + "VALUES ( " + iddf + ", " + j + ", " + " '123123', 123, 123, NULL, NULL, 'coca cola 1 litro', NULL, 5, NULL, 10.1, 10.1, " + "NULL" + ", 'botella', '1234567ADC', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );"; query += Detalle; } db.DataAdapter(CommandType.Text, query); } db.CommitTransaction(); db.CloseFactoryConnection(); db = null; } catch (Exception ex) { db.RollbackTransaction(); throw new Exception(ex.Message); } }
private void GuardarResponseFactura(ResponseFactura response) { StringBuilder sql = new StringBuilder("UPDATE fehfe SET "); List <DBAxon.Parameters> parametros = new List <DBAxon.Parameters>(); //Respuesta sql.Append("fehfecres=?, fehfetres=?, "); parametros.Add(new DBAxon.Parameters("cres", response.Respuesta.CodRespuesta, ParameterDirection.Input, DbType.String, 10)); parametros.Add(new DBAxon.Parameters("tres", response.Respuesta.TxtRespuesta, ParameterDirection.Input, DbType.String, 200)); //Proceso sql.Append("fehfeifee = ?, fehfecufd = ?, fehfecsta = ?, fehfectip = ?, "); parametros.Add(new DBAxon.Parameters("ifee", response.Proceso.IdDocFiscalFEEL, ParameterDirection.Input, DbType.String, 20)); parametros.Add(new DBAxon.Parameters("cufd", response.Proceso.CUFD, ParameterDirection.Input, DbType.String, 100)); parametros.Add(new DBAxon.Parameters("csta", response.Proceso.CodEstado, ParameterDirection.Input, DbType.String, 10)); parametros.Add(new DBAxon.Parameters("ctip", response.Proceso.CodigoTipoFactura, ParameterDirection.Input, DbType.Int32)); //Factura - Cabecera sql.Append("fehfefemi=?, fehfectdi=?, fehfeccuf=?, fehfecsuc=?, fehfecpve=?, fehfecdse=?, fehfecmpa=?, fehfeleye=?, fehfecmon=? , fehfestat=" + EstadoDocumentoFiscal.E102_ProcesadaCorrectamente.ToString() + " "); parametros.Add(new DBAxon.Parameters("femi", response.Factura.Cabecera.FechaEmision, ParameterDirection.Input, DbType.String, 20)); parametros.Add(new DBAxon.Parameters("ctdi", response.Factura.Cabecera.CodigoTipoDocumentoIdentidad, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("ccuf", response.Factura.Cabecera.CUF, ParameterDirection.Input, DbType.String, 50)); parametros.Add(new DBAxon.Parameters("csuc", response.Factura.Cabecera.CodigoSucursal, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cpve", response.Factura.Cabecera.CodigoPuntoVenta, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cdse", response.Factura.Cabecera.CodigoDocumentoSector, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cmpa", response.Factura.Cabecera.CodigoMetodoPago, ParameterDirection.Input, DbType.Int16)); parametros.Add(new DBAxon.Parameters("leye", response.Factura.Cabecera.Leyenda, ParameterDirection.Input, DbType.String, 200)); parametros.Add(new DBAxon.Parameters("cmon", response.Factura.Cabecera.CodigoMoneda, ParameterDirection.Input, DbType.Int32)); sql.Append(" WHERE fehfeiddf= ?;"); parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32)); //Factura - ListaDetalle dynamic factura = Convert.ChangeType(response.Factura, response.Factura.GetType()); //sql.Append("UPDATE fedfe SET "); if (factura.Tipo != TipoFactura.notaExportacion) { foreach (var detalle in factura.ListaDetalle) { sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=? WHERE fedfeiddf = ?;"); parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32)); } } else { foreach (var detalle in factura.ListaDetalle) { sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=?, fedfecnan=? WHERE fedfeiddf = ?;"); parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("cnan", detalle.CodigoNandina, ParameterDirection.Input, DbType.Int32)); parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32)); } } //BD DBAxon db = new DBAxon(); try { db.OpenFactoryConnection(); db.BeginTransaction(); db.SetLockModeToWait(); db.PrepareCommand(true, CommandType.Text, sql.ToString(), parametros.ToArray()); db.command.ExecuteNonQuery(); db.CommitTransaction(); } catch (Exception ex) { db.RollbackTransaction(); db.ExecuteNonQuery(CommandType.Text, "UPDATE fehfe SET fehfestat=" + int.Parse(EstadoDocumentoFiscal.E100_PendienteDeEnvio.ToString()) + " WHERE fehfeiddf=" + response.Proceso.IdDocFiscalERP); throw new Exception("Excepcion: GuardarResponseFactura() - " + ex.Message); } finally { db.CloseFactoryConnection(); db = null; } }
public bool ActualizarDatosFactura(ResponseFactura respuestaFacturaEstandar) { DBAxon db = new DBAxon(); #if DEBUG System.Diagnostics.Stopwatch cronoDB = new System.Diagnostics.Stopwatch(); cronoDB.Start(); #endif db.OpenFactoryConnection(); int updateCabecera = 0; int updateItem = 0; try { db.BeginTransaction(); db.SetLockModeToWait(); db.SetDateFormat(); if (respuestaFacturaEstandar != null && respuestaFacturaEstandar.Proceso != null && respuestaFacturaEstandar.Factura != null) { #region RESPUESTA string codRespuesta = respuestaFacturaEstandar.Respuesta.CodRespuesta; string txtRespuesta = respuestaFacturaEstandar.Respuesta.TxtRespuesta; #endregion #region PROCESO string idDocFiscalERP = respuestaFacturaEstandar.Proceso.IdDocFiscalERP; string idDocFiscalFEEL = respuestaFacturaEstandar.Proceso.IdDocFiscalFEEL; string cufd = respuestaFacturaEstandar.Proceso.CUFD; string codEstado = respuestaFacturaEstandar.Proceso.CodEstado; int codigoTipoFactura = respuestaFacturaEstandar.Proceso.CodigoTipoFactura; #endregion #region FACTURA ESTANDAR //CABECERA string fechaEmision = respuestaFacturaEstandar.Factura.Cabecera.FechaEmision; string codigoTipoDocumentoIdentidad = respuestaFacturaEstandar.Factura.Cabecera.CodigoTipoDocumentoIdentidad; string cuf = respuestaFacturaEstandar.Factura.Cabecera.CUF; int codigoSucursal = respuestaFacturaEstandar.Factura.Cabecera.CodigoSucursal; int codigoPuntoVenta = respuestaFacturaEstandar.Factura.Cabecera.CodigoPuntoVenta; int codigoDocumentoSector = respuestaFacturaEstandar.Factura.Cabecera.CodigoDocumentoSector; int codigoMetodoPago = respuestaFacturaEstandar.Factura.Cabecera.CodigoMetodoPago; string leyenda = respuestaFacturaEstandar.Factura.Cabecera.Leyenda; int codigoMoneda = respuestaFacturaEstandar.Factura.Cabecera.CodigoMoneda; DBAxon.Parameters[] prs = new DBAxon.Parameters[16] { new DBAxon.Parameters("codRespuesta", codRespuesta, ParameterDirection.Input, DbType.String, 10), new DBAxon.Parameters("txtRespuesta", txtRespuesta, ParameterDirection.Input, DbType.String, 200), new DBAxon.Parameters("idDocFiscalFEEL", idDocFiscalFEEL, ParameterDirection.Input, DbType.String, 20), new DBAxon.Parameters("cufd", cufd, ParameterDirection.Input, DbType.String, 100), new DBAxon.Parameters("codEstado", codEstado, ParameterDirection.Input, DbType.String, 10), new DBAxon.Parameters("codigoTipoFactura", codigoTipoFactura, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("fechaEmision", fechaEmision, ParameterDirection.Input, DbType.String, 20), new DBAxon.Parameters("codigoTipoDocumentoIdentidad", codigoTipoDocumentoIdentidad, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("cuf", cuf, ParameterDirection.Input, DbType.String, 50), new DBAxon.Parameters("codigoSucursal", codigoSucursal, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoPuntoVenta", codigoPuntoVenta, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoDocumentoSector", codigoDocumentoSector, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoMetodoPago", codigoMetodoPago, ParameterDirection.Input, DbType.Int16), new DBAxon.Parameters("leyenda", leyenda, ParameterDirection.Input, DbType.String, 200), new DBAxon.Parameters("codigoMoneda", codigoMoneda, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("idDocFiscalERP", idDocFiscalERP, ParameterDirection.Input, DbType.Int32) }; string queryUpdate = "UPDATE fehfe SET fehfecres=?, fehfetres=? , fehfeifee=?, fehfecufd=?, " + "fehfecsta=?, fehfectip=?, fehfefemi=?, fehfectdi=?, fehfeccuf=?, fehfecsuc=?, " + "fehfecpve=?, fehfecdse=?, fehfecmpa=?, fehfeleye=?, fehfecmon=? , fehfestat=" + int.Parse(EstadoDocumentoFiscal.E102_ProcesadaCorrectamente.ToString()) + " WHERE fehfeiddf=?"; updateCabecera = db.ExecuteNonQuery(CommandType.Text, queryUpdate, prs); #endregion if (updateCabecera > 0) { #region DETALLE dynamic factura = Convert.ChangeType(respuestaFacturaEstandar.Factura, respuestaFacturaEstandar.Factura.GetType()); if (factura.Tipo != TipoFactura.notaExportacion) { foreach (var item in factura.ListaDetalle) { int?actividadEconomica = item.ActividadEconomica ?? null; int?codigoProductoSin = item.CodigoProductoSIN ?? null; DBAxon.Parameters[] prs2 = new DBAxon.Parameters[2] { new DBAxon.Parameters("actividadEconomica", actividadEconomica, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoProductoSin", codigoProductoSin, ParameterDirection.Input, DbType.Int32) }; updateItem = db.ExecuteNonQuery(CommandType.Text, "UPDATE fedfe SET fedfeaeco=?, fedfecpsi=? " + "WHERE fedfeiddf =" + idDocFiscalERP, prs2); } } else { foreach (var item in factura.ListaDetalle) { int?actividadEconomica = item.ActividadEconomica ?? null; int?codigoProductoSin = item.CodigoProductoSIN ?? null; DBAxon.Parameters[] prs2 = new DBAxon.Parameters[3] { new DBAxon.Parameters("actividadEconomica", actividadEconomica, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoProductoSin", codigoProductoSin, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("codigoNandina", item.CodigoNandina, ParameterDirection.Input, DbType.Int32) }; updateItem = db.ExecuteNonQuery(CommandType.Text, "UPDATE fedfe SET fedfeaeco=?, fedfecpsi=?, fedfecnan=? " + "WHERE fedfeiddf =" + idDocFiscalERP, prs2); } } db.CommitTransaction(); #endregion #if DEBUG cronoDB.Stop(); Cronometro.Instancia.TotalMs += cronoDB.ElapsedMilliseconds; #endif } } else { //string file = Log.Instancia.GeneraNombreLog(); //file += respuestaFacturaEstandar.Proceso.IdDocFiscalERP; //Log.Instancia.LogWS_Mensaje_FSX(file, "Esta nulo o respuestaFacturaEstandar ó respuestaFacturaEstandar.Proceso ó respuestaFacturaEstandar.Factura"); } return((updateCabecera + updateItem) >= 2); } catch (Exception eEx) { db.RollbackTransaction(); throw new Exception(eEx.Message, eEx); } finally { db.CloseFactoryConnection(); db = null; } }
void ActualizarDocumentoFiscal(ResponseConsultaDocumentoFiscal responseConsultaDocumentoFiscal, DataRow facturaLocal) { dynamic facturaFEEL = Convert.ChangeType(responseConsultaDocumentoFiscal.Factura, responseConsultaDocumentoFiscal.Factura.GetType()); List <DBAxon.Parameters> paramsCabecera = new List <DBAxon.Parameters>(); string updCabecera = ConstruirUpdate(facturaFEEL.Cabecera, facturaFEEL.CamposDB, facturaLocal, "fehfe", "fehfeiddf", facturaLocal["fehfeiddf"].ToString(), out paramsCabecera); //Estado string updEstado = ConstruirUpdateEstado(responseConsultaDocumentoFiscal.Estado, facturaLocal["fehfecsta"].ToString(), facturaLocal["fehfeiddf"].ToString()); //Detalle List <string> updsDetalle = new List <string>(); DataTable dt = ObtenerListaDetalle(facturaLocal["fehfeiddf"].ToString()); List <DBAxon.Parameters>[] paramsDetalles = new List <DBAxon.Parameters> [facturaFEEL.ListaDetalle.Count]; if (dt != null && facturaFEEL.ListaDetalle.Count == dt.Rows.Count) { for (int i = 0; i < dt.Rows.Count; i++) { paramsDetalles[i] = new List <DBAxon.Parameters>(); updsDetalle.Add(ConstruirUpdate(facturaFEEL.ListaDetalle[i], facturaFEEL.CamposDB, dt.Rows[i], "fedfe", "fedfeiddf", dt.Rows[i]["fedfeiddf"].ToString(), out paramsDetalles[i])); } } else { if (facturaFEEL.ListaDetalle.Count > 0) //en caso de que haya una cantidad diferente en las listas de detalle { updCabecera += "DELETE FROM fedfe WHERE fedfeiddf = ?;"; paramsCabecera.Add(new DBAxon.Parameters("iddf", facturaLocal["fehfeiddf"].ToString(), ParameterDirection.Input, DbType.Int32)); for (int i = 0; i < facturaFEEL.ListaDetalle.Count; i++) { paramsDetalles[i] = new List <DBAxon.Parameters>(); updsDetalle.Add(ConstruirInsert(facturaFEEL.ListaDetalle[i], facturaFEEL.CamposDB, "fedfe", "fedfeiddf", facturaLocal["fehfeiddf"].ToString(), out paramsDetalles[i])); } } } bool huboCambios = false; string sql = string.Empty; List <DBAxon.Parameters> paramsGral = new List <DBAxon.Parameters>(); DBAxon db = new DBAxon(); try { db.OpenFactoryConnection(); db.BeginTransaction(); db.SetLockModeToWait(); if (paramsCabecera.Count > 1) //Si hay diferencias, guardar { paramsGral.AddRange(paramsCabecera.ToArray()); sql += updCabecera.ToString(); huboCambios = true; } for (int i = 0; i < updsDetalle.Count; i++) { if (paramsDetalles[i].Count > 1) { paramsGral.AddRange(paramsDetalles[i].ToArray()); sql += updsDetalle[i].ToString(); huboCambios = true; } } huboCambios = !string.IsNullOrEmpty(updEstado); if (huboCambios) //agregar hora y fecha de corrección { sql += "UPDATE fehfe SET fehfevfco = ?, fehfevhco = ?, fehfeecdf = ? WHERE fehfeiddf = ?;"; paramsGral.AddRange(new DBAxon.Parameters[] { new DBAxon.Parameters("vfco", DateTime.Now, ParameterDirection.Input, DbType.Date), new DBAxon.Parameters("vhco", DateTime.Now.ToString("HH:mm:ss"), ParameterDirection.Input, DbType.String, 8), new DBAxon.Parameters("ecdf", EstadoDocumentoFiscal.E503_Actualizada, ParameterDirection.Input, DbType.Int32), new DBAxon.Parameters("iddf", Convert.ToInt32(facturaLocal["fehfeiddf"].ToString()), ParameterDirection.Input, DbType.Int32) }); if (!string.IsNullOrEmpty(updEstado)) { sql += updEstado; } db.PrepareCommand(true, CommandType.Text, sql, paramsGral.ToArray()); db.command.ExecuteNonQuery(); GuardarLogDeCambios(sql, paramsGral, facturaLocal, dt); } db.CommitTransaction(); } catch (Exception ex) { db.RollbackTransaction(); throw new Exception("Excepción: ActualizarDocumentoFiscales()" + ex.Message); } finally { db.CloseFactoryConnection(); db = null; } }