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; }
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(); }
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; } }
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; } }
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); } }
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); } }
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 } } } }