public void AsignarCuenta(_Cuenta cuenta)
 {
     this.cuenta           = cuenta;
     pb_imagen.Image       = cuenta.Bm_Imagen;
     lbl_nombreCuenta.Text = cuenta.St_NombreCuenta;
     lbl_saldo.Text        = Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(cuenta.Do_saldo, 2);
 }
        public RegistrarMovimiento(iSQL sql, Boolean esSimulacion, _Cuenta cuentaSeleccionada)
        {
            InitializeComponent();
            this.sql     = sql;
            EsSimulacion = esSimulacion;
            manejador    = new ManejadorDB(this.sql);
            CargarCuentas();
            if (esSimulacion)
            {
                cmb_cuentas.Enabled     = false;
                this.CuentaSeleccionada = cuentaSeleccionada;
                CargarCuentaSeleccionada();
            }
            CargarTiposMovimientos();
            dtp_fecha.Value = DateTime.Now;
            //dtp_fecha.MinDate = DateTime.Now;
            txt_cadaDias.Enabled = false;
            txt_cantidad.Enabled = false;
            chb_cadaMes.Enabled  = false;

            //eventos de textbox
            Herramientas.Forms.Validaciones.TextboxSoloNumerosEnteros(txt_cadaDias);
            Herramientas.Forms.Validaciones.TextboxSoloNumerosEnteros(txt_cantidad);
            Herramientas.Forms.Validaciones.TextboxSoloNumerosDecimales(txt_importe, 2);

            cmb_CuentasAAfectar.SelectedIndexChanged += cmb_CuentasAAfectar_SelectedIndexChanged;
        }
Exemple #3
0
        private void BorrarMovimientoPareja(_MovimientoCuenta movimiento)
        {
            _Cuenta cuentaAfectada = movimiento.Oo_MovimientoPareja.Oo_Cuenta;

            if (cuentaAfectada != null && cuentaAfectada.Ll_MovimientosSimulados != null)
            {
                for (int i = 0; i < cuentaAfectada.Ll_MovimientosSimulados.Count; i++)
                {
                    if (cuentaAfectada.Ll_MovimientosSimulados[i].Id == movimiento.Oo_MovimientoPareja.Id)
                    {
                        cuentaAfectada.Ll_MovimientosSimulados.RemoveAt(i);
                        cuentaAfectada.EsModificado = true;
                        manejador.Guardar(cuentaAfectada);
                        return;
                    }
                }
            }
            if (cuentaAfectada != null && cuentaAfectada.Ll_Movimientos != null)
            {
                for (int i = 0; i < cuentaAfectada.Ll_Movimientos.Count; i++)
                {
                    if (cuentaAfectada.Ll_Movimientos[i].Id == movimiento.Oo_MovimientoPareja.Id)
                    {
                        cuentaAfectada.Ll_Movimientos.RemoveAt(i);
                        cuentaAfectada.EsModificado = true;
                        manejador.Guardar(cuentaAfectada);
                        return;
                    }
                }
            }
        }
 private void cmb_cuentas_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmb_cuentas.SelectedIndex >= 0)
     {
         CuentaSeleccionada = cuentas[cmb_cuentas.SelectedIndex];
         CargarCuentaSeleccionada();
     }
 }
        void ll_nombreCuenta_Click(object sender, EventArgs e)
        {
            LinkLabel        ll     = (LinkLabel)sender;
            _Cuenta          cuenta = (_Cuenta)ll.Tag;
            ProyeccionFutura proy   = new ProyeccionFutura(cuenta.SQL, cuenta);

            proy.ShowDialog();
            actualizarSaldosEvento();
        }
