spree_core 1.1.1 → 1.1.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/app/assets/javascripts/admin/admin.js.erb +55 -13
  2. data/app/assets/javascripts/admin/checkouts/edit.js +1 -1
  3. data/app/assets/javascripts/admin/image_settings.js +2 -2
  4. data/app/assets/javascripts/admin/orders/edit.js +1 -1
  5. data/app/assets/javascripts/admin/orders/edit_form.js +1 -1
  6. data/app/assets/javascripts/admin/spree.routes.js.erb +30 -0
  7. data/app/assets/javascripts/admin/taxonomy.js +1 -1
  8. data/app/assets/javascripts/store/cart.js +1 -1
  9. data/app/assets/javascripts/store/product.js +3 -3
  10. data/app/assets/stylesheets/admin/admin.css.erb +3 -1
  11. data/app/assets/stylesheets/store/screen.css.scss +18 -66
  12. data/app/assets/stylesheets/store/variables.css.scss +58 -0
  13. data/app/controllers/spree/admin/configurations_controller.rb +1 -1
  14. data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
  15. data/app/controllers/spree/admin/image_settings_controller.rb +1 -1
  16. data/app/controllers/spree/admin/inventory_settings_controller.rb +1 -1
  17. data/app/controllers/spree/admin/inventory_units_controller.rb +1 -1
  18. data/app/controllers/spree/admin/line_items_controller.rb +4 -3
  19. data/app/controllers/spree/admin/mail_settings_controller.rb +1 -1
  20. data/app/controllers/spree/admin/option_types_controller.rb +16 -0
  21. data/app/controllers/spree/admin/orders/customer_details_controller.rb +4 -3
  22. data/app/controllers/spree/admin/orders_controller.rb +5 -3
  23. data/app/controllers/spree/admin/overview_controller.rb +1 -1
  24. data/app/controllers/spree/admin/payments_controller.rb +1 -1
  25. data/app/controllers/spree/admin/product_properties_controller.rb +5 -0
  26. data/app/controllers/spree/admin/products_controller.rb +3 -3
  27. data/app/controllers/spree/admin/reports_controller.rb +3 -3
  28. data/app/controllers/spree/admin/shipments_controller.rb +30 -32
  29. data/app/controllers/spree/admin/shipping_methods_controller.rb +11 -0
  30. data/app/controllers/spree/admin/tax_settings_controller.rb +1 -1
  31. data/app/controllers/spree/admin/taxons_controller.rb +1 -1
  32. data/app/controllers/spree/admin/users_controller.rb +1 -1
  33. data/app/controllers/spree/admin/zones_controller.rb +2 -2
  34. data/app/helpers/spree/admin/base_helper.rb +2 -7
  35. data/app/helpers/spree/admin/navigation_helper.rb +6 -45
  36. data/app/helpers/spree/products_helper.rb +1 -1
  37. data/app/models/spree/address.rb +3 -3
  38. data/app/models/spree/app_configuration.rb +1 -0
  39. data/app/models/spree/calculator/default_tax.rb +2 -0
  40. data/app/models/spree/calculator/flat_percent_item_total.rb +2 -0
  41. data/app/models/spree/calculator/flat_rate.rb +2 -0
  42. data/app/models/spree/calculator/flexi_rate.rb +2 -0
  43. data/app/models/spree/calculator/per_item.rb +20 -4
  44. data/app/models/spree/calculator/price_sack.rb +2 -0
  45. data/app/models/spree/country.rb +3 -3
  46. data/app/models/spree/creditcard.rb +1 -1
  47. data/app/models/spree/image.rb +1 -0
  48. data/app/models/spree/inventory_unit.rb +7 -5
  49. data/app/models/spree/line_item.rb +3 -3
  50. data/app/models/spree/option_type.rb +3 -3
  51. data/app/models/spree/option_value.rb +2 -2
  52. data/app/models/spree/order.rb +39 -15
  53. data/app/models/spree/payment.rb +2 -2
  54. data/app/models/spree/payment/processing.rb +13 -4
  55. data/app/models/spree/preference.rb +10 -9
  56. data/app/models/spree/product.rb +4 -11
  57. data/app/models/spree/product/scopes.rb +39 -34
  58. data/app/models/spree/product_option_type.rb +2 -2
  59. data/app/models/spree/product_property.rb +2 -2
  60. data/app/models/spree/return_authorization.rb +1 -1
  61. data/app/models/spree/shipment.rb +5 -5
  62. data/app/models/spree/shipping_method.rb +3 -2
  63. data/app/models/spree/state.rb +1 -1
  64. data/app/models/spree/state_change.rb +1 -1
  65. data/app/models/spree/tax_rate.rb +7 -3
  66. data/app/models/spree/taxon.rb +1 -1
  67. data/app/models/spree/user.rb +2 -2
  68. data/app/models/spree/variant.rb +8 -1
  69. data/app/models/spree/zone_member.rb +1 -1
  70. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +1 -1
  71. data/app/views/spree/admin/line_items/destroy.js.erb +1 -0
  72. data/app/views/spree/admin/mail_methods/_form.html.erb +1 -1
  73. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +2 -2
  74. data/app/views/spree/admin/option_types/edit.html.erb +2 -2
  75. data/app/views/spree/admin/orders/_line_item.html.erb +1 -4
  76. data/app/views/spree/admin/payment_methods/_form.html.erb +1 -1
  77. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +3 -3
  78. data/app/views/spree/admin/product_properties/index.html.erb +1 -4
  79. data/app/views/spree/admin/trackers/_form.html.erb +1 -1
  80. data/app/views/spree/checkout/_address.html.erb +16 -16
  81. data/app/views/spree/checkout/edit.html.erb +1 -1
  82. data/app/views/spree/checkout/payment/_gateway.html.erb +3 -3
  83. data/app/views/spree/layouts/spree_application.html.erb +1 -1
  84. data/app/views/spree/order_mailer/cancel_email.text.erb +4 -4
  85. data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
  86. data/app/views/spree/orders/_form.html.erb +5 -5
  87. data/app/views/spree/orders/_line_item.html.erb +7 -7
  88. data/app/views/spree/orders/edit.html.erb +14 -12
  89. data/app/views/spree/products/_taxons.html.erb +1 -1
  90. data/app/views/spree/shared/_filters.html.erb +1 -1
  91. data/app/views/spree/shared/_products.html.erb +5 -5
  92. data/config/routes.rb +4 -4
  93. data/db/migrate/20120523061241_convert_sales_tax_to_default_tax.rb +9 -0
  94. data/db/migrate/20120604030249_add_deleted_at_to_spree_shipping_methods.rb +5 -0
  95. data/db/migrate/20120605211305_make_users_email_index_unique.rb +10 -0
  96. data/lib/generators/spree/dummy/templates/rails/application.rb +1 -1
  97. data/lib/spree/core/current_order.rb +2 -1
  98. data/lib/spree/core/engine.rb +11 -7
  99. data/lib/spree/core/relation_serialization.rb +9 -0
  100. data/lib/spree/core/respond_with.rb +1 -1
  101. data/lib/spree/core/search/base.rb +2 -16
  102. data/lib/spree/core/ssl_requirement.rb +2 -2
  103. data/lib/spree/core/testing_support/controller_requests.rb +6 -0
  104. data/lib/spree/core/version.rb +1 -1
  105. data/lib/spree/product_filters.rb +34 -23
  106. metadata +43 -42
