caboose-cms 0.5.158 → 0.5.159
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/assets/stylesheets/caboose/my_account.css +2 -0
- data/app/controllers/caboose/checkout_controller.rb +11 -1
- data/app/models/caboose/order.rb +58 -0
- data/app/models/caboose/order_package.rb +7 -11
- data/app/views/caboose/my_account/index.html.erb +20 -15
- data/app/views/caboose/my_account_orders/edit.html.erb +32 -12
- data/app/views/caboose/my_account_orders/index.html.erb +1 -1
- data/app/views/caboose/orders_mailer/customer_new_order.html.erb +4 -1
- data/lib/caboose/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NGRlMTBkOTUzOWM0NzkxZGQ0NGVlMDdlY2E3MzQ3ZDMxYjAzZjg5Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGQxNDcyYWIzNzBlOGJhZjNmYzY4OGNhZjRmMDQ4YTc2MzA1MDc3ZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjEzN2NlM2M3YzEwMzA2MDBiMWUzYTczMjFmZWFiOTIyYTQ3NWY2ZTM2YjY1
|
10
|
+
ZWFhOWMwNWMxYTJlNmU5MzBmZWEwNzAzNWFjZDZiOTk3ZDE1ZTdjMWVlOWMz
|
11
|
+
NTE5Y2RjZDk1NjM0YTNlNTAyZTAzYTQ2ODQxMWI3MDgxMzk5OTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjkwYmVjNjE3MDU4ZGEzYmRiNmVhYmE2MTM5NjI4NjViYzRlMGVjZjI2Mzgz
|
14
|
+
ZDE3YTFlM2Y5N2E4OTA0OTg3NThlOGQyMzYzMWJjNDAyMzU2NmU4MGFjYmI1
|
15
|
+
NTliODNmZmFmMWQyMDE5MGNmYWZmMzAyODEyYzk2NDE1MzZhNDc=
|
@@ -325,7 +325,7 @@ module Caboose
|
|
325
325
|
OrdersMailer.configure_for_site(@site.id).fulfillment_new_order(order).deliver
|
326
326
|
|
327
327
|
# Emit order event
|
328
|
-
Caboose.plugin_hook('order_authorized', order)
|
328
|
+
Caboose.plugin_hook('order_authorized', order)
|
329
329
|
else
|
330
330
|
order.financial_status = 'unauthorized'
|
331
331
|
error = "There was a problem processing your payment."
|
@@ -348,6 +348,16 @@ module Caboose
|
|
348
348
|
@resp.success = true if params[:success]
|
349
349
|
@resp.error = params[:error] if params[:error]
|
350
350
|
|
351
|
+
# Go ahead and capture funds if the order only contained downloadable items
|
352
|
+
@order = Order.find(params[:order_id])
|
353
|
+
if !@order.has_shippable_items?
|
354
|
+
capture_resp = @order.capture_funds
|
355
|
+
if capture_resp.error
|
356
|
+
@resp.success = false
|
357
|
+
@resp.error = capture_resp.error
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
351
361
|
if @resp.success
|
352
362
|
session[:cart_id] = nil
|
353
363
|
init_cart
|
data/app/models/caboose/order.rb
CHANGED
@@ -235,6 +235,64 @@ module Caboose
|
|
235
235
|
return false
|
236
236
|
end
|
237
237
|
|
238
|
+
def capture_funds
|
239
|
+
|
240
|
+
resp = StdClass.new
|
241
|
+
t = OrderTransaction.where(:order_id => self.id, :transaction_type => OrderTransaction::TYPE_AUTHORIZE, :success => true).first
|
242
|
+
|
243
|
+
if self.financial_status == Order::FINANCIAL_STATUS_CAPTURED
|
244
|
+
resp.error = "Funds for this order have already been captured."
|
245
|
+
elsif order.total > t.amount
|
246
|
+
resp.error = "The order total exceeds the authorized amount."
|
247
|
+
elsif t.nil?
|
248
|
+
resp.error = "This order doesn't seem to be authorized."
|
249
|
+
else
|
250
|
+
|
251
|
+
sc = self.site.store_config
|
252
|
+
case sc.pp_name
|
253
|
+
when 'authorize.net'
|
254
|
+
transaction = AuthorizeNet::AIM::Transaction.new(sc.pp_username, sc.pp_password)
|
255
|
+
response = transaction.prior_auth_capture(t.transaction_id, self.total)
|
256
|
+
|
257
|
+
self.update_attribute(:financial_status, Order::FINANCIAL_STATUS_CAPTURED)
|
258
|
+
resp.success = 'Captured funds successfully'
|
259
|
+
|
260
|
+
ot = Caboose::OrderTransaction.new(
|
261
|
+
:order_id => self.id,
|
262
|
+
:date_processed => DateTime.now.utc,
|
263
|
+
:transaction_type => OrderTransaction::TYPE_CAPTURE
|
264
|
+
)
|
265
|
+
ot.success = response.response_code && response.response_code == '1'
|
266
|
+
ot.transaction_id = response.transaction_id
|
267
|
+
ot.auth_code = response.authorization_code
|
268
|
+
ot.response_code = response.response_code
|
269
|
+
ot.amount = self.total
|
270
|
+
ot.save
|
271
|
+
|
272
|
+
when 'payscape'
|
273
|
+
# TODO: Implement capture funds for payscape
|
274
|
+
|
275
|
+
end
|
276
|
+
|
277
|
+
#if (order.discounts.any? && order.total < order.discounts.first.amount_current) || PaymentProcessor.capture(order)
|
278
|
+
# order.financial_status = 'captured'
|
279
|
+
# order.save
|
280
|
+
#
|
281
|
+
# if order.discounts.any?
|
282
|
+
# order.update_attribute(:amount_discounted, order.discounts.first.amount_current)
|
283
|
+
# order.update_gift_cards
|
284
|
+
# end
|
285
|
+
#
|
286
|
+
# response.success = "Captured funds successfully"
|
287
|
+
#else
|
288
|
+
# response.error = "Error capturing funds."
|
289
|
+
#end
|
290
|
+
|
291
|
+
end
|
292
|
+
|
293
|
+
return resp
|
294
|
+
end
|
295
|
+
|
238
296
|
end
|
239
297
|
end
|
240
298
|
|
@@ -55,6 +55,7 @@ module Caboose
|
|
55
55
|
# Make sure all the items in the order have attributes set
|
56
56
|
order.line_items.each do |li|
|
57
57
|
v = li.variant
|
58
|
+
next if v.downloadable
|
58
59
|
Caboose.log("Error: variant #{v.id} has a zero weight") and return false if v.weight.nil? || v.weight == 0
|
59
60
|
next if v.volume && v.volume > 0
|
60
61
|
Caboose.log("Error: variant #{v.id} has a zero length") and return false if v.length.nil? || v.length == 0
|
@@ -64,19 +65,14 @@ module Caboose
|
|
64
65
|
v.save
|
65
66
|
end
|
66
67
|
|
67
|
-
# Reorder the items in the order by volume
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
v = li.variant
|
72
|
-
h[v.volume] = li
|
73
|
-
end
|
74
|
-
end
|
75
|
-
line_items = h.sort_by{ |k,v| k }.collect{ |x| x[1] }
|
68
|
+
# Reorder the items in the order by volume
|
69
|
+
line_items = order.line_items.sort_by{ |li| li.quantity * (li.variant.volume ? li.variant.volume : 0.00) * -1 }
|
70
|
+
|
71
|
+
# Get all the packages we're going to use
|
76
72
|
all_packages = ShippingPackage.where(:site_id => order.site_id).reorder(:flat_rate_price).all
|
77
73
|
|
78
|
-
# Now go through each variant and fit it in a new or existing package
|
79
|
-
line_items.each do |li|
|
74
|
+
# Now go through each variant and fit it in a new or existing package
|
75
|
+
line_items.each do |li|
|
80
76
|
next if li.variant.downloadable
|
81
77
|
|
82
78
|
# See if the item will fit in any of the existing packages
|
@@ -1,17 +1,17 @@
|
|
1
1
|
|
2
|
-
<
|
3
|
-
|
4
|
-
<p><div id='user_<%= @user.id %>_first_name' ></div></p>
|
5
|
-
<p><div id='user_<%= @user.id %>_last_name' ></div></p>
|
6
|
-
<p><div id='user_<%= @user.id %>_email' ></div></p>
|
7
|
-
<p><div id='user_<%= @user.id %>_phone' ></div></p>
|
8
|
-
<div id='message'></div>
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
</
|
2
|
+
<div id='my_account'>
|
3
|
+
<h1>My Account</h1>
|
4
|
+
<p><div id='user_<%= @user.id %>_first_name' ></div></p>
|
5
|
+
<p><div id='user_<%= @user.id %>_last_name' ></div></p>
|
6
|
+
<p><div id='user_<%= @user.id %>_email' ></div></p>
|
7
|
+
<p><div id='user_<%= @user.id %>_phone' ></div></p>
|
8
|
+
<div id='message'></div>
|
9
|
+
<p>
|
10
|
+
<% if @site.use_store %>
|
11
|
+
<input type='button' value='Order History' class='btn' onclick="window.location='/my-account/orders';" />
|
12
|
+
<% end %>
|
13
|
+
</p>
|
14
|
+
</div>
|
15
15
|
|
16
16
|
<% content_for :caboose_js do %>
|
17
17
|
<%= javascript_include_tag "caboose/model/all" %>
|
@@ -29,12 +29,17 @@ $(document).ready(function() {
|
|
29
29
|
{ name: 'email' , nice_name: 'Email' , type: 'text', value: <%= raw Caboose.json(@user.email) %>, width: 400 },
|
30
30
|
{ name: 'phone' , nice_name: 'Phone Number' , type: 'text', value: <%= raw Caboose.json(@user.phone) %>, width: 400 }
|
31
31
|
],
|
32
|
-
on_load: function() {
|
32
|
+
on_load: function() {
|
33
|
+
$('#user_<%= @user.id %>_first_name').css('width', '400px');
|
34
|
+
$('#user_<%= @user.id %>_last_name' ).css('width', '400px');
|
35
|
+
$('#user_<%= @user.id %>_email' ).css('width', '400px');
|
36
|
+
$('#user_<%= @user.id %>_phone' ).css('width', '400px');
|
37
|
+
}
|
33
38
|
});
|
34
39
|
});
|
35
40
|
|
36
41
|
</script>
|
37
42
|
<% end %>
|
38
43
|
<%= content_for :caboose_css do %>
|
39
|
-
<%= stylesheet_link_tag "caboose/
|
44
|
+
<%= stylesheet_link_tag "caboose/my_account", :media => "all" %>
|
40
45
|
<% end %>
|
@@ -1,5 +1,9 @@
|
|
1
1
|
<%
|
2
2
|
captured = @order.financial_status == 'captured'
|
3
|
+
ba = @order.billing_address
|
4
|
+
sa = @order.shipping_address
|
5
|
+
ba = nil if ba.first_name.nil? || ba.last_name.nil?
|
6
|
+
sa = nil if sa.first_name.nil? || sa.last_name.nil?
|
3
7
|
%>
|
4
8
|
<input type='hidden' name='order_id' id='order_id' value='<%= @order.id %>' />
|
5
9
|
|
@@ -7,14 +11,14 @@ captured = @order.financial_status == 'captured'
|
|
7
11
|
|
8
12
|
<table class='order'>
|
9
13
|
<tr>
|
10
|
-
|
11
|
-
|
14
|
+
<% if ba %><th>Billing Address</th><% end %>
|
15
|
+
<% if sa %><th>Shipping Address</th><% end %>
|
12
16
|
<th>Order Status</th>
|
13
17
|
<th>Payment Status</th>
|
14
18
|
</tr>
|
15
19
|
<tr>
|
16
|
-
|
17
|
-
|
20
|
+
<% if ba %><td valign='top'><%= raw ba.name_and_address %></td><% end %>
|
21
|
+
<% if sa %><td valign='top'><%= raw sa.name_and_address %></td><% end %>
|
18
22
|
<td valign='top'><%= @order.status.capitalize %></td>
|
19
23
|
<td valign='top'><%= @order.financial_status.capitalize %></td>
|
20
24
|
</tr>
|
@@ -50,19 +54,33 @@ captured = @order.financial_status == 'captured'
|
|
50
54
|
</tr>
|
51
55
|
<% end %>
|
52
56
|
<% end %>
|
57
|
+
<% if @order.has_downloadable_items? %>
|
58
|
+
<tr>
|
59
|
+
<th>Item</th>
|
60
|
+
<th>Status</th>
|
61
|
+
<th>Unit Price</th>
|
62
|
+
<th>Quantity</th>
|
63
|
+
<th>Subtotal</th>
|
64
|
+
</tr>
|
65
|
+
<% end %>
|
53
66
|
<% @order.line_items.each do |li| %>
|
54
|
-
<% next if li.order_package_id %>
|
55
|
-
|
56
|
-
<%
|
67
|
+
<% next if li.order_package_id %>
|
68
|
+
<% v = li.variant %>
|
69
|
+
<% if !v.downloadable %><tr><td colspan='5'>Unpackaged Items</td></tr><% end %>
|
70
|
+
<% img = v.product_image %>
|
57
71
|
<tr>
|
58
72
|
<td>
|
59
73
|
<% if img %><img src='<%= img.url(:tiny) %>' /><% end %>
|
60
|
-
<% if
|
61
|
-
<% if
|
74
|
+
<% if v.nil? || v.product.nil? %>
|
75
|
+
<% if v.nil? %>Unknown variant<% else %><%= v.sku %><% end %>
|
62
76
|
<% else %>
|
63
|
-
<a href='/admin/products/<%=
|
64
|
-
<% if
|
65
|
-
<%=
|
77
|
+
<p><a href='/admin/products/<%= v.product.id %>'><%= v.product.title %></a><br />
|
78
|
+
<% if v.sku && v.sku.strip.length > 0 %><%= v.sku %><br /><% end %>
|
79
|
+
<%= v.title %></p>
|
80
|
+
<% end %>
|
81
|
+
<% if v.downloadable %>
|
82
|
+
<% sc = @order.site.store_config %>
|
83
|
+
<p><a href='<%= raw sc.pp_relay_domain %>/my-account/orders/<%= @order.id %>/line-items/<%= li.id %>/download' target="_blank">Download</a></p>
|
66
84
|
<% end %>
|
67
85
|
</td>
|
68
86
|
<td><%= li.status.capitalize %></td>
|
@@ -94,6 +112,8 @@ table.order td img { float: left; margin-right: 10px; }
|
|
94
112
|
table.order td.package_header { font-weight: bold; text-align: center; border: 0; }
|
95
113
|
table.order td.totals_header { font-weight: bold; text-align: center; border: 0; }
|
96
114
|
|
115
|
+
p { margin-bottom: 10px; }
|
116
|
+
|
97
117
|
</style>
|
98
118
|
<% end %>
|
99
119
|
|
@@ -11,7 +11,7 @@
|
|
11
11
|
</tr>
|
12
12
|
<% @orders.each do |order| %>
|
13
13
|
<tr onclick="window.location='/my-account/orders/<%= order.id %>';">
|
14
|
-
<td><%= order.date_created.strftime('%m/%d/%Y') %></td>
|
14
|
+
<td><%= order.date_created ? order.date_created.strftime('%m/%d/%Y') : '' %></td>
|
15
15
|
<td><%= order.order_number %></td>
|
16
16
|
<td><%= number_to_currency(order.total) %></td>
|
17
17
|
<td><%= order.status.capitalize %></td>
|
@@ -27,7 +27,7 @@
|
|
27
27
|
</td>
|
28
28
|
<% end %>
|
29
29
|
<td>
|
30
|
-
|
30
|
+
<p><%= p.title %></p>
|
31
31
|
<% if li.is_gift %>
|
32
32
|
<p>This item is a gift.</p>
|
33
33
|
<ul>
|
@@ -35,6 +35,9 @@
|
|
35
35
|
<li><% if li.include_gift_message %>Gift message: <%= li.gift_message %><% else %>No gift message<% end %></li>
|
36
36
|
<li><% if li.hide_prices %>Hide all prices<% else %>Show all prices<% end %></li>
|
37
37
|
</ul>
|
38
|
+
<% end %>
|
39
|
+
<% if li.variant.downloadable %>
|
40
|
+
<p><a href='<%= @order.site.store_config.pp_relay_domain %>/my-account/orders/<%= @order.id %>/line-items/<%= li.id %>/download' target="_blank">Download</a></li>
|
38
41
|
<% end %>
|
39
42
|
</td>
|
40
43
|
<td align='right'><%= number_to_currency(li.unit_price) %></td>
|
data/lib/caboose/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.159
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -483,6 +483,7 @@ files:
|
|
483
483
|
- app/assets/stylesheets/caboose/message_boxes.css.scss
|
484
484
|
- app/assets/stylesheets/caboose/modal.css
|
485
485
|
- app/assets/stylesheets/caboose/model_binder.css
|
486
|
+
- app/assets/stylesheets/caboose/my_account.css
|
486
487
|
- app/assets/stylesheets/caboose/page_bar_generator.css
|
487
488
|
- app/assets/stylesheets/caboose/print.css
|
488
489
|
- app/assets/stylesheets/caboose/product_images.css.scss
|