spree_promo 0.70.3 → 0.70.4

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.
@@ -0,0 +1,13 @@
1
+ CheckoutController.class_eval do
2
+ before_filter :apply_pending_promotions
3
+
4
+ def apply_pending_promotions
5
+ # apply all promotions that may have been triggered before theorder had been created
6
+ if current_user
7
+ current_user.pending_promotions.each do |promotional|
8
+ promotional.promotion.activate(:order => @order, :user => current_user)
9
+ promotional.destroy
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ class PendingPromotion < ActiveRecord::Base
2
+ belongs_to :user
3
+ belongs_to :promotion
4
+ end
@@ -12,7 +12,7 @@ class Promotion < Activator
12
12
  alias_method field, "preferred_#{field}"
13
13
  alias_method "#{field}=", "preferred_#{field}="
14
14
  end
15
-
15
+
16
16
  has_many :promotion_rules, :foreign_key => 'activator_id', :autosave => true, :dependent => :destroy
17
17
  alias_method :rules, :promotion_rules
18
18
  accepts_nested_attributes_for :promotion_rules
@@ -87,7 +87,7 @@ class Promotion < Activator
87
87
  end
88
88
 
89
89
  def credits
90
- Adjustment.where(:originator_id => actions.map(&:id))
90
+ Adjustment.where(:originator_type => 'Promotion', :originator_id => actions.map(&:id))
91
91
  end
92
92
 
93
93
  def credits_count
@@ -0,0 +1,4 @@
1
+ User.class_eval do
2
+ has_many :pending_promotions
3
+ has_many :promotions, :through => :pending_promotions
4
+ end
@@ -0,0 +1,11 @@
1
+ class CreatePendingPromotions < ActiveRecord::Migration
2
+ def change
3
+ create_table :pending_promotions do |t|
4
+ t.references :user
5
+ t.references :promotion
6
+ end
7
+
8
+ add_index :pending_promotions, :user_id
9
+ add_index :pending_promotions, :promotion_id
10
+ end
11
+ end
data/lib/spree_promo.rb CHANGED
@@ -54,5 +54,18 @@ module SpreePromo
54
54
  Promotion::Actions::CreateLineItems]
55
55
  end
56
56
 
57
+ config.after_initialize do
58
+ ActiveSupport::Notifications.subscribe('spree.user.signup') do |*args|
59
+ event_name, start_time, end_time, id, payload = args
60
+
61
+ # Used for storing promotions before order has been created
62
+ # Fixes #836
63
+ ::Promotion.active.event_name_starts_with('spree.user.signup').each do |activator|
64
+ if activator.eligible?(nil, payload) && payload[:user]
65
+ payload[:user].promotions << activator
66
+ end
67
+ end
68
+ end
69
+ end
57
70
  end
58
71
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_promo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 257
4
+ hash: 271
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 70
9
- - 3
10
- version: 0.70.3
9
+ - 4
10
+ version: 0.70.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - David North
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-22 00:00:00 Z
18
+ date: 2012-03-04 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -23,12 +23,12 @@ dependencies:
23
23
  requirements:
24
24
  - - "="
25
25
  - !ruby/object:Gem::Version
26
- hash: 257
26
+ hash: 271
27
27
  segments:
28
28
  - 0
29
29
  - 70
30
- - 3
31
- version: 0.70.3
30
+ - 4
31
+ version: 0.70.4
32
32
  requirement: *id001
33
33
  type: :runtime
34
34
  prerelease: false
@@ -39,12 +39,12 @@ dependencies:
39
39
  requirements:
40
40
  - - "="
41
41
  - !ruby/object:Gem::Version
42
- hash: 257
42
+ hash: 271
43
43
  segments:
44
44
  - 0
45
45
  - 70
46
- - 3
47
- version: 0.70.3
46
+ - 4
47
+ version: 0.70.4
48
48
  requirement: *id002
49
49
  type: :runtime
50
50
  prerelease: false
@@ -68,11 +68,13 @@ files:
68
68
  - app/controllers/admin/promotion_actions_controller.rb
69
69
  - app/controllers/admin/promotion_rules_controller.rb
70
70
  - app/controllers/admin/promotions_controller.rb
71
+ - app/controllers/checkout_controller_decorator.rb
71
72
  - app/controllers/content_controller_decorator.rb
72
73
  - app/controllers/orders_controller_decorator.rb
73
74
  - app/models/adjustment_decorator.rb
74
75
  - app/models/calculator/free_shipping.rb
75
76
  - app/models/order_decorator.rb
77
+ - app/models/pending_promotion.rb
76
78
  - app/models/product_decorator.rb
77
79
  - app/models/product_group_decorator.rb
78
80
  - app/models/promotion/actions/create_adjustment.rb
@@ -87,6 +89,7 @@ files:
87
89
  - app/models/promotion_action.rb
88
90
  - app/models/promotion_action_line_item.rb
89
91
  - app/models/promotion_rule.rb
92
+ - app/models/user_decorator.rb
90
93
  - app/overrides/promo_admin_tabs.rb
91
94
  - app/overrides/promo_coupon_code_field.rb
92
95
  - app/overrides/promo_product_properties.rb
@@ -131,6 +134,7 @@ files:
131
134
  - db/migrate/20110331094351_promotion_changes_to_subclass_of_activator.rb
132
135
  - db/migrate/20110404123358_create_promotion_actions.rb
133
136
  - db/migrate/20110601202923_create_promotion_action_line_items.rb
137
+ - db/migrate/20120119024708_create_pending_promotions.rb
134
138
  homepage: http://spreecommerce.com
135
139
  licenses: []
136
140