spree_delivery_options 2.1.15 → 2.2.0

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: c2eb54e36ae6b539d55955a467ef7e86ffb8af66
4
- data.tar.gz: 61f422e99c631a7aa68b5dccd6cdde06630b86e5
3
+ metadata.gz: b19936a62b8807116a557c91212c3d2b0ec4cdc2
4
+ data.tar.gz: 5bc39846c2a6cdd32fe656807b1752ed6f3cd479
5
5
  SHA512:
6
- metadata.gz: b83c9fd7738ded9a7dcfc8c0408845a3f8ba943a2edf6a6ccad71748bb63dd7281d437f23d8f78f3f4a2065343f8ca9c979133cd7f3a1c03822bcae9aeb955b6
7
- data.tar.gz: 6f9e9e7b63c452b54168636945b3a2206fa539f4470f062ec8e1f74852700fd4785e9b11da2dda48e94b492d9f65f8f42784f54a73a77a4d4bc91e9642235fd4
6
+ metadata.gz: af672b3f1e226c927e773dfc2c01c063102ab080e0072149c97ee2f482ce1d4e35027336f886d16e681e76c52f7dc735a7739407bc7458e08f29815521016e13
7
+ data.tar.gz: e4ea617a6d6e621577cf8bf2d01068f8e314cc616df90491a09835f504178a8f8e7327d478125b816843d70214fae0104a211a60605f3aec03b690dde2d7d145
@@ -0,0 +1,43 @@
1
+ function SpreeDeliveryOptionsForm() {
2
+
3
+ var that = this;
4
+
5
+ this.initializeForm = function() {
6
+ var formUrl = $('#delivery-options-form').attr('action');
7
+
8
+ $("#delivery-options-form input[type='submit']").click(function(event){
9
+ event.preventDefault();
10
+
11
+ var formData = $('#delivery-options-form').serialize();
12
+ $.post(
13
+ formUrl,
14
+ formData,
15
+ function(data) {
16
+ if (data.delivery_date !== null) {
17
+ location.reload();
18
+ } else {
19
+ that.showErrorMessage("Please enter a valid date.");
20
+ }
21
+ }).fail(function(data){
22
+ if (data.responseJSON.errors.delivery_date !== undefined) {
23
+ that.showErrorMessage(data.responseJSON.errors.delivery_date[0]);
24
+ } else if (data.responseJSON.errors.delivery_time !== undefined) {
25
+ that.showErrorMessage(data.responseJSON.errors.delivery_time[0]);
26
+ } else {
27
+ that.showErrorMessage("We could not update the delivery date. Please try at checkout.");
28
+ }
29
+ });
30
+ });
31
+ };
32
+
33
+ this.showErrorMessage = function(message) {
34
+ $('#delivery-options-homepage .error').html("<h5>" + message + "</h5>");
35
+ $('#delivery-options-homepage .error').show();
36
+ };
37
+
38
+ }
39
+
40
+ $(document).ready(function() {
41
+ var deliveryOptionsForm = new SpreeDeliveryOptionsForm();
42
+ deliveryOptionsForm.initializeForm();
43
+ });
@@ -3,7 +3,10 @@ function SpreeDeliveryOptions() {
3
3
  var that = this;
4
4
 
5
5
  this.initializeDatePicker = function() {
6
- $('#order_delivery_date').datepicker({dateFormat: "dd/mm/yy"});
6
+ $('#order_delivery_date').datepicker({
7
+ dateFormat: "dd/mm/yy",
8
+ minDate: 1
9
+ });
7
10
  };
8
11
 
9
12
  this.initializeDeliveryTimeSelect = function() {
@@ -41,11 +44,11 @@ function SpreeDeliveryOptions() {
41
44
  var arLen = options.length;
42
45
  var newList = "";
43
46
  for ( var i=0, len=arLen; i<len; ++i ){
44
- newList = newList + '<option>' + options[i]+'</option>';
47
+ newList = newList + "<option value='" + options[i] + "'>" + options[i]+'</option>';
45
48
  }
46
49
  $('#order_delivery_time').html(newList);
47
50
  } else {
48
- $('#order_delivery_time').html("<option>No deliveries available on this date</option>");
51
+ $('#order_delivery_time').html("<option>Not available</option>");
49
52
  }
50
53
  };
51
54
 
@@ -1,3 +1,4 @@
1
1
  //= require jquery
2
2
  //= require store/delivery_time_options
3
+ //= require store/delivery_options_form
3
4
  //= require store/jquery-ui-1.10.4.custom
@@ -0,0 +1,40 @@
1
+ #delivery-options-homepage {
2
+ background-color: #ccc;
3
+ padding: 10px;
4
+ margin-bottom: 10px;
5
+
6
+ .row {
7
+ margin-bottom: 0;
8
+ }
9
+
10
+ .success {
11
+ p {
12
+ margin: 0;
13
+ padding: 5px 0;
14
+ }
15
+ }
16
+
17
+ .error h5 {
18
+ color: red;
19
+ }
20
+
21
+ .field {
22
+
23
+ display: block;
24
+ margin-bottom: 5px;
25
+
26
+ label {
27
+ margin-right: 5px;
28
+ }
29
+
30
+ input[type='text'], select {
31
+ width: 120px;
32
+ }
33
+
34
+ input[type='submit'] {
35
+ margin-top: 5px;
36
+ width: 200px;
37
+ }
38
+
39
+ }
40
+ }
@@ -1,5 +1,6 @@
1
1
  /*
2
2
  *= require store/spree_frontend
3
3
  *= require store/delivery_checkout
4
+ *= require store/delivery_options_homepage
4
5
  *= require store/jquery-ui-1.10.4.custom.css
5
6
  */
