spree_order_price_sync 0.60.1 → 0.60.2

Sign up to get free protection for your applications and to get access to all the features.
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
-