@@ -56,47 +56,12 @@ module Spree
56
56
  link_to_with_icon('exclamation', t(:clone), clone_admin_product_url(resource), options)
57
57
  end
58
58
 
59
- def link_to_delete(resource, options = {}, html_options={})
60
- options.assert_valid_keys(:url, :caption, :title, :dataType, :success, :error, :name)
61
-
62
- options.reverse_merge! :url => object_url(resource) unless options.key? :url
63
- options.reverse_merge! :caption => t(:are_you_sure)
64
- options.reverse_merge! :title => t(:confirm_delete)
65
- options.reverse_merge! :dataType => 'script'
66
- options.reverse_merge! :success => "function(r){ $('##{spree_dom_id resource}').fadeOut('hide'); }"
67
- options.reverse_merge! :error => "function(jqXHR, textStatus, errorThrown){ show_flash_error(jqXHR.responseText); }"
68
- options.reverse_merge! :name => icon('delete') + ' ' + t(:delete)
69
-
70
- link_to_function_delete(options, html_options)
71
- #link_to_function_delete_native(options, html_options)
72
- end
73
-
74
- # this function does not use jConfirm
75
- def link_to_function_delete_native(options, html_options)
76
- fn = %Q{
77
- var answer = confirm("#{t(:are_you_sure)}");
78
- if (!!answer) { #{link_to_function_delete_ajax(options)} };
79
- }
80
- link_to_function options[:name], fn, html_options
81
- end
82
-
83
- def link_to_function_delete(options, html_options)
84
- link_to_function options[:name], "jConfirm('#{options[:caption]}', '#{options[:title]}', function(r) {
85
- if(r){ #{link_to_function_delete_ajax(options)} }
86
- });", html_options
87
- end
88
-
89
- def link_to_function_delete_ajax(options)
90
- %Q{
91
- $.ajax({
92
- type: 'POST',
93
- url: '#{options[:url]}',
94
- data: ({_method: 'delete', authenticity_token: AUTH_TOKEN}),
95
- dataType:'#{options[:dataType]}',
96
- success: #{options[:success]},
97
- error: #{options[:error]}
98
- });
99
- }
59
+ def link_to_delete(resource, options={})
60
+ url = options[:url] || object_url(resource)
61
+ name = options[:name] || icon('delete') + ' ' + t(:delete)
62
+ link_to name, url,
63
+ :class => "delete-resource",
64
+ :data => { :confirm => t(:are_you_sure) }
100
65
  end
