private void AgregarMovimientos(OrdenesPagoDetalle pago, DetalleFormaPago vPago)
        {
            var movimiento = new CajaMovimiento();

            movimiento.Id                   = Guid.NewGuid();
            movimiento.Importe              = pago.ImportePagado;
            movimiento.ComprobanteId        = _ordenPago.Id;
            movimiento.TipoComprobante      = TipoComprobanteEnum.OrdenPago;
            movimiento.TipoMovimientoCajaId = vPago.IsDeleted ? TipoMovimientoCajaEnum.AnulaciónOrdenPago : TipoMovimientoCajaEnum.PagoGastos;
            movimiento.PcAlta               = Environment.MachineName;

            movimiento.CajaId = _cajaActual.Id;

            if (pago.Efectivo.HasValue && pago.Efectivo != 0)
            {
                //Si ImportePagado <> 0 => Pago Normal en Efectivo
                //Si ImportePagado = 0 => Pago Programado
                if (pago.ImportePagado.HasValue && pago.ImportePagado != 0)
                {
                    movimiento.Efectivo = pago.Efectivo;

                    var pagoEfec = vPago as PagoEfectivo;

                    if (pagoEfec.CajaAnterior)
                    {
                        ActualizarCajaAnterior(pagoEfec, _cajaActual, movimiento);
                    }
                    else
                    {
                        ActualizarCajaActual(pago, _cajaActual);
                    }

                    Uow.Cajas.Modificar(_cajaActual);
                }
            }

            if (pago.Cheques.HasValue && pago.Cheques != 0)
            {
                movimiento.Cheque = pago.ImportePagado;
            }

            if (pago.DepositoEfectivo.HasValue && pago.DepositoEfectivo != 0)
            {
                movimiento.Deposito = pago.ImportePagado;
            }

            if (pago.Transferencia.HasValue && pago.Transferencia != 0)
            {
                movimiento.Transferencia = pago.ImportePagado;
            }

            movimiento.FechaAlta      = pago.Id == default(Guid) ? _clock.Now : pago.FechaAlta;
            movimiento.SucursalAltaId = Context.SucursalActual.Id;
            movimiento.OperadorAltaId = Context.OperadorActual.Id;

            Uow.CajaMovimientos.Agregar(movimiento);
        }
        private void EliminarPago(DetalleFormaPago pago)
        {
            if (pago.Id != Guid.Empty)
            {
                pago.IsDeleted = true;
            }
            else
            {
                _pagos.Remove(pago);
            }

            RefrescarPagos();
        }
        public void AgregarCuentaMovimiento(OrdenesPago ordenPago, DetalleFormaPago pago)
        {
            var movimiento = new CuentasMovimiento();
            movimiento.ComprobanteId = ordenPago.Id;

            switch (pago.TipoPago)
            {
                case FormaPago.Transferencia:
                    var pagoTrans = pago as PagoTransferencia;
                    movimiento.Debito = pagoTrans.Importe;
                    movimiento.NroMovimiento = pagoTrans.Numero;
                    movimiento.CuentaId = (int)pagoTrans.CuentaId;
                    movimiento.FechaMovimiento = _clock.Now;
                    movimiento.Descripcion = pagoTrans.Descripcion;
                    movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago;
                    movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.TransferenciaBancariaAProveedores;
                    break;
                case FormaPago.Deposito:
                    var pagoDeposito = pago as PagoDeposito;
                    movimiento.Debito = pagoDeposito.Importe;
                    movimiento.NroMovimiento = pagoDeposito.Numero;
                    movimiento.CuentaId = (int)pagoDeposito.DepositoCuentaId;
                    movimiento.FechaMovimiento = _clock.Now;
                    movimiento.Descripcion = pagoDeposito.Descripcion;
                    movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago;
                    movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.DepositoEfectivo;
                    break;
            }

            Caja caja = _cajaActual;

            movimiento.FechaAlta = _clock.Now;
            movimiento.SucursalAltaId = _context.SucursalActual.Id;
            movimiento.OperadorAltaId = _context.OperadorActual.Id;

            _uow.CuentasMovimientos.Agregar(movimiento);
        }
 private void ActualizarPagoEfectivoFijo()
 {
     if (_pagos.Count == 0)
     {
         var _pago = new PagoEfectivo { TipoPago = FormaPago.Efectivo, EsFijo = true, Importe = Importe, Fecha = _clock.Now};
         ImporteDebe = 0;
         _pagoFijo = _pago;
         _pagos.Add(_pagoFijo);
     }
     else
     {
         _pagoFijo = _pagos.FirstOrDefault(p => p.EsFijo);
         if (_pagoFijo != null && PagoFijoEfectivo != 0)
         {
             PagoFijoEfectivo = Importe - this._pagos.Where(p => !p.IsDeleted && !p.EsFijo).Sum(p => p.Importe ?? 0);
             if (PagoFijoEfectivo == 0)
             {
                 _pagos.Remove(_pagoFijo);
             }
         }
         else
         {
             var total = TotalPagos();
             ImporteDebe = Importe - total;
         }
     }
 }
        private OrdenesPagoDetalle ObtenerDetalle(DetalleFormaPago pago)
        {
            OrdenesPagoDetalle _ordenPagoDetalle;
            if (pago.Id == Guid.Empty)
            {
                _ordenPagoDetalle = new OrdenesPagoDetalle();
                _ordenPagoDetalle.Id = Guid.NewGuid();
                _ordenPagoDetalle.OrdenPagoId = _ordenPago.Id;
            }
            else
            {
                _ordenPagoDetalle = _ordenPago.OrdenesPagoDetalles.FirstOrDefault(d => d.Id == pago.Id);
            }

            //La caja siempre esta abierta.
            var cajaActual = this.Context.CajaActual;

            _ordenPagoDetalle.CajaId = cajaActual.Id;
            _ordenPagoDetalle.OperadorAutorizaId = operadorAutoriza;
            _ordenPagoDetalle.Descripcion = pago.Descripcion;
            //Fechas.
            _ordenPagoDetalle.FechaAlta = _clock.Now;

            _ordenPagoDetalle.SucursalAltaId = Context.SucursalActual.Id;

            _ordenPagoDetalle.OperadorAltaId = Context.OperadorActual.Id;

            switch (pago.TipoPago)
            {
                case FormaPago.Transferencia:
                    _ordenPagoDetalle.FechaPago = _clock.Now;
                    _ordenPagoDetalle.Transferencia = pago.Importe;
                    _ordenPagoDetalle.ImportePagado = pago.Importe;
                    break;
                case FormaPago.Cheque:
                    _ordenPagoDetalle.FechaPago = _clock.Now;
                    _ordenPagoDetalle.Cheques = pago.Importe;
                    _ordenPagoDetalle.ImportePagado = pago.Importe;
                    break;
                case FormaPago.Deposito:
                    _ordenPagoDetalle.FechaPago = _clock.Now;
                    _ordenPagoDetalle.DepositoEfectivo = pago.Importe;
                    _ordenPagoDetalle.ImportePagado = pago.Importe;
                    break;
                case FormaPago.Efectivo:
                    _ordenPagoDetalle.FechaPago = DtpFecha.Value;
                    _ordenPagoDetalle.Efectivo = pago.Importe;
                    //Si FechaPago > hoy => Pago PRogramado con Importe PAgado = 0
                    _ordenPagoDetalle.ImportePagado = (pago.Fecha.Value.Date == _clock.Now.Date) ? pago.Importe : 0;
                    break;
            }

            return _ordenPagoDetalle;
        }
        private void AgregarMovimientos(OrdenesPagoDetalle pago, DetalleFormaPago vPago)
        {
            var movimiento = new CajaMovimiento();
            movimiento.Id = Guid.NewGuid();
            movimiento.Importe = pago.ImportePagado;
            movimiento.ComprobanteId = _ordenPago.Id;
            movimiento.TipoComprobante = TipoComprobanteEnum.OrdenPago;
            movimiento.TipoMovimientoCajaId = vPago.IsDeleted ? TipoMovimientoCajaEnum.AnulaciónOrdenPago : TipoMovimientoCajaEnum.PagoGastos;
            movimiento.PcAlta = Environment.MachineName;

            movimiento.CajaId = _cajaActual.Id;

            if (pago.Efectivo.HasValue && pago.Efectivo != 0)
            {
                //Si ImportePagado <> 0 => Pago Normal en Efectivo
                //Si ImportePagado = 0 => Pago Programado
                if (pago.ImportePagado.HasValue && pago.ImportePagado != 0)
                {
                    movimiento.Efectivo = pago.Efectivo;

                    var pagoEfec = vPago as PagoEfectivo;

                    if (pagoEfec.CajaAnterior)
                    {
                        ActualizarCajaAnterior(pagoEfec, _cajaActual, movimiento);
                    }
                    else
                    {
                        ActualizarCajaActual(pago, _cajaActual);
                    }

                    Uow.Cajas.Modificar(_cajaActual);
                }
            }

            if (pago.Cheques.HasValue && pago.Cheques != 0)
            {
                movimiento.Cheque = pago.ImportePagado;
            }

            if (pago.DepositoEfectivo.HasValue && pago.DepositoEfectivo != 0)
            {
                movimiento.Deposito = pago.ImportePagado;
            }

            if (pago.Transferencia.HasValue && pago.Transferencia != 0)
            {
                movimiento.Transferencia = pago.ImportePagado;
            }

            movimiento.FechaAlta = pago.Id == default(Guid) ? _clock.Now : pago.FechaAlta;
            movimiento.SucursalAltaId = Context.SucursalActual.Id;
            movimiento.OperadorAltaId = Context.OperadorActual.Id;

            Uow.CajaMovimientos.Agregar(movimiento);
        }
        private void EliminarPago(DetalleFormaPago pago)
        {
            if (pago.Id != Guid.Empty)
            {
                pago.IsDeleted = true;
            }
            else
            {
                _pagos.Remove(pago);
            }

            RefrescarPagos();
        }
        private void CargarOrdenPagoDetalle()
        {
            _pagos = new List<DetalleFormaPago>();

            var detalleLista = _ordenPago.OrdenesPagoDetalles.Where(d => !d.FechaAnulacion.HasValue).ToList();

            foreach (var ordenesPagoDetalle in detalleLista)
            {
                DetalleFormaPago pago = new DetalleFormaPago();

                if (ordenesPagoDetalle.Efectivo.HasValue && ordenesPagoDetalle.Efectivo > 0)
                {
                    var pagoEfectivo = new PagoEfectivo();
                    pagoEfectivo.Id = ordenesPagoDetalle.Id;
                    pagoEfectivo.Importe = ordenesPagoDetalle.Efectivo;
                    pagoEfectivo.TipoPago = FormaPago.Efectivo;
                    pagoEfectivo.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoEfectivo.Fecha = ordenesPagoDetalle.FechaPago;
                    pago = pagoEfectivo;
                }

                if (ordenesPagoDetalle.Cheques.HasValue && ordenesPagoDetalle.Cheques > 0)
                {
                    var pagoCheque = new PagoCheque();
                    pagoCheque.Id = ordenesPagoDetalle.Id;
                    pagoCheque.Importe = ordenesPagoDetalle.Cheques;
                    pagoCheque.TipoPago = FormaPago.Cheque;
                    pagoCheque.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoCheque.Fecha = ordenesPagoDetalle.FechaPago;
                    pago = pagoCheque;
                }

                if (ordenesPagoDetalle.DepositoEfectivo.HasValue && ordenesPagoDetalle.DepositoEfectivo > 0)
                {
                    var pagoDeposito = new PagoDeposito();
                    var cuentaMov =
                        Uow.CuentasMovimientos.Obtener(
                            c =>
                            c.ComprobanteId == _ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                    pagoDeposito.Id = ordenesPagoDetalle.Id;
                    pagoDeposito.DepositoCuentaId = cuentaMov.CuentaId;
                    pagoDeposito.Importe = ordenesPagoDetalle.DepositoEfectivo;
                    pagoDeposito.TipoPago = FormaPago.Deposito;
                    pagoDeposito.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoDeposito.Fecha = ordenesPagoDetalle.FechaPago;
                    pago = pagoDeposito;
                }

                if (ordenesPagoDetalle.Transferencia.HasValue && ordenesPagoDetalle.Transferencia > 0)
                {
                    var pagoTransferencia = new PagoTransferencia();
                    var cuentaMov =
                        Uow.CuentasMovimientos.Obtener(
                            c =>
                            c.ComprobanteId == _ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                    pagoTransferencia.Id = ordenesPagoDetalle.Id;
                    pagoTransferencia.CuentaId = cuentaMov.CuentaId;
                    pagoTransferencia.Importe = ordenesPagoDetalle.Transferencia;
                    pagoTransferencia.TipoPago = FormaPago.Transferencia;
                    pagoTransferencia.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoTransferencia.Fecha = ordenesPagoDetalle.FechaPago;
                    pago = pagoTransferencia;
                }

                pago.PuedeEliminar = ordenesPagoDetalle.PuedeEliminar();

                _pagos.Add(pago);
            }

            GridPagos.DataSource = _pagos.ToList();
        }
 private void OnPagoAgregado(DetalleFormaPago pago)
 {
     if (PagoAgregado != null)
     {
         PagoAgregado(this, pago);
     }
 }
        private DetalleFormaPago ObtenerPagoDesdeForm()
        {
            DetalleFormaPago pago = new DetalleFormaPago();

            if (TabsFormaPago.SelectedPage == this.TabEfectivo)
            {
                var pagoEfectivo = new PagoEfectivo();
                pagoEfectivo.Importe = this.Importe;
                pagoEfectivo.TipoPago = FormaPago.Efectivo;
                pagoEfectivo.Fecha = ChkCajaAnterior.Checked ? _clock.Now : DtpFecha.Value;
                pagoEfectivo.CajaAnterior = ChkCajaAnterior.Checked;
                pago = pagoEfectivo;
            }

            if (TabsFormaPago.SelectedPage == this.TabTransferencia)
            {
                var pagoTransferencia = new PagoTransferencia();
                pagoTransferencia.Importe = Importe;
                pagoTransferencia.TipoPago = FormaPago.Transferencia;
                pagoTransferencia.CuentaId = CuentaId;
                pagoTransferencia.Fecha = _clock.Now;
                pagoTransferencia.Numero = NumeroTransferencia;
                pagoTransferencia.Descripcion = CbxCuentasTransferencia.Texto + " - " + NumeroTransferencia;
                pago = pagoTransferencia;
            }

            if (TabsFormaPago.SelectedPage == this.TabCheque)
            {
                var pagoCheque = new PagoCheque();
                pagoCheque.Importe = Importe;
                pagoCheque.TipoPago = FormaPago.Cheque;
                pagoCheque.Fecha = _clock.Now;
                pagoCheque.BancoId = this.ChequeBancoId;
                pagoCheque.Numero = ChequeNumero;
                pagoCheque.Descripcion = CbxChequeBanco.Text + " - " + ChequeNumero;
                pago = pagoCheque;
            }

            if (TabsFormaPago.SelectedPage == this.TabDeposito)
            {
                var pagoDeposito = new PagoDeposito();
                pagoDeposito.Importe = Importe;
                pagoDeposito.TipoPago = FormaPago.Deposito;
                pagoDeposito.Fecha = _clock.Now;
                pagoDeposito.DepositoCuentaId = this.DepositoCuentaId;
                pagoDeposito.Numero = DepositoNumero;
                pagoDeposito.Descripcion = CbxDepositoBanco.Text + " - " + DepositoNumero;
                pago = pagoDeposito;
            }

            return pago;
        }
        public DetalleFormaPago ObtenerFormaPago(OrdenesPago ordenPago, OrdenesPagoDetalle ordenesPagoDetalle)
        {
            DetalleFormaPago pago = new DetalleFormaPago();

            pago.PuedeEliminar = ordenesPagoDetalle.PuedeEliminar();

            if (ordenesPagoDetalle.Efectivo.HasValue && ordenesPagoDetalle.Efectivo != 0)
            {
                var pagoEfectivo = new PagoEfectivo();
                pagoEfectivo.Id = ordenesPagoDetalle.Id;
                pagoEfectivo.Importe = ordenesPagoDetalle.Efectivo;
                pagoEfectivo.TipoPago = FormaPago.Efectivo;
                pagoEfectivo.Descripcion = ordenesPagoDetalle.Descripcion;
                pagoEfectivo.Fecha = ordenesPagoDetalle.FechaPago;
                pago = pagoEfectivo;
            }

            if (ordenesPagoDetalle.Cheques.HasValue && ordenesPagoDetalle.Cheques != 0)
            {
                var pagoCheque = new PagoCheque();
                pagoCheque.Id = ordenesPagoDetalle.Id;
                pagoCheque.Importe = ordenesPagoDetalle.Cheques;
                pagoCheque.TipoPago = FormaPago.Cheque;
                pagoCheque.Descripcion = ordenesPagoDetalle.Descripcion;
                pagoCheque.Fecha = ordenesPagoDetalle.FechaPago;
                pago = pagoCheque;
            }

            if (ordenesPagoDetalle.DepositoEfectivo.HasValue && ordenesPagoDetalle.DepositoEfectivo != 0)
            {
                var pagoDeposito = new PagoDeposito();
                var cuentaMov =
                    _uow.CuentasMovimientos.Obtener(
                        c =>
                        c.ComprobanteId == ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                pagoDeposito.Id = ordenesPagoDetalle.Id;
                pagoDeposito.DepositoCuentaId = cuentaMov.CuentaId;
                pagoDeposito.Importe = ordenesPagoDetalle.DepositoEfectivo;
                pagoDeposito.TipoPago = FormaPago.Deposito;
                pagoDeposito.Descripcion = ordenesPagoDetalle.Descripcion;
                pagoDeposito.Fecha = ordenesPagoDetalle.FechaPago;
                pago = pagoDeposito;
            }

            if (ordenesPagoDetalle.Transferencia.HasValue && ordenesPagoDetalle.Transferencia != 0)
            {
                var pagoTransferencia = new PagoTransferencia();
                var cuentaMov =
                    _uow.CuentasMovimientos.Obtener(
                        c =>
                        c.ComprobanteId == ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                pagoTransferencia.Id = ordenesPagoDetalle.Id;
                pagoTransferencia.CuentaId = cuentaMov.CuentaId;
                pagoTransferencia.Importe = ordenesPagoDetalle.Transferencia;
                pagoTransferencia.TipoPago = FormaPago.Transferencia;
                pagoTransferencia.Descripcion = ordenesPagoDetalle.Descripcion;
                pagoTransferencia.Fecha = ordenesPagoDetalle.FechaPago;
                pago = pagoTransferencia;
            }

            return pago;
        }
        public void AgregarMovimientos(OrdenesPago ordenPago, OrdenesPagoDetalle pago, DetalleFormaPago vPago)
        {
            var movimiento = new CajaMovimiento();
            var movimientoAnterior = new CajaMovimiento();
            if (vPago.IsDeleted)
                movimientoAnterior = _uow.CajaMovimientos.Obtener(c => c.ComprobanteId == ordenPago.Id);

            movimiento.Id = Guid.NewGuid();
            movimiento.Importe = pago.ImportePagado;
            movimiento.ComprobanteId = ordenPago.Id;
            movimiento.TipoComprobante = TipoComprobanteEnum.OrdenPago;
            movimiento.TipoMovimientoCajaId = vPago.IsDeleted ? movimientoAnterior.TipoMovimientoCajaId : TipoMovimientoCajaEnum.PagoGastos;
            //movimiento.TipoMovimientoCajaId = vPago.IsDeleted ? TipoMovimientoCajaEnum.AnulaciónOrdenPago : TipoMovimientoCajaEnum.PagoGastos;
            movimiento.PcAlta = Environment.MachineName;
            movimiento.CajaId = _cajaActual.Id;

            if (pago.Efectivo.HasValue && pago.Efectivo != 0)
            {
                //Si ImportePagado <> 0 => Pago Normal en Efectivo
                //Si ImportePagado = 0 => Pago Programado
                if (pago.ImportePagado.HasValue && pago.ImportePagado != 0)
                {
                    var pagoEfec = vPago as PagoEfectivo;

                    if (pagoEfec.CajaAnterior)
                    {
                        ActualizarCajaAnterior(ordenPago, pagoEfec, _cajaActual, movimiento);
                    }
                    else
                    {
                        ActualizarCajaActual(pago, movimiento, _cajaActual);
                    }

               }

                movimiento.Efectivo = pago.Efectivo;
            }

            if (pago.Cheques.HasValue && (pago.Cheques > 0 || pago.Cheques < 0))
            {
                movimiento.Cheque = pago.Cheques;
            }

            if (pago.DepositoEfectivo.HasValue && (pago.DepositoEfectivo > 0 || pago.DepositoEfectivo < 0))
            {
                movimiento.Deposito = pago.DepositoEfectivo;
            }

            if (pago.Transferencia.HasValue && (pago.Transferencia > 0 || pago.Transferencia < 0))
            {
                movimiento.Transferencia = pago.Transferencia;
            }

         //   movimiento.FechaAlta = pago.Id == default(Guid) ? _clock.Now : pago.FechaAlta;

            movimiento.FechaAlta = DateTime.Now;// pago.Id == default(Guid) ? _clock.Now : pago.FechaAlta;


            movimiento.SucursalAltaId = _context.SucursalActual.Id;
            movimiento.OperadorAltaId = _context.OperadorActual.Id;

            _uow.CajaMovimientos.Agregar(movimiento);
        }
        private void CargarOrdenPagoDetalle()
        {
            _pagos = new List <DetalleFormaPago>();

            var detalleLista = _ordenPago.OrdenesPagoDetalles.Where(d => !d.FechaAnulacion.HasValue).ToList();

            foreach (var ordenesPagoDetalle in detalleLista)
            {
                DetalleFormaPago pago = new DetalleFormaPago();

                if (ordenesPagoDetalle.Efectivo.HasValue && ordenesPagoDetalle.Efectivo > 0)
                {
                    var pagoEfectivo = new PagoEfectivo();
                    pagoEfectivo.Id          = ordenesPagoDetalle.Id;
                    pagoEfectivo.Importe     = ordenesPagoDetalle.Efectivo;
                    pagoEfectivo.TipoPago    = FormaPago.Efectivo;
                    pagoEfectivo.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoEfectivo.Fecha       = ordenesPagoDetalle.FechaPago;
                    pago = pagoEfectivo;
                }

                if (ordenesPagoDetalle.Cheques.HasValue && ordenesPagoDetalle.Cheques > 0)
                {
                    var pagoCheque = new PagoCheque();
                    pagoCheque.Id          = ordenesPagoDetalle.Id;
                    pagoCheque.Importe     = ordenesPagoDetalle.Cheques;
                    pagoCheque.TipoPago    = FormaPago.Cheque;
                    pagoCheque.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoCheque.Fecha       = ordenesPagoDetalle.FechaPago;
                    pago = pagoCheque;
                }

                if (ordenesPagoDetalle.DepositoEfectivo.HasValue && ordenesPagoDetalle.DepositoEfectivo > 0)
                {
                    var pagoDeposito = new PagoDeposito();
                    var cuentaMov    =
                        Uow.CuentasMovimientos.Obtener(
                            c =>
                            c.ComprobanteId == _ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                    pagoDeposito.Id = ordenesPagoDetalle.Id;
                    pagoDeposito.DepositoCuentaId = cuentaMov.CuentaId;
                    pagoDeposito.Importe          = ordenesPagoDetalle.DepositoEfectivo;
                    pagoDeposito.TipoPago         = FormaPago.Deposito;
                    pagoDeposito.Descripcion      = ordenesPagoDetalle.Descripcion;
                    pagoDeposito.Fecha            = ordenesPagoDetalle.FechaPago;
                    pago = pagoDeposito;
                }

                if (ordenesPagoDetalle.Transferencia.HasValue && ordenesPagoDetalle.Transferencia > 0)
                {
                    var pagoTransferencia = new PagoTransferencia();
                    var cuentaMov         =
                        Uow.CuentasMovimientos.Obtener(
                            c =>
                            c.ComprobanteId == _ordenPago.Id && c.Descripcion.Contains(ordenesPagoDetalle.Descripcion));
                    pagoTransferencia.Id          = ordenesPagoDetalle.Id;
                    pagoTransferencia.CuentaId    = cuentaMov.CuentaId;
                    pagoTransferencia.Importe     = ordenesPagoDetalle.Transferencia;
                    pagoTransferencia.TipoPago    = FormaPago.Transferencia;
                    pagoTransferencia.Descripcion = ordenesPagoDetalle.Descripcion;
                    pagoTransferencia.Fecha       = ordenesPagoDetalle.FechaPago;
                    pago = pagoTransferencia;
                }

                pago.PuedeEliminar = ordenesPagoDetalle.PuedeEliminar();

                _pagos.Add(pago);
            }

            GridPagos.DataSource = _pagos.ToList();
        }