Ejemplo n.º 1
0
 public Movimiento(EVE01_MOVIMIENTO datos)
 {
     dbModel = datos;
 }
Ejemplo n.º 2
0
        public Respuesta <Movimiento> guardarMovimiento()
        {
            Respuesta <Movimiento> result = new Respuesta <Movimiento>();

            result.codigo  = 1;
            result.mensaje = "Ocurrio un error en Base de Datos";
            result.data    = new Movimiento();

            if (this.cantidad <= 0 || this.cantidad == null)
            {
                result.codigo  = -1;
                result.mensaje = "No es posible realizar el cobro el valor no puede ser negativo, 0 o vacio, escriba una cantidad valida";
                return(result);
            }

            try
            {
                using (var tr = new TransactionScope())
                {
                    using (var db = new EntitiesEVE01())
                    {
                        //SE VALIDA QUE EL MONTO QUE COBRA NO EXEDA EL SALDO PENDIENTE
                        var validaSaldoRestante = (from sr in db.EVE01_PARTICIPANTE_SALDO
                                                   where sr.EVENTO == MvcApplication.idEvento &&
                                                   sr.PARTICIPANTE == this.idParticipante
                                                   select sr).SingleOrDefault();

                        if (this.cantidad > validaSaldoRestante.SALDO_PENDIENTE)
                        {
                            result.codigo  = -1;
                            result.mensaje = "No es posible realizar un cobro mayor al Saldo Pendiente o un valor negativo, favor de revisar el monto a cobrar";
                            return(result);
                        }

                        //SE VALIDA SI EL PARTICIPANTE TIENE BUS
                        var validaOpcionBus = (from oe in db.EVE01_EVENTO_OPCION
                                               join oi in db.EVE01_INSCRIPCION_OPCION
                                               on new { oe.EVENTO, oe.OPCION } equals new { oi.EVENTO, oi.OPCION }
                                               where oe.ES_TRANSPORTE == "S" &&
                                               oi.EVENTO == MvcApplication.idEvento &&
                                               oi.PARTICIPANTE == this.idParticipante &&
                                               oi.ESTADO_REGISTRO == "A"
                                               select oi).SingleOrDefault();

                        var validaBusAsignado = (from ba in db.EVE01_INSCRIPCION_BUS
                                                 where ba.EVENTO == MvcApplication.idEvento &&
                                                 ba.PARTICIPANTE == this.idParticipante
                                                 select ba).SingleOrDefault();

                        if (validaOpcionBus != null && validaBusAsignado == null)
                        {
                            result.codigo  = -1;
                            result.mensaje = "EL PARTICIPANTE TIENE LA OPCION DE BUS PERO NO TIENE BUS ASIGNADO, FAVOR DE ASIGNAR BUS";
                            return(result);
                        }

                        //VALIDA SI EL EVENTO LLEVA CONTROL DE SILLAS
                        var validasillaEvento = (from vs in db.EVE01_EVENTO_SILLA
                                                 where vs.EVENTO == MvcApplication.idEvento
                                                 select vs).SingleOrDefault();

                        if (validasillaEvento != null)
                        {
                            var validasillaasignada = (from sa in db.EVE01_INSCRIPCION_SILLA
                                                       where sa.EVENTO == MvcApplication.idEvento &&
                                                       sa.PARTICIPANTE == this.idParticipante
                                                       select sa).SingleOrDefault();

                            var saldoAbonadoParticipante = validaSaldoRestante.SALDO_ABONADO + this.cantidad;

                            //VALIDA QUE NO TENGA SILLA ASIGNADA Y SI EL MONTO ES MAYOR O IGUAL AL MONTO MINIMO PARA ASIGNAR SILLA
                            if (validasillaasignada == null && saldoAbonadoParticipante >= validasillaEvento.SALDO_MINIMO)
                            {
                                var silla = (from s in db.EVE01_INSCRIPCION_SILLA
                                             where s.EVENTO == MvcApplication.idEvento
                                             select s.NO_SILLA).Max();

                                var sillaasignada = silla + 1;

                                silla = silla == null ? 1 : sillaasignada;

                                EVE01_INSCRIPCION_SILLA nuevasilla = new EVE01_INSCRIPCION_SILLA();
                                nuevasilla.EVENTO           = MvcApplication.idEvento;
                                nuevasilla.PARTICIPANTE     = this.idParticipante;
                                nuevasilla.NO_SILLA         = silla;
                                nuevasilla.ESTADO_REGISTRO  = "A";
                                nuevasilla.USUARIO_CREACION = MvcApplication.UserName;
                                nuevasilla.FECHA_CREACION   = DateTime.Now;
                                db.EVE01_INSCRIPCION_SILLA.Add(nuevasilla);

                                int vrs = db.SaveChanges();

                                if (vrs <= 0)
                                {
                                    result.codigo  = -2;
                                    result.mensaje = "No fue posible registrar el Cobro, inconveniente en la asignacion de Silla";
                                    return(result);
                                }
                            }
                        }

                        //SE PROCEDE A REGISTRAR EL MOVIMIENTO DEL COBRO
                        var correlativo = (from c in db.EVE01_MOVIMIENTO
                                           select c.MOVIMIENTO).Max();

                        var corrMov = correlativo + 1;

                        correlativo = correlativo == null ? 1 : corrMov;

                        EVE01_MOVIMIENTO nuevo = new EVE01_MOVIMIENTO();
                        nuevo.MOVIMIENTO       = correlativo;
                        nuevo.PARTICIPANTE     = this.idParticipante;
                        nuevo.EVENTO           = MvcApplication.idEvento;
                        nuevo.TIPO_MOVIMIENTO  = "AB";
                        nuevo.TIPO_PAGO        = this.idTipoPago;
                        nuevo.CANTIDAD         = this.cantidad;
                        nuevo.ESTADO_REGISTRO  = "A";
                        nuevo.USUARIO_CREACION = MvcApplication.UserName;
                        nuevo.FECHA_CREACION   = DateTime.Now;
                        db.EVE01_MOVIMIENTO.Add(nuevo);
                        int rnm = db.SaveChanges();

                        if (rnm <= 0)
                        {
                            Transaction.Current.Rollback();
                            result.codigo  = -2;
                            result.mensaje = "No fue posible registrar el Movimiento";
                            return(result);
                        }

                        //ACTUALIZAR SALDOS POR EL PAGO REALIZADO
                        var saldo = (from s in db.EVE01_PARTICIPANTE_SALDO
                                     where s.EVENTO == MvcApplication.idEvento &&
                                     s.PARTICIPANTE == this.idParticipante
                                     select s).SingleOrDefault();

                        saldo.SALDO_ABONADO        = saldo.SALDO_ABONADO + this.cantidad;
                        saldo.SALDO_PENDIENTE      = saldo.SALDO_PENDIENTE - this.cantidad;
                        saldo.USUARIO_MODIFICACION = MvcApplication.UserName;
                        saldo.FECHA_MODIFICACION   = DateTime.Now;
                        int ras = db.SaveChanges();

                        if (ras <= 0)
                        {
                            Transaction.Current.Rollback();
                            result.codigo  = -2;
                            result.mensaje = "No fue posible registrar el Movimiento, ocurrio un inconveniente al actualizar saldos";
                            return(result);
                        }


                        var nBus = validaBusAsignado == null ? 0 : validaBusAsignado.NO_BUS;

                        //REGISTRAR EL RECIBO
                        Recibo nuevoRecibo = new Recibo();
                        nuevoRecibo.idMovimiento   = correlativo;
                        nuevoRecibo.idParticipante = this.idParticipante;
                        nuevoRecibo.noBus          = nBus;
                        nuevoRecibo.nombreCompleto = this.nombreCompleto;
                        nuevoRecibo.cantidad       = this.cantidad;
                        Respuesta <Recibo> respuesta = nuevoRecibo.nuevoRecibo();

                        if (respuesta.codigo != 0)
                        {
                            Transaction.Current.Rollback();
                            result.codigo  = respuesta.codigo;
                            result.mensaje = respuesta.mensaje;
                            return(result);
                        }
                    }
                    tr.Complete();
                }
                result.codigo  = 0;
                result.mensaje = "Se registro Correctamente el Pago por: " + this.cantidad;
                return(result);
            }
            catch (Exception ex)
            {
                result.codigo       = -1;
                result.mensaje      = "Ocurrio una excepcion al tratar de registrar el Movimiento, ref: " + ex.ToString();
                result.mensajeError = ex.ToString();
                return(result);
            }
        }
Ejemplo n.º 3
0
 public Movimiento()
 {
     dbModel = new EVE01_MOVIMIENTO();
 }