caboose-store 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/caboose/main.js +8 -0
  3. data/app/assets/javascripts/caboose_store/admin.js +0 -19
  4. data/app/assets/javascripts/caboose_store/admin_products.js +3 -4
  5. data/app/assets/javascripts/caboose_store/application.js +6 -5
  6. data/app/assets/javascripts/caboose_store/cart.js.bak +258 -0
  7. data/app/assets/javascripts/caboose_store/checkout.js +151 -0
  8. data/app/assets/javascripts/caboose_store/config.js +83 -0
  9. data/app/assets/javascripts/caboose_store/jquery-ui-multisortable.js +254 -0
  10. data/app/assets/javascripts/caboose_store/jquery-ui.js +3572 -0
  11. data/app/assets/javascripts/caboose_store/main.js +20 -0
  12. data/app/assets/javascripts/caboose_store/modules/cart.js +167 -0
  13. data/app/assets/javascripts/caboose_store/modules/checkout.js +313 -0
  14. data/app/assets/javascripts/caboose_store/modules/product.js +282 -0
  15. data/app/assets/stylesheets/caboose_store/admin.css +3 -3
  16. data/app/assets/stylesheets/caboose_store/application.css +2 -2
  17. data/app/assets/stylesheets/caboose_store/modal.css +1 -0
  18. data/app/assets/templates/caboose_store/cart/add_to_cart.jst.ejs +7 -0
  19. data/app/assets/templates/caboose_store/cart/line_items.jst.ejs +41 -0
  20. data/app/assets/templates/caboose_store/checkout/address.jst.ejs +53 -0
  21. data/app/assets/templates/caboose_store/checkout/forms/guest.jst.ejs +8 -0
  22. data/app/assets/templates/caboose_store/checkout/forms/register.jst.ejs +11 -0
  23. data/app/assets/templates/caboose_store/checkout/forms/signin.jst.ejs +7 -0
  24. data/app/assets/templates/caboose_store/checkout/line_items.jst.ejs +32 -0
  25. data/app/assets/templates/caboose_store/checkout/login.jst.ejs +21 -0
  26. data/app/assets/templates/caboose_store/checkout/payment.jst.ejs +5 -0
  27. data/app/assets/templates/caboose_store/checkout/shipping.jst.ejs +18 -0
  28. data/app/assets/templates/caboose_store/product/images.jst.ejs +8 -0
  29. data/app/assets/templates/caboose_store/product/options.jst.ejs +19 -0
  30. data/app/controllers/caboose_store/application_controller.rb +1 -11
  31. data/app/controllers/caboose_store/cart_controller.rb +36 -44
  32. data/app/controllers/caboose_store/cart_controller.rb.bak +169 -0
  33. data/app/controllers/caboose_store/categories_controller.rb +72 -92
  34. data/app/controllers/caboose_store/checkout_controller.rb +231 -151
  35. data/app/controllers/caboose_store/orders_controller.rb +235 -95
  36. data/app/controllers/caboose_store/product_images_controller.rb +1 -1
  37. data/app/controllers/caboose_store/products_controller.rb +275 -84
  38. data/app/controllers/caboose_store/reviews_controller.rb +1 -1
  39. data/app/controllers/caboose_store/variants_controller.rb +86 -20
  40. data/app/controllers/caboose_store/vendors_controller.rb +73 -0
  41. data/app/helpers/caboose_store/application_helper.rb +3 -41
  42. data/app/helpers/caboose_store/cart_helper.rb +0 -24
  43. data/app/helpers/caboose_store/categories_helper.rb +69 -25
  44. data/app/helpers/caboose_store/checkout_helper.rb +31 -0
  45. data/app/helpers/caboose_store/products_helper.rb +4 -80
  46. data/app/mailers/caboose_store/orders_mailer.rb +6 -13
  47. data/app/models/caboose_store/address.rb +5 -9
  48. data/app/models/caboose_store/caboose_store_plugin.rb +18 -7
  49. data/app/models/caboose_store/category.rb +66 -41
  50. data/app/models/caboose_store/category_membership.rb +1 -2
  51. data/app/models/caboose_store/customization_membership.rb +10 -0
  52. data/app/models/caboose_store/discount.rb +4 -2
  53. data/app/models/caboose_store/line_item.rb +77 -0
  54. data/app/models/caboose_store/message.rb +3 -5
  55. data/app/models/caboose_store/order.rb +153 -63
  56. data/app/models/caboose_store/order_discount.rb +1 -2
  57. data/app/models/caboose_store/order_pdf.rb +2 -4
  58. data/app/models/caboose_store/payment_processors/authorizenet.rb +20 -2
  59. data/app/models/caboose_store/payment_processors/base.rb +0 -2
  60. data/app/models/caboose_store/payment_processors/payscape.rb +91 -1
  61. data/app/models/caboose_store/product.rb +86 -30
  62. data/app/models/caboose_store/product_image.rb +50 -15
  63. data/app/models/caboose_store/product_image_variant.rb +3 -3
  64. data/app/models/caboose_store/review.rb +8 -8
  65. data/app/models/caboose_store/schema.rb +174 -119
  66. data/app/models/caboose_store/search_filter.rb +110 -115
  67. data/app/models/caboose_store/shipping_calculator.rb +51 -49
  68. data/app/models/caboose_store/tax_calculator.rb +2 -6
  69. data/app/models/caboose_store/tax_line.rb +1 -4
  70. data/app/models/caboose_store/variant.rb +77 -21
  71. data/app/models/caboose_store/vendor.rb +17 -2
  72. data/app/views/caboose_store/cart/index.html.erb +3 -18
  73. data/app/views/caboose_store/categories/admin_edit.html.erb +64 -67
  74. data/app/views/caboose_store/categories/admin_index.html.erb +7 -9
  75. data/app/views/caboose_store/categories/admin_new.html.erb +56 -39
  76. data/app/views/caboose_store/checkout/_address_form.html.erb +111 -0
  77. data/app/views/caboose_store/checkout/_billing_form.html.erb +47 -0
  78. data/app/views/caboose_store/checkout/_cart.html.erb +52 -0
  79. data/app/views/caboose_store/checkout/_order_discount.html.erb +40 -0
  80. data/app/views/caboose_store/checkout/_shipping_address.html.erb +10 -0
  81. data/app/views/caboose_store/checkout/_shipping_method.html.erb +2 -0
  82. data/app/views/caboose_store/checkout/_shipping_method_form.html.erb +21 -0
  83. data/app/views/caboose_store/checkout/billing.html.erb +4 -161
  84. data/app/views/caboose_store/checkout/discount.html.erb +5 -160
  85. data/app/views/caboose_store/checkout/empty.html.erb +2 -0
  86. data/app/views/caboose_store/checkout/error.html.erb +2 -0
  87. data/app/views/caboose_store/checkout/index.html.erb +30 -100
  88. data/app/views/caboose_store/checkout/login.html.erb +2 -0
  89. data/app/views/caboose_store/checkout/payment.html.erb +79 -0
  90. data/app/views/caboose_store/checkout/relay.html.erb +12 -0
  91. data/app/views/caboose_store/checkout/relay_postMessage.html.erb +19 -0
  92. data/app/views/caboose_store/checkout/shipping.html.erb +8 -83
  93. data/app/views/caboose_store/checkout/step_one.html.erb +15 -0
  94. data/app/views/caboose_store/checkout/step_two.html.erb +15 -0
  95. data/app/views/caboose_store/checkout/thanks.html.erb +5 -0
  96. data/app/views/caboose_store/layouts/_footer.html.erb +1 -1
  97. data/app/views/caboose_store/orders/admin_edit.html.erb +101 -7
  98. data/app/views/caboose_store/orders/admin_index.html.erb +8 -8
  99. data/app/views/caboose_store/orders_mailer/customer_new_order.html.erb +0 -46
  100. data/app/views/caboose_store/orders_mailer/customer_status_updated.html.erb +0 -48
  101. data/app/views/caboose_store/orders_mailer/fulfillment_new_order.html.erb +0 -42
  102. data/app/views/caboose_store/orders_mailer/shipping_order_ready.html.erb +0 -45
  103. data/app/views/caboose_store/products/_admin_header.html.erb +7 -6
  104. data/app/views/caboose_store/products/_sort_options.html.erb +19 -0
  105. data/app/views/caboose_store/products/admin_add_upcs.html.erb +58 -0
  106. data/app/views/caboose_store/products/admin_edit_categories.html.erb +1 -1
  107. data/app/views/caboose_store/products/admin_edit_description.html.erb +2 -5
  108. data/app/views/caboose_store/products/admin_edit_general.html.erb +58 -1
  109. data/app/views/caboose_store/products/admin_edit_images.html.erb +3 -1
  110. data/app/views/caboose_store/products/admin_edit_variants.html.erb +13 -2
  111. data/app/views/caboose_store/products/admin_edit_variants_single.html.erb +14 -14
  112. data/app/views/caboose_store/products/admin_group_variants.html.erb +433 -0
  113. data/app/views/caboose_store/products/admin_index.html.erb +87 -39
  114. data/app/views/caboose_store/products/admin_sort.html copy.erb +155 -0
  115. data/app/views/caboose_store/products/admin_sort.html.erb +254 -0
  116. data/app/views/caboose_store/products/details.html.erb +1 -2
  117. data/app/views/caboose_store/variants/admin_edit.html.erb +18 -16
  118. data/app/views/caboose_store/variants/admin_group.html.erb +184 -0
  119. data/app/views/caboose_store/vendors/admin_edit.html.erb +24 -0
  120. data/app/views/caboose_store/vendors/admin_index.html.erb +30 -0
  121. data/app/views/caboose_store/vendors/admin_new.html.erb +34 -0
  122. data/config/routes.rb +65 -27
  123. data/lib/caboose-store/caboose_store_helper.rb +29 -30
  124. data/lib/caboose-store/engine.rb +73 -28
  125. data/lib/caboose-store/version.rb +1 -1
  126. data/lib/caboose-store.rb +16 -7
  127. data/lib/tasks/caboose-store.rake +0 -2
  128. metadata +54 -17
  129. data/app/assets/javascripts/caboose_store/modal.js +0 -52
  130. data/app/assets/javascripts/caboose_store/modal_integration.js +0 -25
  131. data/app/assets/javascripts/caboose_store/model.form.page.js +0 -30
  132. data/app/assets/javascripts/caboose_store/model.form.user.js +0 -36
  133. data/app/assets/javascripts/caboose_store/payment_processors/authorizenet.js +0 -21
  134. data/app/assets/javascripts/caboose_store/payment_processors/base.js +0 -21
  135. data/app/assets/javascripts/caboose_store/payment_processors/payscape.js +0 -21
  136. data/app/assets/javascripts/caboose_store/shortcut.js +0 -11
  137. data/app/assets/javascripts/caboose_store/station.js +0 -60
  138. data/app/models/caboose_store/order_line_item.rb +0 -13
  139. data/app/models/caboose_store/states.rb +0 -60
  140. data/app/views/caboose_store/application/_category_thumb.html.erb +0 -6
  141. data/app/views/caboose_store/application/_product_thumb.html.erb +0 -13
  142. data/app/views/caboose_store/checkout/quantity_box.html.erb +0 -39
  143. data/app/views/caboose_store/checkout/thank_you.html.erb +0 -36
