public static void ValidarRestriccionesDeOperacion(OperacionEntity operacion, ref LimitesPorPersonaEntity limiteComprador, ref LimitesPorPersonaEntity limiteVendedor) { //Buscar reglas de limites. limiteComprador = CachingManager.Instance.GetUsuariosLimiteByIdUsuario(operacion.IdPersonaComprador, "C"); limiteVendedor = CachingManager.Instance.GetUsuariosLimiteByIdUsuario(operacion.IdPersonaVendedor, "V"); if (limiteComprador == null && limiteVendedor == null) { return; } //Verifica que los usr no esten bloqueados if (limiteComprador != null) { ValidarUsrBloqueado(operacion.IdPersonaComprador, operacion.FechaOperacion, "C"); //ValidarTopes ValidarTopes(operacion.Cantidad, limiteComprador); } if (limiteVendedor != null) { ValidarUsrBloqueado(operacion.IdPersonaVendedor, operacion.FechaOperacion, "V"); //ValidarTopes ValidarTopes(operacion.Cantidad, limiteVendedor); } }
public ActionResult PagarTributo(FormCollection collection) { try { ClienteEntity item = Session[BaseController.USERSESSIONNAME] as ClienteEntity; string url = Url.Content("~") + BaseController.DEFAULTINDEX; var ddl = Request.Form["Opcion"]; TributoEntity tributo = new TributoEntity(); tributo.idTributo = Request.Form["hdnIdTributo"]; tributo.monto = Convert.ToDouble(Request.Form["txtMonto"]); tributo.estado = Request.Form["hdnEstado"]; tributo.tipo = Request.Form["hdnTipo"]; OperacionEntity operacion = new OperacionEntity(); operacion.numeroCuentaRetiro = Request.Form["hdnTipo"]; operacion.cliente = new ClienteEntity(); operacion.cliente.idCliente = item.idCliente; operacion.monto = Convert.ToDouble(Request.Form["txtMonto"]); operacion.numeroCuentaRetiro = ddl; int value = new Service().Pagar(tributo, operacion); if (value != 0) { url = Url.Content("~") + BaseController.DEFAULTINDEX2; } return(new RedirectResult(url)); } catch (Exception ex) { this.ViewBag.Message = ex.Message; return(new RedirectResult(Url.Content("~") + BaseController.DEFAULTINDEX2)); } }
public override ExecutionResult ExecuteCommand(InCourseRequest inCourseRequest) { List <OperacionEntity> OperacionesGeneradas = new List <OperacionEntity>(); foreach (Operacion o in operaciones) { OperacionEntity oe = new OperacionEntity(); oe.NroOperacion = DateTime.Now.ToString("yyMMddHHmmss"); oe.CompraVenta = o.CompraOVenta; oe.IdPersonaComprador = oe.CompraVenta == "C" ? MAEUserSession.Instancia.IdPersona : CachingManager.Instance.GetPadreByIdHijo(MAEUserSession.Instancia.IdPersona).IdParty; oe.IdPersonaVendedor = oe.CompraVenta == "C" ? CachingManager.Instance.GetPadreByIdHijo(MAEUserSession.Instancia.IdPersona).IdParty : MAEUserSession.Instancia.IdPersona; oe.Cantidad = o.Cantidad; oe.Precio = PizarrasDAL.ObtenerPrecioActual(CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda, oe.CompraVenta); oe.Monto = o.Cantidad * oe.Precio; oe.FechaOperacion = DateTime.Now; oe.IdMonedaCompra = oe.CompraVenta == "C" ? CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda : CachingManager.Instance.GetAllMonedas().Find(x => x.EsMonedaNacional == true).IdMoneda; oe.IdMonedaVenta = oe.CompraVenta == "C" ? CachingManager.Instance.GetAllMonedas().Find(x => x.EsMonedaNacional == true).IdMoneda : CachingManager.Instance.GetMonedaByCodigoISO(o.CodigoMonedaISO).IdMoneda; oe.TimestampSaldoComprador = SaldosDAL.ObtenerUltimaActualizacionSaldo(oe.IdMonedaVenta, oe.CompraVenta == "C" ? oe.IdPersonaComprador : oe.IdPersonaVendedor); oe.TimestampSaldoVendedor = SaldosDAL.ObtenerUltimaActualizacionSaldo(oe.IdMonedaCompra, oe.CompraVenta == "C" ? oe.IdPersonaVendedor : oe.IdPersonaComprador);// GetUltimaActualizacion(o.TimestampSaldoVendedor); OperacionesGeneradas.Add(oe); } return(ExecutionResult.ReturnInmediatelyAndQueueOthers(ProcesamientoGenerica(ConcertarOperacion, OperacionesGeneradas))); }
public static void ValidarTopes(OperacionEntity operacion) { //decimal importeSaldo = 0; //UsuariosLimitesDiariosEntity // importeSaldo = SaldosDAL.ObtenerImporteSaldo(m.IdPersona, m.IdMoneda); // if (m.Importe > importeSaldo) // throw new M4TraderApplicationException(CodigosMensajes.FE_CAMBIO_ULTIMA_ACTUALIZACION, "Error saldo insuficiente para realizar la operación"); }
public static List <MovimientosSaldos> CrearMovimimientosComisiones(OperacionEntity operacion) { List <MovimientosSaldos> movimimientoSaldos = new List <MovimientosSaldos>(); //movimimientoSaldos.AddRange(CrearMovimientosCreditos(operacion, operacion.CompraVenta == "C")); //movimimientoSaldos.AddRange(CrearMovimientosDebitos(operacion, operacion.CompraVenta == "C")); //LoggingHelper.Instance.AgregarLog(new LogBitacoraOperacionEntity(operacion.IdOperacion, LogCodigoAccion.CrearMovimientoSaldo, "Se crean los movimientos de la operacion Nro:" + operacion.NroOperacion)); return(movimimientoSaldos); }
public static void CrearRestricciones(OperacionEntity operacion, LimitesPorPersonaEntity limite) { List <SqlParameter> lista = new List <SqlParameter>(); lista.Add(SqlServerHelper.GetParam("@FechaOperacion", operacion.FechaOperacion)); lista.Add(SqlServerHelper.GetParam("@Tope", limite.Tope)); lista.Add(SqlServerHelper.GetParam("@TipoOperacion", limite.TipoOperacion)); lista.Add(SqlServerHelper.GetParam("@IdPersona", limite.IdPersona)); lista.Add(SqlServerHelper.GetParam("@IdTiempoLimite", limite.IdTiempoLimite)); SqlServerHelper.ExecuteNonQuery("[orden_owner].[OPE_CrearRestricciones]", lista); }
private static List <MovimientosSaldos> CrearMovimientosDebitos(OperacionEntity operacion, bool esCompra) { List <MovimientosSaldos> movimientoSaldos = new List <MovimientosSaldos>(); MovimientosSaldos movDebito = new MovimientosSaldos(); if (esCompra) { movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false); movDebito.IdMoneda = operacion.IdMonedaVenta; movDebito.IdPersona = operacion.IdPersonaComprador; movDebito.Importe = operacion.Monto; movDebito.ImpactoEnSaldo = false; movDebito.IdEstado = (int)TipoEstadoMovimiento.aprobada; movimientoSaldos.Add(movDebito); movDebito = new MovimientosSaldos(); movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false); movDebito.IdMoneda = operacion.IdMonedaCompra; movDebito.IdPersona = operacion.IdPersonaVendedor; movDebito.Importe = operacion.Cantidad; movDebito.ImpactoEnSaldo = false; movDebito.IdEstado = (int)TipoEstadoMovimiento.aprobada; movimientoSaldos.Add(movDebito); } else { movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false); movDebito.IdMoneda = operacion.IdMonedaVenta; movDebito.IdPersona = operacion.IdPersonaVendedor; movDebito.Importe = operacion.Cantidad; movDebito.ImpactoEnSaldo = false; movDebito.IdEstado = (int)TipoEstadoMovimiento.aprobada; movimientoSaldos.Add(movDebito); movDebito = new MovimientosSaldos(); movDebito.IdTipoMovimiento = ObtenerTipoMovimiento(false); movDebito.IdMoneda = operacion.IdMonedaCompra; movDebito.IdPersona = operacion.IdPersonaComprador; movDebito.Importe = operacion.Monto; movDebito.ImpactoEnSaldo = false; movDebito.IdEstado = (int)TipoEstadoMovimiento.aprobada; movimientoSaldos.Add(movDebito); } return(movimientoSaldos); }
public int Pagar(TributoEntity item, OperacionEntity operacion) { int value = 0; try { string datos = JsonConvert.SerializeObject(item); string json = this.ServicPost(datos, "http://localhost:8888/api/enviar"); string datos2 = JsonConvert.SerializeObject(operacion); string json2 = this.ServicPost(datos2, "http://localhost:8080/api/retiro"); value = 1; } catch (Exception) { value = 0; } return(value); }
public static void CrearOperacion(OperacionEntity operacion) { List <SqlParameter> lista = new List <SqlParameter>(); lista.Add(SqlServerHelper.GetParam("@IdPersonaComprador", operacion.IdPersonaComprador)); lista.Add(SqlServerHelper.GetParam("@IdPersonaVendedor", operacion.IdPersonaVendedor)); lista.Add(SqlServerHelper.GetParam("@Cantidad", operacion.Cantidad)); lista.Add(SqlServerHelper.GetParam("@Monto", operacion.Monto)); lista.Add(SqlServerHelper.GetParam("@Precio", operacion.Precio)); lista.Add(SqlServerHelper.GetParam("@NroOperacion", operacion.NroOperacion)); lista.Add(SqlServerHelper.GetParam("@FechaOperacion", operacion.FechaOperacion)); lista.Add(SqlServerHelper.GetParam("@IdMonedaCompra", operacion.IdMonedaCompra)); lista.Add(SqlServerHelper.GetParam("@IdMonedaVenta", operacion.IdMonedaVenta)); SqlParameter IdOperacion = SqlServerHelper.GetParamIntOuput("@IdPropietario"); lista.Add(IdOperacion); SqlServerHelper.ExecuteNonQuery("[orden_owner].[OPE_CrearOperacion]", lista); operacion.IdOperacion = (int)IdOperacion.Value; }
private string ConcertarOperacion(OperacionEntity operacion) { return(OperacionHelper.ConcertarOperacion(operacion)); }
public static string ConcertarOperacion(OperacionEntity operacion) { List <MovimientosSaldos> movimientosSaldo = new List <MovimientosSaldos>(); LimitesPorPersonaEntity limiteComprador = new LimitesPorPersonaEntity(); LimitesPorPersonaEntity limiteVendedor = new LimitesPorPersonaEntity(); ValidarRestriccionesDeOperacion(operacion, ref limiteComprador, ref limiteVendedor); //Generar movimiento Saldo movimientosSaldo = TransaccionesHelper.CrearMovimimientosSaldos(operacion); movimientosSaldo.AddRange(TransaccionesHelper.CrearMovimimientosComisiones(operacion)); //ValidoSaldos ValidarSaldos(movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito).ToList()); //Insertar operacion y movimientos e impacto en saldos using (ReadCommittedTransactionScope ts = new ReadCommittedTransactionScope()) { MovimientosSaldos movDebitoComprador = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaComprador).FirstOrDefault(); MovimientosSaldos movDebitoVendedor = movimientosSaldo.Where(x => x.IdTipoMovimiento == TipoMovimientos.MonedaDebito && x.IdPersona == operacion.IdPersonaVendedor).FirstOrDefault(); byte[] ultimaactualizacionsaldocomprador = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoComprador.IdMoneda, movDebitoComprador.IdPersona); byte[] ultimaactualizacionsaldovendedor = SaldosDAL.ObtenerUltimaActualizacionSaldo(movDebitoVendedor.IdMoneda, movDebitoVendedor.IdPersona); CheckConcurrenciaSaldo(ultimaactualizacionsaldocomprador, operacion.CompraVenta == "C" ? operacion.TimestampSaldoComprador : operacion.TimestampSaldoVendedor); CheckConcurrenciaSaldo(ultimaactualizacionsaldovendedor, operacion.CompraVenta == "C" ? operacion.TimestampSaldoVendedor : operacion.TimestampSaldoComprador); OperacionesDAL.CrearOperacion(operacion); movimientosSaldo = movimientosSaldo.Select(c => { c.IdPropietario = operacion.IdOperacion; return(c); }).ToList(); SaldosDAL.GenerarMovimientos(movimientosSaldo); SaldosDAL.ActualizarSaldos(movimientosSaldo); if (limiteComprador != null) { OperacionesDAL.CrearRestricciones(operacion, limiteComprador); } if (limiteComprador != null) { OperacionesDAL.CrearRestricciones(operacion, limiteVendedor); } ts.Complete(); } NotificacionesEntity noti = new NotificacionesEntity(); noti.Fecha = DateTime.Now; noti.IdDestinatario = operacion.IdPersonaComprador; noti.IdTipoNotificacion = (byte)TipoNotificacionesMensajeria.Successfully; noti.IdSubTipoNotificacion = (byte)SubTipoNotificacionesMensajeria.OperacionRealizada; noti.Leido = false; noti.Mensaje = string.Format("Se registro la operación {0} de forma satisfactoaria e impacto en Saldos ", operacion.NroOperacion); NotificacionesHelperService.Instance.EnQueueMessage(noti); LoggingHelper.Instance.AgregarLog(new LogBitacoraOperacionEntity(operacion.IdOperacion, LogCodigoAccion.CrearOperacion, "Creación de la Operacion Nro:" + operacion.NroOperacion)); MessageHelper.InformarNuevoMensaje(operacion.IdPersonaComprador, TipoNotificacionesMensajeria.Successfully.ToString(), SubTipoNotificacionesMensajeria.OperacionRealizada.ToString(), "Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion, DateTime.Now); return("Se registro la operación de forma satisfactoaria e impacto en Saldos: " + operacion.NroOperacion); }