@@ -0,0 +1,3 @@
1
+ Spree::TaxonsController.class_eval do
2
+ helper 'spree_delivery_options/base'
3
+ end
@@ -1,6 +1,14 @@
1
1
  module SpreeDeliveryOptions
2
2
  module BaseHelper
3
3
 
4
+ def current_order_cutoff_time
5
+ return nil unless (current_order && current_order.delivery_date)
6
+
7
+ cutoff_time = Time.zone.now.change(hour: SpreeDeliveryOptions::Config.delivery_cut_off_hour)
8
+ cutoff_date = current_order.delivery_date - 1.day
9
+ "#{cutoff_date.strftime('%A, %d %b')} before #{cutoff_time.strftime("%l%P")}"
10
+ end
11
+
4
12
  def next_delivery_slot
5
13
  delivery_options = JSON.parse(SpreeDeliveryOptions::Config.delivery_time_options)
6
14
 
@@ -13,9 +21,9 @@ module SpreeDeliveryOptions
13
21
  def next_delivery_day
14
22
  delivery_options = JSON.parse(SpreeDeliveryOptions::Config.delivery_time_options)
15
23
 
16
- cutoff_time = Time.now.change(hour: SpreeDeliveryOptions::Config.delivery_cut_off_hour)
24
+ cutoff_time = Time.zone.now.change(hour: SpreeDeliveryOptions::Config.delivery_cut_off_hour)
17
25
 
18
- current_day = Time.now > cutoff_time ? (Date.today + 2.days) : Date.tomorrow
26
+ current_day = Time.zone.now > cutoff_time ? (Date.current + 2.days) : (Date.current + 1.day)
19
27
  next_available_day = nil
20
28
  counter = 0
21
29
 
@@ -2,6 +2,9 @@ Spree::Order.class_eval do
2
2
  require 'date'
3
3
  require 'spree/order/checkout'
4
4
 
5
+ validate :valid_delivery_date?
6
+ validate :valid_delivery_time?
7
+
5
8
  def valid_delivery_instructions?
6
9
  if self.delivery_instructions && self.delivery_instructions.length > 500
7
10
  self.errors[:delivery_instructions] << 'cannot be longer than 500 charachters'
@@ -10,20 +13,22 @@ Spree::Order.class_eval do
10
13
  true
11
14
  end
12
15
 
13
- def valid_delivery_date?
14
-
16
+ def delivery_date_present?
15
17
  self.errors[:delivery_date] << 'cannot be blank' unless self.delivery_date
