示例#1
0
        private void ActualizarCajaAnterior(OrdenesPago ordenPago, PagoEfectivo pagoEfec, Caja caja, CajaMovimiento cajaMovimientoAnterior)
        {
            cajaMovimientoAnterior.CajaId               = caja.Id;
            cajaMovimientoAnterior.TipoComprobante      = TipoComprobanteEnum.OrdenPago;
            cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.DepositoConCajaAnterior;
            cajaMovimientoAnterior.ComprobanteId        = ordenPago.Id;
            cajaMovimientoAnterior.Importe              = pagoEfec.Importe;

            if (cajaMovimientoAnterior.Efectivo == null)
            {
                cajaMovimientoAnterior.Efectivo = 0;
            }

            cajaMovimientoAnterior.Efectivo = pagoEfec.Importe;

            if (caja.Saldo == null)
            {
                caja.Saldo = 0;
            }

            //Pago Efectivo para Caja Anterior solo se Modifica el Saldo Acumulado
            caja.Saldo -= (float?)pagoEfec.Importe;

            _uow.Cajas.Modificar(caja);
        }
示例#2
0
        private void CargarOrdenPago()
        {
            _ordenPago = Uow.OrdenesPagos.Obtener(o => o.Id == _ordenId, o => o.Sucursal, o => o.SucursalGasto,
                                                  o => o.Proveedor, o => o.TiposComprobante, o => o.TiposGasto,
                                                  o => o.CentrosCosto, o => o.OrdenesPagoDetalles);

            var now = _clock.Now;

            this.Importe         = _ordenPago.Importe.ToString("N2");
            this.ImporteDebe     = (_ordenPago.Importe - _ordenPago.ImportePagado ?? 0).ToString("N2");
            this.Recargo         = (_ordenPago.Recargo ?? 0).ToString("N2");
            this.SubTotal        = _ordenPago.SubTotal.ToString("N2");
            this.Concepto        = _ordenPago.Concepto;
            this.Fecha           = _ordenPago.Fecha == DateTime.MinValue ? now.ToShortDateString() : _ordenPago.Fecha.ToShortDateString();
            this.FechaImputacion = _ordenPago.FechaImputacion != null
                                       ? _ordenPago.FechaImputacion.Value.ToShortDateString()
                                       : _clock.Now.ToShortDateString();

            this.SucursalId        = _ordenPago.Sucursal.Nombre;
            this.SucursalGastoId   = _ordenPago.SucursalGasto.Nombre;
            this.ProveedorId       = _ordenPago.Proveedor.Denominacion;
            this.NroComprobante    = _ordenPago.NumeroComprobante;
            this.LetraComprobante  = _ordenPago.LetraComprobante;
            this.TipoComprobanteId = _ordenPago.TiposComprobante.Nombre;
            this.TipoGastoId       = _ordenPago.TiposGasto.Nombre;
            this.CentroCostoId     = _ordenPago.CentrosCosto.Nombre;
            this.RegistraIVA       = _ordenPago.RegistraIVACompra ?? false;

            GridPagos.DataSource = _ordenPago.OrdenesPagoDetalles.Select(d => _ordenPagoService.ObtenerFormaPago(_ordenPago, d));
        }
        // GET: /OrdenVenta/

        public ActionResult Index(int id)
        {
            var ordenpago = new OrdenPago();

            ordenpago.iSucursalId = id;

            var oSucursal = new Sucursal().obtenerSucursal(id);

            ViewBag.iBanco = oSucursal.iBancoId;

            var ordenVentas = new OrdenesPago();
            var resultSet   = ordenVentas.getAllOrdenes(id);

            return(View(resultSet.lstOrderVenta));
        }
        private void CargarOrdenPago()
        {
            if (_ordenId == default(Guid))
            {
                _ordenPago                    = new OrdenesPago();
                this.Text                     = Resources.LabelCrearOrdenDePago;
                this.Fecha                    = DateTime.Today;
                this.FechaImputacion          = DateTime.Today;
                CbxSucursal.SucursalId        = Context.SucursalActual.Id;
                CbxSucursalGasto.SucursalId   = Context.SucursalActual.Id;
                CbxCentroCosto.CentrosCostoId = Context.SucursalActual.Id;
                //Default values.
            }
            else
            {
                this.Text       = Resources.LabelEditarOrdenDePago;
                BtnGuardar.Text = "Guardar";
                _ordenPago      = Uow.OrdenesPagos.Obtener(o => o.Id == _ordenId, o => o.OrdenesPagoDetalles);

                TxtImporte.Enabled  = false;
                TxtRecargo.Enabled  = false;
                TxtSubTotal.Enabled = false;

                this.SubTotal          = _ordenPago.SubTotal;
                this.Importe           = _ordenPago.Importe;
                this.ImporteDebe       = _ordenPago.Importe - (_ordenPago.ImportePagado ?? 0);
                this.Recargo           = _ordenPago.Recargo;
                this.Concepto          = _ordenPago.Concepto;
                this.SucursalId        = _ordenPago.SucursalId;
                this.SucursalGastoId   = _ordenPago.SucursalGastoId;
                this.ProveedorId       = _ordenPago.ProveedorId;
                this.NroComprobante    = _ordenPago.NumeroComprobante;
                this.LetraComprobante  = _ordenPago.LetraComprobante;
                this.TipoComprobanteId = _ordenPago.TipoComprobanteId;
                this.TipoGastoId       = _ordenPago.TipoGastoId;
                this.CentroCostoId     = _ordenPago.CentroCostoId;
                this.RegistraIVA       = _ordenPago.RegistraIVACompra ?? false;
                this.Fecha             = _ordenPago.Fecha == DateTime.MinValue ? DateTime.Today : _ordenPago.Fecha;
                this.FechaImputacion   = _ordenPago.FechaImputacion ?? DateTime.Today;

                ToggleHabilitarBotonGuardar();

                CargarOrdenPagoDetalle();
            }
        }
