Example #1
0
        public virtual HistoricoPeriodicidade GetPeriodicidadeVigente()
        {
            var hoje = DateTime.Now;
            HistoricoPeriodicidade objetoPeriodoVigente = this.ListaHistoricoPeriodicidade.Find(x => (hoje >= x.DataInicio) && (hoje <= x.DataFinal || x.DataFinal == null));

            if (objetoPeriodoVigente == null)
            {
                throw new ValidationException("A obrigação " + this.NomeObrigacao + " não possui periodicidade vigente.");
            }
            return(objetoPeriodoVigente);
        }
Example #2
0
        public virtual DateTime?GetDataVencimento(int mesMonitorado, int anoMonitorado)
        {
            HistoricoPeriodicidade historicoPeriodicidadeVigente = this.GetPeriodicidadeVigente();
            DateTime dataMonitoramento = new DateTime(anoMonitorado, mesMonitorado, DateTime.DaysInMonth(anoMonitorado, mesMonitorado));
            DateTime primeiroDiaDoAno  = new DateTime(anoMonitorado, 1, 1);

            DateTime?dataDeVencimento = null;

            int diasDeCarencia = historicoPeriodicidadeVigente.DiasCarencia;

            switch (historicoPeriodicidadeVigente.TipoPeriodicidade)
            {
            // case "D":
            //     for (DateTime dataVencimentoObrigacao = primeiroDiaDoAno; dataVencimentoObrigacao <= dataMonitoramento; dataVencimentoObrigacao = dataVencimentoObrigacao.AddMonths (historicoPeriodicidade.Periodicidade)) {
            //         if (dataVencimentoObrigacao.Day == dataMonitoramento.Day) {
            //             dataDeVencimento = dataVencimentoObrigacao.AddDays(diasDeCarencia);
            //         }
            //     }
            //     break;
            case "M":
                for (int mes = historicoPeriodicidadeVigente.Periodicidade; mes <= 12; mes += historicoPeriodicidadeVigente.Periodicidade)
                {
                    if (mes == mesMonitorado)
                    {
                        dataDeVencimento = new DateTime(anoMonitorado, mesMonitorado, DateTime.DaysInMonth(anoMonitorado, mesMonitorado), 23, 59, 59).AddDays(diasDeCarencia);
                    }
                }
                break;

            case "A":
                if (mesMonitorado == 12)
                {
                    var ultimoDiaDoAnoAnalisado = new DateTime(anoMonitorado, 12, 31, 23, 59, 59);
                    dataDeVencimento = ultimoDiaDoAnoAnalisado.AddDays(diasDeCarencia);
                }
                break;
            }
            return(dataDeVencimento);
        }
        public override void ValidarMonitoramento(int mes, int ano)
        {
            var dataHoje = DateTime.Now;
            HistoricoPeriodicidade periodicidade = this.GetPeriodicidadeVigente();

            if (ano > dataHoje.Year)
            {
                throw new ValidationException("Não é possível gerar pendências para datas futuras.");
            }
            else if (ano == dataHoje.Year)
            {
                if (mes == dataHoje.AddMonths(-1).Month)
                {
                    if (dataHoje.Day <= periodicidade.DiasCarencia)
                    {
                        throw new ValidationException("Não é possível gerar pendências antes do dia " + (periodicidade.DiasCarencia + 1) + " para este mês.");
                    }
                }
                else if (mes >= dataHoje.Month)
                {
                    throw new ValidationException("Não é possível gerar pendências para o mês atual ou datas futuras.");
                }
            }
        }