Пример #1
0
        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);
            }
        }
Пример #2
0
        //  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);
            }
        }
Пример #3
0
        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)");
            }
        }