@@ -1,164 +1,244 @@
1
1
  module CabooseStore
2
- class CheckoutController < ApplicationController
3
-
2
+ class CheckoutController < CabooseStore::ApplicationController
4
3
  helper :authorize_net
5
- protect_from_forgery :except => :authnet_relay_response
6
-
7
- # GET /checkout
8
- def index
9
- @order = Order.find(session['cart_id'])
10
- @is_logged_in = logged_in?
11
- if @is_logged_in
12
- @order.customer_id = logged_in_user.id
13
- @order.save
4
+ before_filter :ensure_line_items, :only => [:step_one, :step_two]
5
+
6
+ def ensure_line_items
7
+ redirect_to '/checkout/empty' if @order.line_items.empty?
8
+ end
9
+
10
+ # GET /checkout || GET /checkout/step-one
11
+ def step_one
12
+ end
13
+
14
+ # GET /checkout/step-two
15
+ def step_two
16
+ redirect_to '/checkout/step-one' if !@order.shipping_address || !@order.billing_address
17
+ end
18
+
19
+ # GET /checkout/address
20
+ def address
21
+ render :json => {
22
+ :shipping_address => @order.shipping_address,
23
+ :billing_address => @order.billing_address
24
+ }
25
+ end
26
+
27
+ # PUT /checkout/address
28
+ def update_address
29
+
30
+ # Grab or create addresses
31
+ shipping_address = if @order.shipping_address then @order.shipping_address else Address.new end
32
+ billing_address = if @order.billing_address then @order.billing_address else Address.new end
33
+
34
+ # Shipping address
35
+ shipping_address.first_name = params[:shipping][:first_name]
36
+ shipping_address.last_name = params[:shipping][:last_name]
37
+ shipping_address.company = params[:shipping][:company]
38
+ shipping_address.address1 = params[:shipping][:address1]
39
+ shipping_address.address2 = params[:shipping][:address2]
40
+ shipping_address.city = params[:shipping][:city]
41
+ shipping_address.state = params[:shipping][:state]
42
+ shipping_address.zip = params[:shipping][:zip]
43
+
44
+ # Billing address
45
+ if params[:use_as_billing]
46
+ billing_address.update_attributes(shipping_address.attributes)
47
+ else
48
+ billing_address.first_name = params[:billing][:first_name]
49
+ billing_address.last_name = params[:billing][:last_name]
50
+ billing_address.company = params[:billing][:company]
51
+ billing_address.address1 = params[:billing][:address1]
52
+ billing_address.address2 = params[:billing][:address2]
53
+ billing_address.city = params[:billing][:city]
54
+ billing_address.state = params[:billing][:state]
55
+ billing_address.zip = params[:billing][:zip]
14
56
  end
