spree_promo 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,10 +4,13 @@ module Spree
|
|
|
4
4
|
class CreateLineItems < PromotionAction
|
|
5
5
|
has_many :promotion_action_line_items, :foreign_key => :promotion_action_id
|
|
6
6
|
|
|
7
|
+
delegate :eligible?, :to => :promotion
|
|
8
|
+
|
|
7
9
|
attr_accessor :line_items_string
|
|
8
10
|
|
|
9
11
|
def perform(options = {})
|
|
10
12
|
return unless order = options[:order]
|
|
13
|
+
return unless eligible?(order)
|
|
11
14
|
promotion_action_line_items.each do |item|
|
|
12
15
|
current_quantity = order.quantity_of(item.variant)
|
|
13
16
|
if current_quantity < item.quantity
|
|
@@ -2,20 +2,27 @@ module Spree
|
|
|
2
2
|
class Promotion
|
|
3
3
|
module Rules
|
|
4
4
|
class FirstOrder < PromotionRule
|
|
5
|
+
attr_reader :user, :email
|
|
6
|
+
|
|
5
7
|
def eligible?(order, options = {})
|
|
6
|
-
user = order.try(:user) || options[:user]
|
|
7
|
-
|
|
8
|
-
return orders_by_email(user.email) == 0
|
|
9
|
-
elsif order.email
|
|
10
|
-
return orders_by_email(order.email) == 0
|
|
11
|
-
end
|
|
8
|
+
@user = order.try(:user) || options[:user]
|
|
9
|
+
@email = order.email
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
if user || email
|
|
12
|
+
completed_orders.blank? || (completed_orders.first == order)
|
|
13
|
+
else
|
|
14
|
+
false
|
|
15
|
+
end
|
|
14
16
|
end
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
private
|
|
19
|
+
def completed_orders
|
|
20
|
+
user ? user.orders.complete : orders_by_email
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def orders_by_email
|
|
24
|
+
Spree::Order.where(:email => email).complete
|
|
25
|
+
end
|
|
19
26
|
end
|
|
20
27
|
end
|
|
21
28
|
end
|
|
@@ -4,14 +4,7 @@ module Spree
|
|
|
4
4
|
class UserLoggedIn < PromotionRule
|
|
5
5
|
|
|
6
6
|
def eligible?(order, options = {})
|
|
7
|
-
|
|
8
|
-
# we need to rely on the controller already having done this for us.
|
|
9
|
-
|
|
10
|
-
# The thinking is that the controller should have some sense of what state
|
|
11
|
-
# we should be in before firing events,
|
|
12
|
-
# so the controller will have to set this field.
|
|
13
|
-
|
|
14
|
-
return options && options[:user_signed_in]
|
|
7
|
+
return order.try(:user).try(:anonymous?) == false
|
|
15
8
|
end
|
|
16
9
|
|
|
17
10
|
end
|
data/config/routes.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_promo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.5
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-06-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: spree_core
|
|
@@ -18,7 +18,7 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - '='
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 1.2.
|
|
21
|
+
version: 1.2.5
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - '='
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 1.2.
|
|
29
|
+
version: 1.2.5
|
|
30
30
|
description: Required dependency for Spree
|
|
31
31
|
email: david@spreecommerce.com
|
|
32
32
|
executables: []
|
|
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
132
132
|
version: '0'
|
|
133
133
|
segments:
|
|
134
134
|
- 0
|
|
135
|
-
hash:
|
|
135
|
+
hash: -1350861266024134315
|
|
136
136
|
requirements:
|
|
137
137
|
- none
|
|
138
138
|
rubyforge_project:
|