public DataTable GetTablaCuotasConvenioMoratoria(int maxCanCuotas, DateTime fecha, decimal importeTotalSinInteres, decimal importeTotalIntereses)
        {
            moratorias oMoratoria         = new moratorias();
            DataTable  _dtCuotasMoratoria = new DataTable();

            using (cooperativaEntities bd = new cooperativaEntities())
            {
                var regis = (from p in bd.moratorias
                             where (p.vigencia_desde <= fecha && p.vigencia_hasta >= fecha)
                             select p).Single();

                oMoratoria.idmoratorias        = regis.idmoratorias;
                oMoratoria.vigencia_desde      = regis.vigencia_desde;
                oMoratoria.vigencia_hasta      = regis.vigencia_hasta;
                oMoratoria.cantidad_cuotas_max = regis.cantidad_cuotas_max;
                oMoratoria.limitar             = regis.limitar;

                int cantidadCuotas = 1;
                if ((maxCanCuotas > oMoratoria.cantidad_cuotas_max) | ((bool)oMoratoria.limitar))
                {
                    cantidadCuotas = (int)oMoratoria.cantidad_cuotas_max;
                }
                else
                {
                    cantidadCuotas = maxCanCuotas;
                }

                var regisD = (from d in bd.detalles_moratoria
                              where d.idmoratoria == oMoratoria.idmoratorias
                              select d).ToList();

                Commons   oCommons          = new Commons();
                DataTable detallesMoratoria = oCommons.convertToTable(regisD);

                _dtCuotasMoratoria.Columns.AddRange(new DataColumn[5] {
                    new DataColumn("Cuotas", typeof(int)),
                    new DataColumn("PorcDesc", typeof(decimal)),
                    new DataColumn("Descuento", typeof(decimal)),
                    new DataColumn("TotalConDescuento", typeof(decimal)),
                    new DataColumn("ValorCuota", typeof(decimal))
                });
                foreach (DataRow dr in detallesMoratoria.Rows)
                {
                    int cuotaDesde = int.Parse(dr["cuota_desde"].ToString());
                    int cuotaHasta = int.Parse(dr["cuota_hasta"].ToString());
                    for (int i = cuotaDesde; i <= cuotaHasta; i++)
                    {
                        if (i <= cantidadCuotas)
                        {
                            decimal porcDescuento     = decimal.Parse(dr["descuento"].ToString());
                            decimal descuento         = Math.Round(importeTotalIntereses * (porcDescuento / 100), 2);
                            decimal totalConDescuento = Math.Round(importeTotalSinInteres + (importeTotalIntereses * ((100 - porcDescuento) / 100)), 2);
                            decimal valorCuota        = Math.Round(totalConDescuento / i, 2);
                            _dtCuotasMoratoria.Rows.Add(i, porcDescuento, descuento, totalConDescuento, valorCuota);
                        }
                    }
                }
            }
            return(_dtCuotasMoratoria);
        }
        private void GuardarMoratoria()
        {
            //verificar si hay una moratoria q cruce fechas
            MoratoriasImplement oMoratoriasImplement = new MoratoriasImplement();
            bool existeMoratoria = oMoratoriasImplement.ExisteMoratoria(DateTime.Parse(dtpFechaInicial.Text), DateTime.Parse(dtpFechafinal.Text), _idMoratoria);

            if (!existeMoratoria)
            {
                moratorias oMoratoria = new moratorias();
                oMoratoria.vigencia_desde      = DateTime.Parse(dtpFechaInicial.Text);
                oMoratoria.vigencia_hasta      = DateTime.Parse(dtpFechafinal.Text);
                oMoratoria.cantidad_cuotas_max = int.Parse(txtCantCuotas.Text);
                oMoratoria.limitar             = chkLimitar.Checked;
                if (_idMoratoria > 0)
                {
                    oMoratoria.idmoratorias = _idMoratoria;
                    oMoratoriasImplement.Update(oMoratoria);
                }
                else
                {
                    _idMoratoria = oMoratoriasImplement.Save(oMoratoria);
                }
                DetallesMoratoriaImplement oDetallesMoratoriaImplement = new DetallesMoratoriaImplement();
                int ultimaCuota = 1;
                foreach (DataRow dr in _dtDetallesMoratoria.Rows)
                {
                    if (int.Parse(dr["iddetalles_moratoria"].ToString()) == 0)
                    {
                        detalles_moratoria oDetallesMoratoria = new detalles_moratoria();
                        oDetallesMoratoria.idmoratoria = _idMoratoria;
                        oDetallesMoratoria.cuota_desde = int.Parse(dr["cuota_desde"].ToString());
                        oDetallesMoratoria.cuota_hasta = int.Parse(dr["cuota_hasta"].ToString());
                        oDetallesMoratoria.descuento   = decimal.Parse(dr["descuento"].ToString());
                        oDetallesMoratoriaImplement.Save(oDetallesMoratoria);
                        ultimaCuota = int.Parse(dr["cuota_hasta"].ToString());
                    }
                }
                int indexUltimo = _dtDetallesMoratoria.Rows.Count - 1;
                ultimaCuota = int.Parse(_dtDetallesMoratoria.Rows[indexUltimo]["cuota_hasta"].ToString());
                if (ultimaCuota < oMoratoria.cantidad_cuotas_max)
                {
                    detalles_moratoria oDetallesMoratoria = new detalles_moratoria();
                    oDetallesMoratoria.idmoratoria = _idMoratoria;
                    oDetallesMoratoria.cuota_desde = ultimaCuota + 1;
                    oDetallesMoratoria.cuota_hasta = oMoratoria.cantidad_cuotas_max;
                    oDetallesMoratoria.descuento   = 0;
                    oDetallesMoratoriaImplement.Save(oDetallesMoratoria);
                }
                Inicializar();
                DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                frmVentanaInformativa ofrmVentanaInformativa = new frmVentanaInformativa("Existe una moratoria que comprende alguna de las fechas ingresadas.");
                ofrmVentanaInformativa.ShowDialog();
            }
        }
        public int Save(moratorias oMoratorias)
        {
            int i;
            cooperativaEntities bd = new cooperativaEntities();

            bd.moratorias.AddObject(oMoratorias);
            bd.SaveChanges();
            i = oMoratorias.idmoratorias;
            return(i);
        }
 public void Update(moratorias oMoratorias)
 {
     using (cooperativaEntities bd = new cooperativaEntities())
     {
         var editar = (from p in bd.moratorias
                       where p.idmoratorias == oMoratorias.idmoratorias
                       select p).Single();
         editar.vigencia_desde      = oMoratorias.vigencia_desde;
         editar.vigencia_hasta      = oMoratorias.vigencia_hasta;
         editar.cantidad_cuotas_max = oMoratorias.cantidad_cuotas_max;
         editar.limitar             = oMoratorias.limitar;
         bd.SaveChanges();
     }
 }
 public moratorias Get(int id)
 {
     moratorias oMoratorias = new moratorias();
     using (cooperativaEntities bd = new cooperativaEntities())
     {
         var regis = (from p in bd.moratorias
                      where p.idmoratorias == id
                      select p).Single();
         oMoratorias.idmoratorias=regis.idmoratorias;
         oMoratorias.vigencia_desde = regis.vigencia_desde;
         oMoratorias.vigencia_hasta = regis.vigencia_hasta;
         oMoratorias.cantidad_cuotas_max = regis.cantidad_cuotas_max;
         oMoratorias.limitar = regis.limitar;
         return oMoratorias;
     }
 }
        public moratorias Get(int id)
        {
            moratorias oMoratorias = new moratorias();

            using (cooperativaEntities bd = new cooperativaEntities())
            {
                var regis = (from p in bd.moratorias
                             where p.idmoratorias == id
                             select p).Single();
                oMoratorias.idmoratorias        = regis.idmoratorias;
                oMoratorias.vigencia_desde      = regis.vigencia_desde;
                oMoratorias.vigencia_hasta      = regis.vigencia_hasta;
                oMoratorias.cantidad_cuotas_max = regis.cantidad_cuotas_max;
                oMoratorias.limitar             = regis.limitar;
                return(oMoratorias);
            }
        }
        private void CargarMoratoria()
        {
            moratorias          oMoratorias          = new moratorias();
            MoratoriasImplement oMoratoriasImplement = new MoratoriasImplement();

            oMoratorias           = oMoratoriasImplement.Get(_idMoratoria);
            dtpFechaInicial.Value = (DateTime)oMoratorias.vigencia_desde;
            dtpFechafinal.Value   = (DateTime)oMoratorias.vigencia_hasta;
            txtCantCuotas.Text    = oMoratorias.cantidad_cuotas_max.ToString();
            chkLimitar.Checked    = (bool)oMoratorias.limitar;

            DetallesMoratoriaImplement oDetallesMoratoriaImplement = new DetallesMoratoriaImplement();

            _dtDetallesMoratoria            = oDetallesMoratoriaImplement.GetAllByIdMoratoria(_idMoratoria);
            dgvDetallesMoratoria.DataSource = _dtDetallesMoratoria;

            int indexUltimo = _dtDetallesMoratoria.Rows.Count - 1;

            _primeraCuota      = int.Parse(_dtDetallesMoratoria.Rows[indexUltimo]["cuota_hasta"].ToString()) + 1;
            txtCuotaDesde.Text = _primeraCuota.ToString();
        }
        public bool TieneConvenios(int idMoratoria)
        {
            using (cooperativaEntities bd = new cooperativaEntities())
            {
                moratorias oMoratoria = new moratorias();
                oMoratoria = Get(idMoratoria);

                var regis = (from p in bd.convenios
                             where (p.fecha_convenio >= oMoratoria.vigencia_desde && p.fecha_convenio <= oMoratoria.vigencia_hasta) &&
                             ((bool)p.moratoria)
                             select p).Count();

                if (int.Parse(regis.ToString()) > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
 public void Update(moratorias oMoratorias)
 {
     using (cooperativaEntities bd = new cooperativaEntities())
     {
         var editar = (from p in bd.moratorias
                       where p.idmoratorias == oMoratorias.idmoratorias
                       select p).Single();
         editar.vigencia_desde = oMoratorias.vigencia_desde;
         editar.vigencia_hasta = oMoratorias.vigencia_hasta;
         editar.cantidad_cuotas_max = oMoratorias.cantidad_cuotas_max;
         editar.limitar = oMoratorias.limitar;
         bd.SaveChanges();
     }
 }
        public bool TieneConvenios(int idMoratoria)
        {
            using (cooperativaEntities bd = new cooperativaEntities())
            {
                moratorias oMoratoria = new moratorias();
                oMoratoria = Get(idMoratoria);

                var regis = (from p in bd.convenios
                             where (p.fecha_convenio >= oMoratoria.vigencia_desde && p.fecha_convenio <= oMoratoria.vigencia_hasta)
                                && ((bool)p.moratoria)
                             select p).Count();

                if (int.Parse(regis.ToString()) > 0)
                    return true;
                else
                    return false;
            }
        }
 public int Save(moratorias oMoratorias)
 {
     int i;
     cooperativaEntities bd = new cooperativaEntities();
     bd.moratorias.AddObject(oMoratorias);
     bd.SaveChanges();
     i = oMoratorias.idmoratorias;
     return i;
 }
        public DataTable GetTablaCuotasConvenioMoratoria(int maxCanCuotas, DateTime fecha, decimal importeTotalSinInteres, decimal importeTotalIntereses)
        {
            moratorias oMoratoria = new moratorias();
            DataTable _dtCuotasMoratoria = new DataTable();
            using (cooperativaEntities bd = new cooperativaEntities())
            {
                var regis = (from p in bd.moratorias
                             where (p.vigencia_desde <= fecha && p.vigencia_hasta >= fecha)
                             select p).Single();

                oMoratoria.idmoratorias =regis.idmoratorias;
                oMoratoria.vigencia_desde=regis.vigencia_desde;
                oMoratoria.vigencia_hasta=regis.vigencia_hasta;
                oMoratoria.cantidad_cuotas_max=regis.cantidad_cuotas_max;
                oMoratoria.limitar=regis.limitar;

                int cantidadCuotas = 1;
                if ((maxCanCuotas > oMoratoria.cantidad_cuotas_max) | ((bool)oMoratoria.limitar))
                {
                    cantidadCuotas = (int)oMoratoria.cantidad_cuotas_max;
                }
                else {
                    cantidadCuotas = maxCanCuotas;
                }

                var regisD = (from d in bd.detalles_moratoria
                             where d.idmoratoria== oMoratoria.idmoratorias
                              select d).ToList();

                Commons oCommons = new Commons();
                DataTable detallesMoratoria = oCommons.convertToTable(regisD);

                _dtCuotasMoratoria.Columns.AddRange(new DataColumn[5] { new DataColumn("Cuotas", typeof(int)),
                            new DataColumn("PorcDesc",typeof(decimal)),
                            new DataColumn("Descuento",typeof(decimal)),
                            new DataColumn("TotalConDescuento",typeof(decimal)),
                            new DataColumn("ValorCuota",typeof(decimal))});
                foreach (DataRow dr in detallesMoratoria.Rows)
                {
                    int cuotaDesde = int.Parse(dr["cuota_desde"].ToString());
                    int cuotaHasta = int.Parse(dr["cuota_hasta"].ToString());
                    for (int i=cuotaDesde; i<=cuotaHasta; i++)
                    {
                        if (i <= cantidadCuotas)
                        {
                            decimal porcDescuento =decimal.Parse(dr["descuento"].ToString());
                            decimal descuento = Math.Round(importeTotalIntereses * (porcDescuento / 100), 2);
                            decimal totalConDescuento = Math.Round(importeTotalSinInteres+(importeTotalIntereses * ((100 - porcDescuento) / 100)), 2);
                            decimal valorCuota = Math.Round(totalConDescuento/i, 2);
                            _dtCuotasMoratoria.Rows.Add(i, porcDescuento, descuento, totalConDescuento, valorCuota);
                        }
                    }
                }
            }
            return _dtCuotasMoratoria;
        }