caboose-cms 0.7.16 → 0.7.17
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/caboose/admin_page_edit_content.js +1 -0
- data/app/assets/javascripts/caboose/model/bound_date_time.js +1 -0
- data/app/controllers/caboose/checkout_controller.rb +3 -0
- data/app/controllers/caboose/orders_controller.rb +4 -1
- data/app/models/caboose/order.rb +7 -0
- data/app/models/caboose/tax_calculator.rb +108 -60
- data/lib/caboose/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 820bfc8858e33c2b4af5c694a2692f03dde511bc
|
4
|
+
data.tar.gz: 95f81b1e0e4cf78778adbbef05b6757e195e0b3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e0b9ac6bb9dd120791dc4b99f658995811538683283b4914f70c1a602194aaa9fe86665f8c44be7a5ca88d6e824e29f207042b5a07abf91d3b6b12ef1fdd86d
|
7
|
+
data.tar.gz: 7bb4c217b83766dcffbc2a3df9c1d177aba0ea691fb0a763fb270e43cc7e47a51ba5c9561738f4486deb6ad98ef7023fd04bfd74b50a38fa4a5f755057d5cb09
|
@@ -339,6 +339,9 @@ module Caboose
|
|
339
339
|
order.status = Order::STATUS_PENDING
|
340
340
|
order.order_number = @site.store_config.next_order_number
|
341
341
|
order.date_authorized = DateTime.now.utc
|
342
|
+
|
343
|
+
# Tell taxcloud the order was authorized
|
344
|
+
Caboose::TaxCalculator.authorized(order)
|
342
345
|
|
343
346
|
# Take funds from any gift cards that were used on the order
|
344
347
|
order.take_gift_card_funds
|
@@ -89,7 +89,10 @@ module Caboose
|
|
89
89
|
return if !user_is_allowed('orders', 'edit')
|
90
90
|
|
91
91
|
order = Order.find(params[:id])
|
92
|
-
resp = order.capture_funds
|
92
|
+
resp = order.capture_funds
|
93
|
+
|
94
|
+
# Tell taxcloud the order was captured
|
95
|
+
Caboose::TaxCalculator.captured(order)
|
93
96
|
|
94
97
|
render :json => resp
|
95
98
|
end
|
data/app/models/caboose/order.rb
CHANGED
@@ -228,6 +228,13 @@ module Caboose
|
|
228
228
|
return false
|
229
229
|
end
|
230
230
|
|
231
|
+
def has_taxable_items?
|
232
|
+
self.line_items.each do |li|
|
233
|
+
return true if li.variant.taxable && li.variant.taxable == true
|
234
|
+
end
|
235
|
+
return false
|
236
|
+
end
|
237
|
+
|
231
238
|
# Capture funds from a previously authorized transaction
|
232
239
|
def capture_funds
|
233
240
|
|
@@ -9,24 +9,48 @@ module Caboose
|
|
9
9
|
|
10
10
|
def self.tax(order)
|
11
11
|
return 0.00 if !order.shipping_address
|
12
|
+
return 0.00 if !order.has_taxable_items?
|
12
13
|
|
13
|
-
sc = order.site.store_config
|
14
|
-
if !sc.auto_calculate_tax
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
sc = order.site.store_config
|
15
|
+
return self.custom_tax(sc, order) if !sc.auto_calculate_tax
|
16
|
+
return order.subtotal * order.tax_rate if order.tax_rate # See if the tax rate has already been calculated
|
17
|
+
|
18
|
+
t = self.transaction(order)
|
19
|
+
Caboose.log(t.inspect)
|
20
|
+
lookup = t.lookup
|
21
|
+
tax = lookup.tax_amount
|
18
22
|
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
# Save the tax rate
|
24
|
+
order.tax_rate = tax/order.subtotal
|
25
|
+
order.save
|
26
|
+
|
27
|
+
# Return the tax amount
|
28
|
+
return tax
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.authorized(order)
|
32
|
+
t = self.transaction(order)
|
33
|
+
return if t.nil?
|
34
|
+
t.order_id = order.id
|
35
|
+
t.authorized
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.captured(order)
|
39
|
+
t = self.transaction(order)
|
40
|
+
return if t.nil?
|
41
|
+
t.order_id = order.id
|
42
|
+
t.captured
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.transaction(order)
|
46
|
+
sc = order.site.store_config
|
47
|
+
return nil if sc.nil? || !sc.auto_calculate_tax
|
24
48
|
|
25
49
|
sa = order.shipping_address
|
26
50
|
if sa.nil? || sa.address1.nil? || sa.city.nil? || sa.state.nil? || sa.zip.nil?
|
27
51
|
sa = order.billing_address
|
28
52
|
end
|
29
|
-
return
|
53
|
+
return nil if sa.nil? || sa.address1.nil? || sa.city.nil? || sa.state.nil? || sa.zip.nil?
|
30
54
|
|
31
55
|
TaxCloud.configure do |config|
|
32
56
|
config.api_login_id = sc.taxcloud_api_id
|
@@ -34,26 +58,9 @@ module Caboose
|
|
34
58
|
config.usps_username = sc.usps_username
|
35
59
|
end
|
36
60
|
|
37
|
-
origin
|
38
|
-
|
39
|
-
|
40
|
-
:city => sc.origin_city,
|
41
|
-
:state => sc.origin_state,
|
42
|
-
:zip5 => sc.origin_zip
|
43
|
-
)
|
44
|
-
destination = TaxCloud::Address.new(
|
45
|
-
:address1 => sa.address1,
|
46
|
-
:address2 => sa.address2,
|
47
|
-
:city => sa.city,
|
48
|
-
:state => sa.state,
|
49
|
-
:zip5 => sa.zip
|
50
|
-
)
|
51
|
-
transaction = TaxCloud::Transaction.new(
|
52
|
-
:customer_id => order.customer_id,
|
53
|
-
:cart_id => order.id,
|
54
|
-
:origin => origin,
|
55
|
-
:destination => destination
|
56
|
-
)
|
61
|
+
origin = TaxCloud::Address.new(:address1 => sc.origin_address1 , :address2 => sc.origin_address2 , :city => sc.origin_city , :state => sc.origin_state , :zip5 => sc.origin_zip )
|
62
|
+
destination = TaxCloud::Address.new(:address1 => sa.address1 , :address2 => sa.address2 , :city => sa.city , :state => sa.state , :zip5 => sa.zip )
|
63
|
+
transaction = TaxCloud::Transaction.new(:customer_id => order.customer_id, :cart_id => order.id, :origin => origin, :destination => destination)
|
57
64
|
order.line_items.each_with_index do |li, i|
|
58
65
|
next if !li.variant.taxable # Skip any non-taxable items
|
59
66
|
transaction.cart_items << TaxCloud::CartItem.new(
|
@@ -64,35 +71,76 @@ module Caboose
|
|
64
71
|
:quantity => li.quantity
|
65
72
|
)
|
66
73
|
end
|
67
|
-
|
68
|
-
tax = lookup.tax_amount
|
69
|
-
|
70
|
-
# Save the tax rate
|
71
|
-
order.tax_rate = tax/order.subtotal
|
72
|
-
order.save
|
73
|
-
|
74
|
-
# Return the tax amount
|
75
|
-
return tax
|
76
|
-
|
77
|
-
#return 0.00 if address.nil? || address.city.nil? || address.state.nil?
|
78
|
-
#return 0 if address.state.downcase != 'al'
|
79
|
-
#return 0.09
|
80
|
-
|
81
|
-
#rate = 0.00
|
82
|
-
#city = address.city.downcase
|
83
|
-
#rate = rate + 0.05 if city == 'brookwood'
|
84
|
-
#rate = rate + 0.05 if city == 'coaling'
|
85
|
-
#rate = rate + 0.05 if city == 'coker'
|
86
|
-
#rate = rate + 0.05 if city == 'holt'
|
87
|
-
#rate = rate + 0.05 if city == 'holt CDP'
|
88
|
-
#rate = rate + 0.05 if city == 'lake View'
|
89
|
-
#rate = rate + 0.05 if city == 'moundville'
|
90
|
-
#rate = rate + 0.05 if city == 'northport'
|
91
|
-
#rate = rate + 0.05 if city == 'tuscaloosa'
|
92
|
-
#rate = rate + 0.05 if city == 'vance'
|
93
|
-
#rate = rate + 0.05 if city == 'woodstock'
|
94
|
-
#rate = rate + 0.04 if address.state.downcase == 'al' || address.state.downcase == 'alabama'
|
95
|
-
#return rate.round(2)
|
74
|
+
return transaction
|
96
75
|
end
|
76
|
+
|
77
|
+
#def self.tax(order)
|
78
|
+
# return 0.00 if !order.shipping_address
|
79
|
+
#
|
80
|
+
# sc = order.site.store_config
|
81
|
+
# if !sc.auto_calculate_tax
|
82
|
+
# tax = self.custom_tax(sc, order)
|
83
|
+
# return tax
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# # See if the tax rate has already been calculated
|
87
|
+
# # If so, use that instead of doing another web service call
|
88
|
+
# if order.tax_rate
|
89
|
+
# return order.subtotal * order.tax_rate
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
# sa = order.shipping_address
|
93
|
+
# if sa.nil? || sa.address1.nil? || sa.city.nil? || sa.state.nil? || sa.zip.nil?
|
94
|
+
# sa = order.billing_address
|
95
|
+
# end
|
96
|
+
# return 0.00 if sa.nil? || sa.address1.nil? || sa.city.nil? || sa.state.nil? || sa.zip.nil?
|
97
|
+
#
|
98
|
+
# TaxCloud.configure do |config|
|
99
|
+
# config.api_login_id = sc.taxcloud_api_id
|
100
|
+
# config.api_key = sc.taxcloud_api_key
|
101
|
+
# config.usps_username = sc.usps_username
|
102
|
+
# end
|
103
|
+
#
|
104
|
+
# origin = TaxCloud::Address.new(
|
105
|
+
# :address1 => sc.origin_address1,
|
106
|
+
# :address2 => sc.origin_address2,
|
107
|
+
# :city => sc.origin_city,
|
108
|
+
# :state => sc.origin_state,
|
109
|
+
# :zip5 => sc.origin_zip
|
110
|
+
# )
|
111
|
+
# destination = TaxCloud::Address.new(
|
112
|
+
# :address1 => sa.address1,
|
113
|
+
# :address2 => sa.address2,
|
114
|
+
# :city => sa.city,
|
115
|
+
# :state => sa.state,
|
116
|
+
# :zip5 => sa.zip
|
117
|
+
# )
|
118
|
+
# transaction = TaxCloud::Transaction.new(
|
119
|
+
# :customer_id => order.customer_id,
|
120
|
+
# :cart_id => order.id,
|
121
|
+
# :origin => origin,
|
122
|
+
# :destination => destination
|
123
|
+
# )
|
124
|
+
# order.line_items.each_with_index do |li, i|
|
125
|
+
# next if !li.variant.taxable # Skip any non-taxable items
|
126
|
+
# transaction.cart_items << TaxCloud::CartItem.new(
|
127
|
+
# :index => i,
|
128
|
+
# :item_id => li.variant.id,
|
129
|
+
# :tic => TaxCloud::TaxCodes::GENERAL,
|
130
|
+
# :price => li.unit_price,
|
131
|
+
# :quantity => li.quantity
|
132
|
+
# )
|
133
|
+
# end
|
134
|
+
# lookup = transaction.lookup
|
135
|
+
# tax = lookup.tax_amount
|
136
|
+
#
|
137
|
+
# # Save the tax rate
|
138
|
+
# order.tax_rate = tax/order.subtotal
|
139
|
+
# order.save
|
140
|
+
#
|
141
|
+
# # Return the tax amount
|
142
|
+
# return tax
|
143
|
+
#end
|
144
|
+
|
97
145
|
end
|
98
146
|
end
|
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.7.
|
4
|
+
version: 0.7.17
|
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-10-
|
11
|
+
date: 2015-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|