Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }