spree_recurring_order 2.1.3 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e31aea92275d38f02697dafbbe7af85671fff65
4
- data.tar.gz: d67a7308522c80729b4c602a092bd1ceac06c944
3
+ metadata.gz: 76ffe7a472fefe7657097737d7ff66b0926226de
4
+ data.tar.gz: 23934df33f63bada758d01918898ed47d7ded4dc
5
5
  SHA512:
6
- metadata.gz: 522d03015e276c9a0bb0eefb1db427cfb70f49a49b1ba8f81b51c13ce35ab02cef3acc5429ca4b4c8a8ad57815d0e3c7a65eebe7ab5eb3592c87a11bc111b111
7
- data.tar.gz: f7a4b1c93340f1d010e981c6a7fefaf95299853e976c7b95e6e71a7c192b60a90ad9026c786fc96ba055279bf6f1b5fdd90b53e3f95656609a9cbc32aefb103c
6
+ metadata.gz: 002bc796fb66c3b4ffae936406329c5de2fd5a7c2cf89ce92ac74ad254576cded12d3c8145c75ba7ddd2a42603eacb5696d0fab87282e70ab609bdb2dac24266
7
+ data.tar.gz: 23c27260548c84e148cd9b9142e3cb94205fae67e0d49f389547459a92b1e654ad64a2a7ee492f8f91d12cd65ea31c837fe3846af68e768dae58f6e42c0cabd7
@@ -6,6 +6,10 @@ module Spree
6
6
  @recurring_orders = Spree::RecurringOrder.all
7
7
  end
8
8
 
9
+ def show
10
+ @recurring_order = Spree::RecurringOrder.find_by(number: params[:number])
11
+ end
12
+
9
13
  end
10
14
  end
11
15
  end
@@ -5,6 +5,12 @@ Spree::OrdersController.class_eval do
5
5
 
6
6
  @order = Spree::Order.find_by_number!(params[:id])
7
7
  @recurring_order = Spree::RecurringOrder.new
8
+
9
+ if @present_recurring
10
+ render :show_recurring
11
+ else
12
+ render :show
13
+ end
8
14
  end
9
15
 
10
16
  end
@@ -10,7 +10,8 @@ module Spree
10
10
  if @recurring_order.save
11
11
  redirect_to(spree.recurring_order_url(@recurring_order.id))
12
12
  else
13
- render :new
13
+ flash[:notice] = "Hmmm... There was a problem creating your recurring order. Please get in touch at hello@yourgrocer.com.au and we are going to sort it out for you."
14
+ redirect_to(order_url(original_order.number))
14
15
  end
15
16
  else
16
17
  flash[:notice] = "Hmmm... It seems like this order already has a recurring order associated with it. Please get in touch at hello@yourgrocer.com.au if you have any doubts about it"
@@ -7,6 +7,8 @@ module Spree
7
7
 
8
8
  belongs_to :original_order, class_name: 'Spree::Order'
9
9
 
10
+ after_create :generate_order_number
11
+
10
12
  def self.create_from_order(order)
11
13
  recurring_order = RecurringOrder.new
12
14
  recurring_order.orders << order
@@ -32,5 +34,16 @@ module Spree
32
34
  self.errors[:orders] << "cannot be empty" if orders.empty?
33
35
  end
34
36
 
37
+ def generate_order_number
38
+ record = true
39
+ while record
40
+ random = "R#{Array.new(6){rand(6)}.join}"
41
+ record = self.class.where(number: random).first
42
+ end
43
+ self.number = random if self.number.blank?
44
+ self.number
45
+ self.save!
46
+ end
47
+
35
48
  end
36
49
  end
@@ -13,20 +13,24 @@
13
13
  </colgroup>
14
14
  <thead>
15
15
  <tr>
