public static bool PuedeEliminar(this OrdenesPagoDetalle ordenPagoDetalle)
        {
            var context = Ioc.Container.Get <ILaPazContext>();
            var clock   = Ioc.Container.Get <IClock>();
            var now     = clock.Now;

            using (var cajaNegocio = Ioc.Container.Get <ICajaNegocio>())
            {
                var caja = cajaNegocio.UltimaCaja(context.OperadorActual.Id, context.SucursalActual.Id);
                if (caja != null)
                {
                    var puedeEditarDetalle = (ordenPagoDetalle.FechaAlta.HasValue &&
                                              ordenPagoDetalle.FechaAlta.Value.Date == now.Date &&
                                              ordenPagoDetalle.OperadorAltaId == context.OperadorActual.Id &&
                                              caja.Fecha.Date == now.Date &&
                                              caja.FCierre == null &&
                                              ordenPagoDetalle.CajaId == caja.Id);
                    if (!puedeEditarDetalle)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
        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 CargarPago()
 {
     _ordenPagoDetalle  = Uow.OrdenesPagosDetalle.Obtener(o => o.Id == _pagoId);
     this.Efectivo      = _ordenPagoDetalle.Efectivo * -1;
     this.ImportePagado = _ordenPagoDetalle.ImportePagado.HasValue ? _ordenPagoDetalle.ImportePagado.Value * -1 : 0;
     this.FechaPago     = _ordenPagoDetalle.FechaPago ?? DateTime.Today;
     _ordenPagoDetalle.FechaAnulacion = _clock.Now;
     _esEfectivo = _ordenPagoDetalle.Efectivo.HasValue;
 }
        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 ActualizarCajaActual(OrdenesPagoDetalle pago, Caja caja)
 {
     caja.Egresos               += (float)(pago.Efectivo ?? 0);
     caja.Saldo                 -= (float)(pago.Efectivo ?? 0);
     caja.FechaModificacion      = pago.Id == default(Guid) ? (DateTime?)null : _clock.Now;
     caja.SucursalModificacionId = pago.Id == default(Guid)
                                       ? (int?)null
                                       : Context.SucursalActual.Id;
     caja.OperadorModificacionId = pago.Id == default(Guid)
                                       ? (Guid?)null
                                       : Context.OperadorActual.Id;
 }
        private void AgregarMovimientos(OrdenesPagoDetalle _ordenPagoDetalle)
        {
            var movimiento = new CajaMovimiento();

            movimiento.Id                   = Guid.NewGuid();
            movimiento.Importe              = _ordenPagoDetalle.ImportePagado;
            movimiento.ComprobanteId        = _ordenPagoDetalle.OrdenPagoId;
            movimiento.TipoComprobante      = TipoComprobanteEnum.OrdenPago;
            movimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoGastos;
            Caja caja = this.Context.CajaActual;

            movimiento.CajaId = caja.Id;

            movimiento.Efectivo         = _ordenPagoDetalle.ImportePagado;
            caja.Egresos               += (float)(_ordenPagoDetalle.ImportePagado ?? 0);
            caja.Saldo                 -= (float)(_ordenPagoDetalle.ImportePagado ?? 0);
            caja.FechaModificacion      = _ordenPagoDetalle.Id == default(Guid) ? (DateTime?)null : _clock.Now;
            caja.SucursalModificacionId = _ordenPagoDetalle.Id == default(Guid)
           ? null
           : caja.SucursalModificacionId;
            caja.OperadorModificacionId = _ordenPagoDetalle.Id == default(Guid)
            ? null
            : caja.OperadorModificacionId;
            Uow.Cajas.Modificar(caja);

            movimiento.FechaAlta         = _ordenPagoDetalle.Id == default(Guid) ? _clock.Now : _ordenPagoDetalle.FechaAlta;
            movimiento.FechaModificacion = _ordenPagoDetalle.Id == default(Guid) ? (DateTime?)null : _clock.Now;

            movimiento.SucursalAltaId = _ordenPagoDetalle.Id == default(Guid)
                ? Context.SucursalActual.Id
                : movimiento.SucursalAltaId;

            movimiento.SucursalModificacionId = _ordenPagoDetalle.Id == default(Guid)
                ? null
                : movimiento.SucursalModificacionId;

            movimiento.OperadorAltaId = _ordenPagoDetalle.Id == default(Guid)
                ? Context.OperadorActual.Id
                : movimiento.OperadorAltaId;

            movimiento.OperadorModificacionId = _ordenPagoDetalle.Id == default(Guid)
                ? null
                : movimiento.OperadorModificacionId;

            Uow.CajaMovimientos.Agregar(movimiento);
        }
Esempio n. 7
0
        private void CargarPago()
        {
            if (_pagoId == default(Guid))
            {
                _ordenPagoDetalle = new OrdenesPagoDetalle();
                //Default values.
            }
            else
            {
                _ordenPagoDetalle  = Uow.OrdenesPagosDetalle.Obtener(o => o.Id == _pagoId);
                this.Efectivo      = _ordenPagoDetalle.Efectivo;
                this.ImportePagado = _ordenPagoDetalle.ImportePagado ?? 0;
                _esEfectivo        = (_ordenPagoDetalle.Efectivo != null || _ordenPagoDetalle.Efectivo != 0);
            }

            this.FechaPago = _ordenPagoDetalle.FechaPago ?? DateTime.Today;
        }
Esempio n. 8
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);
        }
Esempio n. 9
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);
        }
Esempio n. 10
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);
        }