101
66
 
102
67
  def link_to_with_icon(icon_name, text, url, options = {})
@@ -129,10 +94,6 @@ module Spree
129
94
  end
130
95
  end
131
96
 
132
- def button_link_to_function(text, function, html_options = {})
133
- link_to_function(text_for_button_link(text, html_options), function, html_options_for_button_link(html_options))
134
- end
135
-
136
97
  def text_for_button_link(text, html_options)
137
98
  s = ''
138
99
  if html_options[:icon]
@@ -14,7 +14,7 @@ module Spree
14
14
 
15
15
  # converts line breaks in product description into <p> tags (for html display purposes)
16
16
  def product_description(product)
17
- raw(product.description.gsub(/^(.*)$/, '<p>\1</p>'))
17
+ raw(product.description.gsub(/(.*?)\n\n/m, '<p>\1</p>\n\n'))
18
18
  end
19
19
 
20
20
  def variant_images_hash(product)
@@ -1,9 +1,9 @@
1
1
  module Spree
2
2
  class Address < ActiveRecord::Base
3
- belongs_to :country
4
- belongs_to :state
3
+ belongs_to :country, :class_name => "Spree::Country"
4
+ belongs_to :state, :class_name => "Spree::State"
5
5
 
6
- has_many :shipments
6
+ has_many :shipments, :class_name => "Spree::Shipment"
7
7
 
8
8
  validates :firstname, :lastname, :address1, :city, :zipcode, :country, :phone, :presence => true
9
9
  validate :state_validate
@@ -68,6 +68,7 @@ module Spree
68
68
  # Preferences related to image settings
69
69
  preference :attachment_default_url, :string, :default => '/spree/products/:id/:style/:basename.:extension'
70
70
  preference :attachment_path, :string, :default => ':rails_root/public/spree/products/:id/:style/:basename.:extension'
71
+ preference :attachment_url, :string, :default => '/spree/products/:id/:style/:basename.:extension'
71
72
  preference :attachment_styles, :string, :default => "{\"mini\":\"48x48>\",\"small\":\"100x100>\",\"product\":\"240x240>\",\"large\":\"600x600>\"}"
72
73
  preference :attachment_default_style, :string, :default => 'product'
73
74
  preference :s3_access_key, :string
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::DefaultTax < Calculator
3
5
  def self.description
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::FlatPercentItemTotal < Calculator
3
5
  preference :flat_percent, :decimal, :default => 0
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::FlatRate < Calculator
3
5
  preference :amount, :decimal, :default => 0
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::FlexiRate < Calculator
3
5
  preference :first_item, :decimal, :default => 0.0
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::PerItem < Calculator
3
5
  preference :amount, :decimal, :default => 0
@@ -11,14 +13,28 @@ module Spree
11
13
  def compute(object=nil)
12
14
  return 0 if object.nil?
13
15
  self.preferred_amount * object.line_items.reduce(0) do |sum, value|
14
- value_to_add = (target_products().include?(value.product) ? value.quantity : 0)
16
+ if !matching_products || matching_products.include?(value.product)
17
+ value_to_add = value.quantity
18
+ else
19
+ value_to_add = 0
20
+ end
15
21
  sum + value_to_add
16
22
  end
17
23
  end
18
24
 
