spree_core 1.2.5 → 1.3.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/admin/address_states.js +5 -4
- data/app/assets/javascripts/admin/admin.js.erb +106 -58
- data/app/assets/javascripts/admin/calculator.js +2 -2
- data/app/assets/javascripts/admin/checkouts/edit.js +5 -5
- data/app/assets/javascripts/admin/image_settings.js.erb +62 -0
- data/app/assets/javascripts/admin/images/index.js.coffee +3 -0
- data/app/assets/javascripts/admin/images/new.js.coffee +3 -0
- data/app/assets/javascripts/admin/orders/edit.js +1 -1
- data/app/assets/javascripts/admin/progress.coffee +27 -0
- data/app/assets/javascripts/admin/shipping_methods.js.coffee +1 -1
- data/app/assets/javascripts/admin/spree-select2.js.erb +24 -0
- data/app/assets/javascripts/admin/spree_core.js +10 -0
- data/app/assets/javascripts/admin/taxon_autocomplete.js.erb +1 -1
- data/app/assets/javascripts/admin/taxonomy.js +9 -9
- data/app/assets/javascripts/admin/variant_autocomplete.js.erb +40 -0
- data/app/assets/javascripts/store/checkout.js.coffee +23 -5
- data/app/assets/javascripts/store/product.js.coffee +15 -8
- data/app/assets/javascripts/store/spree_core.js +0 -1
- data/app/assets/stylesheets/admin/components/_actions.scss +31 -0
- data/app/assets/stylesheets/admin/components/_date-picker.scss +154 -0
- data/app/assets/stylesheets/admin/components/_messages.scss +43 -0
- data/app/assets/stylesheets/admin/components/_navigation.scss +150 -0
- data/app/assets/stylesheets/admin/components/_pagination.scss +17 -0
- data/app/assets/stylesheets/admin/components/_product_autocomplete.scss +29 -0
- data/app/assets/stylesheets/admin/components/_progress.scss +35 -0
- data/app/assets/stylesheets/admin/components/_sidebar.scss +23 -0
- data/app/assets/stylesheets/admin/components/_states.scss +30 -0
- data/app/assets/stylesheets/admin/components/_table-filter.scss +14 -0
- data/app/assets/stylesheets/admin/globals/_functions.scss +25 -0
- data/app/assets/stylesheets/admin/globals/_mixins.scss +25 -0
- data/app/assets/stylesheets/admin/globals/_variables.scss +134 -0
- data/app/assets/stylesheets/admin/globals/_variables_override.scss +7 -0
- data/app/assets/stylesheets/admin/hacks/_ie.scss +73 -0
- data/app/assets/stylesheets/admin/hacks/_mozilla.scss +32 -0
- data/app/assets/stylesheets/admin/hacks/_opera.scss +17 -0
- data/app/assets/stylesheets/admin/plugins/_jstree.scss +132 -0
- data/app/assets/stylesheets/admin/plugins/_powertip.scss +86 -0
- data/app/assets/stylesheets/admin/plugins/_select2.scss +176 -0
- data/app/assets/stylesheets/admin/{token-input.css → plugins/_token-input.scss} +9 -8
- data/app/assets/stylesheets/admin/plugins/font-awesome.scss +303 -0
- data/app/assets/stylesheets/admin/{edit_checkouts.css → sections/_edit_checkouts.scss} +1 -1
- data/app/assets/stylesheets/admin/sections/_image_settings.scss +3 -0
- data/app/assets/stylesheets/admin/sections/_orders.scss +38 -0
- data/app/assets/stylesheets/admin/sections/_overview.scss +86 -0
- data/app/assets/stylesheets/admin/sections/_products.scss +26 -0
- data/app/assets/stylesheets/admin/sections/_promotions.scss +100 -0
- data/app/assets/stylesheets/admin/shared/_forms.scss +250 -0
- data/app/assets/stylesheets/admin/shared/_icons.scss +21 -0
- data/app/assets/stylesheets/admin/shared/_layout.scss +84 -0
- data/app/assets/stylesheets/admin/shared/_tables.scss +180 -0
- data/app/assets/stylesheets/admin/shared/_typography.scss +132 -0
- data/app/assets/stylesheets/admin/spree_admin.scss +38 -0
- data/app/assets/stylesheets/admin/spree_core.css +7 -7
- data/app/assets/stylesheets/store/screen.css.scss +57 -49
- data/app/assets/stylesheets/store/spree_core.css +2 -3
- data/app/assets/stylesheets/store/variables.css.scss +2 -0
- data/app/controllers/spree/admin/adjustments_controller.rb +3 -7
- data/app/controllers/spree/admin/base_controller.rb +1 -1
- data/app/controllers/spree/admin/countries_controller.rb +11 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +7 -8
- data/app/controllers/spree/admin/image_settings_controller.rb +2 -7
- data/app/controllers/spree/admin/inventory_settings_controller.rb +2 -6
- data/app/controllers/spree/admin/mail_methods_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +3 -4
- data/app/controllers/spree/admin/orders_controller.rb +3 -9
- data/app/controllers/spree/admin/payment_methods_controller.rb +5 -2
- data/app/controllers/spree/admin/payments_controller.rb +4 -4
- data/app/controllers/spree/admin/product_properties_controller.rb +0 -12
- data/app/controllers/spree/admin/products_controller.rb +19 -42
- data/app/controllers/spree/admin/properties_controller.rb +2 -2
- data/app/controllers/spree/admin/prototypes_controller.rb +0 -8
- data/app/controllers/spree/admin/reports_controller.rb +7 -4
- data/app/controllers/spree/admin/resource_controller.rb +3 -3
- data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
- data/app/controllers/spree/admin/shipments_controller.rb +3 -3
- data/app/controllers/spree/admin/shipping_methods_controller.rb +1 -1
- data/app/controllers/spree/admin/tax_categories_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller.rb +4 -4
- data/app/controllers/spree/admin/variants_controller.rb +11 -15
- data/app/controllers/spree/base_controller.rb +4 -1
- data/app/controllers/spree/checkout_controller.rb +3 -3
- data/app/controllers/spree/content_controller.rb +1 -1
- data/app/controllers/spree/countries_controller.rb +12 -0
- data/app/controllers/spree/home_controller.rb +2 -1
- data/app/controllers/spree/locale_controller.rb +3 -3
- data/app/controllers/spree/orders_controller.rb +7 -9
- data/app/controllers/spree/products_controller.rb +5 -4
- data/app/controllers/spree/states_controller.rb +1 -1
- data/app/controllers/spree/store_controller.rb +11 -0
- data/app/controllers/spree/taxons_controller.rb +2 -1
- data/app/helpers/spree/admin/base_helper.rb +16 -15
- data/app/helpers/spree/admin/navigation_helper.rb +38 -28
- data/app/helpers/spree/admin/orders_helper.rb +1 -7
- data/app/helpers/spree/admin/tables_helper.rb +15 -0
- data/app/helpers/spree/admin/taxons_helper.rb +0 -13
- data/app/helpers/spree/base_helper.rb +14 -28
- data/app/helpers/spree/checkout_helper.rb +0 -15
- data/app/helpers/spree/products_helper.rb +23 -10
- data/app/mailers/spree/order_mailer.rb +6 -17
- data/app/mailers/spree/shipment_mailer.rb +3 -8
- data/app/mailers/spree/test_mailer.rb +0 -5
- data/app/models/spree/address.rb +2 -1
- data/app/models/spree/adjustment.rb +5 -1
- data/app/models/spree/app_configuration.rb +2 -7
- data/app/models/spree/calculator/default_tax.rb +2 -6
- data/app/models/spree/calculator/flat_rate.rb +3 -1
- data/app/models/spree/calculator/flexi_rate.rb +2 -1
- data/app/models/spree/calculator/per_item.rb +3 -4
- data/app/models/spree/calculator/price_sack.rb +3 -1
- data/app/models/spree/country.rb +11 -0
- data/app/models/spree/credit_card.rb +5 -1
- data/app/models/spree/gateway.rb +2 -8
- data/app/models/spree/image.rb +1 -1
- data/app/models/spree/inventory_unit.rb +7 -3
- data/app/models/spree/line_item.rb +16 -2
- data/app/models/spree/order.rb +64 -137
- data/app/models/spree/order/checkout.rb +1 -8
- data/app/models/spree/order_updater.rb +134 -0
- data/app/models/spree/payment.rb +8 -19
- data/app/models/spree/payment/processing.rb +3 -3
- data/app/models/spree/payment_method.rb +6 -4
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/preferences/preferable_class_methods.rb +9 -6
- data/app/models/spree/preferences/store.rb +11 -26
- data/app/models/spree/price.rb +51 -0
- data/app/models/spree/product.rb +22 -14
- data/app/models/spree/product/scopes.rb +20 -28
- data/app/models/spree/prototype.rb +1 -1
- data/app/models/spree/return_authorization.rb +8 -0
- data/app/models/spree/shipment.rb +13 -5
- data/app/models/spree/shipping_method.rb +10 -1
- data/app/models/spree/shipping_rate.rb +2 -2
- data/app/models/spree/taxon.rb +0 -5
- data/app/models/spree/variant.rb +75 -25
- data/app/models/spree/zone.rb +1 -1
- data/app/views/spree/address/_form.html.erb +75 -0
- data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +23 -22
- data/app/views/spree/admin/adjustments/_form.html.erb +15 -12
- data/app/views/spree/admin/adjustments/edit.html.erb +15 -6
- data/app/views/spree/admin/adjustments/index.html.erb +12 -2
- data/app/views/spree/admin/adjustments/new.html.erb +15 -6
- data/app/views/spree/admin/banners/_gateway.html.erb +3 -1
- data/app/views/spree/admin/countries/_form.html.erb +22 -0
- data/app/views/spree/admin/countries/edit.html.erb +21 -0
- data/app/views/spree/admin/countries/index.html.erb +33 -0
- data/app/views/spree/admin/general_settings/edit.html.erb +75 -27
- data/app/views/spree/admin/image_settings/edit.html.erb +112 -99
- data/app/views/spree/admin/images/_form.html.erb +16 -12
- data/app/views/spree/admin/images/edit.html.erb +20 -11
- data/app/views/spree/admin/images/index.html.erb +70 -46
- data/app/views/spree/admin/images/new.html.erb +11 -8
- data/app/views/spree/admin/inventory_settings/edit.html.erb +16 -18
- data/app/views/spree/admin/inventory_settings/show.html.erb +14 -4
- data/app/views/spree/admin/line_items/create.js.erb +0 -3
- data/app/views/spree/admin/mail_methods/_form.html.erb +46 -47
- data/app/views/spree/admin/mail_methods/edit.html.erb +12 -3
- data/app/views/spree/admin/mail_methods/index.html.erb +37 -33
- data/app/views/spree/admin/mail_methods/new.html.erb +16 -4
- data/app/views/spree/admin/option_types/_form.html.erb +16 -12
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +7 -3
- data/app/views/spree/admin/option_types/edit.html.erb +45 -27
- data/app/views/spree/admin/option_types/index.html.erb +31 -26
- data/app/views/spree/admin/option_types/new.html.erb +1 -1
- data/app/views/spree/admin/orders/_add_product.html.erb +13 -10
- data/app/views/spree/admin/orders/_form.html.erb +53 -42
- data/app/views/spree/admin/orders/_line_item.html.erb +7 -9
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +59 -41
- data/app/views/spree/admin/orders/customer_details/edit.html.erb +11 -2
- data/app/views/spree/admin/orders/edit.html.erb +5 -8
- data/app/views/spree/admin/orders/index.html.erb +105 -67
- data/app/views/spree/admin/orders/new.html.erb +16 -5
- data/app/views/spree/admin/orders/show.html.erb +23 -14
- data/app/views/spree/admin/payment_methods/_form.html.erb +46 -45
- data/app/views/spree/admin/payment_methods/edit.html.erb +19 -6
- data/app/views/spree/admin/payment_methods/index.html.erb +33 -27
- data/app/views/spree/admin/payment_methods/new.html.erb +16 -5
- data/app/views/spree/admin/payments/_form.html.erb +27 -16
- data/app/views/spree/admin/payments/_list.html.erb +23 -19
- data/app/views/spree/admin/payments/credit.html.erb +4 -0
- data/app/views/spree/admin/payments/index.html.erb +12 -11
- data/app/views/spree/admin/payments/new.html.erb +13 -7
- data/app/views/spree/admin/payments/show.html.erb +13 -5
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +36 -26
- data/app/views/spree/admin/payments/source_views/_gateway.html.erb +26 -31
- data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +3 -1
- data/app/views/spree/admin/product_properties/index.html.erb +37 -30
- data/app/views/spree/admin/products/_form.html.erb +115 -87
- data/app/views/spree/admin/products/_properties_form.erb +6 -3
- data/app/views/spree/admin/products/edit.html.erb +8 -2
- data/app/views/spree/admin/products/index.html.erb +88 -55
- data/app/views/spree/admin/products/new.html.erb +24 -20
- data/app/views/spree/admin/products/new.js.erb +4 -0
- data/app/views/spree/admin/properties/_form.html.erb +15 -12
- data/app/views/spree/admin/properties/edit.html.erb +11 -3
- data/app/views/spree/admin/properties/index.html.erb +18 -17
- data/app/views/spree/admin/properties/new.html.erb +4 -2
- data/app/views/spree/admin/prototypes/_form.html.erb +22 -43
- data/app/views/spree/admin/prototypes/_prototypes.html.erb +7 -3
- data/app/views/spree/admin/prototypes/edit.html.erb +14 -3
- data/app/views/spree/admin/prototypes/index.html.erb +19 -16
- data/app/views/spree/admin/prototypes/new.html.erb +1 -1
- data/app/views/spree/admin/prototypes/new.js.erb +3 -0
- data/app/views/spree/admin/reports/index.html.erb +3 -1
- data/app/views/spree/admin/reports/sales_total.html.erb +31 -17
- data/app/views/spree/admin/return_authorizations/_form.html.erb +36 -27
- data/app/views/spree/admin/return_authorizations/edit.html.erb +16 -17
- data/app/views/spree/admin/return_authorizations/index.html.erb +47 -40
- data/app/views/spree/admin/return_authorizations/new.html.erb +5 -3
- data/app/views/spree/admin/shared/_address.html.erb +2 -2
- data/app/views/spree/admin/shared/_address_form.html.erb +58 -78
- data/app/views/spree/admin/shared/_calculator_fields.html.erb +16 -13
- data/app/views/spree/admin/shared/_configuration_menu.html.erb +23 -19
- data/app/views/spree/admin/shared/_edit_resource_links.html.erb +5 -4
- data/app/views/spree/admin/shared/_head.html.erb +10 -2
- data/app/views/spree/admin/shared/_new_resource_links.html.erb +5 -4
- data/app/views/spree/admin/shared/_order_details.html.erb +16 -15
- data/app/views/spree/admin/shared/_order_tabs.html.erb +65 -51
- data/app/views/spree/admin/shared/_product_sub_menu.html.erb +2 -2
- data/app/views/spree/admin/shared/_product_tabs.html.erb +23 -20
- data/app/views/spree/admin/shared/_report_criteria.html.erb +13 -11
- data/app/views/spree/admin/shared/_routes.html.erb +1 -2
- data/app/views/spree/admin/shared/_tabs.html.erb +5 -4
- data/app/views/spree/admin/shared/_translations.html.erb +22 -18
- data/app/views/spree/admin/shipments/_form.html.erb +54 -58
- data/app/views/spree/admin/shipments/edit.html.erb +20 -15
- data/app/views/spree/admin/shipments/index.html.erb +40 -33
- data/app/views/spree/admin/shipments/new.html.erb +4 -0
- data/app/views/spree/admin/shipping_categories/_form.html.erb +4 -6
- data/app/views/spree/admin/shipping_categories/edit.html.erb +17 -3
- data/app/views/spree/admin/shipping_categories/index.html.erb +18 -14
- data/app/views/spree/admin/shipping_categories/new.html.erb +15 -3
- data/app/views/spree/admin/shipping_methods/_form.html.erb +36 -24
- data/app/views/spree/admin/shipping_methods/edit.html.erb +18 -5
- data/app/views/spree/admin/shipping_methods/index.html.erb +21 -15
- data/app/views/spree/admin/shipping_methods/new.html.erb +18 -6
- data/app/views/spree/admin/states/_form.html.erb +13 -10
- data/app/views/spree/admin/states/_state_list.html.erb +10 -14
- data/app/views/spree/admin/states/edit.html.erb +13 -3
- data/app/views/spree/admin/states/index.html.erb +12 -4
- data/app/views/spree/admin/states/new.html.erb +9 -3
- data/app/views/spree/admin/tax_categories/_form.html.erb +23 -15
- data/app/views/spree/admin/tax_categories/edit.html.erb +11 -3
- data/app/views/spree/admin/tax_categories/index.html.erb +20 -15
- data/app/views/spree/admin/tax_categories/new.html.erb +12 -3
- data/app/views/spree/admin/tax_rates/_form.html.erb +38 -27
- data/app/views/spree/admin/tax_rates/edit.html.erb +18 -3
- data/app/views/spree/admin/tax_rates/index.html.erb +59 -40
- data/app/views/spree/admin/tax_rates/new.html.erb +20 -3
- data/app/views/spree/admin/tax_settings/edit.html.erb +10 -9
- data/app/views/spree/admin/taxonomies/_form.html.erb +1 -1
- data/app/views/spree/admin/taxonomies/_list.html.erb +24 -18
- data/app/views/spree/admin/taxonomies/edit.erb +24 -10
- data/app/views/spree/admin/taxonomies/get_children.json.erb +1 -1
- data/app/views/spree/admin/taxonomies/index.html.erb +8 -9
- data/app/views/spree/admin/taxonomies/new.html.erb +15 -5
- data/app/views/spree/admin/taxons/_form.html.erb +23 -18
- data/app/views/spree/admin/taxons/_taxon_table.html.erb +1 -1
- data/app/views/spree/admin/taxons/edit.html.erb +13 -5
- data/app/views/spree/admin/trackers/_form.html.erb +29 -24
- data/app/views/spree/admin/trackers/edit.html.erb +15 -3
- data/app/views/spree/admin/trackers/index.html.erb +43 -31
- data/app/views/spree/admin/trackers/new.html.erb +14 -3
- data/app/views/spree/admin/variants/_autocomplete.js.erb +30 -0
- data/app/views/spree/admin/variants/_form.html.erb +50 -31
- data/app/views/spree/admin/variants/index.html.erb +64 -46
- data/app/views/spree/admin/variants/new.html.erb +1 -0
- data/app/views/spree/admin/variants/new.js.erb +1 -0
- data/app/views/spree/admin/variants/search.rabl +15 -0
- data/app/views/spree/admin/zones/_country_member.html.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +30 -27
- data/app/views/spree/admin/zones/_member_type.html.erb +12 -9
- data/app/views/spree/admin/zones/_state_member.html.erb +2 -2
- data/app/views/spree/admin/zones/edit.html.erb +16 -3
- data/app/views/spree/admin/zones/index.html.erb +45 -36
- data/app/views/spree/admin/zones/new.html.erb +12 -1
- data/app/views/spree/checkout/_address.html.erb +17 -165
- data/app/views/spree/checkout/_confirm.html.erb +1 -1
- data/app/views/spree/checkout/_delivery.html.erb +1 -1
- data/app/views/spree/checkout/_payment.html.erb +1 -1
- data/app/views/spree/checkout/_summary.html.erb +4 -4
- data/app/views/spree/checkout/edit.html.erb +2 -0
- data/app/views/spree/checkout/payment/_gateway.html.erb +2 -2
- data/app/views/spree/checkout/registration.html.erb +1 -1
- data/app/views/spree/countries/index.js.erb +1 -0
- data/app/views/spree/layouts/admin.html.erb +125 -61
- data/app/views/spree/layouts/spree_application.html.erb +17 -6
- data/app/views/spree/order_mailer/cancel_email.text.erb +4 -4
- data/app/views/spree/order_mailer/confirm_email.text.erb +3 -3
- data/app/views/spree/orders/_adjustments.html.erb +1 -1
- data/app/views/spree/orders/_line_item.html.erb +3 -3
- data/app/views/spree/orders/show.html.erb +15 -15
- data/app/views/spree/products/_cart_form.html.erb +5 -5
- data/app/views/spree/products/_properties.html.erb +4 -3
- data/app/views/spree/products/_thumbnails.html.erb +15 -17
- data/app/views/spree/products/index.html.erb +1 -1
- data/app/views/spree/products/show.html.erb +1 -1
- data/app/views/spree/shared/_google_analytics.html.erb +9 -9
- data/app/views/spree/shared/_order_details.html.erb +14 -14
- data/app/views/spree/shared/_products.html.erb +1 -2
- data/app/views/spree/taxons/show.html.erb +1 -1
- data/config/locales/en.yml +43 -4
- data/config/routes.rb +4 -5
- data/db/migrate/20120831092320_spree_one_two.rb +481 -0
- data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
- data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
- data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
- data/db/migrate/20121031162139_split_prices_from_variants.rb +30 -0
- data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
- data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
- data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
- data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
- data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +1 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +6 -9
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
- data/lib/spree/core.rb +0 -7
- data/lib/spree/core/action_callbacks.rb +4 -4
- data/lib/spree/core/calculated_adjustments.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +65 -0
- data/lib/spree/core/controller_helpers/common.rb +90 -0
- data/lib/spree/core/controller_helpers/order.rb +71 -0
- data/lib/spree/core/{respond_with.rb → controller_helpers/respond_with.rb} +27 -25
- data/lib/spree/core/engine.rb +6 -5
- data/lib/spree/core/search/base.rb +3 -1
- data/lib/spree/core/testing_support/factories/payment_factory.rb +24 -0
- data/lib/spree/core/testing_support/factories/payment_method_factory.rb +0 -3
- data/lib/spree/core/testing_support/factories/price_factory.rb +8 -0
- data/lib/spree/core/testing_support/factories/zone_factory.rb +1 -1
- data/lib/spree/core/testing_support/flash.rb +17 -5
- data/lib/spree/core/testing_support/preferences.rb +6 -12
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/money.rb +3 -12
- data/lib/spree/product_filters.rb +8 -8
- data/lib/tasks/core.rake +3 -3
- data/lib/tasks/taxon.rake +1 -1
- data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.svg +255 -0
- data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/images/flags/ad.png +0 -0
- data/vendor/assets/images/flags/ae.png +0 -0
- data/vendor/assets/images/flags/af.png +0 -0
- data/vendor/assets/images/flags/ag.png +0 -0
- data/vendor/assets/images/flags/ai.png +0 -0
- data/vendor/assets/images/flags/al.png +0 -0
- data/vendor/assets/images/flags/am.png +0 -0
- data/vendor/assets/images/flags/an.png +0 -0
- data/vendor/assets/images/flags/ao.png +0 -0
- data/vendor/assets/images/flags/ar.png +0 -0
- data/vendor/assets/images/flags/as.png +0 -0
- data/vendor/assets/images/flags/at.png +0 -0
- data/vendor/assets/images/flags/au.png +0 -0
- data/vendor/assets/images/flags/aw.png +0 -0
- data/vendor/assets/images/flags/ax.png +0 -0
- data/vendor/assets/images/flags/az.png +0 -0
- data/vendor/assets/images/flags/ba.png +0 -0
- data/vendor/assets/images/flags/bb.png +0 -0
- data/vendor/assets/images/flags/bd.png +0 -0
- data/vendor/assets/images/flags/be.png +0 -0
- data/vendor/assets/images/flags/bf.png +0 -0
- data/vendor/assets/images/flags/bg.png +0 -0
- data/vendor/assets/images/flags/bh.png +0 -0
- data/vendor/assets/images/flags/bi.png +0 -0
- data/vendor/assets/images/flags/bj.png +0 -0
- data/vendor/assets/images/flags/bm.png +0 -0
- data/vendor/assets/images/flags/bn.png +0 -0
- data/vendor/assets/images/flags/bo.png +0 -0
- data/vendor/assets/images/flags/br.png +0 -0
- data/vendor/assets/images/flags/bs.png +0 -0
- data/vendor/assets/images/flags/bt.png +0 -0
- data/vendor/assets/images/flags/bv.png +0 -0
- data/vendor/assets/images/flags/bw.png +0 -0
- data/vendor/assets/images/flags/by.png +0 -0
- data/vendor/assets/images/flags/bz.png +0 -0
- data/vendor/assets/images/flags/ca.png +0 -0
- data/vendor/assets/images/flags/catalonia.png +0 -0
- data/vendor/assets/images/flags/cc.png +0 -0
- data/vendor/assets/images/flags/cd.png +0 -0
- data/vendor/assets/images/flags/cf.png +0 -0
- data/vendor/assets/images/flags/cg.png +0 -0
- data/vendor/assets/images/flags/ch.png +0 -0
- data/vendor/assets/images/flags/ci.png +0 -0
- data/vendor/assets/images/flags/ck.png +0 -0
- data/vendor/assets/images/flags/cl.png +0 -0
- data/vendor/assets/images/flags/cm.png +0 -0
- data/vendor/assets/images/flags/cn.png +0 -0
- data/vendor/assets/images/flags/co.png +0 -0
- data/vendor/assets/images/flags/cr.png +0 -0
- data/vendor/assets/images/flags/cs.png +0 -0
- data/vendor/assets/images/flags/cu.png +0 -0
- data/vendor/assets/images/flags/cv.png +0 -0
- data/vendor/assets/images/flags/cx.png +0 -0
- data/vendor/assets/images/flags/cy.png +0 -0
- data/vendor/assets/images/flags/cz.png +0 -0
- data/vendor/assets/images/flags/de.png +0 -0
- data/vendor/assets/images/flags/dj.png +0 -0
- data/vendor/assets/images/flags/dk.png +0 -0
- data/vendor/assets/images/flags/dm.png +0 -0
- data/vendor/assets/images/flags/do.png +0 -0
- data/vendor/assets/images/flags/dz.png +0 -0
- data/vendor/assets/images/flags/ec.png +0 -0
- data/vendor/assets/images/flags/ee.png +0 -0
- data/vendor/assets/images/flags/eg.png +0 -0
- data/vendor/assets/images/flags/eh.png +0 -0
- data/vendor/assets/images/flags/england.png +0 -0
- data/vendor/assets/images/flags/er.png +0 -0
- data/vendor/assets/images/flags/es.png +0 -0
- data/vendor/assets/images/flags/et.png +0 -0
- data/vendor/assets/images/flags/europeanunion.png +0 -0
- data/vendor/assets/images/flags/fam.png +0 -0
- data/vendor/assets/images/flags/fi.png +0 -0
- data/vendor/assets/images/flags/fj.png +0 -0
- data/vendor/assets/images/flags/fk.png +0 -0
- data/vendor/assets/images/flags/fm.png +0 -0
- data/vendor/assets/images/flags/fo.png +0 -0
- data/vendor/assets/images/flags/fr.png +0 -0
- data/vendor/assets/images/flags/ga.png +0 -0
- data/vendor/assets/images/flags/gb.png +0 -0
- data/vendor/assets/images/flags/gd.png +0 -0
- data/vendor/assets/images/flags/ge.png +0 -0
- data/vendor/assets/images/flags/gf.png +0 -0
- data/vendor/assets/images/flags/gh.png +0 -0
- data/vendor/assets/images/flags/gi.png +0 -0
- data/vendor/assets/images/flags/gl.png +0 -0
- data/vendor/assets/images/flags/gm.png +0 -0
- data/vendor/assets/images/flags/gn.png +0 -0
- data/vendor/assets/images/flags/gp.png +0 -0
- data/vendor/assets/images/flags/gq.png +0 -0
- data/vendor/assets/images/flags/gr.png +0 -0
- data/vendor/assets/images/flags/gs.png +0 -0
- data/vendor/assets/images/flags/gt.png +0 -0
- data/vendor/assets/images/flags/gu.png +0 -0
- data/vendor/assets/images/flags/gw.png +0 -0
- data/vendor/assets/images/flags/gy.png +0 -0
- data/vendor/assets/images/flags/hk.png +0 -0
- data/vendor/assets/images/flags/hm.png +0 -0
- data/vendor/assets/images/flags/hn.png +0 -0
- data/vendor/assets/images/flags/hr.png +0 -0
- data/vendor/assets/images/flags/ht.png +0 -0
- data/vendor/assets/images/flags/hu.png +0 -0
- data/vendor/assets/images/flags/id.png +0 -0
- data/vendor/assets/images/flags/ie.png +0 -0
- data/vendor/assets/images/flags/il.png +0 -0
- data/vendor/assets/images/flags/in.png +0 -0
- data/vendor/assets/images/flags/io.png +0 -0
- data/vendor/assets/images/flags/iq.png +0 -0
- data/vendor/assets/images/flags/ir.png +0 -0
- data/vendor/assets/images/flags/is.png +0 -0
- data/vendor/assets/images/flags/it.png +0 -0
- data/vendor/assets/images/flags/ja.png +0 -0
- data/vendor/assets/images/flags/jm.png +0 -0
- data/vendor/assets/images/flags/jo.png +0 -0
- data/vendor/assets/images/flags/ke.png +0 -0
- data/vendor/assets/images/flags/kg.png +0 -0
- data/vendor/assets/images/flags/kh.png +0 -0
- data/vendor/assets/images/flags/ki.png +0 -0
- data/vendor/assets/images/flags/km.png +0 -0
- data/vendor/assets/images/flags/kn.png +0 -0
- data/vendor/assets/images/flags/kp.png +0 -0
- data/vendor/assets/images/flags/kr.png +0 -0
- data/vendor/assets/images/flags/kw.png +0 -0
- data/vendor/assets/images/flags/ky.png +0 -0
- data/vendor/assets/images/flags/kz.png +0 -0
- data/vendor/assets/images/flags/la.png +0 -0
- data/vendor/assets/images/flags/lb.png +0 -0
- data/vendor/assets/images/flags/lc.png +0 -0
- data/vendor/assets/images/flags/li.png +0 -0
- data/vendor/assets/images/flags/lk.png +0 -0
- data/vendor/assets/images/flags/lr.png +0 -0
- data/vendor/assets/images/flags/ls.png +0 -0
- data/vendor/assets/images/flags/lt.png +0 -0
- data/vendor/assets/images/flags/lu.png +0 -0
- data/vendor/assets/images/flags/lv.png +0 -0
- data/vendor/assets/images/flags/ly.png +0 -0
- data/vendor/assets/images/flags/ma.png +0 -0
- data/vendor/assets/images/flags/mc.png +0 -0
- data/vendor/assets/images/flags/md.png +0 -0
- data/vendor/assets/images/flags/me.png +0 -0
- data/vendor/assets/images/flags/mg.png +0 -0
- data/vendor/assets/images/flags/mh.png +0 -0
- data/vendor/assets/images/flags/mk.png +0 -0
- data/vendor/assets/images/flags/ml.png +0 -0
- data/vendor/assets/images/flags/mm.png +0 -0
- data/vendor/assets/images/flags/mn.png +0 -0
- data/vendor/assets/images/flags/mo.png +0 -0
- data/vendor/assets/images/flags/mp.png +0 -0
- data/vendor/assets/images/flags/mq.png +0 -0
- data/vendor/assets/images/flags/mr.png +0 -0
- data/vendor/assets/images/flags/ms.png +0 -0
- data/vendor/assets/images/flags/mt.png +0 -0
- data/vendor/assets/images/flags/mu.png +0 -0
- data/vendor/assets/images/flags/mv.png +0 -0
- data/vendor/assets/images/flags/mw.png +0 -0
- data/vendor/assets/images/flags/mx.png +0 -0
- data/vendor/assets/images/flags/my.png +0 -0
- data/vendor/assets/images/flags/mz.png +0 -0
- data/vendor/assets/images/flags/na.png +0 -0
- data/vendor/assets/images/flags/nc.png +0 -0
- data/vendor/assets/images/flags/ne.png +0 -0
- data/vendor/assets/images/flags/nf.png +0 -0
- data/vendor/assets/images/flags/ng.png +0 -0
- data/vendor/assets/images/flags/ni.png +0 -0
- data/vendor/assets/images/flags/nl.png +0 -0
- data/vendor/assets/images/flags/no.png +0 -0
- data/vendor/assets/images/flags/np.png +0 -0
- data/vendor/assets/images/flags/nr.png +0 -0
- data/vendor/assets/images/flags/nu.png +0 -0
- data/vendor/assets/images/flags/nz.png +0 -0
- data/vendor/assets/images/flags/om.png +0 -0
- data/vendor/assets/images/flags/pa.png +0 -0
- data/vendor/assets/images/flags/pe.png +0 -0
- data/vendor/assets/images/flags/pf.png +0 -0
- data/vendor/assets/images/flags/pg.png +0 -0
- data/vendor/assets/images/flags/ph.png +0 -0
- data/vendor/assets/images/flags/pk.png +0 -0
- data/vendor/assets/images/flags/pl.png +0 -0
- data/vendor/assets/images/flags/pm.png +0 -0
- data/vendor/assets/images/flags/pn.png +0 -0
- data/vendor/assets/images/flags/pr.png +0 -0
- data/vendor/assets/images/flags/ps.png +0 -0
- data/vendor/assets/images/flags/pt.png +0 -0
- data/vendor/assets/images/flags/pw.png +0 -0
- data/vendor/assets/images/flags/py.png +0 -0
- data/vendor/assets/images/flags/qa.png +0 -0
- data/vendor/assets/images/flags/re.png +0 -0
- data/vendor/assets/images/flags/ro.png +0 -0
- data/vendor/assets/images/flags/rs.png +0 -0
- data/vendor/assets/images/flags/ru.png +0 -0
- data/vendor/assets/images/flags/rw.png +0 -0
- data/vendor/assets/images/flags/sa.png +0 -0
- data/vendor/assets/images/flags/sb.png +0 -0
- data/vendor/assets/images/flags/sc.png +0 -0
- data/vendor/assets/images/flags/scotland.png +0 -0
- data/vendor/assets/images/flags/sd.png +0 -0
- data/vendor/assets/images/flags/se.png +0 -0
- data/vendor/assets/images/flags/sg.png +0 -0
- data/vendor/assets/images/flags/sh.png +0 -0
- data/vendor/assets/images/flags/si.png +0 -0
- data/vendor/assets/images/flags/sj.png +0 -0
- data/vendor/assets/images/flags/sk.png +0 -0
- data/vendor/assets/images/flags/sl.png +0 -0
- data/vendor/assets/images/flags/sm.png +0 -0
- data/vendor/assets/images/flags/sn.png +0 -0
- data/vendor/assets/images/flags/so.png +0 -0
- data/vendor/assets/images/flags/sr.png +0 -0
- data/vendor/assets/images/flags/st.png +0 -0
- data/vendor/assets/images/flags/sv.png +0 -0
- data/vendor/assets/images/flags/sy.png +0 -0
- data/vendor/assets/images/flags/sz.png +0 -0
- data/vendor/assets/images/flags/tc.png +0 -0
- data/vendor/assets/images/flags/td.png +0 -0
- data/vendor/assets/images/flags/tf.png +0 -0
- data/vendor/assets/images/flags/tg.png +0 -0
- data/vendor/assets/images/flags/th.png +0 -0
- data/vendor/assets/images/flags/tj.png +0 -0
- data/vendor/assets/images/flags/tk.png +0 -0
- data/vendor/assets/images/flags/tl.png +0 -0
- data/vendor/assets/images/flags/tm.png +0 -0
- data/vendor/assets/images/flags/tn.png +0 -0
- data/vendor/assets/images/flags/to.png +0 -0
- data/vendor/assets/images/flags/tr.png +0 -0
- data/vendor/assets/images/flags/tt.png +0 -0
- data/vendor/assets/images/flags/tv.png +0 -0
- data/vendor/assets/images/flags/tw.png +0 -0
- data/vendor/assets/images/flags/tz.png +0 -0
- data/vendor/assets/images/flags/ua.png +0 -0
- data/vendor/assets/images/flags/ug.png +0 -0
- data/vendor/assets/images/flags/um.png +0 -0
- data/vendor/assets/images/flags/us.png +0 -0
- data/vendor/assets/images/flags/uy.png +0 -0
- data/vendor/assets/images/flags/uz.png +0 -0
- data/vendor/assets/images/flags/va.png +0 -0
- data/vendor/assets/images/flags/vc.png +0 -0
- data/vendor/assets/images/flags/ve.png +0 -0
- data/vendor/assets/images/flags/vg.png +0 -0
- data/vendor/assets/images/flags/vi.png +0 -0
- data/vendor/assets/images/flags/vn.png +0 -0
- data/vendor/assets/images/flags/vu.png +0 -0
- data/vendor/assets/images/flags/wales.png +0 -0
- data/vendor/assets/images/flags/wf.png +0 -0
- data/vendor/assets/images/flags/ws.png +0 -0
- data/vendor/assets/images/flags/ye.png +0 -0
- data/vendor/assets/images/flags/yt.png +0 -0
- data/vendor/assets/images/flags/za.png +0 -0
- data/vendor/assets/images/flags/zm.png +0 -0
- data/vendor/assets/images/flags/zw.png +0 -0
- data/vendor/assets/javascripts/css_browser_selector_dev.js +156 -0
- data/vendor/assets/javascripts/equalize.js +41 -0
- data/vendor/assets/javascripts/handlebars.js +1920 -0
- data/vendor/assets/javascripts/jquery.adaptivemenu.js +60 -0
- data/vendor/assets/javascripts/jquery.horizontalNav.js +141 -0
- data/vendor/assets/javascripts/jquery.jstree/themes/apple/style.css +3 -3
- data/vendor/assets/javascripts/jquery.powertip.js +796 -0
- data/vendor/assets/javascripts/jquery.vAlign.js +11 -0
- data/vendor/assets/javascripts/modernizr.js +4 -0
- data/vendor/assets/javascripts/responsive-tables.js +42 -0
- data/vendor/assets/javascripts/spin.js +319 -0
- data/vendor/assets/javascripts/trunk8.js +233 -0
- data/vendor/assets/stylesheets/font-awesome-ie7.css +645 -0
- data/vendor/assets/stylesheets/jquery.powertip.css +85 -0
- data/vendor/assets/stylesheets/normalize.css +375 -0
- data/vendor/assets/stylesheets/responsive-tables.css +21 -0
- data/vendor/assets/stylesheets/skeleton.css +4 -4
- metadata +394 -281
- checksums.yaml +0 -7
- data/app/assets/images/admin/bg/active-tab.png +0 -0
- data/app/assets/images/admin/bg/admin_tab_back.png +0 -0
- data/app/assets/images/admin/bg/admin_tab_selected_back.png +0 -0
- data/app/assets/images/admin/bg/content-back-blue.png +0 -0
- data/app/assets/images/admin/bg/content-back-green.png +0 -0
- data/app/assets/images/admin/bg/content-back.png +0 -0
- data/app/assets/images/admin/bg/flash-error.png +0 -0
- data/app/assets/images/admin/bg/flash-notice.png +0 -0
- data/app/assets/images/admin/bg/green-stripes.gif +0 -0
- data/app/assets/images/admin/bg/green-stripes.png +0 -0
- data/app/assets/images/admin/bg/grid_header_back.png +0 -0
- data/app/assets/images/admin/bg/grid_header_back_green.png +0 -0
- data/app/assets/images/admin/bg/header-bg.png +0 -0
- data/app/assets/images/admin/bg/header.png +0 -0
- data/app/assets/images/admin/bg/header_bg.jpg +0 -0
- data/app/assets/images/admin/bg/menu-current.png +0 -0
- data/app/assets/images/admin/bg/red-stripes.gif +0 -0
- data/app/assets/images/admin/bg/red-stripes.png +0 -0
- data/app/assets/images/admin/bg/subnav-divider.png +0 -0
- data/app/assets/images/admin/bg/subnav.png +0 -0
- data/app/assets/images/admin/bg/tab-back.png +0 -0
- data/app/assets/images/admin/buttons/blue/left_01.png +0 -0
- data/app/assets/images/admin/buttons/blue/right_01.png +0 -0
- data/app/assets/images/admin/buttons/drag-handle-green.png +0 -0
- data/app/assets/images/admin/buttons/green/left_01.png +0 -0
- data/app/assets/images/admin/buttons/green/right_01.png +0 -0
- data/app/assets/images/admin/buttons/left_01.png +0 -0
- data/app/assets/images/admin/buttons/left_01_small.png +0 -0
- data/app/assets/images/admin/buttons/orange/left_03.png +0 -0
- data/app/assets/images/admin/buttons/orange/right_03.png +0 -0
- data/app/assets/images/admin/buttons/right_01.png +0 -0
- data/app/assets/images/admin/buttons/right_01_small.png +0 -0
- data/app/assets/images/admin/icons/16x16/1.png +0 -0
- data/app/assets/images/admin/icons/16x16/10.png +0 -0
- data/app/assets/images/admin/icons/16x16/2.png +0 -0
- data/app/assets/images/admin/icons/16x16/3.png +0 -0
- data/app/assets/images/admin/icons/16x16/4.png +0 -0
- data/app/assets/images/admin/icons/16x16/5.png +0 -0
- data/app/assets/images/admin/icons/16x16/6.png +0 -0
- data/app/assets/images/admin/icons/16x16/7.png +0 -0
- data/app/assets/images/admin/icons/16x16/8.png +0 -0
- data/app/assets/images/admin/icons/16x16/9.png +0 -0
- data/app/assets/images/admin/icons/32x32/1.png +0 -0
- data/app/assets/images/admin/icons/32x32/10.png +0 -0
- data/app/assets/images/admin/icons/32x32/11.png +0 -0
- data/app/assets/images/admin/icons/32x32/2.png +0 -0
- data/app/assets/images/admin/icons/32x32/3.png +0 -0
- data/app/assets/images/admin/icons/32x32/4.png +0 -0
- data/app/assets/images/admin/icons/32x32/5.png +0 -0
- data/app/assets/images/admin/icons/32x32/6.png +0 -0
- data/app/assets/images/admin/icons/32x32/7.png +0 -0
- data/app/assets/images/admin/icons/32x32/8.png +0 -0
- data/app/assets/images/admin/icons/32x32/9.png +0 -0
- data/app/assets/images/admin/icons/accept.png +0 -0
- data/app/assets/images/admin/icons/add.gif +0 -0
- data/app/assets/images/admin/icons/add.png +0 -0
- data/app/assets/images/admin/icons/arrow-down.gif +0 -0
- data/app/assets/images/admin/icons/cross.png +0 -0
- data/app/assets/images/admin/icons/delete.gif +0 -0
- data/app/assets/images/admin/icons/delete.png +0 -0
- data/app/assets/images/admin/icons/drag.gif +0 -0
- data/app/assets/images/admin/icons/edit.gif +0 -0
- data/app/assets/images/admin/icons/edit.png +0 -0
- data/app/assets/images/admin/icons/email.png +0 -0
- data/app/assets/images/admin/icons/error.png +0 -0
- data/app/assets/images/admin/icons/exclamation.png +0 -0
- data/app/assets/images/admin/icons/feed.png +0 -0
- data/app/assets/images/admin/icons/pdf.png +0 -0
- data/app/assets/images/admin/icons/reorder.gif +0 -0
- data/app/assets/images/admin/icons/search.gif +0 -0
- data/app/assets/images/admin/icons/send-email.png +0 -0
- data/app/assets/images/admin/icons/stop.png +0 -0
- data/app/assets/images/admin/icons/switch.png +0 -0
- data/app/assets/images/admin/icons/tick.png +0 -0
- data/app/assets/images/admin/icons/up.gif +0 -0
- data/app/assets/images/admin/icons/xls.png +0 -0
- data/app/assets/images/credit_cards/icons/diners_club.png +0 -0
- data/app/assets/javascripts/admin/image_settings.js +0 -49
- data/app/assets/javascripts/admin/product_autocomplete.js.erb +0 -117
- data/app/assets/stylesheets/admin/admin-form.css.erb +0 -167
- data/app/assets/stylesheets/admin/admin-reset.css +0 -69
- data/app/assets/stylesheets/admin/admin-tables.css.erb +0 -40
- data/app/assets/stylesheets/admin/admin-typography.css +0 -117
- data/app/assets/stylesheets/admin/admin.css.erb +0 -682
- data/app/controllers/spree/admin/configurations_controller.rb +0 -7
- data/app/controllers/spree/admin/mail_settings_controller.rb +0 -17
- data/app/controllers/spree/admin/option_values_controller.rb +0 -11
- data/app/helpers/spree/account_helper.rb +0 -4
- data/app/helpers/spree/admin/overview_helper.rb +0 -16
- data/app/helpers/spree/admin/users_helper.rb +0 -10
- data/app/helpers/spree/admin/zones_helper.rb +0 -15
- data/app/helpers/spree/orders_helper.rb +0 -5
- data/app/helpers/spree/search_helper.rb +0 -12
- data/app/helpers/spree/trackers_helper.rb +0 -4
- data/app/views/spree/admin/configurations/index.html.erb +0 -68
- data/app/views/spree/admin/general_settings/show.html.erb +0 -40
- data/app/views/spree/admin/image_settings/show.html.erb +0 -11
- data/app/views/spree/admin/shared/_new_adjustment_button.html.erb +0 -8
- data/app/views/spree/admin/shared/_order_sub_menu.html.erb +0 -0
- data/app/views/spree/admin/tax_settings/show.html.erb +0 -14
- data/config/initializers/rails_3_1.rb +0 -12
- data/db/migrate/20090823005402_spree_zero_nine_zero.rb +0 -391
- data/db/migrate/20090904192342_create_indexes_for_inventory_units.rb +0 -6
- data/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb +0 -49
- data/db/migrate/20091007134354_change_taxons_to_nested_set.rb +0 -46
- data/db/migrate/20091008091614_move_to_configurable_gateways.rb +0 -54
- data/db/migrate/20091015110842_add_open_id_authentication_tables.rb +0 -15
- data/db/migrate/20091015153048_add_openid_field_to_users.rb +0 -26
- data/db/migrate/20091016174634_change_preference_value_type.rb +0 -10
- data/db/migrate/20091017175558_create_billing_integrations.rb +0 -12
- data/db/migrate/20091021133257_charge_refactoring.rb +0 -39
- data/db/migrate/20091104151730_add_some_indexes.rb +0 -11
- data/db/migrate/20091126190904_checkout_state_machine.rb +0 -5
- data/db/migrate/20091209153045_state_for_shipments.rb +0 -5
- data/db/migrate/20091209202200_make_state_events_polymorphic.rb +0 -12
- data/db/migrate/20091211203813_ship_address_id_for_checkouts.rb +0 -5
- data/db/migrate/20091212161118_shipping_method_id_for_checkouts.rb +0 -5
- data/db/migrate/20091213222815_creditcard_last_four_digits.rb +0 -14
- data/db/migrate/20091214183826_populate_legacy_shipment_state.rb +0 -15
- data/db/migrate/20100105090147_add_cost_price.rb +0 -5
- data/db/migrate/20100105132138_shipment_id_for_inventory_units.rb +0 -25
- data/db/migrate/20100111205525_cim_fields_for_creditcards.rb +0 -6
- data/db/migrate/20100112151511_create_return_authorizations.rb +0 -12
- data/db/migrate/20100113090919_add_return_authorization_to_inventory_units.rb +0 -5
- data/db/migrate/20100113203104_create_trackers.rb +0 -10
- data/db/migrate/20100121160010_creditcard_id_for_creditcard_txns.rb +0 -5
- data/db/migrate/20100121183934_original_creditcard_txn_id_for_creditcard_txns.rb +0 -5
- data/db/migrate/20100125145351_add_test_mode_to_billing_integration.rb +0 -6
- data/db/migrate/20100209025806_create_payment_methods.rb +0 -16
- data/db/migrate/20100209144531_polymorphic_payments.rb +0 -42
- data/db/migrate/20100213103131_change_payments_payment_method_to_belongs_to.rb +0 -11
- data/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb +0 -23
- data/db/migrate/20100223170312_sti_for_transactions.rb +0 -15
- data/db/migrate/20100223183812_drop_billing_integrations.rb +0 -16
- data/db/migrate/20100224153127_deleted_at_for_payment_methods.rb +0 -14
- data/db/migrate/20100301163454_add_adjustments_index.rb +0 -6
- data/db/migrate/20100317120946_add_alt_text_to_images.rb +0 -5
- data/db/migrate/20100419194457_fix_existing_coupon_credits.rb +0 -13
- data/db/migrate/20100427121301_add_display_to_payment_methods.rb +0 -5
- data/db/migrate/20100504142133_add_addresses_checkouts_indexes.rb +0 -8
- data/db/migrate/20100506180619_add_icon_to_taxons.rb +0 -17
- data/db/migrate/20100506185838_add_description_to_taxons.rb +0 -11
- data/db/migrate/20100528155333_index_for_shipments_number.rb +0 -5
- data/db/migrate/20100528185820_add_index_on_users_persistence_token.rb +0 -7
- data/db/migrate/20100605152042_add_default_to_tax_categories.rb +0 -5
- data/db/migrate/20100624110730_add_display_to_shipping_methods.rb +0 -5
- data/db/migrate/20100624123336_rename_payment_method_display.rb +0 -5
- data/db/migrate/20100624175547_rename_preferences_field.rb +0 -5
- data/db/migrate/20100811163637_add_guest_flag.rb +0 -7
- data/db/migrate/20100811205836_drop_order_token.rb +0 -9
- data/db/migrate/20100812162326_payments_state_and_assigned_to_order_only.rb +0 -14
- data/db/migrate/20100813023502_create_address_keys_for_order.rb +0 -6
- data/db/migrate/20100813185745_payment_total_for_orders.rb +0 -5
- data/db/migrate/20100816212146_shipping_method_id_for_orders.rb +0 -5
- data/db/migrate/20100817152723_add_shipment_and_payment_state.rb +0 -6
- data/db/migrate/20100819170125_refactor_adjustments.rb +0 -29
- data/db/migrate/20100820135707_response_code_and_avs_response_for_payments.rb +0 -6
- data/db/migrate/20100901171814_change_guest_flag_to_anonymous.rb +0 -7
- data/db/migrate/20100903203949_email_for_orders.rb +0 -5
- data/db/migrate/20100923162011_create_mail_methods.rb +0 -10
- data/db/migrate/20100929151905_rename_frozen_to_locked.rb +0 -5
- data/db/migrate/20101008190536_move_special_instructions_to_orders.rb +0 -10
- data/db/migrate/20101026184700_create_log_entries.rb +0 -11
- data/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb +0 -98
- data/db/migrate/20101026184746_delete_in_progress_orders.rb +0 -19
- data/db/migrate/20101026184808_migrate_checkout_to_orders.rb +0 -23
- data/db/migrate/20101026184855_remove_shipped_state.rb +0 -12
- data/db/migrate/20101026184916_prevent_nil_payment_total.rb +0 -8
- data/db/migrate/20101026184932_prevent_nil_email.rb +0 -9
- data/db/migrate/20101026184959_generate_anonymous_users.rb +0 -20
- data/db/migrate/20101026185022_update_order_state.rb +0 -12
- data/db/migrate/20101026192225_cleanup_legacy_tables.rb +0 -11
- data/db/migrate/20101028151745_remove_number_and_cvv_from_credicard.rb +0 -11
- data/db/migrate/20101103212716_drop_anonymous_field_for_user.rb +0 -11
- data/db/migrate/20101111133551_renamed_rma_cancelled_state.rb +0 -9
- data/db/migrate/20101117031806_fix_problematic_index_names.rb +0 -13
- data/db/migrate/20101223215658_add_position_to_variants.rb +0 -5
- data/db/migrate/20110110130847_add_next_state_to_state_events.rb +0 -5
- data/db/migrate/20110111122537_add_position_to_option_types.rb +0 -5
- data/db/migrate/20110314192118_remove_trailing_slashes_in_taxon_permalinks.rb +0 -19
- data/db/migrate/20110329141434_create_activators.rb +0 -14
- data/db/migrate/20110418151136_eligible_for_adjustments.rb +0 -5
- data/db/migrate/20111007143030_namespace_top_level_models.rb +0 -66
- data/db/migrate/20111107143030_migrate_namespaced_polymorphic_models.rb +0 -52
- data/db/migrate/20111201024007_make_adjustments_polymorphic.rb +0 -9
- data/db/migrate/20111215032408_add_company_to_addresses.rb +0 -5
- data/db/migrate/20111216154844_add_inc_tax_to_tax_rates.rb +0 -5
- data/db/migrate/20111219203242_rename_inc_price_attribute.rb +0 -5
- data/db/migrate/20111219205902_add_default_tax_zone.rb +0 -5
- data/db/migrate/20120105193911_associate_shipping_methods_and_shipping_categories.rb +0 -7
- data/db/migrate/20120105195817_add_match_rules_to_shipping_methods.rb +0 -7
- data/db/migrate/20120119024710_new_preferences.rb +0 -48
- data/db/migrate/20120203001428_rename_state_events_to_state_changes.rb +0 -9
- data/db/migrate/20120203153759_add_deleted_at_to_tax_category.rb +0 -5
- data/db/migrate/20120315064358_migrate_images_from_products_to_variants.rb +0 -37
- data/db/migrate/20120416233427_rename_attachment_size_to_attachment_file_size.rb +0 -5
- data/db/migrate/20120507232704_increase_scale_of_tax_rate_amount.rb +0 -9
- data/db/migrate/20120509055454_create_tokenized_permissions_table.rb +0 -16
- data/db/migrate/20120523061241_convert_sales_tax_to_default_tax.rb +0 -9
- data/db/migrate/20120530012000_rename_creditcards_to_credit_cards.rb +0 -11
- data/db/migrate/20120604030249_add_deleted_at_to_spree_shipping_methods.rb +0 -5
- data/db/migrate/20120604203654_remove_credit_total_from_orders.rb +0 -5
- data/db/migrate/20120712172620_add_counter_cache_to_zone_members.rb +0 -14
- data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +0 -5
- data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +0 -5
- data/lib/spree/core/authorize_net_cim_hack.rb +0 -871
- data/lib/spree/core/controller_helpers.rb +0 -185
- data/lib/spree/core/current_order.rb +0 -38
- data/lib/spree/core/file_utilz.rb +0 -74
- data/lib/tasks/assets.rake +0 -58
- data/vendor/assets/stylesheets/html5reset.css +0 -177
@@ -126,14 +126,7 @@ module Spree
|
|
126
126
|
end
|
127
127
|
checkout_steps << step
|
128
128
|
end
|
129
|
-
|
130
|
-
# Ensure there is always a complete step
|
131
|
-
steps << "complete" unless steps.include?("complete")
|
132
|
-
steps
|
133
|
-
end
|
134
|
-
|
135
|
-
def has_checkout_step?(step)
|
136
|
-
step.present? ? self.checkout_steps.include?(step) : false
|
129
|
+
checkout_steps.map(&:to_s)
|
137
130
|
end
|
138
131
|
end
|
139
132
|
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
module Spree
|
2
|
+
class OrderUpdater
|
3
|
+
attr_reader :order
|
4
|
+
delegate :payments, :line_items, :adjustments, :shipments, :update_hooks, :to => :order
|
5
|
+
|
6
|
+
def initialize(order)
|
7
|
+
@order = order
|
8
|
+
end
|
9
|
+
|
10
|
+
# This is a multi-purpose method for processing logic related to changes in the Order.
|
11
|
+
# It is meant to be called from various observers so that the Order is aware of changes
|
12
|
+
# that affect totals and other values stored in the Order.
|
13
|
+
#
|
14
|
+
# This method should never do anything to the Order that results in a save call on the
|
15
|
+
# object with callbacks (otherwise you will end up in an infinite recursion as the
|
16
|
+
# associations try to save and then in turn try to call +update!+ again.)
|
17
|
+
def update
|
18
|
+
update_totals
|
19
|
+
update_payment_state
|
20
|
+
|
21
|
+
# give each of the shipments a chance to update themselves
|
22
|
+
shipments.each { |shipment| shipment.update!(order) }#(&:update!)
|
23
|
+
update_shipment_state
|
24
|
+
update_adjustments
|
25
|
+
# update totals a second time in case updated adjustments have an effect on the total
|
26
|
+
update_totals
|
27
|
+
|
28
|
+
order.update_attributes_without_callbacks({
|
29
|
+
:payment_state => order.payment_state,
|
30
|
+
:shipment_state => order.shipment_state,
|
31
|
+
:item_total => order.item_total,
|
32
|
+
:adjustment_total => order.adjustment_total,
|
33
|
+
:payment_total => order.payment_total,
|
34
|
+
:total => order.total
|
35
|
+
})
|
36
|
+
|
37
|
+
#ensure checkout payment always matches order total
|
38
|
+
if order.payment and order.payment.checkout? and order.payment.amount != order.total
|
39
|
+
order.payment.update_attributes_without_callbacks(:amount => order.total)
|
40
|
+
end
|
41
|
+
|
42
|
+
update_hooks.each { |hook| order.send hook }
|
43
|
+
end
|
44
|
+
|
45
|
+
# Updates the following Order total values:
|
46
|
+
#
|
47
|
+
# +payment_total+ The total value of all finalized Payments (NOTE: non-finalized Payments are excluded)
|
48
|
+
# +item_total+ The total value of all LineItems
|
49
|
+
# +adjustment_total+ The total value of all adjustments (promotions, credits, etc.)
|
50
|
+
# +total+ The so-called "order total." This is equivalent to +item_total+ plus +adjustment_total+.
|
51
|
+
def update_totals
|
52
|
+
order.payment_total = payments.completed.map(&:amount).sum
|
53
|
+
order.item_total = line_items.map(&:amount).sum
|
54
|
+
order.adjustment_total = adjustments.eligible.map(&:amount).sum
|
55
|
+
order.total = order.item_total + order.adjustment_total
|
56
|
+
end
|
57
|
+
|
58
|
+
# Updates the +shipment_state+ attribute according to the following logic:
|
59
|
+
#
|
60
|
+
# shipped when all Shipments are in the "shipped" state
|
61
|
+
# partial when at least one Shipment has a state of "shipped" and there is another Shipment with a state other than "shipped"
|
62
|
+
# or there are InventoryUnits associated with the order that have a state of "sold" but are not associated with a Shipment.
|
63
|
+
# ready when all Shipments are in the "ready" state
|
64
|
+
# backorder when there is backordered inventory associated with an order
|
65
|
+
# pending when all Shipments are in the "pending" state
|
66
|
+
#
|
67
|
+
# The +shipment_state+ value helps with reporting, etc. since it provides a quick and easy way to locate Orders needing attention.
|
68
|
+
def update_shipment_state
|
69
|
+
if order.backordered?
|
70
|
+
order.shipment_state = 'backorder'
|
71
|
+
else
|
72
|
+
order.shipment_state =
|
73
|
+
case shipments.count
|
74
|
+
when 0
|
75
|
+
nil
|
76
|
+
when shipments.shipped.count
|
77
|
+
'shipped'
|
78
|
+
when shipments.ready.count
|
79
|
+
'ready'
|
80
|
+
when shipments.pending.count
|
81
|
+
'pending'
|
82
|
+
else
|
83
|
+
'partial'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
order.state_changed('shipment')
|
88
|
+
end
|
89
|
+
|
90
|
+
# Updates the +payment_state+ attribute according to the following logic:
|
91
|
+
#
|
92
|
+
# paid when +payment_total+ is equal to +total+
|
93
|
+
# balance_due when +payment_total+ is less than +total+
|
94
|
+
# credit_owed when +payment_total+ is greater than +total+
|
95
|
+
# failed when most recent payment is in the failed state
|
96
|
+
#
|
97
|
+
# The +payment_state+ value helps with reporting, etc. since it provides a quick and easy way to locate Orders needing attention.
|
98
|
+
def update_payment_state
|
99
|
+
|
100
|
+
#line_item are empty when user empties cart
|
101
|
+
if line_items.empty? || round_money(order.payment_total) < round_money(order.total)
|
102
|
+
if payments.present? && payments.last.state == 'failed'
|
103
|
+
order.payment_state = 'failed'
|
104
|
+
else
|
105
|
+
order.payment_state = 'balance_due'
|
106
|
+
end
|
107
|
+
elsif round_money(order.payment_total) > round_money(order.total)
|
108
|
+
order.payment_state = 'credit_owed'
|
109
|
+
else
|
110
|
+
order.payment_state = 'paid'
|
111
|
+
end
|
112
|
+
|
113
|
+
order.state_changed('payment')
|
114
|
+
end
|
115
|
+
|
116
|
+
# Updates each of the Order adjustments.
|
117
|
+
#
|
118
|
+
# This is intended to be called from an Observer so that the Order can
|
119
|
+
# respond to external changes to LineItem, Shipment, other Adjustments, etc.
|
120
|
+
#
|
121
|
+
# Adjustments will check if they are still eligible. Ineligible adjustments
|
122
|
+
# are preserved but not counted towards adjustment_total.
|
123
|
+
def update_adjustments
|
124
|
+
order.adjustments.reload.each { |adjustment| adjustment.update!(order) }
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
private
|
129
|
+
|
130
|
+
def round_money(n)
|
131
|
+
(n * 100).round / 100.0
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/app/models/spree/payment.rb
CHANGED
@@ -8,8 +8,6 @@ module Spree
|
|
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
|
10
10
|
|
11
|
-
before_save :set_unique_identifier
|
12
|
-
|
13
11
|
after_save :create_payment_profile, :if => :profiles_supported?
|
14
12
|
|
15
13
|
# update the order totals, etc.
|
@@ -49,6 +47,14 @@ module Spree
|
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
50
|
+
def currency
|
51
|
+
order.currency
|
52
|
+
end
|
53
|
+
|
54
|
+
def display_amount
|
55
|
+
Spree::Money.new(amount, { :currency => currency })
|
56
|
+
end
|
57
|
+
|
52
58
|
def offsets_total
|
53
59
|
offsets.map(&:amount).sum
|
54
60
|
end
|
@@ -102,22 +108,5 @@ module Spree
|
|
102
108
|
order.payments.reload
|
103
109
|
order.update!
|
104
110
|
end
|
105
|
-
|
106
|
-
# Necessary because some payment gateways will refuse payments with
|
107
|
-
# duplicate IDs. We *were* using the Order number, but that's set once and
|
108
|
-
# is unchanging. What we need is a unique identifier on a per-payment basis,
|
109
|
-
# and this is it. Related to #1998.
|
110
|
-
# See https://github.com/spree/spree/issues/1998#issuecomment-12869105
|
111
|
-
def set_unique_identifier
|
112
|
-
chars = [('A'..'Z').to_a, ('0'..'9').to_a].flatten - %w(0 1 I O)
|
113
|
-
identifier = ''
|
114
|
-
8.times { identifier << chars[rand(chars.length)] }
|
115
|
-
if Spree::Payment.exists?(:identifier => identifier)
|
116
|
-
# Call it again, we've got a duplicate ID.
|
117
|
-
set_unique_identifier
|
118
|
-
else
|
119
|
-
self.identifier = identifier
|
120
|
-
end
|
121
|
-
end
|
122
111
|
end
|
123
112
|
end
|
@@ -111,13 +111,13 @@ module Spree
|
|
111
111
|
options = { :email => order.email,
|
112
112
|
:customer => order.email,
|
113
113
|
:ip => '192.168.1.100', # TODO: Use an actual IP
|
114
|
-
:order_id =>
|
114
|
+
:order_id => order.number }
|
115
115
|
|
116
116
|
options.merge!({ :shipping => order.ship_total * 100,
|
117
117
|
:tax => order.tax_total * 100,
|
118
118
|
:subtotal => order.item_total * 100 })
|
119
|
-
|
120
|
-
options.merge!({ :currency =>
|
119
|
+
|
120
|
+
options.merge!({ :currency => currency })
|
121
121
|
|
122
122
|
options.merge!({ :billing_address => order.bill_address.try(:active_merchant_hash),
|
123
123
|
:shipping_address => order.ship_address.try(:active_merchant_hash) })
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Spree
|
2
2
|
class PaymentMethod < ActiveRecord::Base
|
3
|
-
DISPLAY = [:both, :front_end, :back_end]
|
4
3
|
default_scope where(:deleted_at => nil)
|
5
4
|
|
6
5
|
scope :production, lambda { where(:environment => 'production') }
|
7
6
|
|
8
|
-
attr_accessible :name, :description, :environment, :
|
7
|
+
attr_accessible :name, :description, :environment, :active
|
8
|
+
validates :name, :presence => true
|
9
9
|
|
10
10
|
def self.providers
|
11
11
|
Rails.application.config.spree.payment_methods
|
@@ -22,8 +22,10 @@ module Spree
|
|
22
22
|
raise 'You must implement payment_source_class method for this gateway.'
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.available
|
26
|
-
all.select
|
25
|
+
def self.available
|
26
|
+
all.select do |p|
|
27
|
+
p.active && (p.environment == Rails.env || p.environment.blank?)
|
28
|
+
end
|
27
29
|
end
|
28
30
|
|
29
31
|
def self.active?
|
@@ -10,13 +10,16 @@ module Spree::Preferences
|
|
10
10
|
# cache_key will be nil for new objects, then if we check if there
|
11
11
|
# is a pending preference before going to default
|
12
12
|
define_method preference_getter_method(name) do
|
13
|
-
|
14
|
-
|
15
|
-
#
|
16
|
-
if preference_cache_key(name)
|
17
|
-
preference_store.get(preference_cache_key(name), default)
|
13
|
+
if preference_cache_key(name) && preference_store.exist?(preference_cache_key(name))
|
14
|
+
preference_store.get preference_cache_key(name)
|
18
15
|
else
|
19
|
-
get_pending_preference(name)
|
16
|
+
if get_pending_preference(name)
|
17
|
+
get_pending_preference(name)
|
18
|
+
elsif Spree::Preference.table_exists? && preference = Spree::Preference.find_by_key(name.to_s)
|
19
|
+
preference.value
|
20
|
+
else
|
21
|
+
send self.class.preference_default_getter_method(name)
|
22
|
+
end
|
20
23
|
end
|
21
24
|
end
|
22
25
|
alias_method prefers_getter_method(name), preference_getter_method(name)
|
@@ -27,36 +27,25 @@ module Spree::Preferences
|
|
27
27
|
should_persist? && Spree::Preference.where(:key => key).exists?
|
28
28
|
end
|
29
29
|
|
30
|
-
def get(key
|
30
|
+
def get(key)
|
31
31
|
# return the retrieved value, if it's in the cache
|
32
|
-
|
33
|
-
#
|
34
|
-
unless (val = @cache.read(key)).nil?
|
32
|
+
if (val = @cache.read(key)).present?
|
35
33
|
return val
|
36
34
|
end
|
37
35
|
|
38
|
-
|
39
|
-
# If it's not in the cache, maybe it's in the database, but
|
40
|
-
# has been cleared from the cache
|
36
|
+
return nil unless should_persist?
|
41
37
|
|
42
|
-
|
43
|
-
|
44
|
-
# it does exist, so let's put it back into the cache
|
45
|
-
@cache.write(preference.key, preference.value)
|
38
|
+
# If it's not in the cache, maybe it's in the database, but
|
39
|
+
# has been cleared from the cache
|
46
40
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
41
|
+
# does it exist in the database?
|
42
|
+
if preference = Spree::Preference.find_by_key(key)
|
43
|
+
# it does exist, so let's put it back into the cache
|
44
|
+
@cache.write(preference.key, preference.value)
|
51
45
|
|
52
|
-
|
53
|
-
|
54
|
-
# subsequent queries for the same key
|
55
|
-
#
|
56
|
-
@cache.write(key, fallback)
|
46
|
+
# and return the value
|
47
|
+
preference.value
|
57
48
|
end
|
58
|
-
|
59
|
-
return fallback
|
60
49
|
end
|
61
50
|
|
62
51
|
def delete(key)
|
@@ -64,10 +53,6 @@ module Spree::Preferences
|
|
64
53
|
destroy(key)
|
65
54
|
end
|
66
55
|
|
67
|
-
def clear_cache
|
68
|
-
@cache.clear
|
69
|
-
end
|
70
|
-
|
71
56
|
private
|
72
57
|
|
73
58
|
def persist(cache_key, value, type)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Spree
|
2
|
+
class Price < ActiveRecord::Base
|
3
|
+
belongs_to :variant, :class_name => 'Spree::Variant'
|
4
|
+
|
5
|
+
validate :check_price
|
6
|
+
validates :amount, :numericality => { :greater_than_or_equal_to => 0 }, :allow_nil => true
|
7
|
+
|
8
|
+
attr_accessible :variant_id, :currency, :amount
|
9
|
+
|
10
|
+
def display_amount
|
11
|
+
return nil if amount.nil?
|
12
|
+
money.to_s
|
13
|
+
end
|
14
|
+
alias :display_price :display_amount
|
15
|
+
|
16
|
+
def money
|
17
|
+
Spree::Money.new(amount, { :currency => currency })
|
18
|
+
end
|
19
|
+
|
20
|
+
def price
|
21
|
+
amount
|
22
|
+
end
|
23
|
+
|
24
|
+
def price=(price)
|
25
|
+
self[:amount] = parse_price(price)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def check_price
|
30
|
+
raise "Price must belong to a variant" if variant.nil?
|
31
|
+
|
32
|
+
if currency.nil?
|
33
|
+
self.currency = Spree::Config[:currency]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# strips all non-price-like characters from the price, taking into account locale settings
|
38
|
+
def parse_price(price)
|
39
|
+
return price unless price.is_a?(String)
|
40
|
+
|
41
|
+
separator, delimiter = I18n.t([:'number.currency.format.separator', :'number.currency.format.delimiter'])
|
42
|
+
non_price_characters = /[^0-9\-#{separator}]/
|
43
|
+
price.gsub!(non_price_characters, '') # strip everything else first
|
44
|
+
price.gsub!(separator, '.') unless separator == '.' # then replace the locale-specific decimal separator with the standard separator if necessary
|
45
|
+
|
46
|
+
price.to_d
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
data/app/models/spree/product.rb
CHANGED
@@ -46,13 +46,16 @@ module Spree
|
|
46
46
|
|
47
47
|
has_many :variants_including_master_and_deleted, :class_name => 'Spree::Variant'
|
48
48
|
|
49
|
-
|
49
|
+
has_many :prices, :through => :variants, :order => 'spree_variants.position, spree_variants.id, currency'
|
50
|
+
|
51
|
+
delegate_belongs_to :master, :sku, :price, :currency, :display_amount, :display_price, :weight, :height, :width, :depth, :is_master, :has_default_price?, :cost_currency, :price_in, :amount_in
|
50
52
|
delegate_belongs_to :master, :cost_price if Variant.table_exists? && Variant.column_names.include?('cost_price')
|
51
53
|
|
52
54
|
after_create :set_master_variant_defaults
|
53
55
|
after_create :add_properties_and_option_types_from_prototype
|
54
56
|
after_create :build_variants_from_option_values_hash, :if => :option_values_hash
|
55
57
|
before_save :recalculate_count_on_hand
|
58
|
+
|
56
59
|
after_save :save_master
|
57
60
|
after_save :set_master_on_hand_to_zero_when_product_has_variants
|
58
61
|
|
@@ -63,19 +66,19 @@ module Spree
|
|
63
66
|
|
64
67
|
accepts_nested_attributes_for :variants, :allow_destroy => true
|
65
68
|
|
66
|
-
validates :name, :
|
69
|
+
validates :name, :permalink, :presence => true
|
70
|
+
validates :price, :presence => true, :if => proc { Spree::Config[:require_master_price] }
|
67
71
|
|
68
72
|
attr_accessor :option_values_hash
|
69
73
|
|
70
74
|
attr_accessible :name, :description, :available_on, :permalink, :meta_description,
|
71
75
|
:meta_keywords, :price, :sku, :deleted_at, :prototype_id,
|
72
|
-
:option_values_hash, :on_hand, :weight, :height, :width, :depth,
|
76
|
+
:option_values_hash, :on_demand, :on_hand, :weight, :height, :width, :depth,
|
73
77
|
:shipping_category_id, :tax_category_id, :product_properties_attributes,
|
74
|
-
:variants_attributes, :taxon_ids, :option_type_ids
|
78
|
+
:variants_attributes, :taxon_ids, :option_type_ids, :cost_currency
|
75
79
|
|
76
80
|
attr_accessible :cost_price if Variant.table_exists? && Variant.column_names.include?('cost_price')
|
77
81
|
|
78
|
-
|
79
82
|
accepts_nested_attributes_for :product_properties, :allow_destroy => true, :reject_if => lambda { |pp| pp[:property_name].blank? }
|
80
83
|
|
81
84
|
make_permalink :order => :name
|
@@ -89,7 +92,6 @@ module Spree
|
|
89
92
|
master
|
90
93
|
end
|
91
94
|
|
92
|
-
|
93
95
|
def to_param
|
94
96
|
permalink.present? ? permalink : (permalink_was || name.to_s.to_url)
|
95
97
|
end
|
@@ -116,8 +118,16 @@ module Spree
|
|
116
118
|
|
117
119
|
# adjusts the "on_hand" inventory level for the product up or down to match the given new_level
|
118
120
|
def on_hand=(new_level)
|
119
|
-
|
120
|
-
|
121
|
+
unless self.on_demand
|
122
|
+
raise 'cannot set on_hand of product with variants' if has_variants? && Spree::Config[:track_inventory_levels]
|
123
|
+
master.on_hand = new_level
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def on_demand=(new_on_demand)
|
128
|
+
raise 'cannot set on_demand of product with variants' if has_variants? && Spree::Config[:track_inventory_levels]
|
129
|
+
master.on_demand = on_demand
|
130
|
+
self[:on_demand] = new_on_demand
|
121
131
|
end
|
122
132
|
|
123
133
|
# Returns true if there are inventory units (any variant) with "on_hand" state for this product
|
@@ -173,6 +183,8 @@ module Spree
|
|
173
183
|
variant.sku = 'COPY OF ' + master.sku
|
174
184
|
variant.deleted_at = nil
|
175
185
|
variant.images = master.images.map { |i| image_dup.call i }
|
186
|
+
variant.price = master.price
|
187
|
+
variant.currency = master.currency
|
176
188
|
p.master = variant
|
177
189
|
|
178
190
|
# don't dup the actual variants, just the characterising types
|
@@ -230,10 +242,6 @@ module Spree
|
|
230
242
|
end
|
231
243
|
end
|
232
244
|
|
233
|
-
def display_price
|
234
|
-
Spree::Money.new(price)
|
235
|
-
end
|
236
|
-
|
237
245
|
private
|
238
246
|
|
239
247
|
# Builds variants from a hash of option types & values
|
@@ -266,7 +274,7 @@ module Spree
|
|
266
274
|
# the master on_hand is meaningless once a product has variants as the inventory
|
267
275
|
# units are now "contained" within the product variants
|
268
276
|
def set_master_on_hand_to_zero_when_product_has_variants
|
269
|
-
master.on_hand = 0 if has_variants? && Spree::Config[:track_inventory_levels]
|
277
|
+
master.on_hand = 0 if has_variants? && Spree::Config[:track_inventory_levels] && !self.on_demand
|
270
278
|
end
|
271
279
|
|
272
280
|
# ensures the master variant is flagged as such
|
@@ -277,7 +285,7 @@ module Spree
|
|
277
285
|
# there's a weird quirk with the delegate stuff that does not automatically save the delegate object
|
278
286
|
# when saving so we force a save using a hook.
|
279
287
|
def save_master
|
280
|
-
master.save if master && (master.changed? || master.new_record?)
|
288
|
+
master.save if master && (master.changed? || master.new_record? || (master.default_price && (master.default_price.changed || master.default_price.new_record)))
|
281
289
|
end
|
282
290
|
|
283
291
|
def ensure_master
|