private void AgruparMovimientos() { // Se obtienen los movimientos marcados var oMovsIds = new List<int>(); decimal mDeposito = 0, mRetiro = 0; foreach (DataGridViewRow oFila in this.dgvConciliacion.Rows) { if (!Util.Logico(oFila.Cells["con_Sel"].Value)) continue; mDeposito += Util.Decimal(oFila.Cells["con_Depositos"].Value); mRetiro += Util.Decimal(oFila.Cells["con_Retiros"].Value); oMovsIds.Add(Util.Entero(oFila.Cells["con_BancoCuentaMovimientoID"].Value)); } // Se valida que haya movimientos o importe if ((mDeposito + mRetiro) == 0) { UtilLocal.MensajeAdvertencia("No hay ningún movimiento seleccionado o el importe es igual a cero."); return; } // Se valida que sean puros depósitos o puros retiros if (mDeposito > 0 && mRetiro > 0) { UtilLocal.MensajeAdvertencia("No es posible agrupar movimientos de tipo depósito con movimientos de tipo retiro."); return; } // Se abre forma para guardar los datos var frmDatos = new AgruparMovimientosBancarios(); frmDatos.Deposito = (mDeposito > 0); frmDatos.Importe = (mDeposito + mRetiro); // Se llenan los datos con el primer movimiento seleccionado int iPrimerMovID = oMovsIds[0]; var oPrimerMov = Datos.GetEntity<BancoCuentaMovimiento>(c => c.BancoCuentaMovimientoID == iPrimerMovID); frmDatos.Fecha = oPrimerMov.FechaAsignado.Valor(); frmDatos.SucursalID = oPrimerMov.SucursalID; frmDatos.Concepto = oPrimerMov.Concepto; frmDatos.Referencia = oPrimerMov.Referencia; // Se muestra el formulario if (frmDatos.ShowDialog(Principal.Instance) == DialogResult.OK) { Cargando.Mostrar(); // Se obtienen los movimientos a agrupar var oMovs = new List<BancoCuentaMovimiento>(); foreach (int iModID in oMovsIds) oMovs.Add(Datos.GetEntity<BancoCuentaMovimiento>(c => c.BancoCuentaMovimientoID == iModID)); // Se genera y guarda el movimiento agrupador var oMovAgrupador = new BancoCuentaMovimiento() { BancoCuentaID = oPrimerMov.BancoCuentaID, EsIngreso = (mDeposito > 0), Fecha = DateTime.Now, FechaAsignado = frmDatos.Fecha, SucursalID = frmDatos.SucursalID, Importe = oMovs.Sum(c => c.Importe), Concepto = frmDatos.Concepto, Referencia = frmDatos.Referencia, SaldoAcumulado = oMovs.OrderBy(c=> c.FechaAsignado).Last().SaldoAcumulado }; Datos.Guardar<BancoCuentaMovimiento>(oMovAgrupador); // Se agrupan los movimientos foreach (var oMov in oMovs) { oMov.MovimientoAgrupadorID = oMovAgrupador.BancoCuentaMovimientoID; Datos.Guardar<BancoCuentaMovimiento>(oMov); } // Se recalcula el acumulado this.RecalcularAcumulado(oMovAgrupador.FechaAsignado.Valor()); // Cargando.Cerrar(); this.LlenarConciliaciones(); } frmDatos.Dispose(); }
private void AgruparMovimientos() { // Se obtienen los movimientos marcados var oMovsIds = new List <int>(); decimal mDeposito = 0, mRetiro = 0; foreach (DataGridViewRow oFila in this.dgvConciliacion.Rows) { if (!Util.Logico(oFila.Cells["con_Sel"].Value)) { continue; } mDeposito += Util.Decimal(oFila.Cells["con_Depositos"].Value); mRetiro += Util.Decimal(oFila.Cells["con_Retiros"].Value); oMovsIds.Add(Util.Entero(oFila.Cells["con_BancoCuentaMovimientoID"].Value)); } // Se valida que haya movimientos o importe if ((mDeposito + mRetiro) == 0) { UtilLocal.MensajeAdvertencia("No hay ningún movimiento seleccionado o el importe es igual a cero."); return; } // Se valida que sean puros depósitos o puros retiros if (mDeposito > 0 && mRetiro > 0) { UtilLocal.MensajeAdvertencia("No es posible agrupar movimientos de tipo depósito con movimientos de tipo retiro."); return; } // Se abre forma para guardar los datos var frmDatos = new AgruparMovimientosBancarios(); frmDatos.Deposito = (mDeposito > 0); frmDatos.Importe = (mDeposito + mRetiro); // Se llenan los datos con el primer movimiento seleccionado int iPrimerMovID = oMovsIds[0]; var oPrimerMov = Datos.GetEntity <BancoCuentaMovimiento>(c => c.BancoCuentaMovimientoID == iPrimerMovID); frmDatos.Fecha = oPrimerMov.FechaAsignado.Valor(); frmDatos.SucursalID = oPrimerMov.SucursalID; frmDatos.Concepto = oPrimerMov.Concepto; frmDatos.Referencia = oPrimerMov.Referencia; // Se muestra el formulario if (frmDatos.ShowDialog(Principal.Instance) == DialogResult.OK) { Cargando.Mostrar(); // Se obtienen los movimientos a agrupar var oMovs = new List <BancoCuentaMovimiento>(); foreach (int iModID in oMovsIds) { oMovs.Add(Datos.GetEntity <BancoCuentaMovimiento>(c => c.BancoCuentaMovimientoID == iModID)); } // Se genera y guarda el movimiento agrupador var oMovAgrupador = new BancoCuentaMovimiento() { BancoCuentaID = oPrimerMov.BancoCuentaID, EsIngreso = (mDeposito > 0), Fecha = DateTime.Now, FechaAsignado = frmDatos.Fecha, SucursalID = frmDatos.SucursalID, Importe = oMovs.Sum(c => c.Importe), Concepto = frmDatos.Concepto, Referencia = frmDatos.Referencia, SaldoAcumulado = oMovs.OrderBy(c => c.FechaAsignado).Last().SaldoAcumulado }; Datos.Guardar <BancoCuentaMovimiento>(oMovAgrupador); // Se agrupan los movimientos foreach (var oMov in oMovs) { oMov.MovimientoAgrupadorID = oMovAgrupador.BancoCuentaMovimientoID; Datos.Guardar <BancoCuentaMovimiento>(oMov); } // Se recalcula el acumulado this.RecalcularAcumulado(oMovAgrupador.FechaAsignado.Valor()); // Cargando.Cerrar(); this.LlenarConciliaciones(); } frmDatos.Dispose(); }