Exemple #6
0
 private void cmb_cuentas_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmb_cuentas.SelectedIndex >= 0)
     {
         CuentaSeleccionada = cuentas[cmb_cuentas.SelectedIndex];
         CuentaSeleccionada.EliminarCache();
         CargarCuentaSeleccionada();
         GenerarProyeccion(CuentaSeleccionada);
     }
 }
        public void CargarMovimientos(_Cuenta cuenta, DateTime Dia, List <_MovimientoCuenta> movimientos)
        {
            Cuenta         = cuenta;
            manejador      = Cuenta.Manejador;
            lbl_fecha.Text = Herramientas.Conversiones.Formatos.DateTimeAFechaCalendario(Dia);
            pnl_movimientos.Controls.Clear();
            foreach (_MovimientoCuenta movimiento in movimientos)
            {
                HayMovimientos = true;
                Label txt = new Label();
                txt.Cursor = Cursors.Hand;
                txt.Font   = this.Font; // new Font("Times New Roman", 8);
                //txt.Enabled = false;
                txt.BackColor = pnl_movimientos.BackColor;
                //txt.BorderStyle = System.Windows.Forms.BorderStyle.None;
                txt.Tag = movimiento;
                double multiplicador = 1;
                if (cuenta.Bo_EsDeAhorro)
                {
                    multiplicador = -1;
                }
                double importe = movimiento.Do_Importe * movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicador;

                if (movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno > 0)
                {
                    movimiento.ColorMovimiento1 = Color.Red;
                }
                else if (movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno < 0)
                {
                    movimiento.ColorMovimiento1 = Color.Green;
                }

                txt.Text        = movimiento.Oo_TipoMovimiento.St_Nombre + " (" + Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(importe, 2) + ")";
                txt.MouseEnter += txt_MouseEnter;
                txt.MouseEnter += MovimientosEnUnDia_MouseEnter;
                txt.MouseLeave += txt_MouseLeave;
                txt.MouseDown  += txt_MouseDown;
                txt.MouseUp    += txt_MouseUp;
                txt.MouseLeave += MovimientosEnUnDia_MouseLeave;
                txt.Width       = txt.Text.Length * 7;
                txt.ForeColor   = movimiento.ColorMovimiento1;
                txt.Height      = 15;
                pnl_movimientos.Controls.Add(txt);
            }
            if (!HayMovimientos)
            {
                pnl_movimientos.Visible = false;
            }
        }
Exemple #8
0
        public HistorialDeMovimientos(iSQL sql, _Cuenta cuentaSeleccionada)
        {
            InitializeComponent();
            cmb_cuentas.SelectedIndexChanged += cmb_cuentas_SelectedIndexChanged;
            this.sql  = sql;
            manejador = new ManejadorDB(this.sql);
            CargarCuentas();
            dtp_fechaMinima.MaxDate = DateTime.Now;
            dtp_fechaMinima.Value   = DateTime.Now.AddMonths(-3);

            this.CuentaSeleccionada = cuentaSeleccionada;

            if (CuentaSeleccionada != null)
            {
                cmb_cuentas.SelectedItem = CuentaSeleccionada.St_NombreCuenta;
            }
        }
Exemple #9
0
        public ProyeccionFutura(iSQL sql, _Cuenta cuentaSeleccionada)
        {
            InitializeComponent();
            cmb_cuentas.SelectedIndexChanged += cmb_cuentas_SelectedIndexChanged;
            this.sql  = sql;
            manejador = new ManejadorDB(this.sql);
            manejador.UsarAlmacenObjetos = false;
            CargarCuentas();
            dtp_fechaHasta.MinDate = DateTime.Now;
            dtp_fechaHasta.Value   = DateTime.Now.AddMonths(3);

            this.CuentaSeleccionada = cuentaSeleccionada;

            if (CuentaSeleccionada != null)
            {
                cmb_cuentas.SelectedItem = CuentaSeleccionada.St_NombreCuenta;
            }
        }
        public void CargarCuenta(_Cuenta cuenta)
        {
            pb_imagen.Image      = cuenta.Bm_Imagen;
            ll_nombreCuenta.Text = cuenta.St_NombreCuenta;
            ll_nombreCuenta.Tag  = cuenta;
            pnl_dias.Controls.Clear();
            ll_nombreCuenta.Click += ll_nombreCuenta_Click;

            List <_MovimientoCuenta> movimientos = new List <_MovimientoCuenta>();

            foreach (DateTime dia in dias)
            {
                movimientos.Clear();
                MovimientosEnUnDia movDia = new MovimientosEnUnDia();
                if (cuenta.Ll_Movimientos != null)
                {
                    foreach (_MovimientoCuenta movimiento in cuenta.Ll_Movimientos)
                    {
                        if (new DateTime(movimiento.Dt_fechaAplicacion.Year, movimiento.Dt_fechaAplicacion.Month, movimiento.Dt_fechaAplicacion.Day) == dia)
                        {
                            movimientos.Add(movimiento);
                        }
                    }
                }
                if (cuenta.Ll_MovimientosSimulados != null)
                {
                    foreach (_MovimientoCuenta movimientoSimulado in cuenta.Ll_MovimientosSimulados)
                    {
                        if (new DateTime(movimientoSimulado.Dt_fechaAplicacion.Year, movimientoSimulado.Dt_fechaAplicacion.Month, movimientoSimulado.Dt_fechaAplicacion.Day) == dia)
                        {
                            movimientos.Add(movimientoSimulado);
                        }
                    }
                }
                movDia.actualizarSaldosEvento += movDia_actualizarSaldosEvento;
                movDia.CargarMovimientos(cuenta, dia, movimientos);
                if (movDia.HayMovimientos)
                {
                    HayMovimientos = true;
                }
                pnl_dias.Controls.Add(movDia);
            }
        }
