private String fnDiasNoHabiles(DateTime?fechaCierre, DateTime oPrimerDiaDelMes, DateTime oUltimoDiaDelMes)
        {
            string DiaHabil = "S";

            CargarDatosSvc.clsResultado        resultado      = new CargarDatosSvc.clsResultado();
            CargarDatosSvc.clsFiltro           filtro1        = new CargarDatosSvc.clsFiltro();
            CargarDatosSvc.CargaDatosSvcClient svcDiasHabiles = new CargarDatosSvc.CargaDatosSvcClient();

            //List<CargarDatosSvc.clsDiasFeriados> diasHabiles = new List<CargarDatosSvc.clsDiasFeriados>();
            filtro1.Modo   = 1;
            filtro1.Filtro = "df_fecha>='" + Convert.ToDateTime(oPrimerDiaDelMes.ToString()).ToString("MM/dd/yyyy") + "' and df_fecha <='" + Convert.ToDateTime(oUltimoDiaDelMes.ToString()).ToString("MM/dd/yyyy") + "' and df_ciudad = 1706";
            var diasHabiles = svcDiasHabiles.CargarDataFechas(filtro1, out resultado);

            for (int i = 0; i < diasHabiles.Length; i++)
            {
                if (fechaCierre == diasHabiles[i].Fecha)
                {
                    DiaHabil = "N";
                    break;
                }
            }

            return(DiaHabil);
        }
        private void fnEjecutarProcesos()
        {
            DateTime fechaCalendario = new DateTime();

            fechaCalendario = DateTime.Now;
            //DateTime fechaSd = new DateTime();

            System.DateTime.Now.DayOfWeek.ToString();
            CargarDatosSvc.clsCargaDatos param     = new CargarDatosSvc.clsCargaDatos();
            CargarDatosSvc.clsResultado  resultado = new CargarDatosSvc.clsResultado();
            CargarDatosSvc.clsFiltro     filtro    = new CargarDatosSvc.clsFiltro();

            CargarDatosSvc.CargaDatosSvcClient svc = new CargarDatosSvc.CargaDatosSvcClient();
            //Consulta de las fechas saldo diario y fecha de cierre o corte
            filtro.Modo   = 0;
            filtro.Filtro = "";
            svc.CargarDataFechas(filtro, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    eventLog.WriteEntry("ERROR CONSULTA DE FECHAS DE CIERRE Y SALDOS DIARIOS: " + "   " + resultado.Mensaje, EventLogEntryType.Error, 0);
                    errores.Add(resultado.Mensaje);
                    System.IO.File.WriteAllLines(pathLog, errores);
                    fnEnviarCorreo();
                    return;
                }
            }
            param.FechaSd     = resultado.FechaSd;
            param.FechaCierre = resultado.FechaCierre;

            var date = fechaCalendario;//resultado.FechaSd;// fecha.Value.DayOfWeek.ToString();
            ///Valida si es Fin de mes
            //se obtiene primer dia del mes
            DateTime oPrimerDiaDelMes = new DateTime(date.Year, date.Month, 1);
            //Y de la siguiente forma obtenemos el ultimo dia del mes
            //agregamos 1 mes al objeto anterior y restamos 1 día.
            DateTime oUltimoDiaDelMes = oPrimerDiaDelMes.AddMonths(1).AddDays(-1);

            ///comparamos la fecha obtenida con el ultimo dia del mes
            if (fechaCalendario.Day == oUltimoDiaDelMes.Day)
            //if (resultado.FechaCierre.Value.Day == oUltimoDiaDelMes.Day)
            {
                //validar si es feriado o dia no habil
                //var diaHabil = fnDiasNoHabiles(resultado.FechaCierre, oPrimerDiaDelMes, oUltimoDiaDelMes);
                param.Finmes     = "S";
                param.Fechadesde = oPrimerDiaDelMes;
                param.FechaHasta = oUltimoDiaDelMes;
                //var diaHabil = fnDiasNoHabiles(fechaCalendario, oPrimerDiaDelMes, oUltimoDiaDelMes);
                //if (diaHabil == "N")
                //{
                //    param.FechaHasta = resultado.FechaCierre;
                //}
                //else {
                //    param.FechaHasta = oUltimoDiaDelMes;
                //}
            }
            else
            {
                var diaHabil = fnDiasNoHabiles(Convert.ToDateTime(fechaCalendario.ToShortDateString()), oPrimerDiaDelMes, oUltimoDiaDelMes);
                if (diaHabil == "S")
                {
                    param.Finmes     = "N";
                    param.Fechadesde = param.FechaHasta = resultado.FechaCierre;
                }
                else
                {
                    eventLog.WriteEntry("Dia no Habil." + DateTime.Now.ToLocalTime().ToString());
                    return;
                }
            }

            //CONSULTA 2105 PF
            param.DiasIni = 0;
            eventLog.WriteEntry("Inicia Carga 2105 PF." + DateTime.Now.ToLocalTime().ToString());
            svc.CargarData2105PF(param, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    string errorRecibido = "ERROR EN EL PROCESO DE CARGA 2105 PF: " + "   " + resultado.Mensaje;
                    eventLog.WriteEntry(errorRecibido, EventLogEntryType.Error, 0);
                    errores.Add(errorRecibido);
                }
            }
            eventLog.WriteEntry("Fin Carga 2105 PF." + DateTime.Now.ToLocalTime().ToString());
            //CONSULTA 2103
            eventLog.WriteEntry("Inicia Carga 2103 PF." + DateTime.Now.ToLocalTime().ToString());
            param.DiasIni = 0;
            svc.CargarData2103(param, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    string errorRecibido = "ERROR EN EL PROCESO DE CARGA 2103: " + "   " + resultado.Mensaje;
                    eventLog.WriteEntry(errorRecibido, EventLogEntryType.Error, 0);
                    errores.Add(errorRecibido);
                }
            }
            eventLog.WriteEntry("Fin Carga 2103 PF." + DateTime.Now.ToLocalTime().ToString());

            //CONSULTA 2105
            eventLog.WriteEntry("Inicia Carga 2105 AHORRO." + DateTime.Now.ToLocalTime().ToString());
            param.Encaje = "S";
            svc.CargarData2105(param, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    string errorRecibido = "ERROR EN EL PROCESO DE CARGA 2105: " + "   " + resultado.Mensaje;
                    eventLog.WriteEntry(errorRecibido, EventLogEntryType.Error, 0);
                    errores.Add(errorRecibido);
                }
            }
            eventLog.WriteEntry("Fin Carga 2105 ahorro." + DateTime.Now.ToLocalTime().ToString());
            ////CONSULTA 2101

            eventLog.WriteEntry("Inicia Carga 2101 AHORRO." + DateTime.Now.ToLocalTime().ToString());
            svc.CargarData2101(param, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    string errorRecibido = "ERROR EN EL PROCESO DE CARGA 2101: " + "   " + resultado.Mensaje;
                    eventLog.WriteEntry(errorRecibido, EventLogEntryType.Error, 0);
                    errores.Add(errorRecibido);
                }
            }
            eventLog.WriteEntry("FIN Carga 2101 AHORRO." + DateTime.Now.ToLocalTime().ToString());

            //CONSULTA 210150
            eventLog.WriteEntry("Inicia Carga 210150 AHORRO." + DateTime.Now.ToLocalTime().ToString());
            svc.CargarData210105(param, out resultado);

            if (resultado.Resultado != 0)
            {
                using (EventLog eventLog = new System.Diagnostics.EventLog("Application", Environment.MachineName, strSource))
                {
                    string errorRecibido = "ERROR EN EL PROCESO DE CARGA 210150: " + "   " + resultado.Mensaje;
                    eventLog.WriteEntry(errorRecibido, EventLogEntryType.Error, 0);
                    errores.Add(errorRecibido);
                }
            }

            eventLog.WriteEntry("FIN Carga 210150 AHORRO." + DateTime.Now.ToLocalTime().ToString());

            //GENERAR LOG SI LA LISTA NO ESTA VACÍA
            if (errores.Count > 0)
            {
                System.IO.File.WriteAllLines(pathLog, errores);
                fnEnviarCorreo();
            }
        }