private DateTime FijarPeriodoPorPeriodicidad(DateTime periodo, EnumPeriodicidad periodicidad, int datoPeriodo)
        {
            DateTime fecha = periodo;

            if (periodicidad == EnumPeriodicidad.trimestral)
            {
                switch (datoPeriodo)
                {
                case 1:
                    fecha = new DateTime(periodo.Year, 1, 1);
                    break;

                case 2:
                    fecha = new DateTime(periodo.Year, 4, 1);
                    break;

                case 3:
                    fecha = new DateTime(periodo.Year, 7, 1);
                    break;

                case 4:
                    fecha = new DateTime(periodo.Year, 10, 1);
                    break;

                default:
                    break;
                }
            }

            return(fecha);
        }
예제 #2
0
        public string ObtenerPeriodoPorPeriodicidad(DateTime periodo, EnumPeriodicidad periodicidad, int datoPeriodo)
        {
            string resultado = string.Empty;

            DateTime fecha = periodo;

            if (periodicidad == EnumPeriodicidad.trimestral)
            {
                switch (datoPeriodo)
                {
                case 1:
                    fecha = new DateTime(periodo.Year, 1, 1);
                    break;

                case 2:
                    fecha = new DateTime(periodo.Year, 4, 1);
                    break;

                case 3:
                    fecha = new DateTime(periodo.Year, 7, 1);
                    break;

                case 4:
                    fecha = new DateTime(periodo.Year, 10, 1);
                    break;

                default:
                    break;
                }
            }

            switch (periodicidad)
            {
            case EnumPeriodicidad.diario:
                resultado = fecha.ToString("yyyyMMdd");
                break;

            case EnumPeriodicidad.mensual:
                resultado = fecha.ToString("yyyyMM");
                break;

            case EnumPeriodicidad.trimestral:
                int trimester = (fecha.Month - 1) / 3 + 1;
                resultado = fecha.ToString("yyyy") + trimester.ToString();
                break;

            case EnumPeriodicidad.semestral:
                int semestre = (fecha.Month - 1) / 3 + 1;
                resultado = semestre > 2 ? "2" : "1";
                break;

            case EnumPeriodicidad.anual:
                resultado = fecha.ToString("yyyy");
                break;

            default:
                break;
            }

            return(resultado);
        }
예제 #3
0
        private string ConstruirConsultaArchivo(List <MODCamposArchivo> prmCampos, int prmIdArchivo, int prmIdReporte, DateTime prmPeriodo, EnumPeriodicidad prmPeriodicidad, int prmIdFlujo, int prmDatoPeriodo, int?prmIdElemento = 0)
        {
            IReporteNegocio reporteNegocio = FabricaNegocio.CrearReporteNegocio;

            string sql = $"SELECT {prmIdArchivo} AS IdArchivo";

            prmCampos.OrderBy(x => x.Orden).ToList().ForEach(x => {
                sql += $", {x.Nombre} ";
            });

            var reporte = reporteNegocio.Obtener(new Comun.Entidades.Reportes.MODReporteFiltro()
            {
                Id = prmIdReporte
            });

            string nombreTabla = String.Empty;

            if (prmIdElemento != null && prmIdElemento != 0)
            {
                var elemento = reporteNegocio.Obtener(new Comun.Entidades.Reportes.MODReporteFiltro()
                {
                    Id = (int)prmIdElemento
                });
                nombreTabla = $"TB_{elemento.First().Nombre.ToUpper().Replace(" ", "_")}_{reporte.First().NombreEmpresa.ToUpper().Replace(" ", "_")}_{reporte.First().Nombre.ToUpper().Replace(" ", "_")}";
            }
            else
            {
                nombreTabla = $"TB_{reporte.First().Nombre.ToUpper().Replace(" ", "_")}_{reporte.First().NombreEmpresa.ToUpper().Replace(" ", "_")}_{reporte.First().Nombre.ToUpper().Replace(" ", "_")}";
            }

            sql += $" FROM {nombreTabla}";

            string periodo = ObtenerPeriodoPorPeriodicidad(prmPeriodo, prmPeriodicidad, prmDatoPeriodo);

            sql += $" WHERE VERSION_SIR = (SELECT MAX(VERSION_SIR) FROM {nombreTabla} WHERE PERIODO_SIR = '{periodo}' AND IDFLUJO_SIR = {prmIdFlujo}) AND PERIODO_SIR = '{periodo}' AND IDFLUJO_SIR = {prmIdFlujo}";

            return(sql);
        }