public void Pagar(long cajaId, long usuarioId, long clienteId, decimal monto, string clienteApyNom) { try { var fechaActual = DateTime.Now; var nroComprobante = _contadorServicio.ObtenerSiguienteNumeroComprobante(TipoComprobante.CuentaCorriente); var movimiento = new MovimientoCuentaCorriente { CajaId = cajaId, ClienteId = clienteId, Fecha = fechaActual, Descripcion = $"Pago Cta Cte del cliente {clienteApyNom} - Nro:{nroComprobante} - Monto: {monto.ToString("C")}", TipoMovimiento = TipoMovimiento.Ingreso, UsuarioId = usuarioId, Monto = monto, EstaEliminado = false, cuentaCorrienteClientes = new List <CuentaCorrienteCliente>() }; var nuevoComprobante = new CuentaCorrienteCliente { ClienteId = clienteId, Descuento = 0, SubTotal = monto, Total = monto, Fecha = fechaActual, Iva105 = 0, Iva21 = 0, Numero = nroComprobante, EstaEliminado = false, UsuarioId = usuarioId, }; movimiento.cuentaCorrienteClientes.Add(nuevoComprobante); _unidadDeTrabajo.CuentaCorrienteRepositorio.Insertar(movimiento); _unidadDeTrabajo.Commit(); } catch (Exception e) { throw new Exception("Ocurrió un error al pagar la Cuenta Corriente"); } }
public override long Insertar(ComprobanteDto comprobante) { using (var tran = new TransactionScope()) { try { int numeroComprobante = 0; var cajaActual = _unidadDeTrabajo.CajaRepositorio.Obtener (x => x.UsuarioAperturaId == comprobante.UsuarioId && x.UsuarioCierreId == null).FirstOrDefault(); if (cajaActual == null) { throw new Exception("Ocurrio un error al obtener la Caja"); } var ctaCteCompDto = (CtaCteComprobanteDto)comprobante; CuentaCorrienteCliente _CtaCteNueva = new CuentaCorrienteCliente(); numeroComprobante = _contadorServicio.ObtenerSiguienteNumeroComprobante(comprobante.TipoComprobante); _CtaCteNueva = new CuentaCorrienteCliente { ClienteId = ctaCteCompDto.ClienteId, Descuento = ctaCteCompDto.Descuento, EmpleadoId = ctaCteCompDto.EmpleadoId, Fecha = ctaCteCompDto.Fecha, Iva105 = ctaCteCompDto.Iva105, Iva21 = ctaCteCompDto.Iva21, Numero = numeroComprobante, SubTotal = ctaCteCompDto.SubTotal, Total = ctaCteCompDto.Total, TipoComprobante = ctaCteCompDto.TipoComprobante, UsuarioId = ctaCteCompDto.UsuarioId, DetalleComprobantes = new List <DetalleComprobante>(), Movimientos = new List <Movimiento>(), FormaPagos = new List <FormaPago>(), EstaEliminado = false }; _CtaCteNueva.Movimientos.Add(new Movimiento { ComprobanteId = _CtaCteNueva.Id, CajaId = cajaActual.Id, Fecha = ctaCteCompDto.Fecha, Monto = ctaCteCompDto.Total, UsuarioId = ctaCteCompDto.UsuarioId, TipoMovimiento = TipoMovimiento.Ingreso, Descripcion = $"Fa- { ctaCteCompDto.TipoComprobante.ToString() }-Nro { numeroComprobante }", EstaEliminado = false }); foreach (var fp in ctaCteCompDto.FormasDePagos) { var fpCtaCTe = (FormaPagoCtaCteDto)fp; _CtaCteNueva.FormaPagos.Add(new FormaPagoCtaCte { Monto = fpCtaCTe.Monto, TipoPago = TipoPago.CtaCte, ClienteId = fpCtaCTe.ClienteId, EstaEliminado = false }); _CtaCteNueva.Movimientos.Add(new MovimientoCuentaCorriente { ComprobanteId = _CtaCteNueva.Id, CajaId = cajaActual.Id, Fecha = ctaCteCompDto.Fecha, Monto = fpCtaCTe.Monto, UsuarioId = ctaCteCompDto.UsuarioId, TipoMovimiento = TipoMovimiento.Egreso, Descripcion = $"Fa- { ctaCteCompDto.TipoComprobante.ToString() }-Nro { numeroComprobante }", ClienteId = fpCtaCTe.ClienteId, EstaEliminado = false }); cajaActual.TotalEntradaCtaCte += fpCtaCTe.Monto; cajaActual.DetalleCajas.Add(new DetalleCaja { Monto = fpCtaCTe.Monto, TipoPago = TipoPago.CtaCte }); _unidadDeTrabajo.CajaRepositorio.Modificar(cajaActual); } _unidadDeTrabajo.FacturaRepositorio.Modificar(_CtaCteNueva); _unidadDeTrabajo.Commit(); tran.Complete(); return(0); } catch (DbEntityValidationException ex) { var error = ex.EntityValidationErrors.SelectMany(v => v.ValidationErrors) .Aggregate(string.Empty, (current, validationError) => current + ($"Property: {validationError.PropertyName} Error: {validationError.ErrorMessage}. {Environment.NewLine}" )); tran.Dispose(); throw new Exception($"Ocurrio un error grave al grabar la Factura. Error: {error}"); } } }
public static ICuentaCorrienteCliente GetCuentaCorrienteCliente() { CuentaCorrienteCliente cuentaCorrienteCliente = new CuentaCorrienteCliente(); return((ICuentaCorrienteCliente)cuentaCorrienteCliente); }