15
- end
16
-
17
- # GET /checkout/shipping-address
18
- def shipping_address
19
- @order = Order.find(session['cart_id'])
20
- end
21
-
22
- # PUT /checkout/shipping-address
23
- def update_shipping_address
24
- resp = Caboose::StdClass.new
25
-
26
- order = Order.find(session['cart_id'])
27
- a = order.shipping_address ? order.shipping_address : Address.new
28
- a.name = params[:name]
29
- a.company = params[:company]
30
- a.address1 = params[:address1]
31
- a.address2 = params[:address2]
32
- a.city = params[:city]
33
- a.state = params[:state]
34
- a.zip = params[:zip]
35
57
 
36
- if (a.name.strip.length == 0)
37
- resp.error = "A name is required."
38
- elsif (a.address1.strip.length == 0)
39
- resp.error = "An address is required."
40
- elsif (a.city.strip.length == 0)
41
- resp.error = "A city is required."
42
- elsif (a.state.strip.length == 0)
43
- resp.error = "A state is required."
44
- elsif (a.zip.strip.length < 5)
45
- resp.error = "A valid zip code is required."
58
+ # Save address info; generate ids
59
+ render :json => { :success => false, :errors => shipping_address.errors.full_messages, :address => 'shipping' } and return if !shipping_address.save
60
+ render :json => { :success => false, :errors => billing_address.errors.full_messages, :address => 'billing' } and return if !billing_address.save
61
+
62
+ # Associate address info with order
63
+ @order.shipping_address_id = shipping_address.id
64
+ @order.billing_address_id = billing_address.id
65
+
66
+ #render :json => { :redirect => 'checkout/shipping' }
67
+ render :json => { :success => @order.save, :errors => @order.errors.full_messages }
68
+ end
69
+
70
+ # POST /checkout/attach-user
71
+ def attach_user
72
+ render :json => { :success => false, :errors => ['User is not logged in'] } and return if !logged_in?
73
+ @order.customer_id = logged_in_user.id
74
+ render :json => { :success => @order.save, :errors => @order.errors.full_messages, :logged_in => logged_in? }
75
+ end
76
+
77
+ # POST /checkout/guest
78
+ def attach_guest
79
+ render :json => { :success => false, :errors => ['Emails do not match'] } and return if params[:email] != params[:confirm_email]
80
+ @order.email = params[:email]
81
+ render :json => { :succes => @order.save, :errors => @order.errors.full_messages, :logged_in => logged_in? }
82
+ end
83
+
84
+ # GET /checkout/shipping
85
+ def shipping
86
+ render :json => { :rates => ShippingCalculator.rates(@order), :selected_rate => ShippingCalculator.rate(@order) }
87
+ end
88
+
89
+ # PUT /checkout/shipping
90
+ def update_shipping
91
+ @order.shipping_code = params[:shipping_code]
92
+ render :json => { :success => @order.save, :errors => @order.errors.full_messages, :order => @order, :selected_rate => ShippingCalculator.rate(@order) }
93
+ end
94
+
95
+ # GET /checkout/payment
96
+ def payment
97
+ case CabooseStore::payment_processor
98
+ when 'authorize.net'
99
+ @sim_transaction = AuthorizeNet::SIM::Transaction.new(
100
+ CabooseStore::authorize_net_login_id,
101
+ CabooseStore::authorize_net_transaction_key,
102
+ @order.total,
103
+ :relay_url => "#{CabooseStore::root_url}/checkout/relay/#{@order.id}",
104
+ :transaction_type => 'AUTH_ONLY',
105
+ :test => true
106
+ )
107
+ when 'payscape'
108
+ @form_url = CabooseStore::PaymentProcessor.form_url(@order)
46
109
  end
