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 +1 -1
- data/app/models/price_observer.rb +4 -10
- data/lib/price_change_job.rb +19 -0
- data/spree_order_price_sync.gemspec +2 -1
- metadata +40 -37
data/Versionfile
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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:
|
|
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:
|
|
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.
|
|
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
|
-
|