public static string AcreditacionNovedadDeTransferenciaHelper(int IdNovedadDeTrasferencia) { List <MovimientosSaldos> movimientossaldos = SaldosDAL.ObtenerMovimientosSaldoByIdPropietario(IdNovedadDeTrasferencia); List <MovimientosSaldos> l = new List <MovimientosSaldos>(); l.AddRange(movimientossaldos); using (ReadCommittedTransactionScope ts = new ReadCommittedTransactionScope()) { foreach (MovimientosSaldos m in movimientossaldos) { SaldosDAL.ActualizarEstado((int)TipoEstadoMovimiento.aprobada, m.IdMovimiento); } SaldosDAL.ActualizarSaldos(l); } string mensaje = string.Format("Se acredito el movimiento de forma satisfactoaria espere"); if (CachingManager.Instance.GetConfiguracionSeguridad().PermiteEnviarMail) { Utils.EnviarMail(CachingManager.Instance.GetAllUsuarios().Find(x => x.IdPersona == movimientossaldos[0].IdPersona).Email, CachingManager.Instance.GetAllUsuarios().Find(x => x.IdPersona == movimientossaldos[0].IdPersona).Email, "Acreditacion de transferencia", mensaje); } return(mensaje); }
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 ValidarSaldos(List <MovimientosSaldos> movimimientoSaldo) { decimal importeSaldo = 0; foreach (MovimientosSaldos m in movimimientoSaldo) { 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 string AltaNovedadDeTransferenciaHelper(NovedadTransferenciaEntity novedadTransferencia) { MovimientosSaldos m = new MovimientosSaldos(); m = TransaccionesHelper.CrearMovimientoDeDeposito(novedadTransferencia); using (ReadCommittedTransactionScope ts = new ReadCommittedTransactionScope()) { NovedadesTransferenciaDeFondosDAL.CrearNovedadTransferencia(novedadTransferencia); List <MovimientosSaldos> l = new List <MovimientosSaldos>(); l.Add(m); SaldosDAL.AgregarDepositoPendiente(novedadTransferencia); if (novedadTransferencia.EsDepositoEnAgencia) { SaldosDAL.ActualizarSaldos(l); } m.IdPropietario = novedadTransferencia.IdNovedadTransferenciaFondo; SaldosDAL.GenerarMovimientos(l); ts.Complete(); } NotificacionesEntity noti = new NotificacionesEntity(); noti.Fecha = DateTime.Now; noti.IdDestinatario = novedadTransferencia.IdPersonaDestino; noti.IdTipoNotificacion = (byte)TipoNotificacionesMensajeria.Successfully; noti.IdSubTipoNotificacion = (byte)SubTipoNotificacionesMensajeria.DepositoRealizado; noti.Leido = false; noti.Mensaje = "";//string. NotificacionesHelperService.Instance.EnQueueMessage(noti); MessageHelper.InformarNuevoMensaje(noti.IdDestinatario, TipoNotificacionesMensajeria.Successfully.ToString(), SubTipoNotificacionesMensajeria.DepositoRealizado.ToString(), noti.Mensaje, noti.Fecha); int idpersonadestino = CachingManager.Instance.GetPersonaByCBU(novedadTransferencia.CBUDestino).IdParty; string mensaje = string.Format("Se registro la novedad de transferencia de forma satisfactoaria espere que la agencia valide la misma. CBU Origen {0}, CBU Destino {1}, Importe {2}", novedadTransferencia.CBUOrigen, novedadTransferencia.CBUDestino, novedadTransferencia.Importe); if (CachingManager.Instance.GetConfiguracionSeguridad().PermiteEnviarMail) { Utils.EnviarMail(CachingManager.Instance.GetAllUsuarios().Find(x => x.IdPersona == idpersonadestino).Email, CachingManager.Instance.GetAllUsuarios().Find(x => x.IdPersona == m.IdPersona).Email, "Novedad de transferencia", mensaje); } return(mensaje); }
private void SendXmlToDAL(object entities, TipoXmlAProcesar tipo) { List <SqlParameter> lista; using (var ts = new TransactionScope()) { switch (tipo) { case TipoXmlAProcesar.Clientes: var clientes = entities as List <ClienteXMLEntity>; foreach (ClienteXMLEntity node in clientes) { lista = new List <SqlParameter>(); lista.Add(SqlServerHelper.GetParam("@NroDocumento", node.NroDocumento)); lista.Add(SqlServerHelper.GetParam("@NombrePersona", node.NombrePersona)); lista.Add(SqlServerHelper.GetParam("@NroCliente", node.NroCliente)); lista.Add(SqlServerHelper.GetParam("@TipoPersona", (int)TipoPersonas.CLIENTE)); lista.Add(SqlServerHelper.GetParam("@IdPersoneriaJuridica", (byte)PersoneriaJuridica.PERSONA_FISICA)); lista.Add(SqlServerHelper.GetParam("@NroIdentificacionTributaria", node.NroIdentificacionTributaria)); lista.Add(SqlServerHelper.GetParam("@CodEmpresa", node.CodEmpresa)); lista.Add(SqlServerHelper.GetParam("@Telefono", node.Telefono)); PersonasDAL.ProcessFromXml(lista); } break; case TipoXmlAProcesar.Productos: var productos = entities as List <ProductoXMLEntity>; foreach (ProductoXMLEntity node in productos) { lista = new List <SqlParameter>(); lista.Add(SqlServerHelper.GetParam("@Codigo", node.Codigo)); lista.Add(SqlServerHelper.GetParam("@Descripcion", node.Descripcion)); lista.Add(SqlServerHelper.GetParam("@CodMoneda", node.CodMoneda)); lista.Add(SqlServerHelper.GetParam("@CodMercado", node.CodMercado)); lista.Add(SqlServerHelper.GetParam("@ISIN", node.ISIN)); lista.Add(SqlServerHelper.GetParam("@Habilitado", node.Habilitado)); ProductosDAL.ProcessFromXml(lista); } break; case TipoXmlAProcesar.Saldos: var saldos = entities as List <SaldoXMLEntity>; foreach (SaldoXMLEntity node in saldos) { lista = new List <SqlParameter>(); lista.Add(SqlServerHelper.GetParam("@CodCliente", node.CodCliente)); lista.Add(SqlServerHelper.GetParam("@CodEmpresa", node.CodEmpresa)); lista.Add(SqlServerHelper.GetParam("@TipoProducto", node.TipoProducto)); lista.Add(SqlServerHelper.GetParam("@CodigoProducto", node.CodigoProducto)); lista.Add(SqlServerHelper.GetParam("@DescripcionProducto", node.DescripcionProducto)); lista.Add(SqlServerHelper.GetParam("@Cantidad", node.Cantidad)); lista.Add(SqlServerHelper.GetParam("@Precio", node.Precio)); lista.Add(SqlServerHelper.GetParam("@Monto", node.Monto)); lista.Add(SqlServerHelper.GetParam("@Moneda", node.Moneda)); SaldosDAL.ProcessFromXml(lista); } break; default: break; } ts.Complete(); } }
public static List <SaldosDTO> ConsultaDeSaldos(int idPersona) { return(SaldosDAL.ConsultaSaldosByPersona(idPersona)); }
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); }
public static string ImpactarEnSaldosHistoricos(DateTime fechaSistema) { SaldosDAL.ImpactarEnSaldosHistoricos(fechaSistema); return("Se impactaron todas las operaciones del día Saldos Históricos: "); }