19
- def target_products
20
- #TODO: product groups?
21
- self.calculable.promotion.rules.map(&:products).flatten
25
+ # Returns all products that match this calculator, but only if the calculator
26
+ # is attached to a promotion. If attached to a ShippingMethod, nil is returned.
27
+ def matching_products
28
+ # Regression check for #1596
29
+ # Calculator::PerItem can be used in two cases.
30
+ # The first is in a typical promotion, providing a discount per item of a particular item
31
+ # The second is a ShippingMethod, where it applies to an entire order
32
+ #
33
+ # Shipping methods do not have promotions attached, but promotions do
34
+ # Therefore we must check for promotions
35
+ if self.calculable.respond_to?(:promotion)
36
+ self.calculable.promotion.rules.map(&:products).flatten
37
+ end
22
38
  end
23
39
  end
24
40
  end
@@ -1,3 +1,5 @@
1
+ require_dependency 'spree/calculator'
2
+
1
3
  module Spree
2
4
  class Calculator::PriceSack < Calculator
3
5
  preference :minimal_amount, :decimal, :default => 0
@@ -1,9 +1,9 @@
1
1
  module Spree
2
2
  class Country < ActiveRecord::Base
3
- has_many :states, :order => "name ASC"
3
+ has_many :states, :order => "name ASC", :class_name => "Spree::State"
4
4
 
5
- has_one :zone_member, :as => :zoneable
6
- has_one :zone, :through => :zone_member
5
+ has_one :zone_member, :as => :zoneable, :class_name => "Spree::ZoneMember"
6
+ has_one :zone, :through => :zone_member, :class_name => "Spree::Zone"
7
7
 
8
8
  validates :name, :iso_name, :presence => true
9
9
 
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  class Creditcard < ActiveRecord::Base
3
- has_many :payments, :as => :source
3
+ has_many :payments, :as => :source, :class_name => "Spree::Payment"
4
4
 
5
5
  before_save :set_last_digits
6
6
  after_validation :set_card_type
@@ -25,6 +25,7 @@ module Spree
25
25
 
26
26
  Spree::Image.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles])
27
27
  Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path]
28
+ Spree::Image.attachment_definitions[:attachment][:url] = Spree::Config[:attachment_url]
28
29
  Spree::Image.attachment_definitions[:attachment][:default_url] = Spree::Config[:attachment_default_url]
29
30
  Spree::Image.attachment_definitions[:attachment][:default_style] = Spree::Config[:attachment_default_style]
30
31
 
@@ -1,9 +1,9 @@
1
1
  module Spree
2
2
  class InventoryUnit < ActiveRecord::Base
3
- belongs_to :variant
4
- belongs_to :order
5
- belongs_to :shipment
6
- belongs_to :return_authorization
3
+ belongs_to :variant, :class_name => "Spree::Variant"
4
+ belongs_to :order, :class_name => "Spree::Order"
5
+ belongs_to :shipment, :class_name => "Spree::Shipment"
6
+ belongs_to :return_authorization, :class_name => "Spree::ReturnAuthorization"
7
7
 
8
8
  scope :backorder, where(:state => 'backordered')
9
9
 
@@ -81,7 +81,9 @@ module Spree
81
81
  variant_units = order.inventory_units.group_by(&:variant_id)
82
82
  return unless variant_units.include? variant.id
83
83
 
84
- variant_units = variant_units[variant.id].sort_by(&:state)
84
+ variant_units = variant_units[variant.id].reject do |variant_unit|
85
+ variant_unit.state == 'shipped'
86
+ end.sort_by(&:state)
85
87
 
86
88
  quantity.times do
87
89
  inventory_unit = variant_units.shift
@@ -1,11 +1,11 @@
1
1
  module Spree
2
2
  class LineItem < ActiveRecord::Base
3
3
  before_validation :adjust_quantity
4
- belongs_to :order
5
- belongs_to :variant
4
+ belongs_to :order, :class_name => "Spree::Order"
5
+ belongs_to :variant, :class_name => "Spree::Variant"
6
6
 
7
7
  has_one :product, :through => :variant
8
- has_many :adjustments, :as => :adjustable
8
+ has_many :adjustments, :as => :adjustable, :class_name => "Spree::Adjustment"
9
9
 
10
10
  before_validation :copy_price
11
11
 
@@ -1,8 +1,8 @@
1
1
  module Spree
2
2
  class OptionType < ActiveRecord::Base
3
- has_many :option_values, :order => :position, :dependent => :destroy
4
- has_many :product_option_types, :dependent => :destroy
5
- has_and_belongs_to_many :prototypes, :join_table => 'spree_option_types_prototypes'
3
+ has_many :option_values, :order => :position, :dependent => :destroy, :class_name => "Spree::OptionValue"
4
+ has_many :product_option_types, :dependent => :destroy, :class_name => "Spree::ProductOptionType"
5
+ has_and_belongs_to_many :prototypes, :join_table => 'spree_option_types_prototypes', :class_name => "Spree::Prototype"
6
6
 
