コード例 #1
0
 void cmb_TiposMovimientos_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmb_TiposMovimientos.SelectedIndex >= 0)
     {
         tipoSeleccionado = tiposMovimientos[cmb_TiposMovimientos.SelectedIndex];
         CargarTipoSeleccionado();
     }
 }
コード例 #2
0
 private void Limpiar()
 {
     txt_nombre.Text             = "";
     chb_entrada.Checked         = false;
     chb_salida.Checked          = false;
     tipoSeleccionado            = null;
     chb_EstaActivo.Checked      = false;
     chb_esDividido.Checked      = false;
     chb_aplicaInmediato.Checked = false;
 }
コード例 #3
0
        private List <_MovimientoCuenta> GeneraMovimientoDeIntereses(int diaCorte, int diasPago)
        {
            List <_MovimientoCuenta> retorno = new List <_MovimientoCuenta>();

            _TipoMovimiento tipoInteres = null; // manejador.Cargar<_TipoMovimiento>("select * from _TipoMovimiento where estaDeshabilitado = 'False' and _st_Nombre = 'Intereses Mensuales'");

            if (tipoInteres == null)
            {
                tipoInteres = new _TipoMovimiento();
            }
            //tipoInteres.EsModificado = true;

            tipoInteres.St_Nombre             = "(Simulado) - Intereses Mensuales";
            tipoInteres.St_Tipo               = "S";
            tipoInteres.Do_MultiplicadorSigno = 1;


            //manejador.Guardar(tipoInteres);

            //agregando movimientos de intereses;


            TimeSpan resta       = dtp_fechaHasta.Value - DateTime.Now;
            int      diasTotales = Herramientas.Conversiones.Formatos.DoubleRedondeoAEnteroArriba(resta.TotalDays);

            DateTime fechaPartida     = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            DateTime proximaFechaPago = CalcularProximaFechaPago(fechaPartida, diaCorte, diasPago);

            for (int i = 0; i < diasTotales; i++)
            {
                DateTime fechaRecorrido = fechaPartida.AddDays(1 * i);

                if (fechaRecorrido == proximaFechaPago)
                {
                    _MovimientoCuenta movimientoIntereses = new _MovimientoCuenta();
                    movimientoIntereses.Do_Importe         = 0;
                    movimientoIntereses.Oo_TipoMovimiento  = tipoInteres;
                    movimientoIntereses.Dt_fecha           = proximaFechaPago;
                    movimientoIntereses.Dt_fechaAplicacion = proximaFechaPago;
                    movimientoIntereses.Bo_EsSimulado      = true;
                    retorno.Add(movimientoIntereses);
                    //calculando la proxima fecha

                    proximaFechaPago = CalcularProximaFechaPago(proximaFechaPago, diaCorte, diasPago);
                }
            }
            return(retorno);
        }
コード例 #4
0
        private void btn_guardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (tipoSeleccionado != null && tipoSeleccionado.St_Nombre.Equals("Intereses Mensuales"))
                {
                    Herramientas.Forms.Mensajes.Exclamacion("Este movimiento no se puede modificar");
                    return;
                }

                if (tipoSeleccionado == null)
                {
                    tipoSeleccionado = new _TipoMovimiento();
                }
                tipoSeleccionado.EsModificado = true;

                tipoSeleccionado.St_Nombre = txt_nombre.Text;
                if (chb_entrada.Checked)
                {
                    tipoSeleccionado.St_Tipo = "E";
                    tipoSeleccionado.Do_MultiplicadorSigno = -1;
                }
                if (chb_salida.Checked)
                {
                    tipoSeleccionado.St_Tipo = "S";
                    tipoSeleccionado.Do_MultiplicadorSigno = 1;
                }

                tipoSeleccionado.EstaDeshabilitado           = !chb_EstaActivo.Checked;
                tipoSeleccionado.Bo_SeDivideEnMultiplesPagos = chb_esDividido.Checked;
                tipoSeleccionado.Bo_SeAplicaInmediato        = chb_aplicaInmediato.Checked;

                manejador.Guardar(tipoSeleccionado);
                Limpiar();
                CargarTipos();
                Herramientas.Forms.Mensajes.Informacion("Guardado con éxito");
            }
            catch (Exception ex)
            {
                Herramientas.Forms.Mensajes.Error(ex.Message);
            }
        }
コード例 #5
0
 //grafica aqui
 private void CargarGrafica()
 {
     if (tiposMovimientosSumatorias.Keys.Count > 0)
     {
         chart.Titles.Add("Resumen de movimientos desde " + Herramientas.Conversiones.Formatos.DateTimeAFechaCortaConMesTexto(dtp_fechaMinima.Value));
     }
     else
     {
         chart.Titles.Add("No hay movimientos para la gráfica.");
     }
     foreach (long idTipoMov in tiposMovimientosSumatorias.Keys)
     {
         _TipoMovimiento tipoMov = manejador.Cargar <_TipoMovimiento>("select * from _TipoMovimiento where estaDeshabilitado = 'False' and id = @id", new List <object>()
         {
             idTipoMov
         });
         Series series = chart.Series.Add(tipoMov.St_Nombre + " - " + Herramientas.Conversiones.Formatos.DoubleAMonedaANDecimales(tiposMovimientosSumatorias[idTipoMov], 2));
         series.Points.Add(tiposMovimientosSumatorias[idTipoMov]);
     }
 }
コード例 #6
0
        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);
            }
        }