47
110
 
48
- if (resp.error.nil?)
49
- a.save
50
- tax_rate = TaxCalculator.tax_rate(a)
51
- order.tax = order.subtotal * tax_rate
52
- order.shipping_address_id = a.id
53
- order.calculate_total
54
- order.save
55
- resp.redirect = '/checkout/shipping'
111
+ render :layout => false
112
+ end
113
+
114
+ # POST /checkout/relay/:order_id
115
+ def relay
116
+ @order = CabooseStore::Order.find(params[:order_id])
117
+
118
+ case CabooseStore::payment_processor
119
+ when 'authorize.net'
120
+ @success = params[:x_response_code] == '1'
121
+ @message = params[:x_response_reason_text]
122
+ @order.transaction_id = params[:x_trans_id] if params[:x_trans_id]
123
+ when 'payscape'
124
+ @success = CabooseStore::PaymentProcessor.authorize(@order, params)
125
+ @message = @success ? 'Payment processed successfully' : 'There was a problem processing your payment'
126
+ @order.transaction_id = params['transaction-id'] if params['transaction-id']
56
127
  end
57
- render :json => resp
58
- end
59
-
60
- # GET /checkout/shipping
61
- def shipping
62
- @order = Order.find(session['cart_id'])
63
- end
64
-
65
- # GET /checkout/shipping-rates
66
- def shipping_rates
67
- order = Order.find(session['cart_id'])
68
- render :json => ShippingCalculator.rates(order)
69
- end
70
-
71
- # PUT /checkout/shipping-method
72
- def update_shipping_method
73
- resp = Caboose::StdClass.new
74
- order = Order.find(session['cart_id'])
75
-
76
- code = params[:shipping_method_code]
77
- if code.nil? || code.strip.length == 0
78
- resp.error = "You must select a shipping method."
79
- else
80
- order.shipping = params[:shipping].to_f/100
81
- order.shipping_method = params[:shipping_method]
82
- order.shipping_method_code = params[:shipping_method_code]
83
- order.handling = order.shipping * 0.05
84
- order.calculate_total
85
- order.save
86
- resp.redirect = '/checkout/billing'
87
- end
88
- render :json => resp
89
- end
90
-
91
- # GET /checkout/billing
92
- def billing
93
- @order = Order.find(session['cart_id'])
94
- @logged_in_user = logged_in_user
95
- @sim_transaction = AuthorizeNet::SIM::Transaction.new(
96
- AUTHORIZE_NET_CONFIG['api_login_id'],
97
- AUTHORIZE_NET_CONFIG['api_transaction_key'],
98
- @order.total,
99
- :relay_url => 'https://www.tuskwearcollection.com/checkout/authnet-relay-response',
100
- :transaction_type => 'AUTH_ONLY' #AuthorizeNet::Type::AUTHORIZE_ONLY
101
- )
102
- end
103
-
104
- # POST /checkout/authnet-relay-response
105
- def authnet_relay_response
106
- sim_response = AuthorizeNet::SIM::Response.new(params)
107
- if sim_response.success?(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['merchant_hash_value'])
108
- if (params[:x_response_code].to_i == 1) # Approved
109
- order = Order.find(params[:x_invoice_num])
110
- order.date_authorized = DateTime.now
111
- order.transaction_id = params[:x_trans_id]
112
- order.auth_code = params[:x_auth_code]
113
- order.auth_amount = order.total
114
- order.financial_status = 'authorized'
115
- order.status = 'pending'
116
- order.save
117
- end
128
+ ap @success
129
+ ap '---------'
130
+ if @success
131
+ @order.financial_status = 'authorized'
132
+ @order.status = 'pending'
133
+ @order.date_authorized = DateTime.now
134
+ @order.auth_amount = @order.total
135
+
136
+ # Clear cart
137
+ session[:cart_id] = nil
138
+
139
+ # Send out emails
140
+ OrdersMailer.customer_new_order(@order).deliver
141
+ OrdersMailer.fulfillment_new_order(@order).deliver
142
+
143
+ # Emit order event
144
+ Caboose.plugin_hook('order_authorized', @order)
145
+ else
146
+ @order.financial_status = 'unauthorized'
118
147
  end