18
+ self.errors[:delivery_date].empty? ? true : false
19
+ end
16
20
 
21
+ def valid_delivery_date?
17
22
  if self.delivery_date
18
- self.errors[:delivery_date] << 'cannot be today or in the past' if self.delivery_date <= Date.today
23
+ self.errors[:delivery_date] << 'cannot be today or in the past' if self.delivery_date <= Date.current
19
24
 
20
25
  options = delivery_time_options(self.delivery_date)
21
26
  unless options
22
27
  self.errors[:delivery_date] << "is not available on the selected week day."
23
28
  end
24
29
 
25
- cutoff_time = Time.now.change(hour: SpreeDeliveryOptions::Config.delivery_cut_off_hour)
26
- if self.delivery_date == Date.tomorrow && Time.now > (cutoff_time + 15.minutes)
30
+ cutoff_time = Time.zone.now.change(hour: SpreeDeliveryOptions::Config.delivery_cut_off_hour)
31
+ if self.delivery_date == (Date.current + 1.day) && Time.zone.now > (cutoff_time + 15.minutes)
27
32
  self.errors[:delivery_date] << "cannot be tomorrow if the order is created after 1pm"
28
33
  end
29
34
  end
@@ -31,6 +36,11 @@ Spree::Order.class_eval do
31
36
  self.errors[:delivery_date].empty? ? true : false
32
37
  end
33
38
 
39
+ def delivery_time_present?
40
+ self.errors[:delivery_time] << 'cannot be blank' unless self.delivery_time
41
+ self.errors[:delivery_time].empty? ? true : false
42
+ end
43
+
34
44
  def valid_delivery_time?
35
45
  return unless self.delivery_date
36
46
 
@@ -64,6 +74,10 @@ Spree::PermittedAttributes.checkout_attributes << :delivery_time
64
74
  Spree::PermittedAttributes.checkout_attributes << :delivery_instructions
65
75
 
66
76
  Spree::Order.state_machine.before_transition :to => :payment, :do => :valid_delivery_instructions?
77
+
78
+ Spree::Order.state_machine.before_transition :to => :payment, :do => :delivery_date_present?
67
79
  Spree::Order.state_machine.before_transition :to => :payment, :do => :valid_delivery_date?
80
+
81
+ Spree::Order.state_machine.before_transition :to => :payment, :do => :delivery_time_present?
68
82
  Spree::Order.state_machine.before_transition :to => :payment, :do => :valid_delivery_time?
69
83
 
@@ -0,0 +1,5 @@
1
+ Deface::Override.new(:virtual_path => "spree/taxons/show",
2
+ :name => "add_delivery_options_to_taxon",
3
+ :insert_before => "h1.taxon-title",
4
+ :partial => "spree/taxons/delivery_options",
5
+ :disabled => false)
@@ -0,0 +1,29 @@
1
+ #delivery-options-homepage
2
+ - order = current_order(true)
3
+ - if order.delivery_date? && order.delivery_time
4
+ .row.success
5
+ .columns.sixteen.alpha.omega
6
+ %h5
7
+ = "Thanks! Your order is scheduled for #{order.delivery_date.strftime('%A, %d %b')} from #{order.delivery_time}."
8
+ = " You just need to complete it by #{current_order_cutoff_time}"
9
+ %p
10
+ You can still change it at the checkout if needed.
11
+ - else
12
+ .row.form
13
+ .columns.seven.alpha
14
+ %h3 Want to know when you're getting your groceries?
15
+ %h5 Choose your delivery time and get it sorted now
16
+ .columns.four
17
+ = form_for order, {url: api_order_url(order), html: {id: 'delivery-options-form'}} do |form|
18
+ = hidden_field_tag 'order_token', order.token
19
+ .field
20
+ = form.label :delivery_date, "Delivery Date"
21
+ = form.text_field :delivery_date, value: (l(order.delivery_date) rescue l(Date.current))
22
+ .field
23
+ = form.label :delivery_time, "Delivery Time"
24
+ = form.select :delivery_time, JSON.parse(SpreeDeliveryOptions::Config.delivery_time_options)["monday"]
25
+ .field
26
+ = form.submit "Set Delivery Time"
27
+ .delivery-time-options{data: SpreeDeliveryOptions::Config.delivery_time_options}
28
+ .columns.four.omega
29
+ .error.hide
@@ -2,6 +2,36 @@ require 'spec_helper'
2
2
 
