kinduff/spree_reffiliate

View on GitHub
README.md

Summary

Maintainability
Test Coverage
 ## :warning: This repository is no longer maintained by the original author :warning:
 ## :warning: Please refer to [vinsol-spree-contrib/spree_reffiliate](https://github.com/vinsol-spree-contrib/spree_reffiliate) for an updated version :warning:

Spree Reffiliate
================

[![Codeship Status for kinduff/spree_reffiliate](https://codeship.com/projects/ab504f70-4b22-0132-8f9f-22e1dbe6882e/status)](https://codeship.com/projects/46636)
[![Build Status](https://travis-ci.org/kinduff/spree_reffiliate.svg?branch=master)](https://travis-ci.org/kinduff/spree_reffiliate)
[![Code Climate](https://codeclimate.com/github/kinduff/spree_reffiliate/badges/gpa.svg)](https://codeclimate.com/github/kinduff/spree_reffiliate)
[![Test Coverage](https://codeclimate.com/github/kinduff/spree_reffiliate/badges/coverage.svg)](https://codeclimate.com/github/kinduff/spree_reffiliate)

Spree Reffiliate is a [Spree] Extension that adds the referral and affiliate features to your Spree Store. Users are going to be able to share a unique hyperlink with their friends to gain benefits and you'll be able to create affiliate campaigns through the Spree Administrator and configure it to your needs.

### Referrals
+ User can share a unique URL
+ User can signup as a referred user
+ Referred user can have promotions
+ Admin is able to see referred users and orders from user

### Affiliates
+ Admin is able to create an affiliate with a custom path
+ Customize the affiliate view with a partial
+ Users are going to be able to signup as an affiliated user
+ Affiliated user can have individual promotions
+ Admin is able to see affiliated users and orders from affiliate

![Spree Reffiliate](https://cloud.githubusercontent.com/assets/1270156/4210980/11c6ba84-387f-11e4-8f3d-4eb7f45f9004.png)

## Installation

To use the stable branch, add this line to your Gemfile:

```ruby
gem 'spree_reffiliate'
```

Alternatively, if you want to use the bleeding edge version, use this line:

```ruby
gem 'spree_reffiliate', github: 'kinduff/spree_reffiliate'
```

Bundle your dependencies and run the installation generator:

```shell
bundle
bundle exec rails g spree_reffiliate:install
```

### Existing Users
If you already have users within your database, you'll need to run the following command to generate the referral registry for your users:

```shell
bundle exec rake reffiliate:generate
```

## Usage

Referral path is `/r/:code` and Affiliate path (assigned in the admin) is `/a/:path`

Once installed, you'll be able to access the following methods.

#### Spree::User
+ referred_by => user record
+ referral_count => user count
+ referred? => boolean
+ affiliate? => boolean
+ affiliate => affiliate record
+ referral => referral record

#### Spree::Referral
+ code => referral code
+ referred_users => array of users
+ referred_orders => array of orders
+ referred_count => user count
+ referral_activated_users => users with completed orders

#### Spree::Affiliates
+ referred_users => array of users
+ referred_orders => array of orders
+ referred_count => user count

### Spree Admin

#### Users
![User Listing](https://cloud.githubusercontent.com/assets/1270156/4210981/11cd353a-387f-11e4-826d-07b272bb249a.png)

#### Affiliates
![Referral Listing](https://cloud.githubusercontent.com/assets/1270156/4210982/11e9966c-387f-11e4-9a27-fca70c7a706d.png)

#### Promotion Rules

**Important**: in both referrals and affiliates, do **not** fill in the promotion code for the promotion itself to be applied automatically to the user's order. If you add a promotion code, the user will need to apply the for promotion manually.

##### For referrals

![Referral Rules](https://cloud.githubusercontent.com/assets/1270156/4244240/ec3dac8c-3a1d-11e4-8c6d-42c9f9b31e5f.png)

##### For affiliates

![Affiliate Rules](https://cloud.githubusercontent.com/assets/1270156/4244241/ec3e156e-3a1d-11e4-972a-5d61ebf0f053.png)

### User account
![User account](https://cloud.githubusercontent.com/assets/1270156/4210983/11e9b9a8-387f-11e4-8733-182bdebc449c.png)

## Testing

First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `rake test_app`.

```shell
bundle
bundle exec rake
```

When testing your applications integration with this extension you may use it's factories.
Simply add this require statement to your spec_helper:

```ruby
require 'spree_reffiliate/factories'
```

## ToDo
+ Add missing documentation
+ Add 2-2-stable and 2-1-stable support (or at least test them)
+ Improve affiliates admin
+ Improve User and Orders listing at user admin
+ Add option or helper to show referral code to the user

Copyright (c) 2014 Alejandro AR, released under the New BSD License

[Spree]: http://spreecommerce.com/