119
- render :text => sim_response.direct_post_reply('https://www.tuskwearcollection.com/checkout/authnet-receipt', :include => true)
148
+
149
+ @order.save
150
+ render :layout => false
120
151
  end
121
152
 
122
- # GET /checkout/authnet-receipt
123
- def authnet_receipt
124
- js = ""
125
- if (params[:x_response_code].to_i == 1) # Approved
126
- js = "parent.window.location = '/checkout/finalize';"
127
- else
128
- msg = "<p class='note error'>There was an error processing your card:<br /><br />#{params[:x_response_reason_text]}</p>"
129
- msg = msg.gsub('"', '')
130
- js = "parent.$('#message').html(\"#{msg}\");"
131
- end
132
- render :text => "<script type='text/javascript'>#{js}</script>"
153
+ # GET /checkout/empty
154
+ def empty
133
155
  end
134
-
135
- # GET /checkout/finalize
136
- def finalize
137
- order = Order.find(session['cart_id'])
138
-
139
- # Make sure they didn't come to the page twice
140
- if order.line_items.count == 0
141
- redirect_to "/"
142
- return
143
- end
144
-
145
- # Notify the customer
146
- OrdersMailer.customer_new_order(order).deliver
147
-
148
- # Notify the fulfillment center
149
- OrdersMailer.fulfillment_new_order(order).deliver
150
-
151
- # Add the order to quickbooks
152
- #Quickbooks.create_order(order)
153
-
154
- # Clear everything
155
- session['cart_id'] = nil
156
-
157
- redirect_to '/checkout/thank-you'
158
- end
159
-
160
- def thank_you
161
- end
162
-
156
+
157
+ # GET /checkout/thanks
158
+ def thanks
159
+ end
160
+
161
+ # GET /checkout/discount
162
+ #def discount
163
+ # # TODO make it possible to use multiple discounts
164
+ #
165
+ # @gift_card = @order.discounts.first
166
+ #end
167
+
168
+ # POST /checkout/update-discount
169
+ #def add_discount
170
+ # gift_card = Discount.find_by_code(params[:gift_card_number])
171
+ #
172
+ # render :json => { :error => true, :message => 'Gift card not found.' } and return if gift_card.nil?
173
+ # render :json => { :error => true, :message => 'Gift card has no remaining funds.' } and return if gift_card.amount_current <= 0
174
+ #
175
+ # @order.discounts.delete_all if @order.discounts.any?
176
+ # @order.discounts << gift_card
177
+ # @order.calculate_total
178
+ #
179
+ # render :json => { :success => true, :message => 'Gift card added successfully.' }
180
+ #end
181
+
182
+ #def relay
183
+ #
184
+ # # Check to see that the order has a valid total and was authorized
185
+ # if @order.total > 0 && PaymentProcessor.authorize(@order, params)
186
+ #
187
+ # # Update order
188
+ # @order.date_authorized = DateTime.now
189
+ # @order.auth_amount = @order.total
190
+ # @order.financial_status = 'authorized'
191
+ # @order.status = if @order.test? then 'testing' else 'pending' end
192
+ #
193
+ # # Send out notifications
194
+ # OrdersMailer.customer_new_order(@order).deliver
195
+ # OrdersMailer.fulfillment_new_order(@order).deliver
196
+ #
197
+ # # Clear everything
198
+ # session[:cart_id] = nil
199
+ #
200
+ # # Emit order event
201
+ # Caboose.plugin_hook('order_authorized', @order)
202
+ #
203
+ # # Decrement quantities of variants
204
+ # @order.decrement_quantities
205
+ # else
206
+ # @order.financial_status = 'unauthorized'
207
+ # end
208
+ #
209
+ # @order.save
210
+ #end
211
+
212
+ # GET /checkout/authorize-by-gift-card
213
+ #def authorize_by_gift_card
214
+ # if @order.total < @order.discounts.first.amount_current
215
+ #
216
+ # # Update order
217
+ # @order.date_authorized = DateTime.now
218
+ # @order.auth_amount = @order.total
219
+ # @order.financial_status = 'authorized'
220
+ # @order.status = if @order.test? then 'testing' else 'pending' end
221
+ #
222
+ # # Send out notifications
223
+ # OrdersMailer.customer_new_order(@order).deliver
224
+ # OrdersMailer.fulfillment_new_order(@order).deliver
225
+ #
226
+ # # Clear everything
227
+ # session[:cart_id] = nil
228
+ #
229
+ # # Emit order event
230
+ # Caboose.plugin_hook('order_authorized', @order)
231
+ #
232
+ # # Decrement quantities of variants
233
+ # @order.decrement_quantities
234
+ #
235
+ # @order.save
236
+ #
237
+ # redirect_to '/checkout/thanks'
238
+ # else
239
+ # redirect_to '/checkout/error'
240
+ # end
241
+ #end
242
+
163
243
  end
164
244
  end