3
3
  describe SpreeDeliveryOptions::BaseHelper do
4
4
 
5
+ describe 'current order cutoff time' do
6
+
7
+ let(:order){FactoryGirl.build(:order)}
8
+
9
+ before :each do
10
+ helper.stub(:current_order).and_return(order)
11
+ end
12
+
13
+ it 'should return nil if there is no current order' do
14
+ helper.stub(:current_order).and_return(nil)
15
+ helper.current_order_cutoff_time.should be_nil
16
+ end
17
+
18
+ it 'should return nil if there current order has no delivery date' do
19
+ order.delivery_date = nil
20
+ helper.current_order_cutoff_time.should be_nil
21
+ end
22
+
23
+ it 'should return the day before if delivery date is set' do
24
+ SpreeDeliveryOptions::Config.delivery_cut_off_hour = 12
25
+ order.delivery_date = Date.parse('23/04/2014')
26
+
27
+ time_now = DateTime.parse("20/03/2013")
28
+ Timecop.freeze(time_now)
29
+ helper.current_order_cutoff_time.should == 'Tuesday, 22 Apr before 12pm'
30
+ Timecop.return
31
+ end
32
+
33
+ end
34
+
5
35
  describe 'next delivery slot' do
6
36
 
7
37
  it 'should return first slot for tomorrow if its before cutoff time' do
@@ -8,7 +8,7 @@ describe Spree::Order do
8
8
  SpreeDeliveryOptions::Config.delivery_time_options = {monday: ['Between 6-7am']}.to_json
9
9
  end
10
10
 
11
- describe 'delivery instructions' do
11
+ describe 'valid_delivery_instructions' do
12
12
 
13
13
  it 'should accept nil delivery instructions' do
14
14
  order.delivery_instructions = nil
@@ -36,100 +36,101 @@ describe Spree::Order do
36
36
 
37
37
  end
38
38
 
39
- describe "delivery options" do
39
+ describe "delivery_date_present" do
40
40
 
41
- describe "basic validations" do
42
-
43
- it 'should require delivery date' do
44
- order.valid_delivery_date?.should == false
45
- order.errors[:delivery_date].should_not be_empty
46
- end
41
+ it 'should require delivery date' do
42
+ order.delivery_date_present?.should == false
43
+ order.errors[:delivery_date].should_not be_empty
44
+ end
47
45
 
48
- it 'should require delivery time' do
49
- order.delivery_date = Date.today
46
+ end
50
47
 
51
- order.valid_delivery_time?.should == false
52
- order.errors[:delivery_time].should_not be_empty
53
- end
48
+ describe "valid_delivery_date" do
54
49
 
55
- it 'should require a valid option for delivery time' do
56
- order.delivery_date = Date.today
50
+ before :each do
51
+ SpreeDeliveryOptions::Config.delivery_time_options = {monday: ['Between 6-7am']}.to_json
52
+ end
57
53
 
58
- order.delivery_time = 'crazy times!'
59
- order.valid_delivery_time?.should == false
60
- order.errors[:delivery_time].should_not be_empty
61
- end
62
54
 
55
+ it 'should not be valid if delivery date is in the past' do
56
+ order.delivery_date = Date.yesterday
57
+ order.valid_delivery_date?.should == false
58
+ order.errors[:delivery_date].should_not be_empty
63
59
  end
64
60
 
65
- describe "validating the cut off hour" do
61
+ it 'should not be valid if delivery date is today' do
62
+ order.delivery_date = Date.today
63
+ order.valid_delivery_date?.should == false
64
+ order.errors[:delivery_date].should_not be_empty
65
+ end
66
66
 
