Exemplo n.º 1
0
        public void actualizarCuotasRestantes(int idContrato)
        {
            CContratos cContratos = new CContratos();
            Contratos  con        = cContratos.uno(idContrato);
            decimal    capital    = Math.Round(con.Financiamiento.Value / con.Meses, 2);
            CPagos     cPagos     = new CPagos();

            List <Cuotas> listado = this.Listado(idContrato);
            // Cuotas ultimapagada = listado.Where(x => x.Cancelada == 1).OrderByDescending(x => x.FechaDePago).First();
            List <Cuotas> sinpagar = listado.Where(x => x.Cancelada == 0).ToList();
            //decimal montoextra = ultimapagada.ACapitalExtra.Value;
            decimal montoextra = cPagos.extra(idContrato);

            //decimal sumarestante = sinpagar.Sum(x => x.Capital).Value;
            if (montoextra > 0)
            {
                int cuantascrubre = decimal.ToInt32(montoextra / capital);

                sinpagar = sinpagar.OrderByDescending(x => x.IdCuota).ToList();
                int contador = 1;
                foreach (Cuotas item in sinpagar)
                {
                    if (contador <= cuantascrubre)
                    {
                        item.Cancelada = 1;
                        item.Monto     = 0;
                        //item.Capital = 0;
                        item.Intereses   = 0;
                        item.FechaDePago = DateTime.Now;

                        if (item.Capital < capital)
                        {
                            montoextra -= item.Capital.Value;
                        }
                        else
                        {
                            montoextra -= capital;
                        }
                        item.Capital = 0;
                        int x = ActualizarCancelada(item);
                        contador++;
                    }
                    else
                    {
                        if (montoextra > 0 && montoextra < capital)
                        {
                            item.Cancelada = 0;
                            item.Monto     = item.Monto - montoextra;
                            item.Capital   = item.Capital - montoextra;
                            if (item.Capital.Value == 0)
                            {
                                item.Cancelada   = 1;
                                item.Monto       = 0;
                                item.Capital     = 0;
                                item.Intereses   = 0;
                                item.FechaDePago = DateTime.Now;
                            }
                            //item.Intereses = 0;
                            int x = ActualizarCancelada(item);

                            montoextra -= montoextra;
                        }
                        else
                        {
                            if (montoextra > capital)
                            {
                                item.Cancelada = 1;
                                item.Monto     = 0;
                                //item.Capital = 0;
                                item.Intereses   = 0;
                                item.FechaDePago = DateTime.Now;

                                if (item.Capital < capital)
                                {
                                    montoextra -= item.Capital.Value;
                                }
                                else
                                {
                                    montoextra -= capital;
                                }
                                item.Capital = 0;
                                int x = ActualizarCancelada(item);
                            }
                        }
                    }
                }
            }
        }