7
7
  attr_accessible :name, :presentation
8
8
 
@@ -1,8 +1,8 @@
1
1
  module Spree
2
2
  class OptionValue < ActiveRecord::Base
3
- belongs_to :option_type
3
+ belongs_to :option_type, :class_name => "Spree::OptionType"
4
4
  acts_as_list :scope => :option_type
5
- has_and_belongs_to_many :variants, :join_table => 'spree_option_values_variants'
5
+ has_and_belongs_to_many :variants, :join_table => 'spree_option_values_variants', :class_name => "Spree::Variant"
6
6
 
7
7
  attr_accessible :name, :presentation
8
8
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  :ship_address, :bill_address, :line_items_attributes, :number,
7
7
  :shipping_method_id, :email, :use_billing, :special_instructions
8
8
 
9
- belongs_to :user
9
+ belongs_to :user, :class_name => "Spree::User"
10
10
 
11
11
  belongs_to :bill_address, :foreign_key => 'bill_address_id', :class_name => 'Spree::Address'
12
12
  alias_method :billing_address, :bill_address
@@ -16,7 +16,7 @@ module Spree
16
16
  alias_method :shipping_address, :ship_address
17
17
  alias_method :shipping_address=, :ship_address=
18
18
 
19
- belongs_to :shipping_method
19
+ belongs_to :shipping_method, :class_name => "Spree::ShippingMethod"
20
20
 
21
21
  has_many :state_changes, :as => :stateful
22
22
  has_many :line_items, :dependent => :destroy
@@ -24,7 +24,7 @@ module Spree
24
24
  has_many :payments, :dependent => :destroy
25
25
  has_many :shipments, :dependent => :destroy
26
26
  has_many :return_authorizations, :dependent => :destroy
27
- has_many :adjustments, :as => :adjustable, :dependent => :destroy
27
+ has_many :adjustments, :as => :adjustable, :dependent => :destroy, :order => "created_at ASC"
28
28
 
29
29
  accepts_nested_attributes_for :line_items
30
30
  accepts_nested_attributes_for :bill_address
@@ -43,18 +43,6 @@ module Spree
43
43
  validate :has_available_shipment
44
44
  validate :has_available_payment
45
45
 
46
- #delegate :ip_address, :to => :checkout
47
- def ip_address
48
- '192.168.1.100'
49
- end
50
-
51
- scope :by_number, lambda { |number| where(:number => number) }
52
- scope :between, lambda { |*dates| where('created_at BETWEEN ? AND ?', dates.first.to_date, dates.last.to_date) }
53
- scope :by_customer, lambda { |customer| joins(:user).where("#{Spree::User.table_name}.email = ?", customer) }
54
- scope :by_state, lambda { |state| where(:state => state) }
55
- scope :complete, where('completed_at IS NOT NULL')
56
- scope :incomplete, where(:completed_at => nil)
57
-
58
46
  make_permalink :field => :number
59
47
 
60
48
  class_attribute :update_hooks
@@ -110,6 +98,30 @@ module Spree
110
98
 
111
99
  end
112
100
 
101
+ def self.by_number(number)
102
+ where(:number => number)
103
+ end
104
+
105
+ def self.between(start_date, end_date)
106
+ where(:created_at => start_date..end_date)
107
+ end
108
+
109
+ def self.by_customer(customer)
110
+ joins(:user).where("#{Spree::User.table_name}.email" => customer)
111
+ end
112
+
113
+ def self.by_state(state)
114
+ where(:state => state)
115
+ end
116
+
117
+ def self.complete
118
+ where('completed_at IS NOT NULL')
119
+ end
120
+
121
+ def self.incomplete
122
+ where(:completed_at => nil)
123
+ end
124
+
113
125
  # Use this method in other gems that wish to register their own custom logic that should be called after Order#updat
114
126
  def self.register_update_hook(hook)
115
127
  self.update_hooks.add(hook)
@@ -284,6 +296,7 @@ module Spree
284
296
  current_item.update_attribute(field[:name].gsub(' ', '_').downcase, value)
285
297
  end
286
298
 
299
+ self.reload
287
300
  current_item
288
301
  end
289
302
 
@@ -414,6 +427,10 @@ module Spree
414
427
  end.compact.sort_by { |r| r.cost }
415
428
  end