16
+ <th><%= Spree.t(:recurring_order_number, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
16
17
  <th><%= Spree.t(:original_order_number, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
17
18
  <th><%= Spree.t(:customer_email, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
18
19
  <th><%= Spree.t(:customer_phone, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
19
20
  <th><%= Spree.t(:active?, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
21
+ <th><%= Spree.t(:number_of_orders, resource: I18n.t(:other, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
20
22
  <th><%= Spree.t(:created_at, resource: I18n.t(:created_at, :scope => 'activerecord.attributes.spree/recurring_order')) %></th>
21
23
  </tr>
22
24
  </thead>
23
25
  <tbody>
24
26
  <% @recurring_orders.each do |order| %>
25
27
  <tr class="<%= cycle('odd', 'even') %>">
28
+ <td class="align-center"><%= link_to order.number, admin_recurring_order_path(order.number) %></td>
26
29
  <td class="align-center"><%= link_to order.original_order.number, edit_admin_order_path(order.original_order) %></td>
27
30
  <td class="align-center"><%= mail_to order.email %></td>
28
31
  <td class="align-center"><%= mail_to order.phone %></td>
29
32
  <td class="align-center">YES</td>
33
+ <td class="align-center"><%= order.orders.count %></td>
30
34
  <td class="align-center"><%= l (order.created_at).to_date %></td>
31
35
  </tr>
32
36
  <% end %>
@@ -0,0 +1,42 @@
1
+ <% content_for :page_title do %>
2
+ <%= "Recurring Order #{@recurring_order.number}" %>
3
+ <% end %>
4
+
5
+ <% content_for :sidebar_title do %>
6
+ <%= Spree.t(:recurring_information) %>
7
+ <% end %>
8
+
9
+ <% content_for :sidebar do %>
10
+ <header id="order_tab_summary" data-hook>
11
+ <dl class="additional-info">
12
+ <dt id="order_email" data-hook><%= Spree.t(:email) %>:</dt>
13
+ <dd><%= @recurring_order.email %></dd>
14
+ <dt id="order_phone" data-hook><%= Spree.t(:phone) %>:</dt>
15
+ <dd><%= @recurring_order.phone %></dd>
16
+ <dt id="order_original_order" data-hook><%= Spree.t(:original) %>:</dt>
17
+ <dd><%= @recurring_order.original_order.number %></dd>
18
+ <dt id="order_created_at" data-hook><%= Spree.t(:created_date) %>:</dt>
19
+ <dd><%= l (@recurring_order.created_at).to_date %></dd>
20
+ </dl>
21
+ </header>
22
+ <% end %>
23
+
24
+ <fieldset class='no-border-bottom'>
25
+ <legend>Orders</legend>
26
+ <table>
27
+ <thead>
28
+ <th><%= Spree.t('number')%></th>
29
+ <th><%= Spree.t('created_date')%></th>
30
+ <th><%= Spree.t('delivery_date')%></th>
31
+ </thead>
32
+ <tbody class="with-border">
33
+ <% @recurring_order.orders.each do |order| %>
34
+ <tr>
35
+ <td class="align-center"><strong><%= link_to order.number, edit_admin_order_path(order) %></strong></td>
36
+ <td class="align-center"><span><%= l (order.created_at).to_date %></span></td>
37
+ <td class="align-center"><span><%= l (order.delivery_date).to_date %></span></td>
38
+ </tr>
39
+ <% end %>
40
+ </tbody>
41
+ </table>
42
+ </fieldset>
@@ -0,0 +1 @@
1
+ You have to implement this view
@@ -1,14 +1 @@
1
- <div id='show_recurring_order'>
2
- <h1 class='title'>And that's all!</h1>
3
-
4
- <h2 class='text'>
5
- <%= "Grocery shopping just became much easier for you, #{@recurring_order.original_order.ship_address.firstname}." %>
6
- </h2>
7
-
8
-
9
- <h2 class='text'>
10
- We are getting in touch to setup your recurring order,
11
- so feel free to relax and think about all that time that you are going to have in your hands.
12
- </h2>
13
-
14
- </div>
1
+ You need to implement this view
data/config/routes.rb CHANGED
@@ -4,4 +4,5 @@ Spree::Core::Engine.routes.draw do
4
4
  get "/recurring_orders/:id", controller: 'recurring_orders', action: 'show', as: 'recurring_order'
5
5
 
6
6
  get "admin/recurring_orders/", controller: 'admin/recurring_orders', action: 'index', as: 'admin_recurring_orders'
7
+ get "admin/recurring_orders/:number", controller: 'admin/recurring_orders', action: 'show', as: 'admin_recurring_order'
7
8
  end
@@ -0,0 +1,7 @@
1
+ class AddNumberToRecurringOrder < ActiveRecord::Migration
2
+
3
+ def change
4
+ add_column :spree_recurring_orders, :number, :string
5
+ end
6
+
7
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::Admin::RecurringOrdersController do
4
-
4
+
5
5
  let(:user) { mock_model Spree::User, :last_incomplete_spree_order => nil, :has_spree_role? => true, :spree_api_key => 'fake' }
6
6
 
7
7
  before :each do
@@ -21,4 +21,16 @@ describe Spree::Admin::RecurringOrdersController do
21
21
 
22
22
  end
23
23
 
24
+ describe 'show' do
25
+
26
+ it 'should assign recurring order' do
27
+ recurring_order = double(Spree::RecurringOrder)
28
+ Spree::RecurringOrder.should_receive(:find_by).with(number: 'R1234').and_return(recurring_order)
29
+
30
+ spree_get :show, number: 'R1234'
31
+ assigns(:recurring_order).should == recurring_order
32
+ end
33
+
34
+ end
35
+
24
36
  end
@@ -29,14 +29,16 @@ describe Spree::OrdersController do
29
29
  assigns(:recurring_order).should == recurring_order
30
30
  end
31
31
 
32
- it 'should assign @present_recurring' do
32
+ it 'should render show_recurring if order completed is true' do
33
33
  spree_get :show, {id: "G2134", order_completed: true}
34
34
  assigns(:present_recurring).should == true
35
+ response.should render_template('show_recurring')
35
36
  end
36
37
 
37
- it 'should not assign @present_recurring if not present' do
38
+ it 'should render show normally' do
38
39
  spree_get :show, {id: "G2134"}
39
40
  assigns(:present_recurring).should == false
41
+ response.should render_template('show')
40
42
  end
41
43
 
42
44
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::RecurringOrdersController do
4
-
4
+
5
5
  let(:original_order){ FactoryGirl.build(:order, id: 1, number: 'G1234') }
6
6
  let(:orders){ [] }
7
7
  let(:recurring_order){ double(Spree::RecurringOrder, save: true, id: 666, orders: orders).as_null_object }
@@ -42,7 +42,7 @@ describe Spree::RecurringOrdersController do
42
42
  recurring_order.should_receive(:save).and_return(false)
43
43
 
44
44
  spree_post :create, recurring_order: {original_order_id: 1}
45
- response.should render_template(:new)
45
+ response.should redirect_to("/orders/G1234")
46
46
  end
47
47
 
48
48
  it 'should render order complete if recurring order already exists' do
@@ -18,8 +18,23 @@ describe Spree::RecurringOrder do
18
18
  recurring_order.original_order.should == order
19
19
  end
20
20
 
21
+ it "should assign number that starts with R" do
22
+ order = FactoryGirl.create(:order)
23
+
24
+ recurring_order = Spree::RecurringOrder.create_from_order(order)
25
+ recurring_order.number.should =~ /^R/
26
+ end
27
+
28
+ it "should assign number that has 6 numbers" do
29
+ order = FactoryGirl.create(:order)
30
+
31
+ recurring_order = Spree::RecurringOrder.create_from_order(order)
32
+ recurring_order.number.should =~ /\d{6}$/
33
+ end
34
+
21
35
  end
22
36
 
37
+
23
38
  describe 'validation' do
24
39
 
25
40
  it 'should have at least one order' do
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |s|
3
3
  s.platform = Gem::Platform::RUBY
4
4
  s.name = 'spree_recurring_order'
5
- s.version = '2.1.3'
5
+ s.version = '2.1.5'
6
6
  s.summary = 'Add the option to create a recurring order'
7
7
  s.description = ''
8
8
  s.required_ruby_version = '>= 2.0.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_recurring_order
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francisco Trindade
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-10 00:00:00.000000000 Z
11
+ date: 2014-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -180,25 +180,23 @@ files:
180
180
  - app/assets/javascripts/store/spree_recurring_order.js
181
181
  - app/assets/stylesheets/admin/admin.scss
182
182
  - app/assets/stylesheets/admin/spree_recurring_order.css
183
- - app/assets/stylesheets/store/order_complete.css
184
- - app/assets/stylesheets/store/show_order.css
185
183
  - app/assets/stylesheets/store/spree_recurring_order.css
186
184
  - app/controllers/spree/admin/recurring_orders_controller.rb
187
185
  - app/controllers/spree/orders_controller_decorator.rb
188
186
  - app/controllers/spree/recurring_orders_controller.rb
189
187
  - app/models/spree/order_decorator.rb
190
188
  - app/models/spree/recurring_order.rb
191
- - app/overrides/add_recurring_order_form.rb
192
189
  - app/overrides/add_tab_to_admin_menu.rb
193
190
  - app/views/spree/admin/recurring_orders/index.html.erb
191
+ - app/views/spree/admin/recurring_orders/show.html.erb
194
192
  - app/views/spree/admin/shared/_recurring_orders_tab.html.erb
195
- - app/views/spree/orders/_recurring_order_form.html.erb
196
- - app/views/spree/recurring_orders/new.html.erb
193
+ - app/views/spree/orders/show_recurring.html.erb
197
194
  - app/views/spree/recurring_orders/show.html.erb
198
195
  - bin/rails
199
196
  - config/locales/en.yml
200
197
  - config/routes.rb
201
198
  - db/migrate/20140204052508_create_recurring_orders_table.rb
199
+ - db/migrate/20140211055527_add_number_to_recurring_order.rb
202
200
  - lib/generators/spree_recurring_order/install/install_generator.rb
203
201
  - lib/spree_recurring_order.rb
204
202
  - lib/spree_recurring_order/engine.rb
@@ -1,8 +0,0 @@
1
- fieldset#recurring_orders {
2
- text-align: center;
3
- }
4
-
5
- fieldset#recurring_orders input[type='submit'] {
6
- font-size: 24px;
7
- text-align: center;
8
- }
@@ -1,14 +0,0 @@
1
- div#show_recurring_order {
2
- text-align: center;
3
- margin-left: 10%;
4
- margin-right: 10%;
5
- }
6
-
7
- div#show_recurring_order .title, div#show_recurring_order .text {
8
- margin-top: 30px;;
9
- }
10
-
11
- div#show_recurring_order fieldset.share {
12
- margin-top: 60px;
13
- }
14
-
@@ -1,5 +0,0 @@
1
- Deface::Override.new(:virtual_path => "spree/orders/show",
2
- :name => "add_recurring_order_form",
3
- :insert_before => "#order_summary",
4
- :partial => "spree/orders/recurring_order_form",
5
- :disabled => false)
@@ -1,16 +0,0 @@
1
- <%- if @present_recurring %>
2
- <fieldset id='recurring_orders'>
3
-
4
- <h2>
5
- <%= "Thanks #{@order.ship_address.firstname}!" %>
6
- </h2>
7
- <h2>Would you like to make this process even easier next time?</h2>
8
- <p>Sign up for a recurring order and we will get in touch so you don't have to worry about your groceries anymore.</p>
9
-
10
- <%= form_for @recurring_order do |f| %>
11
- <%= f.hidden_field :original_order_id, value: @order.id %>
12
- <%= f.submit "Send me hassle-free groceries" %>
13
- <% end %>
14
-
15
- </fieldset>
16
- <% end %>
@@ -1,6 +0,0 @@
1
- <h1>And that's all!</h1>
2
-
3
- <h2>
4
- We are getting in touch with you to setup your recurring order,
5
- so feel free to relax and think about all that time you are going to have in your hands
6
- </h2>