Class: Caboose::Order
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Caboose::Order
- 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
- #authorized? ⇒ Boolean
- #calculate ⇒ Object
- #calculate_discount ⇒ Object
- #calculate_handling ⇒ Object
- #calculate_shipping ⇒ Object
- #calculate_subtotal ⇒ Object
- #calculate_tax ⇒ Object
- #calculate_total ⇒ Object
- #capture ⇒ Object
- #check_nil_fields ⇒ Object
- #decrement_quantities ⇒ Object
- #has_empty_shipping_methods? ⇒ Boolean
- #increment_quantities ⇒ Object
- #item_count ⇒ Object
- #packages ⇒ Object
- #refuned ⇒ Object
- #resend_confirmation ⇒ Object
- #shipping_and_handling ⇒ Object
- #take_gift_card_funds ⇒ Object
- #test? ⇒ Boolean
- #void ⇒ Object
Instance Method Details
#authorized? ⇒ Boolean
119 120 121 |
# File 'app/models/caboose/order.rb', line 119 def self.financial_status == 'authorized' end |
#calculate ⇒ Object
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_discount ⇒ Object
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_handling ⇒ Object
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_shipping ⇒ Object
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_subtotal ⇒ Object
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_tax ⇒ Object
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_total ⇒ Object
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 |
#capture ⇒ Object
123 124 125 |
# File 'app/models/caboose/order.rb', line 123 def capture PaymentProcessor.capture(self) end |
#check_nil_fields ⇒ Object
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_quantities ⇒ Object
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
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_quantities ⇒ Object
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_count ⇒ Object
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 |
#packages ⇒ Object
87 88 89 |
# File 'app/models/caboose/order.rb', line 87 def packages self.order_packages end |
#refuned ⇒ Object
127 128 129 |
# File 'app/models/caboose/order.rb', line 127 def refuned PaymentProcessor.refund(self) end |
#resend_confirmation ⇒ Object
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_handling ⇒ Object
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_funds ⇒ Object
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
115 116 117 |
# File 'app/models/caboose/order.rb', line 115 def test? self.status == 'testing' end |
#void ⇒ Object
131 132 133 |
# File 'app/models/caboose/order.rb', line 131 def void PaymentProcessor.void(self) end |