416
429
 
430
+ def paid?
431
+ payment_state == 'paid'
432
+ end
433
+
417
434
  def payment
418
435
  payments.first
419
436
  end
@@ -446,6 +463,13 @@ module Spree
446
463
  line_items.select &:insufficient_stock?
447
464
  end
448
465
 
466
+ def merge!(order)
467
+ order.line_items.each do |line_item|
468
+ self.add_variant(line_item.variant, line_item.quantity)
469
+ end
470
+ order.destroy
471
+ end
472
+
449
473
  private
450
474
  def create_user
451
475
  self.email = user.email if self.user and not user.anonymous?
@@ -1,9 +1,9 @@
1
1
  module Spree
2
2
  class Payment < ActiveRecord::Base
3
3
  include Spree::Payment::Processing
4
- belongs_to :order
4
+ belongs_to :order, :class_name => "Spree::Order"
5
5
  belongs_to :source, :polymorphic => true, :validate => true
6
- belongs_to :payment_method
6
+ belongs_to :payment_method, :class_name => "Spree::PaymentMethod"
7
7
 
8
8
  has_many :offsets, :class_name => 'Spree::Payment', :foreign_key => 'source_id', :conditions => "source_type = 'Spree::Payment' AND amount < 0 AND state = 'completed'"
9
9
  has_many :log_entries, :as => :source
@@ -50,7 +50,14 @@ module Spree
50
50
  protect_from_connection_error do
51
51
  check_environment
52
52
 
53
- response = payment_method.void(self.response_code, gateway_options)
53
+ if payment_method.payment_profiles_supported?
54
+ # Gateways supporting payment profiles will need access to creditcard object because this stores the payment profile information
55
+ # so supply the authorization itself as well as the creditcard, rather than just the authorization code
56
+ response = payment_method.void(self.response_code, source, gateway_options)
57
+ else
58
+ # Standard ActiveMerchant void usage
59
+ response = payment_method.void(self.response_code, gateway_options)
60
+ end
54
61
  record_response(response)
55
62
 
56
63
  if response.success?
@@ -129,8 +136,10 @@ module Spree
129
136
  record_response(response)
130
137
 
131
138
  if response.success?
132
- self.response_code = response.authorization
133
- self.avs_response = response.avs_result['code']
139
+ unless response.authorization.nil?
140
+ self.response_code = response.authorization
141
+ self.avs_response = response.avs_result['code']
142
+ end
134
143
  self.send("#{success_state}!")
135
144
  else
136
145
  self.send("#{failure_state}!")
@@ -145,7 +154,7 @@ module Spree
145
154
  def gateway_options
146
155
  options = { :email => order.email,
147
156
  :customer => order.email,
148
- :ip => order.ip_address,
157
+ :ip => '192.168.1.100', # TODO: Use real IP address
149
158
  :order_id => order.number }
150
159
 
151
160
  options.merge!({ :shipping => order.ship_total * 100,
@@ -35,23 +35,24 @@ class Spree::Preference < ActiveRecord::Base
35
35
  # to preferences definition types. This code should eventually be removed.
36
36
  # it is called during the load_preferences of the Preferences::Store
37
37
  def self.convert_old_value_types(preference)
38
- return unless [Symbol.to_s, Fixnum.to_s, Bignum.to_s,
39
- Float.to_s, TrueClass.to_s, FalseClass.to_s].include? preference.value_type
38
+ classes = [Symbol.to_s, Fixnum.to_s, Bignum.to_s,
39
+ Float.to_s, TrueClass.to_s, FalseClass.to_s]
40
+ return unless classes.map(&:downcase).include? preference.value_type.downcase
40
41
 
41
- case preference.value_type
42
- when Symbol.to_s
42
+ case preference.value_type.downcase
43
+ when "symbol"
43
44
  preference.value_type = 'string'
44
- when Fixnum.to_s
45
+ when "fixnum"
45
46
  preference.value_type = 'integer'
46
- when Bignum.to_s
47
+ when "bignum"
47
48
  preference.value_type = 'integer'
48
49
  preference.value = preference.value.to_f.to_i
49
- when Float.to_s
50
+ when "float"
50
51
  preference.value_type = 'decimal'
51
- when TrueClass.to_s
52
+ when "trueclass"
52
53
  preference.value_type = 'boolean'
53
54
  preference.value = "true"
54
- when FalseClass.to_s
55
+ when "falseclass"
55
56
  preference.value_type = 'boolean'
56
57
  preference.value = "false"
57
58
  end