public Response <recibo> actualizarRecibo(recibo obj)
        {
            Response <recibo> result = new Response <recibo>();

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

            if (obj.nombre == null || obj.nombre == "" ||
                obj.pais == null || obj.pais == "" ||
                obj.evento.Equals(null) || obj.opcion.Equals(null) ||
                obj.valor.Equals(null) || obj.cantidad.Equals(null) || obj.total.Equals(null))
            {
                result.code    = -1;
                result.message = "Los datos: nombre, pais, opcion, precio, cantidad y total no pueden ser datos vacios, favor de verificar";
                result.data    = new recibo();
                return(result);
            }

            try
            {
                //Se inicia la transaccion
                using (var trans = new System.Transactions.TransactionScope())
                {
                    using (var db = new EntitiesRecibo())
                    {
                        //se busca el registro a actualizar
                        SAG01_RECIBO regActual = (from c in db.SAG01_RECIBO
                                                  where c.RECIBO == obj.idrecibo &&
                                                  c.ESTADO_REGISTRO == "A"
                                                  select c).FirstOrDefault();

                        if (regActual == null)
                        {
                            result.code    = 1;
                            result.message = "No existe el recibo indicado";
                            return(result);
                        }
                        regActual.NOMBRE               = obj.nombre;
                        regActual.CANTIDAD             = obj.cantidad;
                        regActual.VALOR                = obj.valor;
                        regActual.DETALLE              = obj.detalle;
                        regActual.EVENTO               = obj.evento;
                        regActual.OPCION               = obj.opcion;
                        regActual.PAIS                 = obj.pais;
                        regActual.USUARIO_MODIFICACION = usuario;
                        regActual.FECHA_MODIFICACION   = fecha;

                        //se Actualiza la informacion del Recibo
                        int res = db.SaveChanges();
                        if (res <= 0)
                        {
                            System.Transactions.Transaction.Current.Rollback();
                            result.code    = 2;
                            result.message = "No fue posible Actualizar los datos del Recibo";
                            return(result);
                        }
                    }
                    //Se hace commit de los cambios
                    trans.Complete();
                    result.code    = 0;
                    result.message = "Se Actualizo el Recibo de forma Exitosa";
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de Actualizar el Recibo";
                result.messageError = ex.ToString();
                return(result);
            }
        }
        public Response <recibo> anularRecibo(decimal rec)
        {
            Response <recibo> result = new Response <recibo>();

            result.code    = 1;
            result.message = "Ocurrio un error en Base de datos al tratar de Anular";
            result.data    = new recibo();

            try
            {
                using (var trans = new System.Transactions.TransactionScope())
                {
                    using (var db = new EntitiesRecibo())
                    {
                        //se busca el registro a actualizar
                        SAG01_RECIBO regActual = (from c in db.SAG01_RECIBO
                                                  where c.RECIBO == rec
                                                  select c).FirstOrDefault();
                        if (regActual == null)
                        {
                            result.code    = 1;
                            result.message = "No existe el recibo indicado";
                            return(result);
                        }

                        if (regActual.ESTADO_REGISTRO != "A")
                        {
                            result.code    = 1;
                            result.message = "El Recibo ya se encuentra Anulado";
                            return(result);
                        }

                        regActual.ESTADO_REGISTRO      = "N";
                        regActual.USUARIO_MODIFICACION = usuario;
                        regActual.FECHA_MODIFICACION   = fecha;

                        //se Actualiza la informacion del Recibo
                        int res = db.SaveChanges();
                        if (res <= 0)
                        {
                            System.Transactions.Transaction.Current.Rollback();
                            result.code    = 2;
                            result.message = "No fue posible Anular el Recibo";
                            return(result);
                        }
                    }
                    //Se hace commit de los cambios
                    trans.Complete();
                    result.code    = 0;
                    result.message = "Se Anulo el Recibo de forma Exitosa";
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de Anular el Recibo";
                result.messageError = ex.ToString();
                return(result);
            }
        }
        public Response <recibo> nuevoRecibo(recibo obj)
        {
            Response <recibo> result = new Response <recibo>();

            result.code    = 1;
            result.message = "Ocurrio un Error a nivel de Base de Datos al tratar de Guardar el Recibo";
            result.data    = new recibo();

            if (obj.nombre == null || obj.nombre == "" ||
                obj.pais_.idpais == null || obj.pais_.idpais == "" ||
                obj.opcion_.opcion.Equals(null) ||
                obj.valor.Equals(null) || obj.cantidad.Equals(null) || obj.total.Equals(null))
            {
                result.code    = -1;
                result.message = "Los datos: nombre, pais, opcion, precio, cantidad y total no pueden ser datos vacios, favor de verificar";
                result.data    = new recibo();
                return(result);
            }

            try
            {
                //Se inicia la transaccion
                using (var tra = new System.Transactions.TransactionScope())
                {
                    using (var db = new EntitiesRecibo())
                    {
                        //se obtiene el correlativo de la llave primaria SAG01_RECIBO de la tabla SAG01_CORRELATIVO
                        var correlativo = (from c in db.SAG01_CORRELATIVO where c.CORRELATIVO == 1 && c.ESTADO_REGISTRO == "A" select c).SingleOrDefault();
                        if (correlativo == null)
                        {
                            result.code    = 1;
                            result.message = "No fue posible generar el Recibo";
                            return(result);
                        }

                        //Se guarda el registro del Recibo en la tabla SAG01_RECIBO
                        SAG01_RECIBO re = new SAG01_RECIBO()
                        {
                            RECIBO           = (int)correlativo.CORRELATIVO_DISPONIBLE,
                            NOMBRE           = obj.nombre,
                            CANTIDAD         = obj.cantidad,
                            VALOR            = obj.valor,
                            TOTAL            = obj.total,
                            DETALLE          = obj.detalle,
                            EVENTO           = obj.opcion_.evento,
                            OPCION           = obj.opcion_.opcion,
                            PAIS             = obj.pais_.idpais,
                            ESTADO_REGISTRO  = "A",
                            USUARIO_CREACION = usuario,
                            FECHA_CREACION   = fecha
                        };
                        db.SAG01_RECIBO.Add(re);
                        correlativo.CORRELATIVO_DISPONIBLE++;
                        int res = db.SaveChanges();
                        if (res <= 0)
                        {
                            System.Transactions.Transaction.Current.Rollback();
                            result.code    = 2;
                            result.message = "No fue posible generar el Recibo";
                            return(result);
                        }
                        correlativo.CORRELATIVO_DISPONIBLE--;
                        result.data.idrecibo = (decimal)correlativo.CORRELATIVO_DISPONIBLE;
                    }
                    //Se hace commit de los cambios
                    tra.Complete();
                    result.code    = 0;
                    result.message = "Se registro el Recibo de forma Exitosa";
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.code         = -1;
                result.message      = "Ocurrio una excepcion al tratar de registrar el Recibo";
                result.messageError = ex.ToString();
                return(result);
            }
        }