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)));
        }
Пример #3
0
        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);
        }
Пример #5
0
        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));
 }
Пример #7
0
        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);
        }
Пример #8
0
 public static string ImpactarEnSaldosHistoricos(DateTime fechaSistema)
 {
     SaldosDAL.ImpactarEnSaldosHistoricos(fechaSistema);
     return("Se impactaron todas las operaciones del día Saldos Históricos: ");
 }