示例#5
0
        private void EliminarDetalle(OrdenesPago ordenesPago, OrdenesPagoDetalle detalle)
        {
            detalle.InvertirImportes();
            detalle.FechaAnulacion = _clock.Now;

            var pago = ObtenerFormaPago(ordenesPago, detalle);

            pago.IsDeleted = true;

            AgregarMovimientos(ordenesPago, detalle, pago);

            if (pago.TipoPago == FormaPago.Transferencia || pago.TipoPago == FormaPago.Deposito)
            {
                pago.Importe = -pago.Importe;
                AgregarCuentaMovimiento(ordenesPago, pago);
            }

            _uow.OrdenesPagosDetalle.Modificar(detalle);
        }
        private void EliminarDetalle(OrdenesPago ordenesPago, OrdenesPagoDetalle detalle)
        {


            detalle.InvertirImportes();
            detalle.FechaAnulacion = _clock.Now;

            var pago = ObtenerFormaPago(ordenesPago, detalle);

            pago.IsDeleted = true;

            AgregarMovimientos(ordenesPago, detalle, pago);

            if (pago.TipoPago == FormaPago.Transferencia || pago.TipoPago == FormaPago.Deposito)
            {
                pago.Importe = -pago.Importe;
                AgregarCuentaMovimiento(ordenesPago, pago);
            }

            _uow.OrdenesPagosDetalle.Modificar(detalle);
        }
