Class: Caboose::Order

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/caboose/order.rb

Constant Summary collapse

STATUS_CART =
'cart'
STATUS_PENDING =
'pending'
STATUS_CANCELED =
'canceled'
STATUS_SHIPPED =
'shipped'
STATUS_TESTING =
'testing'

Instance Method Summary collapse

Instance Method Details

#authorized?Boolean

Returns:

  • (Boolean)


119
120
121
# File 'app/models/caboose/order.rb', line 119

def authorized?
  self.financial_status == 'authorized'
end

#calculateObject



135
136
137
138
139
140
141
142
# File 'app/models/caboose/order.rb', line 135

def calculate
  self.update_column(:subtotal , self.calculate_subtotal )
  self.update_column(:tax      , self.calculate_tax      )
  self.update_column(:shipping , self.calculate_shipping )
  self.update_column(:handling , self.calculate_handling )
  self.update_column(:discount , self.calculate_discount )
  self.update_column(:total    , self.calculate_total    )
end

#calculate_discountObject



168
169
170
171
172
173
174
# File 'app/models/caboose/order.rb', line 168

def calculate_discount      
  return 0.0 if self.discounts.nil? || self.discounts.count == 0
  x = 0.0
  self.discounts.each{ |d| x = x + d.amount }
  x = x + self.custom_discount if self.custom_discount
  return x
end

#calculate_handlingObject



163
164
165
166
# File 'app/models/caboose/order.rb', line 163

def calculate_handling
  return 0.0 if self.site.nil? || self.site.store_config.nil?      
  self.subtotal * self.site.store_config.handling_percentage.to_f
end

#calculate_shippingObject



156
157
158
159
160
161
# File 'app/models/caboose/order.rb', line 156

def calculate_shipping      
  return 0.0 if self.order_packages.nil? || self.order_packages.count == 0
  x = 0.0
  self.order_packages.each{ |op| x = x + op.total }
  return x
end

#calculate_subtotalObject



144
145
146
147
148
149
# File 'app/models/caboose/order.rb', line 144

def calculate_subtotal
  return 0.0 if self.line_items.empty?
  x = 0.0      
  self.line_items.each{ |li| x = x + li.variant.price }
  return x
end

#calculate_taxObject



151
152
153
154
# File 'app/models/caboose/order.rb', line 151

def calculate_tax
  return 0.0 if !self.shipping_address
  self.subtotal * TaxCalculator.tax_rate(self.shipping_address)
end

#calculate_totalObject



176
177
178
# File 'app/models/caboose/order.rb', line 176

def calculate_total
  return (self.subtotal + self.tax + self.shipping + self.handling) - self.discount
end

#captureObject



123
124
125
# File 'app/models/caboose/order.rb', line 123

def capture
  PaymentProcessor.capture(self)
end

#check_nil_fieldsObject



77
78
79
80
81
82
83
84
85
# File 'app/models/caboose/order.rb', line 77

def check_nil_fields
  self.subtotal        = 0.00 if self.subtotal.nil?       
  self.tax             = 0.00 if self.tax.nil?
  self.shipping        = 0.00 if self.shipping.nil?
  self.handling        = 0.00 if self.handling.nil?
  self.custom_discount = 0.00 if self.custom_discount.nil?
  self.discount        = 0.00 if self.discount.nil?
  self.total           = 0.00 if self.total.nil?
end

#decrement_quantitiesObject



91
92
93
94
95
96
97
98
99
# File 'app/models/caboose/order.rb', line 91

def decrement_quantities
  return false if self.decremented
  
  self.line_items.each do |line_item|
    line_item.variant.update_attribute(:quantity, line_item.variant.quantity_in_stock - line_item.quantity)
  end
  
  self.update_attribute(:decremented, true)
end

#has_empty_shipping_methods?Boolean

Returns:

  • (Boolean)


199
200
201
202
203
204
205
206
# File 'app/models/caboose/order.rb', line 199

def has_empty_shipping_methods?
  return true if self.order_packages.nil?
  return true if self.order_packages.count == 0
  self.order_packages.each do |op|
    return true if op.shipping_method_id.nil?
  end
  return false
end

#increment_quantitiesObject



101
102
103
104
105
106
107
108
109
# File 'app/models/caboose/order.rb', line 101

def increment_quantities
  return false if !self.decremented
  
  self.line_items.each do |line_item|
    line_item.variant.update_attribute(:quantity, line_item.variant.quantity_in_stock - line_item.quantity)
  end
  
  self.update_attribute(:decremented, false)
end

#item_countObject



184
185
186
187
188
# File 'app/models/caboose/order.rb', line 184

def item_count
  count = 0
  self.line_items.each{ |li| count = count + li.quantity } if self.line_items
  return count
end

#packagesObject



87
88
89
# File 'app/models/caboose/order.rb', line 87

def packages
  self.order_packages
end

#refunedObject



127
128
129
# File 'app/models/caboose/order.rb', line 127

def refuned
  PaymentProcessor.refund(self)
end

#resend_confirmationObject



111
112
113
# File 'app/models/caboose/order.rb', line 111

def resend_confirmation
  OrdersMailer.configure_for_site(self.site_id).customer_new_order(self).deliver
end

#shipping_and_handlingObject



180
181
182
# File 'app/models/caboose/order.rb', line 180

def shipping_and_handling
  (self.shipping ? self.shipping : 0.0) + (self.handling ? self.handling : 0.0)      
end

#take_gift_card_fundsObject



190
191
192
193
194
195
196
197
# File 'app/models/caboose/order.rb', line 190

def take_gift_card_funds
  return if self.discounts.nil? || self.discounts.count == 0
  self.discounts.each do |d|        
    gc = d.gift_card
    gc.balance = gc.balance - d.amount
    gc.save
  end
end

#test?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'app/models/caboose/order.rb', line 115

def test?
  self.status == 'testing'
end

#voidObject



131
132
133
# File 'app/models/caboose/order.rb', line 131

def void
  PaymentProcessor.void(self)
end