67
- before :each do
68
- SpreeDeliveryOptions::Config.delivery_time_options = {monday: ['Between 6-7am']}.to_json
69
- end
67
+ it 'should be valid if delivery date is tomorrow and it is past the cutoff time by less than 15 min' do
68
+ time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour}:14 +1100")
69
+ Timecop.freeze(time_now)
70
70
 
71
- it 'should not be valid if delivery date is in the past' do
72
- order.delivery_date = Date.yesterday
73
- order.valid_delivery_date?.should == false
74
- order.errors[:delivery_date].should_not be_empty
75
- end
71
+ order.delivery_date = '18/11/2013'
72
+ order.valid_delivery_date?.should == true
73
+ order.errors[:delivery_date].should be_empty
74
+ Timecop.return
75
+ end
76
76
 
77
- it 'should not be valid if delivery date is today' do
78
- order.delivery_date = Date.today
79
- order.valid_delivery_date?.should == false
80
- order.errors[:delivery_date].should_not be_empty
81
- end
77
+ it 'should not be valid if delivery date is tomorrow and it is past the cutoff time + 15 min' do
78
+ time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour}:16 +1100")
79
+ Timecop.freeze(time_now)
82
80
 
83
- it 'should be valid if delivery date is tomorrow and it is past the cutoff time by less than 15 min' do
84
- time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour}:14 +1100")
85
- Timecop.freeze(time_now)
81
+ order.delivery_date = '18/11/2013'
82
+ order.valid_delivery_date?.should == false
83
+ order.errors[:delivery_date].should_not be_empty
84
+ Timecop.return
85
+ end
86
86
 
87
- order.delivery_date = '18/11/2013'
88
- order.valid_delivery_date?.should == true
89
- order.errors[:delivery_date].should be_empty
90
- Timecop.return
91
- end
87
+ it 'should be valid if delivery date is tomorrow but is before the cutoff time' do
88
+ time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour-1}:59 +1100")
89
+ Timecop.freeze(time_now)
92
90
 
93
- it 'should not be valid if delivery date is tomorrow and it is past the cutoff time + 15 min' do
94
- time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour}:16 +1100")
95
- Timecop.freeze(time_now)
91
+ order.delivery_date = '18/11/2013'
92
+ order.valid_delivery_date?
93
+ order.errors[:delivery_date].should be_empty
94
+ Timecop.return
95
+ end
96
96
 
97
- order.delivery_date = '18/11/2013'
98
- order.valid_delivery_date?.should == false
99
- order.errors[:delivery_date].should_not be_empty
100
- Timecop.return
101
- end
97
+ end
102
98
 
103
- it 'should be valid if delivery date is tomorrow but is before the cutoff time' do
104
- time_now = DateTime.parse("17/11/2013 #{SpreeDeliveryOptions::Config.delivery_cut_off_hour-1}:59 +1100")
105
- Timecop.freeze(time_now)
99
+ describe 'delivery_time_present' do
106
100
 
107
- order.delivery_date = '18/11/2013'
108
- order.valid_delivery_date?
109
- order.errors[:delivery_date].should be_empty
110
- Timecop.return
111
- end
101
+ it 'should require delivery time' do
102
+ order.delivery_date = Date.today
112
103
 
104
+ order.delivery_time_present?.should == false
105
+ order.errors[:delivery_time].should_not be_empty
113
106
  end
114
107
 
115
- describe "validating the week day" do
108
+ end
109
+
110
+ describe 'valid_delivery_time' do
116
111
 
117
- before :each do
118
- SpreeDeliveryOptions::Config.delivery_time_options = {monday: ['Between 6-7am']}.to_json
119
- end
112
+ before :each do
113
+ SpreeDeliveryOptions::Config.delivery_time_options = {monday: ['Between 6-7am']}.to_json
114
+ end
120
115
 
121
- it 'should allow delivery time to be in a valid delivery day' do
122
- order.delivery_date = DateTime.now.next_week.next_day(0)
123
- order.valid_delivery_date?#.should == true
124
- order.errors[:delivery_date].should be_empty
125
- end
116
+ it 'should require a valid option for delivery time' do
117
+ order.delivery_date = Date.today
126
118
 