示例#7
0
        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);
        }
        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 CargarOrdenPago()
        {
            if (_ordenId == default(Guid))
            {
                _ordenPago = new OrdenesPago();
                this.Text = Resources.LabelCrearOrdenDePago;
                this.Fecha = DateTime.Today;
                this.FechaImputacion = DateTime.Today;
                CbxSucursal.SucursalId = Context.SucursalActual.Id;
                CbxSucursalGasto.SucursalId = Context.SucursalActual.Id;
                CbxCentroCosto.CentrosCostoId = Context.SucursalActual.Id;
                //Default values.
            }
            else
            {
                this.Text = Resources.LabelEditarOrdenDePago;
                BtnGuardar.Text = "Guardar";
                _ordenPago = Uow.OrdenesPagos.Obtener(o => o.Id == _ordenId, o => o.OrdenesPagoDetalles);

                TxtImporte.Enabled = false;
                TxtRecargo.Enabled = false;
                TxtSubTotal.Enabled = false;

                this.SubTotal = _ordenPago.SubTotal;
                this.Importe = _ordenPago.Importe;
                this.ImporteDebe = _ordenPago.Importe - (_ordenPago.ImportePagado ?? 0);
                this.Recargo = _ordenPago.Recargo;
                this.Concepto = _ordenPago.Concepto;
                this.SucursalId = _ordenPago.SucursalId;
                this.SucursalGastoId = _ordenPago.SucursalGastoId;
                this.ProveedorId = _ordenPago.ProveedorId;
                this.NroComprobante = _ordenPago.NumeroComprobante;
                this.LetraComprobante = _ordenPago.LetraComprobante;
                this.TipoComprobanteId = _ordenPago.TipoComprobanteId;
                this.TipoGastoId = _ordenPago.TipoGastoId;
                this.CentroCostoId = _ordenPago.CentroCostoId;
                this.RegistraIVA = _ordenPago.RegistraIVACompra ?? false;
                this.Fecha = _ordenPago.Fecha == DateTime.MinValue ? DateTime.Today : _ordenPago.Fecha;
                this.FechaImputacion = _ordenPago.FechaImputacion ?? DateTime.Today;

                ToggleHabilitarBotonGuardar();

                CargarOrdenPagoDetalle();
            }

        }
        private void CargarOrdenPago()
        {
            _ordenPago = Uow.OrdenesPagos.Obtener(o => o.Id == _ordenId, o => o.Sucursal, o => o.SucursalGasto,
                                                  o => o.Proveedor, o => o.TiposComprobante, o => o.TiposGasto,
                                                  o => o.CentrosCosto, o => o.OrdenesPagoDetalles);

            var now = _clock.Now;

            this.Importe = _ordenPago.Importe.ToString("N2");
            this.ImporteDebe = (_ordenPago.Importe - _ordenPago.ImportePagado ?? 0).ToString("N2");
            this.Recargo = (_ordenPago.Recargo ?? 0).ToString("N2");
            this.SubTotal = _ordenPago.SubTotal.ToString("N2");
            this.Concepto = _ordenPago.Concepto;
            this.Fecha = _ordenPago.Fecha == DateTime.MinValue ? now.ToShortDateString() : _ordenPago.Fecha.ToShortDateString();
            this.FechaImputacion = _ordenPago.FechaImputacion != null
                                       ? _ordenPago.FechaImputacion.Value.ToShortDateString()
                                       : _clock.Now.ToShortDateString();
            this.SucursalId = _ordenPago.Sucursal.Nombre;
            this.SucursalGastoId = _ordenPago.SucursalGasto.Nombre;
            this.ProveedorId = _ordenPago.Proveedor.Denominacion;
            this.NroComprobante = _ordenPago.NumeroComprobante;
            this.LetraComprobante = _ordenPago.LetraComprobante;
            this.TipoComprobanteId = _ordenPago.TiposComprobante.Nombre;
            this.TipoGastoId = _ordenPago.TiposGasto.Nombre;
            this.CentroCostoId = _ordenPago.CentrosCosto.Nombre;
            this.RegistraIVA = _ordenPago.RegistraIVACompra ?? false;

            GridPagos.DataSource = _ordenPago.OrdenesPagoDetalles.Select(d => _ordenPagoService.ObtenerFormaPago(_ordenPago, d));
        }
示例#11
0
        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);
        }
示例#12
0
        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 ActualizarCajaAnterior(OrdenesPago ordenPago, PagoEfectivo pagoEfec, Caja caja, CajaMovimiento cajaMovimientoAnterior)
        {
            cajaMovimientoAnterior.CajaId = caja.Id;
            cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.OrdenPago;
            cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.DepositoConCajaAnterior;
            cajaMovimientoAnterior.ComprobanteId = ordenPago.Id;
            cajaMovimientoAnterior.Importe = pagoEfec.Importe;

            if (cajaMovimientoAnterior.Efectivo == null)
                cajaMovimientoAnterior.Efectivo = 0;

            cajaMovimientoAnterior.Efectivo = pagoEfec.Importe;

            if (caja.Saldo == null)
                caja.Saldo = 0;

            //Pago Efectivo para Caja Anterior solo se Modifica el Saldo Acumulado
            caja.Saldo -= (float?)pagoEfec.Importe;

            _uow.Cajas.Modificar(caja);
        }
        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);
        }