caboose-cms 0.5.69 → 0.5.70
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 +8 -8
- data/app/assets/javascripts/caboose/admin.js +2 -1
- data/app/assets/javascripts/caboose/admin_edit_order.js +0 -13
- data/app/assets/javascripts/caboose/admin_main.js +13 -0
- data/app/assets/javascripts/caboose/cart.js +145 -161
- data/app/assets/javascripts/caboose/cart_old.js +176 -0
- data/app/assets/javascripts/caboose/checkout.js +1 -1
- data/app/assets/javascripts/caboose/{checkout_step2.js → checkout_addresses.js} +3 -3
- data/app/assets/javascripts/caboose/checkout_gift_cards.js +47 -0
- data/app/assets/javascripts/caboose/{checkout_step1.js → checkout_login_register.js} +5 -53
- data/app/assets/javascripts/caboose/checkout_module.js +3 -4
- data/app/assets/javascripts/caboose/{checkout_step4.js → checkout_payment.js} +8 -8
- data/app/assets/javascripts/caboose/{checkout_step3.js → checkout_shipping.js} +5 -5
- data/app/assets/javascripts/caboose/imageZoom.js +66 -0
- data/app/assets/javascripts/caboose/model/attribute.js +2 -1
- data/app/assets/javascripts/caboose/model/bound_select.js +15 -6
- data/app/assets/javascripts/caboose/product.js +12 -2
- data/app/assets/stylesheets/caboose/checkout.css.scss +1 -0
- data/app/assets/templates/caboose/checkout/address.jst.ejs +1 -1
- data/app/controllers/caboose/cart_controller.rb +60 -8
- data/app/controllers/caboose/checkout_controller.rb +42 -71
- data/app/controllers/caboose/gift_cards_controller.rb +216 -0
- data/app/controllers/caboose/users_controller.rb +2 -2
- data/app/helpers/caboose/checkout_helper.rb +6 -5
- data/app/models/caboose/core_plugin.rb +2 -1
- data/app/models/caboose/discount.rb +8 -13
- data/app/models/caboose/gift_card.rb +49 -0
- data/app/models/caboose/order.rb +66 -46
- data/app/models/caboose/order_package.rb +11 -4
- data/app/models/caboose/order_package_calculator.rb +102 -0
- data/app/models/caboose/product_image.rb +10 -0
- data/app/models/caboose/schema.rb +38 -29
- data/app/models/caboose/shipping_calculator.rb +4 -2
- data/app/models/caboose/shipping_package.rb +7 -0
- data/app/views/caboose/cart/index.html.erb +12 -2
- data/app/views/caboose/checkout/#Untitled-1# +2 -0
- data/app/views/caboose/checkout/_cart.html.erb +45 -48
- data/app/views/caboose/checkout/_cart_old.html.erb +49 -0
- data/app/views/caboose/checkout/_confirm.html.erb +6 -4
- data/app/views/caboose/checkout/_confirm_table.html.erb +0 -0
- data/app/views/caboose/checkout/{step_two.html.erb → addresses.html.erb} +2 -2
- data/app/views/caboose/checkout/gift_cards.html.erb +35 -0
- data/app/views/caboose/checkout/index.html.erb +53 -42
- data/app/views/caboose/checkout/payment.html.erb +108 -75
- data/app/views/caboose/checkout/shipping.html.erb +62 -13
- data/app/views/caboose/gift_cards/admin_edit.html.erb +89 -0
- data/app/views/caboose/gift_cards/admin_index.html.erb +52 -0
- data/config/routes.rb +39 -19
- data/lib/caboose/engine.rb +1 -0
- data/lib/caboose/version.rb +1 -1
- metadata +20 -14
- data/app/assets/javascripts/caboose/cart2.js +0 -98
- data/app/views/caboose/checkout/step_four.html.erb +0 -67
- data/app/views/caboose/checkout/step_four_old.html.erb +0 -63
- data/app/views/caboose/checkout/step_one.html.erb +0 -54
- data/app/views/caboose/checkout/step_one_old.html.erb +0 -13
- data/app/views/caboose/checkout/step_three.html.erb +0 -55
- data/app/views/caboose/checkout/step_two_old.html.erb +0 -14
@@ -289,8 +289,8 @@ module Caboose
|
|
289
289
|
# GET /admin/users/options
|
290
290
|
def options
|
291
291
|
return if !user_is_allowed('users', 'view')
|
292
|
-
@users = User.reorder('last_name, first_name').all
|
293
|
-
options = @users.collect { |u| { 'value' => u.id, 'text' => "#{u.first_name} #{u.last_name}"}}
|
292
|
+
@users = User.where('id <> 2').reorder('last_name, first_name').all
|
293
|
+
options = @users.collect { |u| { 'value' => u.id, 'text' => "#{u.first_name} #{u.last_name} (#{u.email})"}}
|
294
294
|
render json: options
|
295
295
|
end
|
296
296
|
|
@@ -5,11 +5,12 @@ module Caboose
|
|
5
5
|
str = ""
|
6
6
|
str << "<div id='checkout-nav'>"
|
7
7
|
str << " <ul>"
|
8
|
-
str << " <li class='odd' id='checkout_nav1'><a href='#{i <= 1 ? '#' : '/checkout
|
9
|
-
str << " <li class='even' id='checkout_nav2'><a href='#{i <= 2 ? '#' : '/checkout/
|
10
|
-
str << " <li class='odd' id='checkout_nav3'><a href='#{i <= 3 ? '#' : '/checkout/
|
11
|
-
str << " <li class='even' id='checkout_nav4'><a href='#{i <= 4 ? '#' : '/checkout/
|
12
|
-
str << " <li class='
|
8
|
+
str << " <li class='odd' id='checkout_nav1'><a href='#{i <= 1 ? '#' : '/checkout' }' class='#{i == 1 ? 'current' : (i < 1 ? 'not_done' : 'done')}'><span>User Account </span></a></li>"
|
9
|
+
str << " <li class='even' id='checkout_nav2'><a href='#{i <= 2 ? '#' : '/checkout/addresses' }' class='#{i == 2 ? 'current' : (i < 2 ? 'not_done' : 'done')}'><span>Addresses </span></a></li>"
|
10
|
+
str << " <li class='odd' id='checkout_nav3'><a href='#{i <= 3 ? '#' : '/checkout/shipping' }' class='#{i == 3 ? 'current' : (i < 3 ? 'not_done' : 'done')}'><span>Shipping </span></a></li>"
|
11
|
+
str << " <li class='even' id='checkout_nav4'><a href='#{i <= 4 ? '#' : '/checkout/gift-cards' }' class='#{i == 4 ? 'current' : (i < 4 ? 'not_done' : 'done')}'><span>Gift Cards </span></a></li>"
|
12
|
+
str << " <li class='even' id='checkout_nav5'><a href='#{i <= 4 ? '#' : '/checkout/payment' }' class='#{i == 4 ? 'current' : (i < 4 ? 'not_done' : 'done')}'><span>Payment </span></a></li>"
|
13
|
+
str << " <li class='odd' id='checkout_nav6'><a href='#{i <= 5 ? '#' : '/checkout/confirm' }' class='#{i == 5 ? 'current' : (i < 5 ? 'not_done' : 'done')}'><span>Confirm </span></a></li>"
|
13
14
|
str << " </ul>"
|
14
15
|
str << "</div>"
|
15
16
|
return str
|
@@ -27,7 +27,8 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
|
|
27
27
|
|
28
28
|
if site.use_store
|
29
29
|
item = { 'id' => 'store', 'text' => 'Store', 'children' => [] }
|
30
|
-
item['children'] << { 'id' => 'categories' , 'href' => '/admin/categories' , 'text' => 'Categories' , 'modal' => false } if user.is_allowed('categories' , 'view')
|
30
|
+
item['children'] << { 'id' => 'categories' , 'href' => '/admin/categories' , 'text' => 'Categories' , 'modal' => false } if user.is_allowed('categories' , 'view')
|
31
|
+
item['children'] << { 'id' => 'giftcards' , 'href' => '/admin/gift-cards' , 'text' => 'Gift Cards' , 'modal' => false } if user.is_allowed('giftcards' , 'view')
|
31
32
|
item['children'] << { 'id' => 'orders' , 'href' => '/admin/orders' , 'text' => 'Orders' , 'modal' => false } if user.is_allowed('orders' , 'view')
|
32
33
|
item['children'] << { 'id' => 'products' , 'href' => '/admin/products' , 'text' => 'Products' , 'modal' => false } if user.is_allowed('products' , 'view')
|
33
34
|
item['children'] << { 'id' => 'shippingpackages' , 'href' => '/admin/shipping-packages' , 'text' => 'Shipping Packages' , 'modal' => false } if user.is_allowed('shippingpackages' , 'view')
|
@@ -1,19 +1,14 @@
|
|
1
1
|
module Caboose
|
2
2
|
class Discount < ActiveRecord::Base
|
3
|
-
self.table_name = '
|
3
|
+
self.table_name = 'store_order_discounts'
|
4
4
|
self.primary_key = 'id'
|
5
|
-
|
6
|
-
belongs_to :
|
7
|
-
|
5
|
+
|
6
|
+
belongs_to :gift_card
|
7
|
+
belongs_to :order
|
8
8
|
attr_accessible :id,
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
|
13
|
-
:amount_total,
|
14
|
-
:amount_flat, # Amount of the savings flat off the total
|
15
|
-
:amount_percentage, # Amount of savings as a percentage off the total
|
16
|
-
:no_shipping, # Whether or not it's a free shipping discount
|
17
|
-
:no_tax # Whether or not it's a free shipping discount
|
9
|
+
:gift_card_id,
|
10
|
+
:order_id,
|
11
|
+
:amount
|
12
|
+
|
18
13
|
end
|
19
14
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Caboose
|
2
|
+
class GiftCard < ActiveRecord::Base
|
3
|
+
self.table_name = 'store_gift_cards'
|
4
|
+
self.primary_key = 'id'
|
5
|
+
|
6
|
+
belongs_to :site
|
7
|
+
has_many :discounts
|
8
|
+
has_many :orders, :through => :discounts
|
9
|
+
attr_accessible :id,
|
10
|
+
:site_id,
|
11
|
+
:name, # The name of this discount
|
12
|
+
:code, # The code the customer has to input to apply for this discount
|
13
|
+
:card_type,
|
14
|
+
:total,
|
15
|
+
:balance,
|
16
|
+
:min_order_total, # The minimum order total required to be able to use the card
|
17
|
+
:date_available,
|
18
|
+
:date_expires,
|
19
|
+
:status
|
20
|
+
|
21
|
+
STATUS_INACTIVE = 'Inactive'
|
22
|
+
STATUS_ACTIVE = 'Active'
|
23
|
+
STATUS_EXPIRED = 'Expired'
|
24
|
+
|
25
|
+
CARD_TYPE_AMOUNT = 'Amount'
|
26
|
+
CARD_TYPE_PERCENTAGE = 'Percentage'
|
27
|
+
CARD_TYPE_NO_SHIPPING = 'No Shipping'
|
28
|
+
CARD_TYPE_NO_TAX = 'No Tax'
|
29
|
+
|
30
|
+
def valid_for_order?(order)
|
31
|
+
return false if self.status != GiftCard::STATUS_ACTIVE
|
32
|
+
return false if self.date_available && DateTime.now.utc < self.date_available
|
33
|
+
return false if self.date_expires && DateTime.now.utc > self.date_expires
|
34
|
+
return false if self.card_type == GiftCard::CARD_TYPE_AMOUNT && self.balance <= 0
|
35
|
+
return false if self.min_order_total && order.total < self.min_order_total
|
36
|
+
return true
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Flat amount - $10 off
|
43
|
+
# Flat amount off if you spend over a certain amount
|
44
|
+
# Percentage off
|
45
|
+
# Percentage amount off if you spend over a certain amount
|
46
|
+
# Free shipping
|
47
|
+
# Free shipping if you spend over a certain amount
|
48
|
+
# No Tax
|
49
|
+
# No tax if you spend over a certain amount
|
data/app/models/caboose/order.rb
CHANGED
@@ -11,51 +11,50 @@ module Caboose
|
|
11
11
|
belongs_to :customer, :class_name => 'Caboose::User'
|
12
12
|
belongs_to :shipping_address, :class_name => 'Address'
|
13
13
|
belongs_to :billing_address, :class_name => 'Address'
|
14
|
-
has_many :discounts
|
15
|
-
has_many :order_discounts
|
14
|
+
has_many :discounts
|
16
15
|
has_many :line_items, :after_add => :line_item_added, :after_remove => :line_item_removed, :order => :id
|
17
16
|
has_many :order_packages, :class_name => 'Caboose::OrderPackage'
|
18
17
|
has_many :order_transactions
|
19
18
|
|
20
19
|
attr_accessible :id,
|
21
20
|
:site_id,
|
22
|
-
:
|
21
|
+
:alternate_id,
|
23
22
|
:subtotal,
|
24
|
-
:tax,
|
25
|
-
:shipping_carrier,
|
26
|
-
:shipping_service_code,
|
23
|
+
:tax,
|
27
24
|
:shipping,
|
28
25
|
:handling,
|
29
|
-
:
|
30
|
-
:
|
26
|
+
:custom_discount,
|
27
|
+
:discount,
|
31
28
|
:total,
|
32
|
-
:
|
33
|
-
:payment_status,
|
34
|
-
:notes,
|
35
|
-
:referring_site,
|
36
|
-
:landing_site,
|
37
|
-
:landing_site_ref,
|
38
|
-
:cancel_reason,
|
39
|
-
:date_created,
|
40
|
-
:date_authorized,
|
41
|
-
:date_captured,
|
42
|
-
:date_cancelled,
|
43
|
-
:email,
|
44
|
-
:customer_id,
|
45
|
-
:payment_id,
|
46
|
-
:gateway_id,
|
47
|
-
:financial_status,
|
29
|
+
:customer_id,
|
48
30
|
:shipping_address_id,
|
49
31
|
:billing_address_id,
|
32
|
+
:status,
|
33
|
+
:financial_status,
|
34
|
+
:referring_site,
|
50
35
|
:landing_page,
|
51
|
-
:landing_page_ref,
|
52
|
-
:transaction_d,
|
53
|
-
:auth_code,
|
54
|
-
:alternate_id,
|
36
|
+
:landing_page_ref,
|
55
37
|
:auth_amount,
|
56
|
-
:
|
57
|
-
:
|
58
|
-
|
38
|
+
:date_created,
|
39
|
+
:notes
|
40
|
+
|
41
|
+
# :payment_status,
|
42
|
+
# :cancel_reason,
|
43
|
+
# :date_authorized,
|
44
|
+
# :date_captured,
|
45
|
+
# :date_cancelled,
|
46
|
+
# :email,
|
47
|
+
# :payment_id,
|
48
|
+
# :gateway_id,
|
49
|
+
# :transaction_d,
|
50
|
+
# :auth_code,
|
51
|
+
# :amount_discounted,
|
52
|
+
# :shipping_carrier,
|
53
|
+
# :shipping_service_code,
|
54
|
+
# :order_number,
|
55
|
+
# :date_shipped,
|
56
|
+
# :transaction_service,
|
57
|
+
# :transaction_id
|
59
58
|
|
60
59
|
STATUS_CART = 'cart'
|
61
60
|
STATUS_PENDING = 'pending'
|
@@ -166,36 +165,48 @@ module Caboose
|
|
166
165
|
end
|
167
166
|
|
168
167
|
def calculate
|
169
|
-
self.update_column(:subtotal,
|
170
|
-
self.update_column(:tax,
|
171
|
-
|
172
|
-
self.update_column(:handling,
|
173
|
-
self.update_column(:
|
168
|
+
self.update_column(:subtotal , self.calculate_subtotal )
|
169
|
+
self.update_column(:tax , self.calculate_tax )
|
170
|
+
self.update_column(:shipping , self.calculate_shipping )
|
171
|
+
self.update_column(:handling , self.calculate_handling )
|
172
|
+
self.update_column(:discount , self.calculate_discount )
|
173
|
+
self.update_column(:total , self.calculate_total )
|
174
174
|
end
|
175
175
|
|
176
176
|
def calculate_subtotal
|
177
|
-
return 0 if self.line_items.empty?
|
178
|
-
|
177
|
+
return 0.0 if self.line_items.empty?
|
178
|
+
x = 0.0
|
179
|
+
self.line_items.each{ |li| x = x + li.variant.price }
|
180
|
+
return x
|
179
181
|
end
|
180
182
|
|
181
183
|
def calculate_tax
|
182
|
-
return 0 if !self.shipping_address
|
184
|
+
return 0.0 if !self.shipping_address
|
183
185
|
self.subtotal * TaxCalculator.tax_rate(self.shipping_address)
|
184
186
|
end
|
185
187
|
|
186
|
-
def calculate_shipping
|
187
|
-
return 0 if
|
188
|
-
|
189
|
-
|
188
|
+
def calculate_shipping
|
189
|
+
return 0.0 if self.order_packages.nil? || self.order_packages.count == 0
|
190
|
+
x = 0.0
|
191
|
+
self.order_packages.each{ |op| x = x + op.total }
|
192
|
+
return x
|
190
193
|
end
|
191
194
|
|
192
195
|
def calculate_handling
|
193
|
-
return 0 if
|
194
|
-
self.
|
196
|
+
return 0.0 if self.site.nil? || self.site.store_config.nil?
|
197
|
+
self.subtotal * self.site.store_config.handling_percentage.to_f
|
198
|
+
end
|
199
|
+
|
200
|
+
def calculate_discount
|
201
|
+
return 0.0 if self.discounts.nil? || self.discounts.count == 0
|
202
|
+
x = 0.0
|
203
|
+
self.discounts.each{ |d| x = x + d.amount }
|
204
|
+
x = x + self.custom_discount if self.custom_discount
|
205
|
+
return x
|
195
206
|
end
|
196
207
|
|
197
208
|
def calculate_total
|
198
|
-
|
209
|
+
return (self.subtotal + self.tax + self.shipping + self.handling) - self.discount
|
199
210
|
end
|
200
211
|
|
201
212
|
def shipping_and_handling
|
@@ -207,6 +218,15 @@ module Caboose
|
|
207
218
|
self.line_items.each{ |li| count = count + li.quantity } if self.line_items
|
208
219
|
return count
|
209
220
|
end
|
221
|
+
|
222
|
+
def take_gift_card_funds
|
223
|
+
return if self.discounts.nil? || self.discounts.count == 0
|
224
|
+
self.discounts.each do |d|
|
225
|
+
gc = d.gift_card
|
226
|
+
gc.balance = gc.balance - d.amount
|
227
|
+
gc.save
|
228
|
+
end
|
229
|
+
end
|
210
230
|
end
|
211
231
|
end
|
212
232
|
|
@@ -17,12 +17,19 @@ module Caboose
|
|
17
17
|
STATUS_PENDING = 'Pending'
|
18
18
|
STATUS_SHIPPED = 'Shipped'
|
19
19
|
|
20
|
+
def self.custom_order_packages(store_config, order)
|
21
|
+
eval(store_config.order_packages_function)
|
22
|
+
end
|
23
|
+
|
20
24
|
# Calculates the shipping packages required for all the items in the order
|
21
25
|
def self.create_for_order(order)
|
22
|
-
|
23
|
-
store_config = order.site.store_config
|
24
|
-
return if !store_config.calculate_packages
|
25
26
|
|
27
|
+
store_config = order.site.store_config
|
28
|
+
if !store_config.calculate_packages
|
29
|
+
self.custom_order_packages(store_config, order)
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
26
33
|
# Make sure all the line items in the order have a quantity of 1
|
27
34
|
extra_line_items = []
|
28
35
|
order.line_items.each do |li|
|
@@ -87,7 +94,7 @@ module Caboose
|
|
87
94
|
end
|
88
95
|
end
|
89
96
|
|
90
|
-
end
|
97
|
+
end
|
91
98
|
end
|
92
99
|
|
93
100
|
def fits(line_item = nil)
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'active_shipping'
|
2
|
+
include ActiveMerchant::Shipping
|
3
|
+
|
4
|
+
module Caboose
|
5
|
+
class OrderPackageCalculator
|
6
|
+
|
7
|
+
def self.custom_order_packages(store_config, order)
|
8
|
+
return eval(store_config.order_packages_function)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.order_packages(order)
|
12
|
+
return [] if Caboose::store_shipping.nil?
|
13
|
+
|
14
|
+
sc = order.site.store_config
|
15
|
+
if sc.order_packages_function
|
16
|
+
order_packages = self.custom_order_packages(sc, order)
|
17
|
+
return order_packages
|
18
|
+
end
|
19
|
+
|
20
|
+
# Remove any order packages
|
21
|
+
LineItem.where(:order_id => order.id).update_all(:order_package_id => nil)
|
22
|
+
OrderPackage.where(:order_id => order.id).destroy_all
|
23
|
+
|
24
|
+
# Calculate what shipping packages we'll need
|
25
|
+
OrderPackage.create_for_order(order)
|
26
|
+
|
27
|
+
return all_rates
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.rate(order)
|
31
|
+
return nil if !order.shipping_service_code
|
32
|
+
self.rates(order).each { |rate| return rate if rate[:service_code] == order.shipping_service_code }
|
33
|
+
return nil
|
34
|
+
end
|
35
|
+
|
36
|
+
# Calculates the packages required for all the items in the order
|
37
|
+
#def self.packages_for_order(order)
|
38
|
+
#
|
39
|
+
# # Make sure all the items in the order have attributes set
|
40
|
+
# order.line_items.each do |li|
|
41
|
+
# v = li.variant
|
42
|
+
# Caboose.log("Error: variant #{v.id} has a zero weight") and return false if v.weight.nil? || v.weight == 0
|
43
|
+
# next if v.volume && v.volume > 0
|
44
|
+
# Caboose.log("Error: variant #{v.id} has a zero length") and return false if v.length.nil? || v.length == 0
|
45
|
+
# Caboose.log("Error: variant #{v.id} has a zero width" ) and return false if v.width.nil? || v.width == 0
|
46
|
+
# Caboose.log("Error: variant #{v.id} has a zero height") and return false if v.height.nil? || v.height == 0
|
47
|
+
# v.volume = v.length * v.width * v.height
|
48
|
+
# v.save
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# # Reorder the items in the order by volume
|
52
|
+
# h = {}
|
53
|
+
# order.line_items.each do |li|
|
54
|
+
# (1..li.quantity).each do |i|
|
55
|
+
# v = li.variant
|
56
|
+
# h[v.volume] = v
|
57
|
+
# end
|
58
|
+
# end
|
59
|
+
# variants = h.sort_by{ |k,v| k }.collect{ |x| x[1] }
|
60
|
+
#
|
61
|
+
# all_packages = ShippingPackage.reorder(:price).all
|
62
|
+
# packages = []
|
63
|
+
#
|
64
|
+
# # Now go through each variant and fit it in a new or existing package
|
65
|
+
# variants.each do |v|
|
66
|
+
#
|
67
|
+
# # See if the item will fit in any of the existing packages
|
68
|
+
# it_fits = false
|
69
|
+
# packages.each do |h|
|
70
|
+
# it_fits = h.shipping_package.fits(h.variants, v)
|
71
|
+
# if it_fits
|
72
|
+
# h.variants << v
|
73
|
+
# break
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
# next if it_fits
|
77
|
+
#
|
78
|
+
# # Otherwise find the cheapest package the item will fit into
|
79
|
+
# all_packages.each do |p|
|
80
|
+
# if p.fits(v)
|
81
|
+
# packages << StdClass.new('shipping_package' => p, 'variants' => [v])
|
82
|
+
# break
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# end
|
87
|
+
#
|
88
|
+
# return packages
|
89
|
+
#
|
90
|
+
# #arr = []
|
91
|
+
# #packages.each do |h|
|
92
|
+
# # p = h.package
|
93
|
+
# # weight = 0.0
|
94
|
+
# # h.variants.each{ |v| weight = weight + v.weight }
|
95
|
+
# # weight = weight * 0.035274
|
96
|
+
# # arr << Package.new(weight, [p.length, p.width, p.height], :units => :imperial)
|
97
|
+
# #end
|
98
|
+
# #return arr
|
99
|
+
#
|
100
|
+
#end
|
101
|
+
end
|
102
|
+
end
|
@@ -47,6 +47,16 @@ module Caboose
|
|
47
47
|
self.image.url(size)
|
48
48
|
end
|
49
49
|
|
50
|
+
def urls
|
51
|
+
{
|
52
|
+
:tiny => self.url(:tiny),
|
53
|
+
:thumb => self.url(:thumb),
|
54
|
+
:medium => self.url(:medium),
|
55
|
+
:large => self.url(:large),
|
56
|
+
:huge => self.url(:huge)
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
50
60
|
def as_json(options={})
|
51
61
|
self.attributes.merge({
|
52
62
|
:urls => {
|
@@ -235,15 +235,9 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
235
235
|
[ :updated_at , :datetime , :null => true ]
|
236
236
|
],
|
237
237
|
Caboose::Discount => [
|
238
|
-
[ :
|
239
|
-
[ :
|
240
|
-
[ :
|
241
|
-
[ :amount_current , :numeric ],
|
242
|
-
[ :amount_total , :numeric ],
|
243
|
-
[ :amount_flat , :numeric ],
|
244
|
-
[ :amount_percentage , :numeric ],
|
245
|
-
[ :no_shipping , :boolean ],
|
246
|
-
[ :no_tax , :boolean ]
|
238
|
+
[ :gift_card_id , :integer ],
|
239
|
+
[ :order_id , :integer ],
|
240
|
+
[ :amount , :numeric , { :default => 0.0 }]
|
247
241
|
],
|
248
242
|
Caboose::Domain => [
|
249
243
|
[ :site_id , :integer ],
|
@@ -251,6 +245,18 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
251
245
|
[ :primary , :boolean, { :default => false }],
|
252
246
|
[ :under_construction , :boolean, { :default => false }]
|
253
247
|
],
|
248
|
+
Caboose::GiftCard => [
|
249
|
+
[ :site_id , :integer ],
|
250
|
+
[ :name , :string ],
|
251
|
+
[ :code , :string ],
|
252
|
+
[ :card_type , :string ],
|
253
|
+
[ :total , :numeric , { :default => 0.0 }],
|
254
|
+
[ :balance , :numeric , { :default => 0.0 }],
|
255
|
+
[ :min_order_total , :numeric , { :default => 0.0 }],
|
256
|
+
[ :date_available , :datetime ],
|
257
|
+
[ :date_expires , :datetime ],
|
258
|
+
[ :status , :string ]
|
259
|
+
],
|
254
260
|
Caboose::LineItem => [
|
255
261
|
[ :order_id , :integer ],
|
256
262
|
[ :order_package_id , :integer ],
|
@@ -306,41 +312,43 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
306
312
|
],
|
307
313
|
Caboose::Order => [
|
308
314
|
[ :site_id , :integer ],
|
309
|
-
[ :
|
310
|
-
[ :order_number , :string ],
|
315
|
+
[ :alternate_id , :integer ],
|
311
316
|
[ :subtotal , :numeric , :default => 0 ],
|
312
317
|
[ :tax , :numeric , :default => 0 ],
|
313
318
|
[ :shipping , :numeric , :default => 0 ],
|
314
319
|
[ :handling , :numeric , :default => 0 ],
|
320
|
+
[ :custom_discount , :numeric , :default => 0 ],
|
315
321
|
[ :discount , :numeric , :default => 0 ],
|
316
322
|
[ :total , :numeric , :default => 0 ],
|
317
323
|
[ :customer_id , :integer ],
|
318
|
-
[ :payment_id , :integer ],
|
319
|
-
[ :gateway_id , :integer ],
|
320
324
|
[ :financial_status , :string ],
|
321
325
|
[ :shipping_address_id , :integer ],
|
322
326
|
[ :billing_address_id , :integer ],
|
323
327
|
[ :notes , :text ],
|
324
328
|
[ :status , :string ],
|
325
329
|
[ :date_created , :datetime ],
|
326
|
-
[ :date_authorized , :datetime ],
|
327
|
-
[ :date_captured , :datetime ],
|
328
|
-
[ :date_cancelled , :datetime ],
|
329
330
|
[ :referring_site , :text ],
|
330
331
|
[ :landing_page , :string ],
|
331
|
-
[ :landing_page_ref , :string ],
|
332
|
-
[ :
|
333
|
-
|
334
|
-
[ :
|
335
|
-
[ :
|
336
|
-
[ :
|
337
|
-
[ :
|
338
|
-
[ :
|
339
|
-
[ :
|
340
|
-
[ :
|
341
|
-
[ :
|
342
|
-
[ :
|
343
|
-
[ :
|
332
|
+
[ :landing_page_ref , :string ],
|
333
|
+
[ :auth_amount , :numeric ]
|
334
|
+
|
335
|
+
#[ :email , :string ],
|
336
|
+
#[ :order_number , :string ],
|
337
|
+
#[ :payment_id , :integer ],
|
338
|
+
#[ :gateway_id , :integer ],
|
339
|
+
#[ :date_authorized , :datetime ],
|
340
|
+
#[ :date_captured , :datetime ],
|
341
|
+
#[ :date_cancelled , :datetime ],
|
342
|
+
#[ :shipping_carrier , :string ],
|
343
|
+
#[ :shipping_service_code , :string ],
|
344
|
+
#[ :shipping_service_name , :string ],
|
345
|
+
#[ :transaction_id , :string ],
|
346
|
+
#[ :transaction_id , :string ],
|
347
|
+
#[ :transaction_service , :string ],
|
348
|
+
#[ :amount_discounted , :numeric ],
|
349
|
+
#[ :auth_code , :string ],
|
350
|
+
#[ :date_shipped , :datetime ],
|
351
|
+
#[ :decremented , :boolean ]
|
344
352
|
],
|
345
353
|
Caboose::Page => [
|
346
354
|
[ :site_id , :integer ],
|
@@ -568,6 +576,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
568
576
|
[ :shipping_email , :string ],
|
569
577
|
[ :handling_percentage , :string ],
|
570
578
|
[ :calculate_packages , :boolean , { :default => true }],
|
579
|
+
[ :order_packages_function , :text ],
|
571
580
|
[ :shipping_rates_function , :text ],
|
572
581
|
[ :length_unit , :string , { :default => 'in' }],
|
573
582
|
[ :weight_unit , :string , { :default => 'oz' }]
|