piggybak 0.6.3 → 0.6.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.
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/app/models/piggybak/line_item.rb +10 -0
- data/app/models/piggybak/order.rb +0 -12
- data/app/views/rails_admin/main/_order_details.html.erb +4 -18
- data/db/migrate/20121018213421_drop_sort_from_line_items.rb +9 -0
- data/lib/piggybak.rb +15 -4
- data/lib/piggybak/config.rb +10 -5
- data/lib/piggybak/version.rb +1 -1
- metadata +5 -4
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -7,6 +7,8 @@ module Piggybak
|
|
7
7
|
validates_presence_of :price, :description, :quantity
|
8
8
|
validates_numericality_of :quantity, :only_integer => true, :greater_than_or_equal_to => 0
|
9
9
|
|
10
|
+
default_scope :order => 'created_at ASC'
|
11
|
+
|
10
12
|
after_create :decrease_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
|
11
13
|
after_destroy :increase_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
|
12
14
|
after_update :update_inventory, :if => Proc.new { |line_item| line_item.line_item_type == 'sellable' && !line_item.sellable.unlimited_inventory }
|
@@ -17,9 +19,13 @@ module Piggybak
|
|
17
19
|
before_validation :preprocess
|
18
20
|
before_destroy :destroy_associated_item
|
19
21
|
|
22
|
+
# TODO: Possibly replace all initializers below with database defaults
|
20
23
|
def initialize_line_item
|
21
24
|
self.quantity ||= 1
|
22
25
|
self.price ||= 0
|
26
|
+
|
27
|
+
# TODO: Fix this, should default in database
|
28
|
+
self.created_at ||= Time.now
|
23
29
|
end
|
24
30
|
|
25
31
|
def preprocess
|
@@ -129,5 +135,9 @@ module Piggybak
|
|
129
135
|
self.sellable.update_inventory(quantity_diff)
|
130
136
|
end
|
131
137
|
end
|
138
|
+
|
139
|
+
def self.sorted_line_item_types
|
140
|
+
Piggybak::Config.line_item_types.sort { |a, b| a[1][:sort] <=> b[1][:sort] }.collect { |a| a[0] }
|
141
|
+
end
|
132
142
|
end
|
133
143
|
end
|
@@ -193,17 +193,5 @@ module Piggybak
|
|
193
193
|
def admin_label
|
194
194
|
"Order ##{self.id}"
|
195
195
|
end
|
196
|
-
|
197
|
-
def subtotal
|
198
|
-
v = 0
|
199
|
-
|
200
|
-
self.line_items.select { |li| li.line_item_type == "sellable" }.each do |line_item|
|
201
|
-
if !line_item._destroy
|
202
|
-
v += line_item.price
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
v
|
207
|
-
end
|
208
196
|
end
|
209
197
|
end
|
@@ -2,30 +2,16 @@
|
|
2
2
|
N/A
|
3
3
|
<% else -%>
|
4
4
|
<table cellpadding="5" cellspacing="0">
|
5
|
+
<% Piggybak::LineItem.sorted_line_item_types.each do |type| -%>
|
5
6
|
<tr>
|
6
|
-
<td width="150"
|
7
|
-
<td><%= number_to_currency form.object.
|
8
|
-
</tr>
|
9
|
-
<tr>
|
10
|
-
<td>Shipping</td>
|
11
|
-
<td><%= number_to_currency form.object.shipment_charge %></td>
|
12
|
-
</tr>
|
13
|
-
<tr>
|
14
|
-
<td>Tax</td>
|
15
|
-
<td><%= number_to_currency form.object.tax_charge %></td>
|
16
|
-
</tr>
|
17
|
-
<tr>
|
18
|
-
<td>Adjustments</td>
|
19
|
-
<td><%= number_to_currency form.object.adjustment_charge %></td>
|
7
|
+
<td width="150"><%= type.to_s.pluralize.titleize %></td>
|
8
|
+
<td><%= number_to_currency form.object.send("#{type}_charge") %></td>
|
20
9
|
</tr>
|
10
|
+
<% end -%>
|
21
11
|
<tr>
|
22
12
|
<td>Total</td>
|
23
13
|
<td><%= number_to_currency form.object.total %></td>
|
24
14
|
</tr>
|
25
|
-
<tr>
|
26
|
-
<td>Payments</td>
|
27
|
-
<td><%= number_to_currency form.object.payment_charge %></td>
|
28
|
-
</tr>
|
29
15
|
<tr>
|
30
16
|
<td>Balance Due</td>
|
31
17
|
<td><%= number_to_currency form.object.total_due %></td>
|
data/lib/piggybak.rb
CHANGED
@@ -40,7 +40,7 @@ module Piggybak
|
|
40
40
|
plural_k = k.to_s.pluralize.to_sym
|
41
41
|
if v[:nested_attrs]
|
42
42
|
Piggybak::LineItem.class_eval do
|
43
|
-
# TODO: dependent destroy destroys all line items.
|
43
|
+
# TODO: dependent destroy destroys all line items. Fix and remove after_destroy on line items
|
44
44
|
has_one k, :class_name => v[:class_name] #, :dependent => :destroy
|
45
45
|
accepts_nested_attributes_for k
|
46
46
|
attr_accessible "#{k}_attributes".to_sym
|
@@ -51,10 +51,21 @@ module Piggybak
|
|
51
51
|
end
|
52
52
|
Piggybak::Order.class_eval do
|
53
53
|
define_method "#{k}_charge" do
|
54
|
-
|
54
|
+
# Scope doesn't work here for lookup of unsaved elements
|
55
|
+
# TODO: Figure out if we can fix, or specify behavior
|
56
|
+
charge = 0
|
57
|
+
self.line_items.each do |li|
|
58
|
+
next if li._destroy || li.line_item_type.to_sym != k
|
59
|
+
charge += li.price
|
60
|
+
end
|
61
|
+
charge
|
55
62
|
end
|
56
63
|
end
|
57
64
|
end
|
65
|
+
# Define method subtotal on order, alias to sellable_charge
|
66
|
+
Piggybak::Order.class_eval do
|
67
|
+
alias :subtotal :sellable_charge
|
68
|
+
end
|
58
69
|
end
|
59
70
|
|
60
71
|
initializer "piggybak.rails_admin_config" do |app|
|
@@ -62,8 +73,8 @@ module Piggybak
|
|
62
73
|
plural_k = k.to_s.pluralize.to_sym
|
63
74
|
if v[:nested_attrs]
|
64
75
|
Piggybak::LineItem.class_eval do
|
65
|
-
# TODO:
|
66
|
-
has_one k, :class_name => v[:class_name]
|
76
|
+
# TODO: See above
|
77
|
+
has_one k, :class_name => v[:class_name]
|
67
78
|
accepts_nested_attributes_for k
|
68
79
|
attr_accessible "#{k}_attributes".to_sym
|
69
80
|
end
|
data/lib/piggybak/config.rb
CHANGED
@@ -26,22 +26,27 @@ module Piggybak
|
|
26
26
|
|
27
27
|
@line_item_types = { :sellable => { :visible => true,
|
28
28
|
:fields => ["sellable_id", "quantity"],
|
29
|
-
:allow_destroy => true
|
29
|
+
:allow_destroy => true,
|
30
|
+
:sort => 1 },
|
30
31
|
:payment => { :visible => true,
|
31
32
|
:nested_attrs => true,
|
32
33
|
:fields => ["payment"],
|
33
34
|
:allow_destroy => false,
|
34
|
-
:class_name => "::Piggybak::Payment"
|
35
|
+
:class_name => "::Piggybak::Payment",
|
36
|
+
:sort => 5 },
|
35
37
|
:shipment => { :visible => true,
|
36
38
|
:nested_attrs => true,
|
37
39
|
:fields => ["shipment"],
|
38
40
|
:allow_destroy => true,
|
39
|
-
:class_name => "::Piggybak::Shipment"
|
41
|
+
:class_name => "::Piggybak::Shipment",
|
42
|
+
:sort => 2 },
|
40
43
|
:adjustment => { :visible => true,
|
41
44
|
:fields => ["description", "price"],
|
42
|
-
:allow_destroy => true
|
45
|
+
:allow_destroy => true,
|
46
|
+
:sort => 4 },
|
43
47
|
:tax => { :visible => false,
|
44
|
-
:allow_destroy => false
|
48
|
+
:allow_destroy => false,
|
49
|
+
:sort => 3 }
|
45
50
|
}
|
46
51
|
|
47
52
|
@default_country = "US"
|
data/lib/piggybak/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: piggybak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-10-
|
14
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- db/migrate/20120716191225_add_masked_credit_card_numbers.rb
|
165
165
|
- db/migrate/20111227150106_create_orders.rb
|
166
166
|
- db/migrate/20111228231806_create_payment_methods.rb
|
167
|
+
- db/migrate/20121018213421_drop_sort_from_line_items.rb
|
167
168
|
- db/migrate/20111228231838_create_shipments.rb
|
168
169
|
- db/migrate/20120104020930_populate_countries_and_states.rb
|
169
170
|
- db/migrate/20111227213558_create_variants.rb
|
@@ -207,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
207
208
|
version: '0'
|
208
209
|
segments:
|
209
210
|
- 0
|
210
|
-
hash:
|
211
|
+
hash: 32961448645574721
|
211
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
213
|
none: false
|
213
214
|
requirements:
|
@@ -216,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
217
|
version: '0'
|
217
218
|
segments:
|
218
219
|
- 0
|
219
|
-
hash:
|
220
|
+
hash: 32961448645574721
|
220
221
|
requirements: []
|
221
222
|
rubyforge_project:
|
222
223
|
rubygems_version: 1.8.23
|