piggybak 0.6.34 → 0.7.0

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -14
  3. data/Gemfile.lock +18 -149
  4. data/README.md +6 -0
  5. data/app/assets/javascripts/piggybak/piggybak.js +18 -15
  6. data/app/assets/javascripts/piggybak/piggybak.states.js +7 -4
  7. data/app/assets/javascripts/rails_admin/custom/ui.js.erb +33 -28
  8. data/app/controllers/piggybak/orders_controller.rb +15 -3
  9. data/app/models/piggybak/address.rb +8 -11
  10. data/app/models/piggybak/country.rb +3 -4
  11. data/app/models/piggybak/line_item.rb +3 -3
  12. data/app/models/piggybak/order.rb +11 -6
  13. data/app/models/piggybak/order_note.rb +2 -3
  14. data/app/models/piggybak/payment.rb +4 -7
  15. data/app/models/piggybak/payment_method.rb +2 -4
  16. data/app/models/piggybak/payment_method_value.rb +2 -4
  17. data/app/models/piggybak/sellable.rb +4 -7
  18. data/app/models/piggybak/shipment.rb +2 -4
  19. data/app/models/piggybak/shipping_calculator/flat_rate.rb +1 -1
  20. data/app/models/piggybak/shipping_calculator/range.rb +1 -1
  21. data/app/models/piggybak/shipping_method +0 -0
  22. data/app/models/piggybak/shipping_method.rb +3 -6
  23. data/app/models/piggybak/shipping_method_value.rb +2 -3
  24. data/app/models/piggybak/state.rb +0 -1
  25. data/app/models/piggybak/tax_calculator/percent.rb +6 -10
  26. data/app/models/piggybak/tax_method.rb +5 -6
  27. data/app/models/piggybak/tax_method_value.rb +2 -3
  28. data/app/views/piggybak/orders/_user_details.html.erb +2 -2
  29. data/app/views/rails_admin/main/{_copy_from_billing.html.haml → _copy_from_billing.html.erb} +0 -0
  30. data/app/views/rails_admin/main/_location_select.html.haml +2 -4
  31. data/app/views/rails_admin/main/_polymorphic_nested.html.haml +1 -25
  32. data/config/routes.rb +17 -19
  33. data/db/migrate/20140325133841_upgrade_piggybak_tables.rb +19 -0
  34. data/lib/piggybak.rb +1 -477
  35. data/lib/piggybak/config.rb +2 -0
  36. data/lib/piggybak/engine.rb +481 -0
  37. data/lib/piggybak/version.rb +1 -1
  38. metadata +6 -46
  39. data/lib/currency.rb +0 -5
@@ -1,24 +1,22 @@
1
1
  Piggybak::Engine.routes.draw do
2
- scope :module => "piggybak" do
3
- # cart actions
4
- match "/cart" => "cart#show", :as => :cart
5
- match "/cart/add" => "cart#add", :via => :post, :as => :cart_add
6
- match "/cart/update" => "cart#update", :via => :post, :as => :cart_update
7
- match "/cart/remove/:item" => "cart#remove", :via => :delete, :as => :remove_item
2
+ # cart actions
3
+ get '/cart' => 'cart#show'
4
+ post '/cart/add' => 'cart#add', as: :cart_add
5
+ post '/cart/update' => 'cart#update', as: :cart_update
6
+ delete '/cart/remove/:item' => 'cart#remove', as: :remove_item
8
7
 
9
- # order actions
10
- root :to => 'orders#submit', :as => :orders, :via => [:get, :post]
11
- match "/receipt" => "orders#receipt", :as => :receipt
12
- match "/orders/shipping" => "orders#shipping", :as => :orders_shipping
13
- match "/orders/tax" => "orders#tax", :as => :orders_tax
14
- match "/orders/geodata" => "orders#geodata", :as => :orders_geodata
8
+ # order actions
9
+ root 'orders#submit', as: :orders, via: [:get, :post]
10
+ get '/receipt' => 'orders#receipt', as: :receipt
11
+ get '/orders/shipping' => 'orders#shipping', as: :orders_shipping
12
+ get '/orders/tax' => 'orders#tax', as: :orders_tax
13
+ get '/orders/geodata' => 'orders#geodata', as: :orders_geodata
15
14
 
16
- # list orders
17
- match "/orders" => "orders#list", :as => :orders_list
15
+ # list orders
16
+ get '/orders' => 'orders#list', as: :orders_list
18
17
 