127
- it 'should not allow delivery time to be in a non delivery day' do
128
- order.delivery_date = DateTime.now.next_week.next_day(1)
129
- order.valid_delivery_date?.should == false
130
- order.errors[:delivery_date].should_not be_empty
131
- end
119
+ order.delivery_time = 'crazy times!'
120
+ order.valid_delivery_time?.should == false
121
+ order.errors[:delivery_time].should_not be_empty
122
+ end
132
123
 
124
+ it 'should allow delivery time to be in a valid delivery day' do
125
+ order.delivery_date = DateTime.now.next_week.next_day(0)
126
+ order.valid_delivery_date?#.should == true
127
+ order.errors[:delivery_date].should be_empty
128
+ end
129
+
130
+ it 'should not allow delivery time to be in a non delivery day' do
131
+ order.delivery_date = DateTime.now.next_week.next_day(1)
132
+ order.valid_delivery_date?.should == false
133
+ order.errors[:delivery_date].should_not be_empty
133
134
  end
134
135
 
135
136
  describe "overriding delivery day with specific date" do
@@ -178,5 +179,4 @@ describe Spree::Order do
178
179
 
179
180
  end
180
181
 
181
-
182
182
  end
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |s|
3
3
  s.platform = Gem::Platform::RUBY
4
4
  s.name = 'spree_delivery_options'
5
- s.version = '2.1.15'
5
+ s.version = '2.2.0'
6
6
  s.summary = 'Adds delivery date and time during checkout'
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_delivery_options
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.15
4
+ version: 2.2.0
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-03-14 00:00:00.000000000 Z
11
+ date: 2014-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -221,6 +221,7 @@ files:
221
221
  - app/assets/images/store/ui-icons_ffffff_256x240.png
222
222
  - app/assets/javascripts/admin/delivery_time_options.js
223
223
  - app/assets/javascripts/admin/spree_delivery_options.js
224
+ - app/assets/javascripts/store/delivery_options_form.js
224
225
  - app/assets/javascripts/store/delivery_time_options.js
225
226
  - app/assets/javascripts/store/jquery-ui-1.10.4.custom.js
226
227
  - app/assets/javascripts/store/spree_delivery_options.js
@@ -228,14 +229,17 @@ files:
228
229
  - app/assets/stylesheets/admin/order_details.scss
229
230
  - app/assets/stylesheets/admin/spree_delivery_options.css
230
231
  - app/assets/stylesheets/store/delivery_checkout.scss
232
+ - app/assets/stylesheets/store/delivery_options_homepage.scss
231
233
  - app/assets/stylesheets/store/jquery-ui-1.10.4.custom.css
232
234
  - app/assets/stylesheets/store/spree_delivery_options.css
233
235
  - app/controllers/spree/admin/orders/delivery_options_controller.rb
236
+ - app/controllers/spree/taxons_controller_decorator.rb
234
237
  - app/helpers/spree/application_helper_decorator.rb
235
238
  - app/helpers/spree_delivery_options/base_helper.rb
236
239
  - app/models/spree/order_decorator.rb
237
240
  - app/overrides/add_delivery_info_to_order_details.rb
238
241
  - app/overrides/add_delivery_options_link_order_page.rb
242
+ - app/overrides/add_delivery_options_to_taxon.rb
239
243
  - app/overrides/admin_order_information.rb
240
244
  - app/overrides/admin_orders_delivery_date_column.rb
241
245
  - app/overrides/admin_orders_delivery_date_filter.rb
@@ -250,6 +254,7 @@ files:
250
254
  - app/views/spree/admin/shared/_delivery_options_link.haml
251
255
  - app/views/spree/checkout/_delivery_date.haml
252
256
  - app/views/spree/orders/_order_delivery_date_details.html.erb
257
+ - app/views/spree/taxons/_delivery_options.haml
253
258
  - config/locales/en.yml
254
259
  - config/routes.rb
255
260
  - db/migrate/20130415025010_add_delivery_date_to_orders.rb