public static MovimientosSaldos CrearMovimientoDeDeposito(NovedadTransferenciaEntity novedad)
        {
            MovimientosSaldos movimiento = new MovimientosSaldos();

            movimiento = CrearMovimientosDesdeUnDeposito(novedad);
            return(movimiento);
        }
        private static MovimientosSaldos CrearMovimientosDesdeUnDeposito(NovedadTransferenciaEntity n)
        {
            MovimientosSaldos movCredito = new MovimientosSaldos();

            movCredito.IdTipoMovimiento = TipoMovimientos.DepositoDeTransferencia;
            movCredito.IdMoneda         = n.IdMoneda;
            movCredito.IdPersona        = n.IdPersona;
            movCredito.Importe          = n.Importe;
            movCredito.ImpactoEnSaldo   = false;
            movCredito.IdEstado         = n.EsDepositoEnAgencia ? (int)TipoEstadoMovimiento.aprobada : (int)TipoEstadoMovimiento.pendiente;
            return(movCredito);
        }
        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 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
        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);
        }