Пример #1
0
        public Response <Evento> InsertEvento(Evento obj)
        {
            Response <Evento> result = new Response <Evento>();

            result.code         = -1;
            result.message      = "Ocurrio un Error en BD al tratar de realizar una transacción";
            result.data         = new Evento();
            result.totalRecords = 0;

            if (obj.nombre_evento == null || obj.nombre_evento == "" ||
                obj.fecha_inicio == null || obj.fecha_inicio == "" ||
                obj.fecha_fin == null || obj.fecha_fin == "" ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.data    = new Evento();
                result.message = "Favor de verificar los campos requeridos, no es valido guardar datos vacios";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder sqlInsert = new StringBuilder();
                    sqlInsert.Append(" insert into evento  ");
                    sqlInsert.Append(" (id_evento, ");
                    sqlInsert.Append(" nombre_evento, ");
                    sqlInsert.Append(" fecha_inicio, ");
                    sqlInsert.Append(" fecha_fin, ");
                    sqlInsert.Append(" estado_registro, ");
                    sqlInsert.Append(" usuario_creacion, ");
                    sqlInsert.Append(" fecha_creacion) ");
                    sqlInsert.Append(" values( ");
                    sqlInsert.Append(" (select correlativo_disponible from correlativo where id_correlativo = 2 and estado_registro = 'A'), ");
                    sqlInsert.Append(" upper(:nombre_evento), ");
                    sqlInsert.Append(" :fecha_inicio, ");
                    sqlInsert.Append(" :fecha_fin, ");
                    sqlInsert.Append(" 'A', ");
                    sqlInsert.Append(" upper(:usuario_creacion), ");
                    sqlInsert.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(sqlInsert.ToString(), new object[] { obj.nombre_evento,
                                                                                                  obj.fecha_inicio,
                                                                                                  obj.fecha_fin,
                                                                                                  obj.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha registrado el Evento de forma exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al intentar registrar un Evento" + ex.ToString();
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #2
0
        public Response <InscripcionOpcion> ActualizarOpcionInscripcion(InscripcionOpcion obj)
        {
            Response <InscripcionOpcion> result = new Response <InscripcionOpcion>();

            result.code    = -1;
            result.message = "Ocurrio un error en base de datos al tratar de modificar la opcion de la inscripción";
            result.data    = new InscripcionOpcion();

            DateTime fechalimite = Convert.ToDateTime(ConfigurationManager.AppSettings["FechaLimite"].ToString());

            try
            {
                using (var db = new EntitiesEvento())
                {
                    string newEstado = "";

                    StringBuilder strUpEs = new StringBuilder();
                    strUpEs.Append(" update inscripcion_opcion ");
                    strUpEs.Append(" set estado_registro = :estado_registro ");
                    strUpEs.Append(" where id_participante = :id_participante ");
                    strUpEs.Append(" and id_evento = :id_evento ");
                    strUpEs.Append(" and id_opcion = :id_opcion ");

                    if (obj.es_transporte == "S" && (fechalimite < DateTime.Today) && obj.estador.estado == "A")
                    {
                        result.code    = -1;
                        result.message = "No es posible quitar el transporte, la fecha limite fue el " + fechalimite.ToString();
                        return(result);
                    }

                    if (obj.estador.estado == "A")
                    {
                        newEstado = "B";
                    }
                    else
                    {
                        newEstado = "A";
                    }

                    var resp = db.Database.ExecuteSqlCommand(strUpEs.ToString(), new object[] { newEstado,
                                                                                                obj.id_participante,
                                                                                                obj.id_evento,
                                                                                                obj.id_opcion });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se actualizo el estado correctamente";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepción al tratar de actualizar el estado de la opcion de inscripcion";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #3
0
        public Response <Evento> UpdateEvento(Evento obj)
        {
            Response <Evento> result = new Response <Evento>();

            result.code    = -1;
            result.message = "Ocurrio un Error en BD al tratar de realizar una transacción";
            result.data    = new Evento();

            if (obj.nombre_evento == null || obj.nombre_evento == "" ||
                obj.fecha_inicio == null || obj.fecha_inicio == "" ||
                obj.fecha_fin == null || obj.fecha_fin == "" ||
                obj.estado_registro == null || obj.estado_registro == "" ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.data    = new Evento();
                result.message = "Favor de verificar los campos requeridos, no es permitido Actualizar estos datos vacios";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strUpdate = new StringBuilder();
                    strUpdate.Append(" UPDATE evento ");
                    strUpdate.Append(" SET nombre_evento     = upper(:nombre), ");
                    strUpdate.Append("   fecha_inicio        =:fechaini, ");
                    strUpdate.Append("   fecha_fin           =:fechafin, ");
                    strUpdate.Append("   estado_registro     =upper(:estado), ");
                    strUpdate.Append("   usuario_modificacion=upper(:usuario), ");
                    strUpdate.Append("   fecha_modificacion  =sysdate ");
                    strUpdate.Append(" WHERE id_evento       = :id ");

                    var resp = db.Database.ExecuteSqlCommand(strUpdate.ToString(), new object[] { obj.nombre_evento,
                                                                                                  obj.fecha_inicio,
                                                                                                  obj.fecha_fin,
                                                                                                  obj.estado_registro,
                                                                                                  obj.usuario,
                                                                                                  obj.id_evento });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha Actualizado el Registro de Evento de forma exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una Excepcion al intentar actualizar el Evento";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #4
0
        public Response <OpcionEvento> InsertarOpcionEvento(OpcionEvento obj)
        {
            Response <OpcionEvento> result = new Response <OpcionEvento>();

            result.code         = -1;
            result.message      = "Ocurrio un error en Base de datos al intentar registrar Opcion";
            result.data         = new OpcionEvento();
            result.totalRecords = 0;

            if (obj.evento.Equals(null) ||
                obj.descripcion == null || obj.descripcion == "" ||
                obj.precio.Equals(null) ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.data    = new OpcionEvento();
                result.message = "Favor de Verificar los campos requeridos, no es valido guardar datos vacios";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strInsert = new StringBuilder();
                    strInsert.Append(" insert into opcion_evento ");
                    strInsert.Append(" (id_opcion,id_evento,descripcion,precio,estado_registro,usuario_creacion,fecha_creacion) ");
                    strInsert.Append(" values( ");
                    strInsert.Append(" (select correlativo_disponible from correlativo where id_correlativo = 3 and estado_registro = 'A'), ");
                    strInsert.Append(" :id_evento, ");
                    strInsert.Append(" upper(:descripcion), ");
                    strInsert.Append(" :precio, ");
                    strInsert.Append(" 'A', ");
                    strInsert.Append(" upper(:usuario), ");
                    strInsert.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(strInsert.ToString(), new object[] { obj.evento,
                                                                                                  obj.descripcion,
                                                                                                  obj.precio,
                                                                                                  obj.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha registrado la Opcion del Evento de forma Exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al intentar registrar la Opcion del Evento";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #5
0
        public Response <Inscripcion> InsertarInscripcion(Inscripcion obj)
        {
            Response <Inscripcion> result = new Response <Inscripcion>();

            result.code    = -1;
            result.message = "Ocurrio un error en base de datos al tratar de realizar la inscripcion";
            result.data    = new Inscripcion();

            if (obj.id_evento.Equals(null) || obj.id_evento == 0 ||
                obj.id_participante.Equals(null) ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.data    = new Inscripcion();
                result.message = "Favor de verificar los campos requeridos, no es valido guardar datos vacios";
                return(result);
            }


            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strIns = new StringBuilder();
                    strIns.Append(" insert into inscripcion  ");
                    strIns.Append(" (id_evento,id_participante,fecha_inscripcion, estado_registro, usuario_creacion, fecha_creacion) ");
                    strIns.Append(" values( ");
                    strIns.Append(" :id_evento, ");
                    strIns.Append(" :id_participante, ");
                    strIns.Append(" sysdate, ");
                    strIns.Append(" 'A', ");
                    strIns.Append(" upper(:usuario), ");
                    strIns.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(strIns.ToString(), new object[] { obj.id_evento,
                                                                                               obj.id_participante,
                                                                                               obj.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha Inscrito el Participante de forma correcta";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de Inscribir al Participante";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #6
0
        public Response <BusInscripcion> ModificarBus(BusInscripcion bu)
        {
            Response <BusInscripcion> result = new Response <BusInscripcion>();

            result.code    = -1;
            result.message = "Ocurrio un error en Base de Datos al tratar de Modificar el Bus";
            result.data    = new BusInscripcion();


            if (bu.no_bus_new.Equals(null) || bu.no_bus_new == 0 ||
                bu.usuario == null || bu.usuario == "")
            {
                result.code    = -1;
                result.data    = new BusInscripcion();
                result.message = "Favor de verificar los campos de Bus y Usuario. Se requieren estos campos para Modificar el Bus";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder updBus = new StringBuilder();
                    updBus.Append("  ");
                    updBus.Append(" update bus_inscripcion ");
                    updBus.Append(" set no_bus =:no_bus_new, id_bus =:id_bus_new, usuario_modificacion =:usuario, fecha_modificacion = sysdate ");
                    updBus.Append(" where id_bus = :id_bus ");
                    updBus.Append(" and id_participante = :id_participante ");
                    updBus.Append(" and id_evento = :id_evento ");

                    var resp = db.Database.ExecuteSqlCommand(updBus.ToString(), new object[] { bu.no_bus_new,
                                                                                               bu.id_bus_new,
                                                                                               bu.usuario,
                                                                                               bu.id_bus,
                                                                                               bu.id_participante,
                                                                                               bu.id_evento });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha modificado el Bus del Participante exitosamente...";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de Modificar el Bus al Participante";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #7
0
        public Response <Participante> ActualizarParticipante(Participante pa)
        {
            Response <Participante> result = new Response <Participante>();

            result.code    = -1;
            result.message = "Ocurrio un error en base de datos al intentar actualizar el participante";
            result.data    = new Participante();

            if (pa.nombre == null || pa.nombre == "" ||
                pa.apellido == null || pa.apellido == "" ||
                pa.usuario == null || pa.usuario == "")
            {
                result.code    = -1;
                result.message = "Favor de verificar los datos, no es permitido registrar datos vacios";
                result.data    = new Participante();
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strUpd = new StringBuilder();
                    strUpd.Append(_actualizarParticipante);

                    var resp = db.Database.ExecuteSqlCommand(strUpd.ToString(), new object[] { pa.nombre,
                                                                                               pa.apellido,
                                                                                               pa.telefono,
                                                                                               pa.genero_.genero,
                                                                                               pa.talla,
                                                                                               pa.estado_.estado,
                                                                                               pa.usuario,
                                                                                               pa.id });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se Actualizaron los datos del Participante de forma exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de actualizar los datos: " + ex.ToString();
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #8
0
        public Response <OpcionEvento> ActualizarOpcionEvento(OpcionEvento obj)
        {
            Response <OpcionEvento> result = new Response <OpcionEvento>();

            result.code    = -1;
            result.message = "Ocurrio un error en base de datos al tratar de actualizar el registro";
            result.data    = new OpcionEvento();

            if (obj.descripcion == null || obj.descripcion == "" ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.data    = new OpcionEvento();
                result.message = "Favor de verificar los campos requeridos, no es permitido Actualizar estos datos vacios";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strUpdate = new StringBuilder();
                    strUpdate.Append(" update opcion_evento ");
                    strUpdate.Append(" set descripcion = upper(:descripcion), ");
                    strUpdate.Append(" precio = :precio, ");
                    strUpdate.Append(" usuario_modificacion = upper(:usuario), ");
                    strUpdate.Append(" fecha_modificacion = sysdate ");
                    strUpdate.Append(" where id_opcion = :id_opcion ");

                    var resp = db.Database.ExecuteSqlCommand(strUpdate.ToString(), new object[] { obj.descripcion,
                                                                                                  obj.precio,
                                                                                                  obj.usuario,
                                                                                                  obj.id });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha Actualizado el Registro de Opcion de Evento de forma exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una Excepcion al intentar actualizar la Opcion de Evento";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #9
0
        public Response <BusInscripcion> AsignarBusParticipante(BusInscripcion pa)
        {
            Response <BusInscripcion> result = new Response <BusInscripcion>();

            result.code    = -1;
            result.message = "Ocurrio un error En Base de Datos al tratar de Asignar el Bus";
            result.data    = new BusInscripcion();

            if (pa.no_bus.Equals(null) || pa.no_bus == 0 ||
                pa.usuario == null || pa.usuario == "")
            {
                result.code    = -1;
                result.data    = new BusInscripcion();
                result.message = "Favor de verificar los campos de Bus y Usuario. Se requieren estos campos para Asignar el Bus";
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strVal = new StringBuilder();
                    strVal.Append(" select disponible ");
                    strVal.Append(" from bus_evento ");
                    strVal.Append(" where id_evento =:id_evento ");
                    strVal.Append(" and id_bus =:id_bus ");

                    var val = db.Database.SqlQuery <Bus>(strVal.ToString(), new object[] { pa.id_evento, pa.id_bus }).SingleOrDefault <Bus>();

                    if (val.disponible == 0)
                    {
                        result.code    = -1;
                        result.message = "No es posible Asignar en este Bus ya que todos los ascientos estan Ocupados, Revise Disponibilidad en otro Bus";
                        result.data    = new BusInscripcion();
                        return(result);
                    }

                    StringBuilder insBus = new StringBuilder();
                    insBus.Append(" insert into bus_inscripcion(id_bus, id_participante, id_evento, no_bus, estado_registro, usuario_creacion, fecha_creacion) ");
                    insBus.Append(" values( ");
                    insBus.Append(" :id_bus, ");
                    insBus.Append(" :id_participante, ");
                    insBus.Append(" :id_evento, ");
                    insBus.Append(" :no_bus, ");
                    insBus.Append(" 'A', ");
                    insBus.Append(" upper(:usuario), ");
                    insBus.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(insBus.ToString(), new object[] { pa.id_bus,
                                                                                               pa.id_participante,
                                                                                               pa.id_evento,
                                                                                               pa.no_bus,
                                                                                               pa.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha realizado la Asignacion de Bus de forma Exitosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de Asignar Bus al Participante";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #10
0
        public Response <Movimiento> AbonarSaldo(Movimiento obj)
        {
            Response <Movimiento> result = new Response <Movimiento>();

            result.code    = -1;
            result.message = "Ocurrio un error en base de datos al tratar de Realizar el Pago";
            result.data    = new Movimiento();


            if (obj.tipo_pago.Equals(null) || obj.valor.Equals(null) || obj.valor == 0 ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.message = "Favor de revisar los valores Tipo de pago, Valor del pago o Usuario de Gestion que no sean vacios o tengan un valor de 0";
                result.data    = new Movimiento();
                return(result);
            }

            if (obj.saldo_pendiente == 0)
            {
                result.code    = -1;
                result.message = "Para este Evento ya no es permito realizar Cobros ya que tiene Pagado el Monto total del Evento";
                result.data    = new Movimiento();
                return(result);
            }

            if ((obj.monto_abonado + obj.valor) > obj.monto_total_evento)
            {
                result.code    = -1;
                result.message = "Favor de verificar el monto a cobrar ya que excede al monto total del Evento, el monto valido a cobrar es Q " + obj.saldo_pendiente.ToString();
                result.data    = new Movimiento();
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strVal = new StringBuilder();
                    strVal.Append(" select nvl(tieneopcion.estado_registro,'N') estado_registro, estaasignado.tienebus ");
                    strVal.Append(" from ( ");
                    strVal.Append(" select io.id_participante, io.id_evento, nvl(io.estado_registro,'N')estado_registro ");
                    strVal.Append(" from opcion_evento oe, inscripcion_opcion io ");
                    strVal.Append(" where oe.id_evento = io.id_evento ");
                    strVal.Append(" and oe.id_opcion = io.id_opcion ");
                    strVal.Append(" and oe.es_transporte = 'S' ");
                    strVal.Append(" and io.id_evento = :id_evento ");
                    strVal.Append(" and io.id_participante = :id_participante) tieneopcion, ");
                    strVal.Append(" ( ");
                    strVal.Append(" select ins.id_participante, ins.id_evento, nvl(count(bi.id_bus),0)tienebus ");
                    strVal.Append(" from inscripcion ins, bus_inscripcion bi ");
                    strVal.Append(" where ins.id_evento = bi.id_evento(+) ");
                    strVal.Append(" and ins.id_participante = bi.id_participante(+) ");
                    strVal.Append(" and ins.id_evento = :id_evento ");
                    strVal.Append(" and ins.id_participante = :id_participante ");
                    strVal.Append(" group by ins.id_participante, ins.id_evento) estaasignado ");
                    strVal.Append(" where tieneopcion.id_participante(+) = estaasignado.id_participante ");
                    strVal.Append(" and tieneopcion.id_evento (+)= estaasignado.id_evento ");



                    var resultado = db.Database.SqlQuery <BusAsignacion>(strVal.ToString(), new object[] { obj.id_evento,
                                                                                                           obj.id_participante,
                                                                                                           obj.id_evento,
                                                                                                           obj.id_participante }).SingleOrDefault <BusAsignacion>();

                    if (resultado.tienebus == 0 && resultado.estado_registro == "A")
                    {
                        result.code    = -1;
                        result.message = "Antes de realizar el cobro, favor de proceder a la asignacion del Bus. Gracias";
                        result.data    = new Movimiento();
                        return(result);
                    }


                    StringBuilder strIns = new StringBuilder();
                    strIns.Append(" insert into movimientos ");
                    strIns.Append(" (id_movimiento,id_participante,id_evento, tipo_mov, tipo_pago, descripcion, valor, fecha_movimiento, usuario_creacion, fecha_creacion) ");
                    strIns.Append(" values( ");
                    strIns.Append(" (select correlativo_disponible from correlativo where id_correlativo = 7 and estado_registro = 'A'), ");
                    strIns.Append(" :id_participante, ");
                    strIns.Append(" :id_evento, ");
                    strIns.Append(" 'AB', ");
                    strIns.Append(" :tipo_pago, ");
                    strIns.Append(" 'Pago al Evento '|| (select ev.nombre_evento from evento ev where id_evento = :id_evento), ");
                    strIns.Append(" :valor, ");
                    strIns.Append(" sysdate, ");
                    strIns.Append(" upper(:usuario), ");
                    strIns.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(strIns.ToString(), new object[] { obj.id_participante,
                                                                                               obj.id_evento,
                                                                                               obj.tipo_pago,
                                                                                               obj.id_evento,
                                                                                               obj.valor,
                                                                                               obj.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha registrado el abono de forma existosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de registrar el abono";
                result.messageError = ex.ToString();
                return(result);
            }
        }
Пример #11
0
        public Response <Movimiento> GenerarNotaDeCredito(Movimiento obj)
        {
            Response <Movimiento> result = new Response <Movimiento>();

            result.code    = -1;
            result.message = "Ocurrio un Error en Base de Datos al tratar de Generar la Nota de Crédito";
            result.data    = new Movimiento();

            if (obj.tipo_pago.Equals(null) || obj.valor.Equals(null) || obj.valor == 0 ||
                obj.usuario == null || obj.usuario == "")
            {
                result.code    = -1;
                result.message = "Favor de revisar los valores Tipo de pago, Valor del pago o Usuario de Gestion que no sean vacios o tengan un valor de 0";
                result.data    = new Movimiento();
                return(result);
            }

            try
            {
                using (var db = new EntitiesEvento())
                {
                    StringBuilder strVal = new StringBuilder();
                    //strVal.Append(" select sum(valor) monto_abonado ");
                    //strVal.Append(" from movimientos ");
                    //strVal.Append(" where tipo_mov = 'AB' ");
                    //strVal.Append(" and id_evento = :id_evento ");
                    //strVal.Append(" and id_participante = :id_participante ");

                    strVal.Append(" select (abono.abonos-cargo.cargos) monto_abonado ");
                    strVal.Append(" from( ");
                    strVal.Append(" select ins.id_participante, ins.id_evento, nvl(sum(mov.valor),0) abonos ");
                    strVal.Append(" from movimientos mov, inscripcion ins ");
                    strVal.Append(" where mov.id_evento(+) = ins.id_evento ");
                    strVal.Append(" and mov.id_participante(+) = ins.id_participante ");
                    strVal.Append(" and mov.tipo_mov(+) = 'AB'  ");
                    strVal.Append(" and ins.id_evento = :id_evento  ");
                    strVal.Append(" and ins.id_participante = :id_participante ");
                    strVal.Append(" group by ins.id_evento, ins.id_participante) abono, ");
                    strVal.Append(" ( ");
                    strVal.Append(" select ins.id_participante, ins.id_evento, nvl(sum(mov.valor),0) cargos ");
                    strVal.Append(" from movimientos mov, inscripcion ins ");
                    strVal.Append(" where mov.id_evento(+) = ins.id_evento ");
                    strVal.Append(" and mov.id_participante(+) = ins.id_participante ");
                    strVal.Append(" and mov.tipo_mov(+) = 'CR'  ");
                    strVal.Append(" and ins.id_evento = :id_evento  ");
                    strVal.Append(" and ins.id_participante = :id_participante ");
                    strVal.Append(" group by ins.id_evento, ins.id_participante) cargo ");
                    strVal.Append(" where abono.id_participante = cargo.id_participante(+) ");
                    strVal.Append(" and abono.id_evento = cargo.id_evento(+) ");


                    var valida = db.Database.SqlQuery <Movimiento>(strVal.ToString(), new object[] { obj.id_evento,
                                                                                                     obj.id_participante,
                                                                                                     obj.id_evento,
                                                                                                     obj.id_participante, }).SingleOrDefault <Movimiento>();

                    if (valida.monto_abonado == 0)
                    {
                        result.code    = -1;
                        result.message = "No es posible generar Nota de Crédito ya que no posee ningun Saldo Abonado para este Evento";
                        result.data    = new Movimiento();
                        return(result);
                    }

                    if (obj.valor > valida.monto_abonado)
                    {
                        result.code    = -1;
                        result.message = "El Valor por el cual desea realizar la Nota de Crédito excede al Valor Abonado para este Evento, verifique el Saldo Abonado";
                        result.data    = new Movimiento();
                        return(result);
                    }

                    StringBuilder strIns = new StringBuilder();
                    strIns.Append(" insert into movimientos ");
                    strIns.Append(" (id_movimiento,id_participante,id_evento, tipo_mov, tipo_pago, descripcion, valor, fecha_movimiento, usuario_creacion, fecha_creacion) ");
                    strIns.Append(" values( ");
                    strIns.Append(" (select correlativo_disponible from correlativo where id_correlativo = 7 and estado_registro = 'A'), ");
                    strIns.Append(" :id_participante, ");
                    strIns.Append(" :id_evento, ");
                    strIns.Append(" 'CR', ");
                    strIns.Append(" :tipo_pago, ");
                    strIns.Append(" 'Nota de Crédito que Afecta al Evento:  '|| (select ev.nombre_evento from evento ev where ev.id_evento = :id_evento), ");
                    strIns.Append(" :valor, ");
                    strIns.Append(" sysdate, ");
                    strIns.Append(" upper(:usuario), ");
                    strIns.Append(" sysdate) ");

                    var resp = db.Database.ExecuteSqlCommand(strIns.ToString(), new object[] { obj.id_participante,
                                                                                               obj.id_evento,
                                                                                               obj.tipo_pago,
                                                                                               obj.id_evento,
                                                                                               obj.valor,
                                                                                               obj.usuario });
                    db.SaveChanges();
                }
                result.code    = 0;
                result.message = "Se ha generado la Nota de Crédito de forma existosa";
                return(result);
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de registrar la Nota de Crédito";
                result.messageError = ex.ToString();
                return(result);
            }
        }