Exemple #11
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (CuentaSeleccionada == null)
                {
                    CuentaSeleccionada = new _Cuenta();
                }
                CuentaSeleccionada.EsModificado = true;

                CuentaSeleccionada.St_NombreCuenta = txt_nombre.Text;
                if (!chb_esDeAhorro.Checked)
                {
                    CuentaSeleccionada.In_DiaCorte                 = Convert.ToInt32(txt_diaCorte.Text);
                    CuentaSeleccionada.In_DiasParaPago             = Convert.ToInt32(txt_diasParaPago.Text);
                    CuentaSeleccionada.Do_PorcentajeInteresMensual = Convert.ToDouble(txt_PorcentajeInteres.Text);
                }
                CuentaSeleccionada.EstaDeshabilitado = !chb_Activo.Checked;
                CuentaSeleccionada.Bm_Imagen         = (Bitmap)pb_imagen.Image;
                CuentaSeleccionada.Do_saldo          = Convert.ToDouble(txt_saldo.Text);
                CuentaSeleccionada.Bo_EsDeAhorro     = chb_esDeAhorro.Checked;
                manejador.IniciarTransaccion();
                manejador.Guardar(CuentaSeleccionada);
                manejador.TerminarTransaccion();
                CargarCuentas();
                Herramientas.Forms.Mensajes.Informacion("Guardado con éxito.");

                CuentaSeleccionada = null;
                LimpiarControles();
            }
            catch (Exception ex)
            {
                manejador.DeshacerTransaccion();
                Herramientas.Forms.Mensajes.Error(ex.Message);
            }
        }
        private void RegistrarMovimientoEnCuenta(_Cuenta Cuenta)
        {
            try
            {
                //validaciones
                String labelCuentasTrans = "[@fuente->@destino] ";
                if (Cuenta == null)
                {
                    Herramientas.Forms.Mensajes.Advertencia("Seleccione una cuenta.");
                    return;
                }
                if (cmb_tipoMovimiento.SelectedItem == null)
                {
                    Herramientas.Forms.Mensajes.Advertencia("Seleccione un tipo de movimiento");
                    return;
                }
                if (chb_varios.Checked && txt_cantidad.Text.Trim().Equals(""))
                {
                    Herramientas.Forms.Mensajes.Advertencia("Seleccione una cantidad de movimientos.");
                    return;
                }
                if (chb_varios.Checked && !chb_cadaMes.Checked && txt_cadaDias.Text.Trim().Equals(""))
                {
                    Herramientas.Forms.Mensajes.Advertencia("Seleccione una frecuencia para los movimientos.");
                    return;
                }
                if (txt_importe.Text.Trim().Equals(""))
                {
                    Herramientas.Forms.Mensajes.Advertencia("Introduzca un importe para el movimiento.");
                    return;
                }
                if (!EsSimulacion && Cuenta == null)
                {
                    Herramientas.Forms.Mensajes.Advertencia("Seleccione una cuenta");
                    return;
                }
                //checando si se hara un movimiento a otra cuenta
                _Cuenta         cuentaAAfectar = null;
                _TipoMovimiento tipoMovimientoCuentaAAfectar = null;
                if (cmb_CuentasAAfectar.SelectedIndex >= 0)
                {
                    cuentaAAfectar = cuentas[cmb_CuentasAAfectar.SelectedIndex];
                    if (cmb_TiposdeMovimiento.SelectedItem == null)
                    {
                        Herramientas.Forms.Mensajes.Exclamacion("Debes seleccionar el tipo de movimiento para la cuenta a afectar.");
                        return;
                    }
                    tipoMovimientoCuentaAAfectar = tiposMovimientos[cmb_TiposdeMovimiento.SelectedIndex];

                    if (tiposMovimientos[cmb_tipoMovimiento.SelectedIndex].Do_MultiplicadorSigno == tiposMovimientos[cmb_TiposdeMovimiento.SelectedIndex].Do_MultiplicadorSigno)
                    {
                        Herramientas.Forms.Mensajes.Exclamacion("Debes seleccionar movimientos de cuenta que sean opuestos.");
                        return;
                    }
                }
                //se crea el movimiento
                _MovimientoCuenta movimiento = new _MovimientoCuenta();
                movimiento.EsModificado      = true;
                movimiento.Oo_TipoMovimiento = tiposMovimientos[cmb_tipoMovimiento.SelectedIndex];
                double importe = Convert.ToDouble(txt_importe.Text);
                String pre     = "";



                //se determina el sentido de la operacion
                if (cuentaAAfectar != null)
                {
                    if ((movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno) == 1)
                    {
                        labelCuentasTrans = labelCuentasTrans.Replace("@fuente", Cuenta.St_NombreCuenta).Replace("@destino", cuentaAAfectar.St_NombreCuenta);
                    }
                    else
                    {
                        labelCuentasTrans = labelCuentasTrans.Replace("@fuente", cuentaAAfectar.St_NombreCuenta).Replace("@destino", Cuenta.St_NombreCuenta);
                    }
                    if (!txt_detalleMovimiento.Text.Trim().Equals(""))
                    {
                        labelCuentasTrans += " | " + txt_detalleMovimiento.Text;
                    }
                }
                else
                {
                    labelCuentasTrans = "";
                }
                //se calcula el importe y se agrega el prefijo de los pagos
                movimiento.St_detalleMovimiento = labelCuentasTrans;
                if (chb_varios.Checked)
                {
                    pre = " de " + txt_cantidad.Text;
                    if (!txt_detalleMovimiento.Text.Trim().Equals(""))
                    {
                        pre += " | ";
                    }
                    else
                    {
                        pre += " | " + movimiento.Oo_TipoMovimiento.St_Nombre;
                    }
                    //si se divide en multiples pagos, se divide entre el numero de pagos, si no el importe se repite
                    if (movimiento.Oo_TipoMovimiento.Bo_SeDivideEnMultiplesPagos)
                    {
                        importe = importe / Convert.ToDouble(txt_cantidad.Text);
                    }
                    //se agrega el pago numero 1 de varios
                    movimiento.St_detalleMovimiento += "1" + pre;
                }
                else if (labelCuentasTrans.Equals(""))
                {
                    movimiento.St_detalleMovimiento = movimiento.Oo_TipoMovimiento.St_Nombre;
                }
                //se agrega la bandera para saber si es movimiento simulado
                movimiento.Bo_EsSimulado = EsSimulacion;
                movimiento.Do_Importe    = importe;
                movimiento.Dt_fecha      = dtp_fecha.Value;
                //se determina la fecha de aplicacion, si es de ahorro es inmediato, sino se calcula las fechas de corte y pago
                if (Cuenta.Bo_EsDeAhorro || movimiento.Oo_TipoMovimiento.Bo_SeAplicaInmediato)
                {
                    movimiento.Dt_fechaAplicacion = movimiento.Dt_fecha;
                }
                else
                {
                    movimiento.Dt_fechaAplicacion = DeterminarFechaAplicacion(Cuenta.In_DiaCorte, movimiento);
                }
                if (!txt_detalleMovimiento.Text.Trim().Equals("") && labelCuentasTrans.Equals(""))
                {
                    movimiento.St_detalleMovimiento += " | " + txt_detalleMovimiento.Text;
                }

                //se crea el movimiento relacionado si se da el caso
                _MovimientoCuenta movimientoRelacionado = null;
                if (cuentaAAfectar != null)
                {
                    movimientoRelacionado = new _MovimientoCuenta();
                    movimientoRelacionado.EsModificado         = true;
                    movimientoRelacionado.Bo_EsSimulado        = EsSimulacion;
                    movimientoRelacionado.St_detalleMovimiento = movimiento.St_detalleMovimiento;
                    movimientoRelacionado.Do_Importe           = movimiento.Do_Importe;
                    movimientoRelacionado.Oo_TipoMovimiento    = tipoMovimientoCuentaAAfectar;
                    movimientoRelacionado.Dt_fecha             = movimiento.Dt_fecha;
                    if (cuentaAAfectar.Bo_EsDeAhorro || movimientoRelacionado.Oo_TipoMovimiento.Bo_SeAplicaInmediato)
                    {
                        movimientoRelacionado.Dt_fechaAplicacion = movimientoRelacionado.Dt_fecha;
                    }
                    else
                    {
                        movimientoRelacionado.Dt_fechaAplicacion = DeterminarFechaAplicacion(cuentaAAfectar.In_DiaCorte, movimientoRelacionado);
                    }
                    movimientoRelacionado.Oo_Cuenta           = cuentaAAfectar;
                    movimientoRelacionado.Oo_MovimientoPareja = movimiento;
                    movimiento.Oo_MovimientoPareja            = movimientoRelacionado;

                    if (cuentaAAfectar.Ll_Movimientos == null)
                    {
                        cuentaAAfectar.Ll_Movimientos = new List <_MovimientoCuenta>();
                    }
                    if (cuentaAAfectar.Ll_MovimientosSimulados == null)
                    {
                        cuentaAAfectar.Ll_MovimientosSimulados = new List <_MovimientoCuenta>();
                    }
                    cuentaAAfectar.EsModificado = true;
                }

                //si no es una simulacion y el movimiento es antes o igual a hoy, se calcula el saldo de la cuenta
                double saldoCuentaAnterior = Cuenta.Do_saldo;
                //se obtiene el factor para saber el sentido de los movimientos
                double multiplicadorCuenta = 1;
                if (Cuenta.Bo_EsDeAhorro)
                {
                    multiplicadorCuenta = -1;
                }
                if (!EsSimulacion && movimiento.Dt_fechaAplicacion <= DateTime.Now)
                {
                    movimiento.Bo_EstaAplicadoAlSaldo = true;
                    //el multiplicador determina si el dinero entra o sale dependiendo si es credito o ahorro
                    movimiento.Do_Saldo = Cuenta.Do_saldo + (movimiento.Do_Importe * movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicadorCuenta);
                    //si la cuenta es de ahorro y deseas retirar mas del saldo, se manda el error
                    if (Cuenta.Bo_EsDeAhorro && movimiento.Do_Saldo < 0)
                    {
                        Herramientas.Forms.Mensajes.Exclamacion("No cuenta con saldo suficiente en la cuenta para realizar el registro.");
                        return;
                    }
                    else
                    {
                        Cuenta.Do_saldo = movimiento.Do_Saldo;
                    }
                }
                //calcular en saldo
                if (cuentaAAfectar != null)
                {
                    if (!EsSimulacion && movimientoRelacionado.Dt_fechaAplicacion <= DateTime.Now)
                    {
                        double multiplicadorCuentaAsociada = 1;
                        if (cuentaAAfectar.Bo_EsDeAhorro)
                        {
                            multiplicadorCuentaAsociada = -1;
                        }
                        movimientoRelacionado.Bo_EstaAplicadoAlSaldo = true;
                        movimientoRelacionado.Do_Saldo = cuentaAAfectar.Do_saldo + (movimientoRelacionado.Do_Importe * movimientoRelacionado.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicadorCuentaAsociada);
                        //lo mismo para la cuenta relacionada
                        if (cuentaAAfectar.Bo_EsDeAhorro && movimientoRelacionado.Do_Saldo < 0)
                        {
                            Cuenta.Do_saldo = saldoCuentaAnterior;
                            Herramientas.Forms.Mensajes.Exclamacion("No cuenta con saldo suficiente en la cuenta para realizar el registro.");
                            return;
                        }
                        else
                        {
                            cuentaAAfectar.Do_saldo = movimientoRelacionado.Do_Saldo;
                        }
                    }
                }



                if (Cuenta.Ll_Movimientos == null)
                {
                    Cuenta.Ll_Movimientos = new List <_MovimientoCuenta>();
                }
                movimiento.Oo_Cuenta = Cuenta;
                //si no es simulacion se actualiza para guardar los movimientos
                if (!EsSimulacion)
                {
                    Cuenta.EsModificado = true;
                    Cuenta.Ll_Movimientos.Add(movimiento);
                    if (cuentaAAfectar != null)
                    {
                        cuentaAAfectar.Ll_Movimientos.Add(movimientoRelacionado);
                    }
                }
                else
                {
                    //si es simulacion, solo se agrega el movimiento a los movimientos simulados
                    MovimientosSimulados.Add(movimiento);
                    if (cuentaAAfectar != null)
                    {
                        cuentaAAfectar.Ll_MovimientosSimulados.Add(movimientoRelacionado);
                    }
                }

                //en esta seccion se agregan los movimientos pendientes de los varios anteriores
                if (chb_varios.Checked)
                {
                    int cantidad = Convert.ToInt32(txt_cantidad.Text);
                    cantidad--; //restamos el que ya se agrego
                    int frecuencia = 0;
                    if (!chb_cadaMes.Checked)
                    {
                        frecuencia = Convert.ToInt32(txt_cadaDias.Text);
                    }

                    for (int i = 1; i <= cantidad; i++)
                    {
                        _MovimientoCuenta movimientoFuturo = new _MovimientoCuenta();
                        movimientoFuturo.EsModificado           = true;
                        movimientoFuturo.Bo_EsSimulado          = EsSimulacion;
                        movimientoFuturo.Do_Importe             = importe;
                        movimientoFuturo.St_detalleMovimiento   = labelCuentasTrans + (i + 1) + pre + txt_detalleMovimiento.Text;
                        movimientoFuturo.Oo_Cuenta              = Cuenta;
                        movimientoFuturo.Bo_EstaAplicadoAlSaldo = false;
                        //se crea el movimento relacionado si se da el caso
                        _MovimientoCuenta movimientoFuturoRelacionado = null;
                        if (cuentaAAfectar != null)
                        {
                            movimientoFuturoRelacionado = new _MovimientoCuenta();
                            movimientoFuturoRelacionado.EsModificado           = true;
                            movimientoFuturoRelacionado.Bo_EsSimulado          = EsSimulacion;
                            movimientoFuturoRelacionado.Do_Importe             = importe;
                            movimientoFuturoRelacionado.St_detalleMovimiento   = movimientoFuturo.St_detalleMovimiento;
                            movimientoFuturoRelacionado.Oo_Cuenta              = cuentaAAfectar;
                            movimientoFuturoRelacionado.Oo_MovimientoPareja    = movimientoFuturo;
                            movimientoFuturo.Oo_MovimientoPareja               = movimientoFuturoRelacionado;
                            movimientoFuturoRelacionado.Bo_EstaAplicadoAlSaldo = false;
                        }

                        //se determina la proxima fecha ya sea un mes o dias
                        if (chb_cadaMes.Checked)
                        {
                            movimientoFuturo.Dt_fecha = dtp_fecha.Value.AddMonths(1 * i);
                        }
                        else
                        {
                            movimientoFuturo.Dt_fecha = dtp_fecha.Value.AddDays(frecuencia * i);
                        }

                        //se le asigna el tipo de movimiento
                        movimientoFuturo.Oo_TipoMovimiento = tiposMovimientos[cmb_tipoMovimiento.SelectedIndex];

                        //si es cuenta de ahorro, la fecha es inmediata y si no se calcula como anteriormente se hizo
                        if (Cuenta.Bo_EsDeAhorro || movimientoFuturo.Oo_TipoMovimiento.Bo_SeAplicaInmediato)
                        {
                            movimientoFuturo.Dt_fechaAplicacion = movimientoFuturo.Dt_fecha;
                        }
                        else
                        {
                            movimientoFuturo.Dt_fechaAplicacion = DeterminarFechaAplicacion(Cuenta.In_DiaCorte, movimientoFuturo);
                        }
                        //se determina la fecha del movimiento relacionado futuro
                        if (cuentaAAfectar != null)
                        {
                            movimientoFuturoRelacionado.Dt_fecha          = movimientoFuturo.Dt_fecha;
                            movimientoFuturoRelacionado.Oo_TipoMovimiento = movimientoRelacionado.Oo_TipoMovimiento;
                            if (cuentaAAfectar.Bo_EsDeAhorro || movimientoFuturoRelacionado.Oo_TipoMovimiento.Bo_SeAplicaInmediato)
                            {
                                movimientoFuturoRelacionado.Dt_fechaAplicacion = movimientoFuturoRelacionado.Dt_fecha;
                            }
                            else
                            {
                                movimientoFuturoRelacionado.Dt_fechaAplicacion = DeterminarFechaAplicacion(cuentaAAfectar.In_DiaCorte, movimientoFuturoRelacionado);
                            }
                        }

                        //si no es una simulacion, se agrega a los movimientos normales, si si entonces a los movimientos simulados
                        if (!EsSimulacion)
                        {
                            Cuenta.Ll_Movimientos.Add(movimientoFuturo);
                            if (cuentaAAfectar != null)
                            {
                                cuentaAAfectar.Ll_Movimientos.Add(movimientoFuturoRelacionado);
                            }
                        }
                        else
                        {
                            MovimientosSimulados.Add(movimientoFuturo);
                            if (cuentaAAfectar != null)
                            {
                                cuentaAAfectar.Ll_MovimientosSimulados.Add(movimientoFuturoRelacionado);
                            }
                        }
                    }
                }
                //la cuenta se guarda
                manejador.IniciarTransaccion();
                manejador.Guardar(Cuenta);
                if (cuentaAAfectar != null)
                {
                    manejador.Guardar(cuentaAAfectar);
                }
                manejador.TerminarTransaccion();

                CargarCuentasAAfectar();

                if (!EsSimulacion)
                {
                    Limpiar();
                    Herramientas.Forms.Mensajes.Informacion("Guardado con éxito.");
                    CargarCuentaSeleccionada();
                }
                else
                {
                    Hide();
                }
            }
            catch (Exception ex)
            {
                manejador.DeshacerTransaccion();
                Herramientas.Forms.Mensajes.Error(ex.Message);
            }
        }
        private void CambiarMovimiento(_MovimientoCuenta movimiento)
        {
            try
            {
                if (new DateTime(movimiento.Dt_fechaAplicacion.Year, movimiento.Dt_fechaAplicacion.Month, movimiento.Dt_fechaAplicacion.Day) != new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day))
                {
                    if (Herramientas.Forms.Mensajes.PreguntaAdvertenciaSIoNO("El movimiento simulado esta programado para una fecha posterior, ¿desea cambiar su fecha de aplicación para el dia de hoy?"))
                    {
                        movimiento.Dt_fechaAplicacion = DateTime.Now;
                    }
                    else
                    {
                        return;
                    }
                }

                if (!Herramientas.Forms.Mensajes.PreguntaAdvertenciaSIoNO("¿Desea aplicar el movimiento simulado como movimiento real?"))
                {
                    return;
                }

                BorrarMovimientoDeListado(Cuenta.Ll_MovimientosSimulados, movimiento);

                double multiplicador = 1;
                if (Cuenta.Bo_EsDeAhorro)
                {
                    multiplicador = -1;
                }
                double importe = movimiento.Do_Importe * movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicador;
                Cuenta.Do_saldo     = Cuenta.Do_saldo + importe;
                movimiento.Do_Saldo = Cuenta.Do_saldo;
                Cuenta.Ll_Movimientos.Add(movimiento);
                movimiento.Bo_EsSimulado          = false;
                movimiento.EsModificado           = true;
                movimiento.Bo_EstaAplicadoAlSaldo = true;
                Cuenta.EsModificado = true;

                _Cuenta cuentaAsociada = null;
                if (movimiento.Oo_MovimientoPareja != null)
                {
                    cuentaAsociada = movimiento.Oo_MovimientoPareja.Oo_Cuenta;
                    BorrarMovimientoDeListado(cuentaAsociada.Ll_MovimientosSimulados, movimiento.Oo_MovimientoPareja);

                    double multiplicador2 = 1;
                    if (cuentaAsociada.Bo_EsDeAhorro)
                    {
                        multiplicador2 = -1;
                    }
                    double importe2 = movimiento.Oo_MovimientoPareja.Do_Importe * movimiento.Oo_MovimientoPareja.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicador2;
                    cuentaAsociada.Do_saldo = cuentaAsociada.Do_saldo + importe2;
                    movimiento.Oo_MovimientoPareja.Do_Saldo               = cuentaAsociada.Do_saldo;
                    movimiento.Oo_MovimientoPareja.Bo_EsSimulado          = false;
                    movimiento.Oo_MovimientoPareja.Bo_EstaAplicadoAlSaldo = true;
                    cuentaAsociada.Ll_Movimientos.Add(movimiento.Oo_MovimientoPareja);

                    cuentaAsociada.EsModificado = true;
                    movimiento.Oo_MovimientoPareja.EsModificado = true;
                }



                manejador.IniciarTransaccion();
                if (cuentaAsociada != null)
                {
                    manejador.Guardar(cuentaAsociada);
                }
                manejador.Guardar(Cuenta);
                manejador.TerminarTransaccion();
                actualizarSaldosEvento();
                Herramientas.Forms.Mensajes.Informacion("Movimiento aplicado con éxito.");
            }
            catch (Exception ex)
            {
                manejador.DeshacerTransaccion();
                Herramientas.Forms.Mensajes.Error(ex.Message);
            }
        }
