spree_order_price_sync 0.60.1 → 0.60.2

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.
data/Versionfile CHANGED
@@ -6,6 +6,6 @@
6
6
  # "0.50.x" => { :branch => "master" }
7
7
  # "0.40.x" => { :tag => "v1.0.0", :version => "1.0.0" }
8
8
 
9
- "0.60.x" => { :branch => "master" }
9
+ "0.60.x" => { :branch => "0-60-stable" }
10
10
  "0.11.x" => { :branch => "0.11-stable" }
11
11
 
@@ -1,16 +1,10 @@
1
+ require 'price_change_job'
2
+ require 'delayed_job'
3
+
1
4
  class PriceObserver < ActiveRecord::Observer
2
5
  observe Product, Variant
3
6
 
4
7
  def after_save(record)
5
- inactive_states = YAML.load Spree::Config.get(:order_price_sync_inactive_states_list)
6
- to_update = Order.all.reject{|o| inactive_states.include? o.state }.collect {|o| o.line_items }.flatten.select{|i| i.variant_id == record.id }
7
- to_update.each do |l|
8
- if l.price != record.price
9
- l.price = record.price
10
- l.save
11
- l.order.update_totals
12
- l.order.save
13
- end
14
- end
8
+ Delayed::Job.enqueue PriceChangeJob.new(record)
15
9
  end
16
10
  end
@@ -0,0 +1,19 @@
1
+ class PriceChangeJob < Struct.new(:record)
2
+ def perform
3
+ inactive_states = YAML.load Spree::Config.get(:order_price_sync_inactive_states_list)
4
+ to_update = LineItem.joins(:order).where(:variant_id => record).where("orders.state not in (?)", inactive_states)
5
+ to_update.each do |l|
6
+ puts "Invoking with #{l.inspect}"
7
+ if l.price != record.price
8
+ puts "Price changed #{l.price}"
9
+ item = LineItem.find(l.id)
10
+ item.price = record.price
11
+ puts item.save
12
+
13
+ order = item.order
14
+ order.update_totals
15
+ order.save
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.name = 'spree_order_price_sync'
4
- s.version = '0.60.1'
4
+ s.version = '0.60.2'
5
5
  s.summary = 'Updates existing line items in unfinished orders when product prices change.'
6
6
  s.description = ''
7
7
  s.author = 'Christopher Maujean'
@@ -13,4 +13,5 @@ Gem::Specification.new do |s|
13
13
  s.requirements << 'none'
14
14
 
15
15
  s.add_dependency('spree_core', '>= 0.60.1')
16
+ s.add_dependency('delayed_job')
16
17
  end
metadata CHANGED
@@ -1,77 +1,80 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spree_order_price_sync
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.60.2
4
5
  prerelease:
5
- version: 0.60.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Christopher Maujean
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-08 00:00:00 -07:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: spree_core
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2161537520 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
24
21
  version: 0.60.1
25
22
  type: :runtime
26
- version_requirements: *id001
27
- description: ""
23
+ prerelease: false
24
+ version_requirements: *2161537520
25
+ - !ruby/object:Gem::Dependency
26
+ name: delayed_job
27
+ requirement: &2161536180 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2161536180
36
+ description: ''
28
37
  email: christopher@azimuthonline.com
29
38
  executables: []
30
-
31
39
  extensions: []
32
-
33
40
  extra_rdoc_files: []
34
-
35
- files:
41
+ files:
36
42
  - .gitignore
37
43
  - LICENSE
38
44
  - README.markdown
39
45
  - Rakefile
40
46
  - Versionfile
41
47
  - app/models/price_observer.rb
48
+ - lib/price_change_job.rb
42
49
  - lib/spree_order_price_sync.rb
43
50
  - lib/spree_order_price_sync_hooks.rb
44
51
  - lib/tasks/install.rake
45
52
  - lib/tasks/spree_order_price_sync.rake
46
53
  - spec/spec_helper.rb
47
54
  - spree_order_price_sync.gemspec
48
- has_rdoc: true
49
55
  homepage:
50
56
  licenses: []
51
-
52
57
  post_install_message:
53
58
  rdoc_options: []
54
-
55
- require_paths:
59
+ require_paths:
56
60
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
61
+ required_ruby_version: !ruby/object:Gem::Requirement
58
62
  none: false
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
68
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
69
- requirements:
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements:
70
74
  - none
71
75
  rubyforge_project:
72
- rubygems_version: 1.6.2
76
+ rubygems_version: 1.8.10
73
77
  signing_key:
74
78
  specification_version: 3
75
79
  summary: Updates existing line items in unfinished orders when product prices change.
76
80
  test_files: []
77
-