Array
(
)

Dúvida sobre compra parcelada

Raniel Nogueira
   - 22 jun 2013

Pessoal estou com uma dúvida, eu sei fazer no caso o vencimento do produto e tal. Mais quando parte para compra parcelada, ainda não raciocinei bem ainda para produzir um algoritmo eficiente, obs: Estou criando um gestor financeiro pessoal.

Joel Rodrigues
   - 22 jun 2013

Não entendi bem qual é sua dificuldade.

Raniel Nogueira
   - 22 jun 2013

Tipo assim, tenho uma divida que se vence nos dia 20 de cada mês, e ela é parcelada em 3x quero que ele mostre a data de vencimento dá segunda parcela após o vencimento da primeira parcela. E assim por diante.

Joel Rodrigues
   - 22 jun 2013

Bem, definido o dia do vencimento da primeira parcela, você conta 30 dias (mês fiscal) a partir dela para encontrar o vencimento da segunda e assim por diante. Caso caia em um final de semana ou feriado, você passa para a próxima data válida.

Outra forma seria fixar o dia do vencimento. Se será todo dia 20 de cada mês, basta verificar se o dia 20 não cairá em um fim de semana ou feriado e proceder como dito acima.

Como você pretende calcular os vencimentos das próximas parcelas? Em dias fixos ou 30 dias após a anterior?

Raniel Nogueira
   - 22 jun 2013

Poderia ser em dias fixos mesmo de 30 dias.

Joel Rodrigues
   - 22 jun 2013

Cara, não entendi =/
Você meio que misturou os dois aí.

Raniel Nogueira
   - 22 jun 2013

Olha amigo queria só um exemplo, que eu possa calcular a data do vencimento parcelado em meses. Decrementando os meses do pagamento após o vencimento. Pode ser qualquer exemplo e depois vou melhorando o mesmo, só estou meio desnorteado no momento na regra de negócio.

Joel Rodrigues
   - 22 jun 2013

Bom, eu não tenho o Delphi aqui, mas a ideia eu já passei.
Se você tem a data da primeira parcela e a quantidade de parcelas, basta fazer um loop com N-1 iterações, onde N é o número de parcelas. Em cada iteração você instancia um novo DateTime, aumentando o mês (a partir da data anterior) e mantendo fixo o dia.

Raniel Nogueira
   - 22 jun 2013

Delphi? cara estou fazendo em C#

Joel Rodrigues
   - 22 jun 2013

Tanto faz, a ideia é a mesma e o código ainda mais fácil, pois a classe DateTime possui métodos que facilitam esse cálculo, como o AddDays(30).

Raniel Nogueira
   - 22 jun 2013

Obrigado amigo pela dica.

Joel Rodrigues
   - 22 jun 2013

Daqui a pouco eu vou pegar o notebook, aí faço um exemplo rapidão e posto aqui.
Abraço.

Joel Rodrigues
   - 22 jun 2013

Fiz uma pequena aplicação Console, veja se dá pra entender:
#Código

class Program
    {
        static void Main(string[] args)
        {
            int parcelas = 3; //quantidade de parcelas
            DateTime dataParcela = DateTime.Today; //data da primeira parcela (fixei como hoje)
            Console.WriteLine(dataParcela.ToString("dd/MM/yyyy")); //imprime a primeira parcela
            for (int i = 1; i < parcelas; i++) //faz um laço a menos que o número de parcelas
            {
                 dataParcela = getProximaData(dataParcela, 30);
                 Console.WriteLine(dataParcela.ToString("dd/MM/yyyy"));
            }
            Console.Read();
        }

        private static DateTime getProximaData(DateTime data, int dias)
        {
            DateTime proximaData = data.AddDays(dias);
            bool ehValida = false;
            while (!ehValida)
            {
                if (proximaData.DayOfWeek == DayOfWeek.Sunday)//se cair em um domingo, adiciona um dia
                {
                    proximaData = proximaData.AddDays(1);
                }
                else
                {
                    ehValida = true;
                }
            }
            return proximaData;
        }
    }

Qualquer dúvida, é só falar.

Raniel Nogueira
   - 23 jun 2013

Obrigado pelo exemplo vou testar aqui, abraço.