public void EjecutarEnSerie(EventLog eventos) { for (int i = 0; i < NumeroFacs; i++) { string correlativo = Facturas[i].EmisionDocumento.infoProc.corrDoc; string Tipo_doc = Facturas[i].EmisionDocumento.infoProc.tipoDoc; string serie = Facturas[i].EmisionDocumento.infoProc.SerieDoc; WSConnectDBNet.EnviarDocumento(Funciones.LimpiarJson(JsonConvert.SerializeObject(Facturas[i])), correlativo, serie, Tipo_doc, url, eventos); } for (int i = 0; i < NumeroNotas; i++) { string correlativo = Notas[i].EmisionDocumento.infoProc.corrDoc; string Tipo_doc = Notas[i].EmisionDocumento.infoProc.tipoDoc; string serie = Notas[i].EmisionDocumento.infoProc.SerieDoc; WSConnectDBNet.EnviarDocumento(Funciones.LimpiarJson(JsonConvert.SerializeObject(Notas[i])), correlativo, serie, Tipo_doc, url, eventos); } }
// Crea hilos de ejecución para enviar los documentos de forma paralela public void Ejecutar(EventLog eventos) { List <Thread> hilo_proc = new List <Thread>(); try { for (int i = 0; i < NumeroFacs; i++) { int it_aux = i; hilo_proc.Add(new Thread(() => WSConnectDBNet.EnviarDocumento(Funciones.LimpiarJson(JsonConvert.SerializeObject(Facturas[it_aux])), Facturas[it_aux].EmisionDocumento.infoProc.SerieDoc + Facturas[it_aux].EmisionDocumento.infoProc.corrDoc, Facturas[it_aux].EmisionDocumento.infoProc.SerieDoc, Facturas[it_aux].EmisionDocumento.infoProc.tipoDoc, url, eventos))); hilo_proc[it_aux].Start(); } for (int i = 0; i < NumeroNotas; i++) { int it_aux = i; hilo_proc.Add(new Thread(() => WSConnectDBNet.EnviarDocumento(Funciones.LimpiarJson(JsonConvert.SerializeObject(Notas[it_aux])), Notas[it_aux].EmisionDocumento.infoProc.SerieDoc + Notas[it_aux].EmisionDocumento.infoProc.corrDoc, Notas[it_aux].EmisionDocumento.infoProc.SerieDoc, Notas[it_aux].EmisionDocumento.infoProc.tipoDoc, url, eventos))); hilo_proc[it_aux].Start(); } foreach (Thread t in hilo_proc) { t.Join(); } /*bool hilos_Activos = true; * * while (hilos_Activos) * { * hilos_Activos = false; * for (int i = 0; i < hilo_proc.Count; i++) * { * if (hilo_proc[i].IsAlive) hilos_Activos = true; * } * }*/ } catch (Exception e) { throw new Exception(e.Message); } }
public static void EjecutarFac(Configuracion config, ref EventLog eventos) { if (debug) { eventos.WriteEntry("DEBUG: Entrando a EjecutarFacturas"); } // Nos conectamos a la BBDD y verificamos que haya alguna fila por extraer SqlDataReader consulta; try { consulta = ConectBBDD.HacerConsultaFAC(config); } catch (Exception e) { eventos.WriteEntry("Error interno 101 al hacer consulta a la base de datos: \n" + Helpers.GetExceptionDetails(e), EventLogEntryType.Error); return; } if (consulta == null) { //eventos.WriteEntry("Error interno 111 al hacer consulta a la base de datos. La consulta devolvió NULL: Verifique su configuración.", EventLogEntryType.Error); if (debug) { eventos.WriteEntry("DEBUG: Saliendo de iteración por consulta = null (Facturas)"); } return; } if (!consulta.HasRows) { return; } //--- // Pedimos el Token a DBNet para construir los documentos: string token = ""; WSConnectDBNet wSConnectDBNet = new WSConnectDBNet(config.URLWSDBNet); try { token = wSConnectDBNet.ObtenerToken(config.idEmpresaDBNet, config.UserEmpresaDBNet, config.AutorizacionEmpresaDBNet); } catch (Exception e) { eventos.WriteEntry("Error interno 102 al obtener el token: \n" + Helpers.GetExceptionDetails(e), EventLogEntryType.Error); return; } //--- List <Documents.FAC.FAC> Lista_FACs = new List <Documents.FAC.FAC>(); List <Documents.DOCs.NC_ND> Lista_Notas = new List <Documents.DOCs.NC_ND>(); Lista_FACs = LlenarDocumentos.ConstruirDocumentosConsultaFAC(consulta, config, token); //Lista_Notas = LlenarDocumentos.ConstruirDocumentosConsultaNotas(consulta, config, token); // Empezamos a enviar los documentos Hilos hilos_Agente = new Hilos(Lista_FACs, Lista_Notas, config.URLWSDBNet, eventos); try { hilos_Agente.EjecutarEnSerie(eventos); // Enviamos los documentos } catch (Exception e) { eventos.WriteEntry("Error interno 103 al enviar documentos: \n" + Helpers.GetExceptionDetails(e), EventLogEntryType.Error); return; } //--- try { ConectBBDD.ActualizarCamposBBDD(config, WSConnectDBNet.respuestas); // Actualizamos la info en la base de datos } catch (Exception e) { eventos.WriteEntry("Error interno 104 al actualizar campos de la base de datos: \n" + Helpers.GetExceptionDetails(e), EventLogEntryType.Error); WSConnectDBNet.respuestas.Clear(); return; } WSConnectDBNet.respuestas.Clear(); //--- if (config.GenerarJsonDocumentosConector) { try { Funciones.GuardarDocumentos(config.RutaGuardadoJsonDocumentosFACConector, config.RutaGuardadoJsonDocumentosNOTASConector, Lista_FACs, Lista_Notas); } catch (Exception e) { eventos.WriteEntry("Error interno 121 al guardar documentos en el equipo: \n" + Helpers.GetExceptionDetails(e), EventLogEntryType.Error); return; } } if (debug) { eventos.WriteEntry("DEBUG: saliendo de EjecutarFacturas (Facturas)"); } }