void cmb_TiposMovimientos_SelectedIndexChanged(object sender, EventArgs e) { if (cmb_TiposMovimientos.SelectedIndex >= 0) { tipoSeleccionado = tiposMovimientos[cmb_TiposMovimientos.SelectedIndex]; CargarTipoSeleccionado(); } }
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; }
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); }
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); } }
//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]); } }
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); } }