19
- # admin actions
20
- match "/admin/orders/:id/email" => "orders#email", :as => :email_order
21
- match "/admin/orders/:id/download" => "orders#download", :as => :download_order, :format => "txt"
22
- match "/admin/orders/:id/cancel" => "orders#cancel", :as => :cancel_order
23
- end
18
+ # admin actions
19
+ get '/admin/orders/:id/email' => 'orders#email', as: :email_order
20
+ get '/admin/orders/:id/download' => 'orders#download', as: :download_order, :format => 'txt'
21
+ get '/admin/orders/:id/cancel' => 'orders#cancel', as: :cancel_order
24
22
  end
@@ -0,0 +1,19 @@
1
+ class UpgradePiggybakTables < ActiveRecord::Migration
2
+ def change
3
+ rename_table :orders, :piggybak_orders
4
+ rename_table :addresses, :piggybak_addresses
5
+ rename_table :line_items, :piggybak_line_items
6
+ rename_table :shipping_methods, :piggybak_shipping_methods
7
+ rename_table :payment_methods, :piggybak_payment_methods
8
+ rename_table :payments, :piggybak_payments
9
+ rename_table :shipments, :piggybak_shipments
10
+ rename_table :shipping_method_values, :piggybak_shipping_method_values
11
+ rename_table :payment_method_values, :piggybak_payment_method_values
12
+ rename_table :tax_methods, :piggybak_tax_methods
13
+ rename_table :countries, :piggybak_countries
14
+ rename_table :states, :piggybak_states
15
+ rename_table :tax_method_values, :piggybak_tax_method_values
16
+ rename_table :order_notes, :piggybak_order_notes
17
+ rename_table :sellables, :piggybak_sellables
18
+ end
19
+ end
@@ -1,10 +1,10 @@
1
+ require 'piggybak/engine'
1
2
  require 'piggybak/config'
2
3
  require 'acts_as_sellable'
3
4
  require 'acts_as_orderer'
4
5
  require 'acts_as_changer'
5
6
  require 'active_merchant'
6
7
  require 'formatted_changes'
7
- require 'currency'
8
8
  require 'mask_submissions'
9
9
  require 'rack-ssl-enforcer'
10
10
 
@@ -23,480 +23,4 @@ module Piggybak
23
23
  def self.reset
24
24
  Piggybak::Config.reset
25
25
  end
