public int CalcularMora(CalcularMoraViewModels datos) { int estado = -1; var mora = new MoraViewModels(); var ultimaFecha = datos.Fecha; //fecha de la ultima cuota pagada. var fechaMora = ultimaFecha.AddDays(9); //10 dias de gracia, a partir del 11 se cobra mora. var fechaActual = DateTime.Today; //DateTime fecha = new DateTime(1901, 01, 01); if (ultimaFecha != new DateTime(0001, 1, 1)) { while (fechaMora <= fechaActual) { //cuenta los dias que tiene el mes int diasDelMes = DateTime.DaysInMonth(fechaMora.Year, fechaMora.Month); fechaMora = fechaMora.AddMonths(1);//agrega un mes. //rompe el ciclo, para evitar crear una nueva mora en el mes que aun no termina. if (fechaMora > fechaActual) { break; } mora.Fecha = fechaMora.AddDays(-9); //resta los 11 dias agregados en la linea 4 del metodo mora.Monto = ((datos.Cuota * datos.TasaMora) / 30) * diasDelMes; //calculo del monto de la mora estado = Save(mora); //guarda la mora en la base de datos. } } return(estado); }
public object FindForId(int id) { var paramsMora = new CalcularMoraViewModels(); string query = "SELECT saldo, fecha, cuota, mora FROM calc_demorados WHERE venta_id = @venta_id" + " ORDER BY fecha DESC LIMIT 1"; using (var connection = PostConnection.Connection()) { using (var command = db.Command(query)) { try { connection.Open(); command.Parameters.AddWithValue("@venta_id", id); command.Connection = connection; using (var reader = command.ExecuteReader()) { while (reader.Read()) { paramsMora.Saldo = Convert.ToDouble(reader["saldo"]); paramsMora.Fecha = Convert.ToDateTime(reader["fecha"]); paramsMora.Cuota = Convert.ToDouble(reader["cuota"]); paramsMora.TasaMora = Convert.ToDouble(reader["mora"]); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } } DateTime fechaUltimaMora = FechaUltimaMora(id); paramsMora.Fecha = paramsMora.Fecha < fechaUltimaMora ? fechaUltimaMora : paramsMora.Fecha; return(paramsMora); }