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 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 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 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 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; }
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); }