26
-
27
- class Engine < Rails::Engine
28
- initializer "piggybak.ssl_enforcer" do |app|
29
- # Note: If your main application also uses rack-ssl-enforcer,
30
- # append to Piggyak.config.extra_secure_paths
31
- # inside a before_initialize block
32
- if Piggybak.config.secure_checkout
33
- paths = [/^#{Piggybak.config.secure_prefix}\/checkout\/$/,
34
- "#{Piggybak.config.secure_prefix}/checkout/orders/tax",
35
- "#{Piggybak.config.secure_prefix}/checkout/orders/shipping",
36
- "#{Piggybak.config.secure_prefix}/checkout/orders/geodata",
37
- /^\/users$/,
38
- "/users/sign_in",
39
- "/users/sign_out",
40
- "/users/sign_up"]
41
- Piggybak.config.extra_secure_paths.each do |extra_path|
42
- paths << [/^#{Piggybak.config.secure_prefix}#{extra_path}/]
43
- end
44
- app.config.middleware.use Rack::SslEnforcer,
45
- :only => paths,
46
- :strict => true
47
- end
48
- end
49
-
50
- initializer "piggybak.add_helper" do |app|
51
- ApplicationController.class_eval do
52
- helper :piggybak
53
- end
54
- end
55
-
56
- initializer "piggybak.precompile_hook", :group => :all do |app|
57
- app.config.assets.precompile += ['piggybak/piggybak-application.js']
58
- end
59
-
60
- # Needed for development
61
- config.to_prepare do
62
- Piggybak.config.line_item_types.each do |k, v|
63
- plural_k = k.to_s.pluralize.to_sym
64
- if v[:nested_attrs]
65
- Piggybak::LineItem.class_eval do
66
- # TODO: dependent destroy destroys all line items. Fix and remove after_destroy on line items
67
- has_one k, :class_name => v[:class_name] #, :dependent => :destroy
68
- accepts_nested_attributes_for k
69
- attr_accessible "#{k}_attributes".to_sym
70
- end
71
- end
72
- Piggybak::Order.class_eval do
73
- define_method "#{k}_charge" do
74
- self.line_items.send(plural_k).map(&:price).reduce(:+) || 0
75
- end
76
- end
77
- end
78
- Piggybak::Order.class_eval do
79
- has_many :line_items, :inverse_of => :order do
80
- Piggybak.config.line_item_types.each do |k, v|
81
- # Define proxy association method for line items
82
- # e.g. self.line_items.sellables
83
- # e.g. self.line_items.taxes
84
- define_method "#{k.to_s.pluralize}" do
85
- proxy_association.proxy.select { |li| li.line_item_type == "#{k}" && !li.marked_for_destruction? }
86
- end
87
- end
88
- end
89
- # Define method subtotal on order, alias to sellable_charge
90
- alias :subtotal :sellable_charge
91
- end
92
- end
93
-
94
- initializer "piggybak.rails_admin_config" do |app|
95
- Piggybak.config.line_item_types.each do |k, v|
96
- plural_k = k.to_s.pluralize.to_sym
97
- if v[:nested_attrs]
98
- Piggybak::LineItem.class_eval do
99
- # TODO: See above
100
- has_one k, :class_name => v[:class_name]
101
- accepts_nested_attributes_for k
102
- attr_accessible "#{k}_attributes".to_sym
103
- end
104
- end
105
- end
106
- RailsAdmin::Config.reset_model(Piggybak::LineItem)
107
-
108
- RailsAdmin.config do |config|
109
- config.label_methods << :admin_label
110
-
111
- config.model Piggybak::LineItem do
112
- label "Line Item"
113
- visible false
114
-
115
- edit do
116
- field :line_item_type do
117
- label "Line Item Type"
118
- partial "polymorphic_nested"
119
- help ""
120
- end
121
- Piggybak.config.line_item_types.each do |k, v|
122
- if v[:nested_attrs]
123
- field k do
124
- active true
125
- end
126
- end
127
- end
128
- field :sellable_id, :enum do
129
- label "Sellable"
130
- help "Required"
131
- end
132
- field :price
133
- field :quantity
134
- field :description
135
- end
136
- end
137
-
138
- config.model Piggybak::Sellable do
139
- label "Sellable"
140
- visible false
141
- edit do
142
- field :sku
143
- field :description
144
- field :price
145
- field :active
146
- field :quantity
147
- field :unlimited_inventory do
148
- help "If true, backorders on this variant will be allowed, regardless of quantity on hand."
149
- end
150
- end
151
- end
152
-
153
- config.model Piggybak::Order do
154
- label "Order"
155
- navigation_label "Orders"
156
- weight 1
157
- object_label_method :admin_label
158
-
159
- show do
160
- field :status
161
- field :total do
162
- formatted_value do
163
- "$%.2f" % value
164
- end
165
- end
166
- field :total_due do
167
- formatted_value do
168
- "$%.2f" % value
169
- end
170
- end
171
- field :created_at
172
- field :email
173
- field :phone
174
-
175
- field :user if defined?(User)
176
-
177
- field :line_items
178
- field :billing_address
179
- field :shipping_address
180
- field :order_notes do
181
- pretty_value do
182
- value.inject([]) { |arr, o| arr << o.details }.join("<br /><br />").html_safe
183
- end
184
- end
185
- field :ip_address
186
- field :user_agent
187
- end
188
- list do
189
- field :id
190
- field :billing_address do
191
- label "Billing Name"
192
- pretty_value do
193
- "#{value.lastname}, #{value.firstname}"
194
- end
195
- searchable [:firstname, :lastname]
196
- sortable false
197
- end
198
- field :total do
199
- formatted_value do
200
- "$%.2f" % value
201
- end
202
- end
203
- field :created_at do
204
- strftime_format "%d-%m-%Y"
205
- end
206
- field :status
207
- end
208
- edit do
209
- field :recorded_changer, :hidden do
210
- partial "recorded_changer"
211
- end
212
- field :status do
213
- visible do
214
- !bindings[:object].new_record?
215
- end
216
- read_only do
217
- !bindings[:object].new_record?
218
- end
219
- end
220
-
221
- field :details do
222
- partial "order_details"
223
- help ""
224
- visible do
225
- !bindings[:object].new_record?
226
- end
227
- end
228
-
229
- field :user if defined?(User)
230
- field :email
231
- field :phone
232
- field :ip_address do
233
- partial "ip_address"
234
- end
235
- field :user_agent do
236
- read_only true
237
- end
238
- field :billing_address do
239
- active true
240
- help "Required"
241
- end
242
- field :shipping_address do
243
- active true
244
- help "Required"
245
- end
246
- field :line_items do
247
- active true
248
- help ""
249
- end
250
- field :order_notes do
251
- active true
252
- end
253
- end
254
- end
255
-
256
- config.model Piggybak::OrderNote do
257
- visible false
258
- list do
259
- field :user if defined?(User)
260
- field :note
261
- field :created_at
262
- end
263
- edit do
264
- field :details do
265
- label "Order Note"
266
- help ""
267
- visible do
268
- !bindings[:object].new_record?
269
- end
270
- read_only do
271
- !bindings[:object].new_record?
272
- end
273
- end
274
- field :user_id, :hidden do
275
- default_value do
276
- bindings[:view]._current_user.id
277
- end
278
- end
279
- field :note do
280
- visible do
281
- bindings[:object].new_record?
282
- end
283
- end
284
- end
285
- end
286
-
287
- config.model Piggybak::Address do
288
- label "Address"
289
- visible false
290
-
291
- edit do
292
- field :copy_from_billing do
293
- visible do
294
- bindings[:object].respond_to?(:is_shipping) && bindings[:object].is_shipping
295
- end
296
- partial "copy_from_billing"
297
- label "Help"
298
- help "Copies address from billing to shipping."
299
- end
300
- field :firstname
301
- field :lastname
302
- field :address1
303
- field :address2
304
- field :city
305
- field :zip
306
- field :location do
307
- partial "location_select"
308
- help "Required"
309
- label "Country & State"
310
- end
311
- end
312
- end
313
-
314
- config.model Piggybak::Shipment do
315
- visible false
316
-
317
- edit do
318
- field :shipping_method do
319
- read_only do
320
- bindings[:object].status == "shipped"
321
- end
322
- end
323
- field :status do
324
- label "Shipping Status"
325
- end
326
- end
327
- end
328
-
329
- config.model Piggybak::Adjustment do
330
- visible false
331
- end
332
-
333
- config.model Piggybak::Payment do
334
- visible false
335
-
336
- edit do
337
- field :payment_method do
338
- read_only do
339
- !bindings[:object].new_record?
340
- end
341
- end
342
- field :masked_number do
343
- help "Required"
344
- label "Number"
345
- visible do
346
- !bindings[:object].new_record?
347
- end
348
- read_only do
349
- !bindings[:object].new_record?
350
- end
351
- end
352
- field :number do
353
- help "Required"
354
- visible do
355
- bindings[:object].new_record?
356
- end
357
- end
358
- field :verification_value do
359
- help "Required"
360
- visible do
361
- bindings[:object].new_record?
362
- end
363
- end
364
- field :month do
365
- label "Exp. Month"
366
- read_only do
367
- !bindings[:object].new_record?
368
- end
369
- end
370
- field :year do
371
- label "Exp. Year"
372
- read_only do
373
- !bindings[:object].new_record?
374
- end
375
- end
376
- end
377
- end
378
-
379
- config.model Piggybak::PaymentMethod do
380
- navigation_label "Configuration"
381
- weight 2
382
- list do
383
- field :description
384
- field :active
385
- end
386
- edit do
387
- field :description do
388
- help "This is the label the user sees."
389
- end
390
- field :klass do
391
- label "Calculator"
392
- end
393
- field :active
394
- field :payment_method_values do
395
- label "Metadata"
396
- end
397
- end
398
- end
399
-
400
- config.model Piggybak::PaymentMethodValue do
401
- visible false
402
- edit do
403
- include_all_fields
404
- field :payment_method do
405
- visible false
406
- end
407
- end
408
- end
409
-
410
- config.model Piggybak::ShippingMethod do
411
- navigation_label "Configuration"
412
- edit do
413
- field :description do
414
- help "This is the label the user sees."
415
- end
416
- field :klass do
417
- label "Calculator"
418
- end
419
- field :active
420
- field :shipping_method_values do
421
- label "Metadata"
422
- end
423
- end
424
- list do
425
- field :description
426
- field :active
427
- end
428
- end
429
-
430
- config.model Piggybak::ShippingMethodValue do
431
- visible false
432
- edit do
433
- include_all_fields
434
- field :shipping_method do
435
- visible false
436
- end
437
- end
438
- end
439
-
440
- config.model Piggybak::TaxMethod do
441
- navigation_label "Configuration"
442
- edit do
443
- field :description
444
- field :klass do
445
- label "Calculator"
446
- end
447
- field :active
448
- field :tax_method_values do
449
- label "Metadata"
450
- end
451
- end
452
- list do
453
- field :description
454
- field :active
455
- end
456
- end
457
-
458
- config.model Piggybak::TaxMethodValue do
459
- visible false
460
- edit do
461
- include_all_fields
462
- field :tax_method do
463
- visible false
464
- end
465
- end
466
- end
467
-
468
- config.model Piggybak::Country do
469
- label "Countries"
470
- navigation_label "Geodata"
471
- weight 3
472
- list do
473
- sort_by :name
474
- field :name
475
- field :abbr
476
- end
477
- edit do
478
- field :name
479
- field :abbr
480
- field :active_shipping
481
- field :active_billing
482
- end
483
- end
484
-
485
- config.model Piggybak::State do
486
- navigation_label "Geodata"
487
- label "States"
488
- list do
489
- field :name
490
- field :abbr
491
- field :country
492
- end
493
- edit do
494
- field :name
495
- field :abbr
496
- field :country
497
- end
498
- end
499
- end
500
- end
501
- end
502
26
  end