Exemple #14
0
        private void GenerarProyeccion(_Cuenta CuentaSeleccionada)
        {
            CuentaSeleccionada.EliminarCache();
            movimientosSimuladosTemp.Clear();
            if (CuentaSeleccionada == null)
            {
                Herramientas.Forms.Mensajes.Advertencia("Debe seleccionar una cuenta antes");
                return;
            }
            dgv_proyeccion.Rows.Clear();

            //if (CuentaSeleccionada.Ll_MovimientosSimulados != null)
            //    foreach (_MovimientoCuenta movimientoSimulado in CuentaSeleccionada.Ll_MovimientosSimulados)
            //        movimientoSimulado.Dt_fecha = DateTime.Now;

            List <_MovimientoCuenta> movimientos = new List <_MovimientoCuenta>();

            if (!CuentaSeleccionada.Bo_EsDeAhorro)
            {
                movimientos = GeneraMovimientoDeIntereses(CuentaSeleccionada.In_DiaCorte, CuentaSeleccionada.In_DiasParaPago);
            }
            if (CuentaSeleccionada.Ll_Movimientos != null)
            {
                movimientos.AddRange(CuentaSeleccionada.Ll_Movimientos);
            }
            if (CuentaSeleccionada.Ll_MovimientosSimulados != null)
            {
                movimientos.AddRange(CuentaSeleccionada.Ll_MovimientosSimulados);
            }

            foreach (_MovimientoCuenta movimiento in movimientos)
            {
                movimiento.Dt_fechaAplicacion = new DateTime(movimiento.Dt_fechaAplicacion.Year, movimiento.Dt_fechaAplicacion.Month, movimiento.Dt_fechaAplicacion.Day);
            }

            List <_MovimientoCuenta> movimientosOrdenados = movimientos.OrderBy(x => x.Dt_fechaAplicacion).ThenBy(x => x.Dt_fecha).ToList <_MovimientoCuenta>();

            double saldoActual = CuentaSeleccionada.Do_saldo;

            foreach (_MovimientoCuenta movimiento in movimientosOrdenados)
            {
                if (new DateTime(movimiento.Dt_fechaAplicacion.Year, movimiento.Dt_fechaAplicacion.Month, movimiento.Dt_fechaAplicacion.Day) >= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day) && new DateTime(movimiento.Dt_fechaAplicacion.Year, movimiento.Dt_fechaAplicacion.Month, movimiento.Dt_fechaAplicacion.Day) <= new DateTime(dtp_fechaHasta.Value.Year, dtp_fechaHasta.Value.Month, dtp_fechaHasta.Value.Day).AddHours(24))
                {
                    if (movimiento.Bo_EsSimulado)
                    {
                        movimiento.Do_Saldo = 0;
                    }
                    double multiplicadorCuenta = 1;
                    if (CuentaSeleccionada.Bo_EsDeAhorro)
                    {
                        multiplicadorCuenta = -1;
                    }
                    //si el movimiento es de interes mensual, entonces se agrega una fila con el monto a pagar antes de los intereses
                    if (movimiento.Oo_TipoMovimiento.St_Nombre.Equals("(Simulado) - Intereses Mensuales"))
                    {
                        dgv_proyeccion.Rows.Add(Herramientas.Conversiones.Formatos.DateTimeAFechaCortaConMesTextoAbreviado(movimiento.Dt_fechaAplicacion), "", "   ## FECHA LIMITE DE PAGO ##", "", Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(saldoActual, 2), "Importe a pagar en la fecha limite de la cuenta.");
                        movimientosSimuladosTemp.Add(null);
                        for (int i = 0; i < dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells.Count; i++)
                        {
                            dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[i].Style.BackColor = Color.LightBlue;
                            dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[i].Style.ForeColor = Color.Black;
                        }
                    }
                    // si el tipo de movimiento es de intereses se calculan los intereses
                    if (!CuentaSeleccionada.Bo_EsDeAhorro && movimiento.Oo_TipoMovimiento.St_Nombre.Equals("(Simulado) - Intereses Mensuales") && saldoActual > 0)
                    {
                        double calculoIntereses = saldoActual * (CuentaSeleccionada.Do_PorcentajeInteresMensual / 100);
                        movimiento.Do_Importe = calculoIntereses;
                        movimiento.Do_Importe = movimiento.Do_Importe * 1.16;
                    }
                    //se calcula el saldo del movimiento solo si su fecha de aplicacion es mayor a hoy
                    if (movimiento.Dt_fechaAplicacion >= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day) && movimiento.Do_Saldo == 0 && !movimiento.Bo_EstaAplicadoAlSaldo)
                    {
                        saldoActual         = saldoActual + movimiento.Do_Importe * movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno * multiplicadorCuenta;
                        movimiento.Do_Saldo = saldoActual;
                    }
                    //se le pone el prefijo simulado a los movimientos simulados
                    if (movimiento.Bo_EsSimulado)
                    {
                        if (!movimiento.Oo_TipoMovimiento.St_Nombre.Contains("(Simulado) - "))
                        {
                            movimiento.Oo_TipoMovimiento.St_Nombre = "(Simulado) - " + movimiento.Oo_TipoMovimiento.St_Nombre;
                        }
                    }
                    dgv_proyeccion.Rows.Add(Herramientas.Conversiones.Formatos.DateTimeAFechaCortaConMesTextoAbreviado(movimiento.Dt_fechaAplicacion), Herramientas.Conversiones.Formatos.DateTimeAFechaCortaConMesTextoAbreviado(movimiento.Dt_fecha), movimiento.Oo_TipoMovimiento.St_Nombre, Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(movimiento.Do_Importe, 2), Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(movimiento.Do_Saldo, 2), movimiento.St_detalleMovimiento);
                    //coloreando los tipos de movimiento
                    if (movimiento.Oo_TipoMovimiento.Do_MultiplicadorSigno == -1)
                    {
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[3].Style.BackColor = Color.LightGreen;
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[3].Style.ForeColor = Color.Black;
                    }
                    else
                    {
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[3].Style.BackColor = Color.Salmon;
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[3].Style.ForeColor = Color.White;
                    }
                    //coloreando un movimiento simulado
                    if (movimiento.Bo_EsSimulado)
                    {
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[2].Style.BackColor = Color.LightGray;
                        dgv_proyeccion.Rows[dgv_proyeccion.Rows.Count - 1].Cells[2].Style.ForeColor = Color.Black;
                        movimientosSimuladosTemp.Add(movimiento);
                    }
                    else
                    {
                        movimientosSimuladosTemp.Add(movimiento); //probando eliminando movimientos
                    }
                }
            }
        }