spree_multi_vendor 2.0.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +7 -0
  3. data/.travis.yml +1 -8
  4. data/Gemfile +5 -2
  5. data/README.md +12 -1
  6. data/app/controllers/spree/admin/vendor_settings_controller.rb +1 -1
  7. data/app/controllers/spree/admin/vendors_controller.rb +10 -2
  8. data/app/controllers/spree/api/v1/vendors_controller.rb +61 -0
  9. data/app/controllers/spree/api/v2/storefront/vendors_controller.rb +6 -1
  10. data/app/controllers/spree_multi_vendor/spree/api/base_controller_decorator.rb +17 -0
  11. data/app/controllers/spree_multi_vendor/spree/api/v1/products_controller_decorator.rb +9 -0
  12. data/app/controllers/spree_multi_vendor/spree/api/v1/users_controller_decorator.rb +13 -0
  13. data/app/finders/spree_multi_vendor/products_finder_decorator.rb +1 -1
  14. data/app/helpers/spree/api/vendor_helper.rb +11 -0
  15. data/app/helpers/spree_multi_vendor/spree/api/api_helpers_decorator.rb +19 -0
  16. data/app/models/spree/vendor_ability.rb +24 -9
  17. data/app/models/spree/vendor_user.rb +1 -1
  18. data/app/models/spree_multi_vendor/configuration.rb +1 -1
  19. data/app/models/spree_multi_vendor/spree/order_decorator.rb +5 -3
  20. data/app/overrides/spree/admin/shared/_main_menu.rb +1 -1
  21. data/app/serializers/spree/v2/storefront/vendor_order_totals_serializer.rb +2 -0
  22. data/app/views/spree/admin/vendor_settings/edit.html.erb +1 -1
  23. data/app/views/spree/admin/vendors/_form.html.erb +1 -1
  24. data/app/views/spree/api/v1/vendors/index.rabl +3 -0
  25. data/app/views/spree/api/v1/vendors/show.rabl +2 -0
  26. data/config/initializers/spree_permitted_attributes.rb +2 -0
  27. data/config/locales/es.yml +3 -0
  28. data/config/routes.rb +4 -1
  29. data/db/migrate/20210728120649_change_vendorized_models_vendor_id_type.rb +10 -0
  30. data/db/migrate/20210728120910_change_vendor_id_and_user_id_type_for_spree_vendor_users.rb +8 -0
  31. data/db/migrate/20210728121024_change_vendor_id_and_order_id_type_for_spree_order_commissions.rb +8 -0
  32. data/lib/spree_multi_vendor/factories.rb +1 -1
  33. data/lib/spree_multi_vendor/version.rb +1 -1
  34. data/lib/spree_multi_vendor.rb +2 -1
  35. data/spec/factories/spree/vendor_factory.rb +6 -0
  36. data/spec/features/spree/admin/orders_spec.rb +62 -12
  37. data/spec/features/spree/admin/vendor_settings_spec.rb +6 -8
  38. data/spec/models/spree/order_spec.rb +16 -2
  39. data/spec/requests/spree/api/v1/products_spec.rb +221 -0
  40. data/spec/requests/spree/api/v1/users_spec.rb +31 -0
  41. data/spec/requests/spree/api/v1/vendors_spec.rb +210 -0
  42. data/spec/requests/spree/api/v2/storefront/cart_spec.rb +19 -1
  43. data/spec/requests/spree/api/v2/storefront/products_spec.rb +4 -1
  44. data/spec/requests/spree/api/v2/storefront/vendors_spec.rb +66 -0
  45. data/spec/serializers/spree/v2/storefront/vendor_order_totals_serializer_spec.rb +2 -2
  46. data/spec/spec_helper.rb +3 -1
  47. data/spree_multi_vendor.gemspec +5 -4
  48. metadata +32 -38
  49. data/Appraisals +0 -11
  50. data/app/controllers/spree_multi_vendor/spree/admin/option_types_controller_decorator.rb +0 -7
  51. data/app/controllers/spree_multi_vendor/spree/admin/properties_controller_decorator.rb +0 -7
  52. data/app/controllers/spree_multi_vendor/spree/api/v1/variants_controller_decorator.rb +0 -22
  53. data/gemfiles/spree_4_2.gemfile +0 -9
  54. data/gemfiles/spree_master.gemfile +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2249038a9dae7dde5d3c7b0eb3833921f4bdd0144ab76fa5c7277e53ee4aadce
4
- data.tar.gz: 555815de55c3298001c60c753b69974e1d524db73257a130a661279b4ec3e594
3
+ metadata.gz: fc35d0a2ae81399b7daa7f806f69725d71bfb5f7ea5b54ff0680d4b95e93e9e9
4
+ data.tar.gz: a19370e4fc2ae70fd6749ae829560d250ebb579844132d8fa9766043c0374c72
5
5
  SHA512:
6
- metadata.gz: 6db7385cd15712b90faf63172eb6f2a05bebd0941f12ddd0faa55c53ce44ddca10c1527fb46ecbcd1524d9662e44359bdafb8eb26044012445d9b157552090ba
7
- data.tar.gz: 48a0f9438bf8f7df0fc303760be106f23632b40e903f9cea0afc786ab523c181f52677817b0c633b800457a409569a331b9fc8aebfc997f71e53a955d990ff15
6
+ metadata.gz: 6d55aa0438bf0ef0005320b21b90417370b388502b0b6a8957e5f291b988dd0b8b6c486e3d785360cb4c853b36ce978e5b972dee0a609eb5867435cc40aa532b
7
+ data.tar.gz: fbb4c2094e074e06edee73ea7338ddcac6d6d800ab1810d3134efdcd5283c0d3976161f7aa9b5803e79ad58e3cc68e71b690aa48e6a4397243c838db3b63f085
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
data/.travis.yml CHANGED
@@ -11,6 +11,7 @@ addons:
11
11
  services:
12
12
  - mysql
13
13
  - postgresql
14
+ - redis-server
14
15
 
15
16
  language: ruby
16
17
 
@@ -22,14 +23,6 @@ env:
22
23
  - DB=mysql
23
24
  - DB=postgres
24
25
 
25
- gemfile:
26
- - gemfiles/spree_4_2.gemfile
27
- - gemfiles/spree_master.gemfile
28
-
29
- jobs:
30
- allow_failures:
31
- - gemfile: gemfiles/spree_master.gemfile
32
-
33
26
  before_install:
34
27
  - mysql -u root -e "GRANT ALL ON *.* TO 'travis'@'%';"
35
28
 
data/Gemfile CHANGED
@@ -1,7 +1,10 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'spree', github: 'spree/spree', branch: 'master'
4
- gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master'
3
+ gem 'spree', github: 'spree/spree', branch: 'main'
4
+ gem 'spree_backend', github: 'spree/spree_backend', branch: 'main'
5
+ gem 'spree_frontend', github: 'spree/spree_legacy_frontend', branch: 'main'
6
+ gem 'spree_emails', github: 'spree/spree', branch: 'main'
7
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'main'
5
8
  gem 'rails-controller-testing'
6
9
 
7
10
  gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Spree Multi Vendor
2
2
 
3
- [![Build Status](https://travis-ci.org/spree-contrib/spree_multi_vendor.svg?branch=master)](https://travis-ci.org/spree-contrib/spree_multi_vendor)
3
+ [![Build Status](https://travis-ci.com/spree-contrib/spree_multi_vendor.svg?branch=master)](https://travis-ci.com/spree-contrib/spree_multi_vendor)
4
4
 
5
5
  This is a [spree multi vendor marketplace](https://spreecommerce.org/use-cases/multi-vendor-marketplace/) extension. It's a great starting point if you're building a marketplace on top of [Spree](https://spreecommerce.org). Our goal was flexibility to allow you to tweak it to your needs.
6
6
 
@@ -97,6 +97,17 @@ Spree Multi Vendor adds new [API v2](https://api.spreecommerce.org/docs/api-v2/a
97
97
 
98
98
  `/api/v2/storefront/vendors/test-vendor?include=image,products`
99
99
 
100
+ 2. `GET` Returns a list of Vendors
101
+
102
+ ```
103
+ /api/v2/storefront/vendors
104
+ ```
105
+
106
+ you can also include Vendor image and/or Products in that call:
107
+
108
+ `/api/v2/storefront/vendors?include=image,products`
109
+
110
+
100
111
  And modfies existing:
101
112
 
102
113
  1. `GET` Filtering Products by Vendor ID(s):
@@ -5,7 +5,7 @@ module Spree
5
5
  before_action :load_vendor
6
6
 
7
7
  def update
8
- if vendor_params[:image] && Spree.version.to_f >= 3.6
8
+ if vendor_params[:image]
9
9
  @vendor.create_image(attachment: vendor_params[:image])
10
10
  end
11
11
  if @vendor.update(vendor_params.except(:image))
@@ -3,14 +3,14 @@ module Spree
3
3
  class VendorsController < ResourceController
4
4
 
5
5
  def create
6
- if permitted_resource_params[:image] && Spree.version.to_f >= 3.6
6
+ if permitted_resource_params[:image]
7
7
  @vendor.build_image(attachment: permitted_resource_params.delete(:image))
8
8
  end
9
9
  super
10
10
  end
11
11
 
12
12
  def update
13
- if permitted_resource_params[:image] && Spree.version.to_f >= 3.6
13
+ if permitted_resource_params[:image]
14
14
  @vendor.create_image(attachment: permitted_resource_params.delete(:image))
15
15
  end
16
16
  format_translations if defined? SpreeGlobalize
@@ -40,10 +40,18 @@ module Spree
40
40
  @search = vendors.ransack(params[:q])
41
41
 
42
42
  @collection = @search.result.
43
+ includes(vendor_includes).
43
44
  page(params[:page]).
44
45
  per(params[:per_page])
45
46
  end
46
47
 
48
+ def vendor_includes
49
+ {
50
+ image: [],
51
+ products: []
52
+ }
53
+ end
54
+
47
55
  def format_translations
48
56
  return if params[:vendor][:translations_attributes].blank?
49
57
  params[:vendor][:translations_attributes].each do |_, data|
@@ -0,0 +1,61 @@
1
+ module Spree
2
+ module Api
3
+ module V1
4
+ class VendorsController < Spree::Api::BaseController
5
+ def index
6
+ @vendors = if params[:ids].present?
7
+ scope.where(id: params[:ids].split(','))
8
+ else
9
+ scope.load.ransack(
10
+ params[:q]
11
+ ).result
12
+ end
13
+ respond_with(@vendors)
14
+ end
15
+
16
+ def show
17
+ @vendor = scope.find(params[:id])
18
+ authorize! :show, @vendor
19
+ respond_with(@vendor)
20
+ end
21
+
22
+ def create
23
+ authorize! :create, Spree::Vendor
24
+ @vendor = Spree::Vendor.new(vendor_params)
25
+ if @vendor.save
26
+ render :show, status: 201
27
+ else
28
+ invalid_resource!(@vendor)
29
+ end
30
+ end
31
+
32
+ def update
33
+ @vendor = scope.find(params[:id])
34
+ authorize! :update, @vendor
35
+ if @vendor.update(vendor_params)
36
+ render :show
37
+ else
38
+ invalid_resource!(@vendor)
39
+ end
40
+ end
41
+
42
+ def destroy
43
+ @vendor = scope.find(params[:id])
44
+ authorize! :destroy, @vendor
45
+ @vendor.destroy
46
+ render plain: nil, status: 204
47
+ end
48
+
49
+ private
50
+
51
+ def scope
52
+ Spree::Vendor.accessible_by(current_ability)
53
+ end
54
+
55
+ def vendor_params
56
+ params.require(:vendor).permit(Spree::PermittedAttributes.vendor_attributes)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -3,7 +3,7 @@ module Spree
3
3
  module V2
4
4
  module Storefront
5
5
  class VendorsController < ::Spree::Api::V2::ResourceController
6
-
6
+
7
7
  private
8
8
 
9
9
  def model_class
@@ -21,6 +21,11 @@ module Spree
21
21
  def resource_serializer
22
22
  Spree::V2::Storefront::VendorSerializer
23
23
  end
24
+
25
+ def collection_serializer
26
+ Spree::V2::Storefront::VendorSerializer
27
+ end
28
+
24
29
  end
25
30
  end
26
31
  end
@@ -0,0 +1,17 @@
1
+ module SpreeMultiVendor::Spree::Api::BaseControllerDecorator
2
+ Spree::Api::BaseController.include(Spree::Api::VendorHelper)
3
+
4
+ def self.prepended(base)
5
+ base.helper_method :current_spree_vendor
6
+ end
7
+
8
+ private
9
+
10
+ def set_vendor_id(resource_name)
11
+ return unless current_spree_vendor
12
+
13
+ params[resource_name][:vendor_id] = current_spree_vendor.id
14
+ end
15
+ end
16
+
17
+ ::Spree::Api::BaseController.prepend SpreeMultiVendor::Spree::Api::BaseControllerDecorator
@@ -0,0 +1,9 @@
1
+ module SpreeMultiVendor::Spree::Api::V1::ProductsControllerDecorator
2
+ def self.prepended(base)
3
+ base.before_action only: [:create, :update] do
4
+ set_vendor_id(:product)
5
+ end
6
+ end
7
+ end
8
+
9
+ Spree::Api::V1::ProductsController.prepend SpreeMultiVendor::Spree::Api::V1::ProductsControllerDecorator
@@ -0,0 +1,13 @@
1
+ module SpreeMultiVendor::Spree::Api::V1::UsersControllerDecorator
2
+ private
3
+
4
+ def user_params
5
+ params.require(:user).permit(permitted_user_attributes |
6
+ [spree_role_ids: [],
7
+ vendor_ids: [],
8
+ ship_address_attributes: permitted_address_attributes,
9
+ bill_address_attributes: permitted_address_attributes])
10
+ end
11
+ end
12
+
13
+ Spree::Api::V1::UsersController.prepend SpreeMultiVendor::Spree::Api::V1::UsersControllerDecorator
@@ -1,6 +1,6 @@
1
1
  module SpreeMultiVendor
2
2
  module ProductsFinderDecorator
3
- def initialize(scope:, params:, current_currency:)
3
+ def initialize(scope:, params:, current_currency: nil)
4
4
  super
5
5
 
6
6
  @vendors = params.dig(:filter, :vendor_ids)&.split(',')
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module VendorHelper
4
+ def current_spree_vendor
5
+ if current_api_user.vendors.any? && (!current_api_user.respond_to?(:has_spree_role?) || !current_api_user.has_spree_role?(:admin))
6
+ current_api_user.vendors.first
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module SpreeMultiVendor
2
+ module Spree
3
+ module Api
4
+ module ApiHelpersDecorator
5
+ def self.prepended(base)
6
+ base::ATTRIBUTES.push(:vendor_attributes)
7
+
8
+ base.mattr_reader *base::ATTRIBUTES
9
+
10
+ base.user_attributes << :vendor_ids
11
+ end
12
+
13
+ @@vendor_attributes = [:id, :name, :slug, :state, :about_us, :contact_us]
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ ::Spree::Api::ApiHelpers.prepend(SpreeMultiVendor::Spree::Api::ApiHelpersDecorator)
@@ -36,8 +36,21 @@ class Spree::VendorAbility
36
36
 
37
37
  def apply_order_permissions
38
38
  cannot :create, Spree::Order
39
- can [:admin, :index, :edit, :update, :cart], Spree::Order do |order|
40
- (order.vendor_ids & @vendor_ids).any?
39
+
40
+ order_scope = if ::Spree::Order.reflect_on_association(:vendor)
41
+ { vendor_id: @vendor_ids }
42
+ elsif ::Spree::LineItem.reflect_on_association(:vendor)
43
+ { line_items: { vendor_id: @vendor_ids } }
44
+ elsif ::Spree::Product.reflect_on_association(:vendor)
45
+ { line_items: { product: { vendor_id: @vendor_ids } } }
46
+ elsif ::Spree::Variant.reflect_on_association(:vendor)
47
+ { line_items: { variant: { vendor_id: @vendor_ids } } }
48
+ end
49
+
50
+ if order_scope.present?
51
+ can %i[admin show index edit update cart], Spree::Order, order_scope.merge(state: 'complete')
52
+ else
53
+ cannot_display_model(Spree::Order)
41
54
  end
42
55
  end
43
56
 
@@ -51,9 +64,8 @@ class Spree::VendorAbility
51
64
  end
52
65
 
53
66
  def apply_option_type_permissions
54
- cannot_display_model(Spree::OptionType)
55
- can :manage, Spree::OptionType, vendor_id: @vendor_ids
56
- can :create, Spree::OptionType
67
+ can :display, Spree::OptionType
68
+ can :display, Spree::OptionValue
57
69
  end
58
70
 
59
71
  def apply_price_permissions
@@ -61,8 +73,6 @@ class Spree::VendorAbility
61
73
  end
62
74
 
63
75
  def apply_product_option_type_permissions
64
- can :display, Spree::OptionType
65
- can :display, Spree::OptionValue
66
76
  can :manage, Spree::ProductOptionType, product: { vendor_id: @vendor_ids }
67
77
  can :create, Spree::ProductOptionType
68
78
  can :manage, Spree::OptionValueVariant, variant: { vendor_id: @vendor_ids }
@@ -71,6 +81,9 @@ class Spree::VendorAbility
71
81
 
72
82
  def apply_product_permissions
73
83
  cannot_display_model(Spree::Product)
84
+
85
+ return unless Spree::Product.reflect_on_association(:vendor)
86
+
74
87
  can :manage, Spree::Product, vendor_id: @vendor_ids
75
88
  can :create, Spree::Product
76
89
  end
@@ -78,7 +91,7 @@ class Spree::VendorAbility
78
91
  def apply_properties_permissions
79
92
  can :display, Spree::Property
80
93
  end
81
-
94
+
82
95
  def apply_product_properties_permissions
83
96
  can :manage, Spree::ProductProperty, product: { vendor_id: @vendor_ids }
84
97
  can :create, Spree::ProductProperty
@@ -116,12 +129,14 @@ class Spree::VendorAbility
116
129
  end
117
130
 
118
131
  def apply_variant_permissions
132
+ cannot_display_model(Spree::Variant)
119
133
  can :manage, Spree::Variant, vendor_id: @vendor_ids
120
134
  can :create, Spree::Variant
121
135
  end
122
136
 
123
137
  def apply_vendor_permissions
124
- can [:admin, :update], Spree::Vendor, id: @vendor_ids
138
+ can :manage, Spree::Vendor, id: @vendor_ids
139
+ cannot :create, Spree::Vendor
125
140
  end
126
141
 
127
142
  def apply_vendor_settings_permissions
@@ -1,7 +1,7 @@
1
1
  module Spree
2
2
  class VendorUser < Spree::Base
3
3
  belongs_to :vendor, class_name: 'Spree::Vendor', required: Spree.version.to_f >= 3.5
4
- belongs_to :user, class_name: Spree.user_class.name, required: Spree.version.to_f >= 3.5
4
+ belongs_to :user, class_name: Spree.user_class.name, required: Spree.version.to_f >= 3.5, touch: true
5
5
 
6
6
  validates :vendor_id, uniqueness: { scope: :user_id }
7
7
 
@@ -1,5 +1,5 @@
1
1
  module SpreeMultiVendor
2
- class Configuration < Spree::Preferences::Configuration
2
+ class Configuration < ::Spree::Preferences::Configuration
3
3
  DEFAULT_VENDORIZED_MODELS ||= %w[product variant stock_location shipping_method].freeze
4
4
 
5
5
  # Some example preferences are shown below, for more information visit:
@@ -22,7 +22,9 @@ module SpreeMultiVendor::Spree::OrderDecorator
22
22
  end
23
23
 
24
24
  def vendor_subtotal(vendor)
25
- vendor_line_items(vendor).sum(&:total)
25
+ vendor_pre_tax_item_amount(vendor) +
26
+ vendor_pre_tax_ship_amount(vendor) +
27
+ vendor_additional_tax_total(vendor)
26
28
  end
27
29
 
28
30
  def vendor_promo_total(vendor)
@@ -66,7 +68,7 @@ module SpreeMultiVendor::Spree::OrderDecorator
66
68
  end
67
69
 
68
70
  # money methods
69
- METHOD_NAMES = %w[
71
+ METHOD_NAMES ||= %w[
70
72
  total ship_total subtotal included_tax_total additional_tax_total promo_total
71
73
  pre_tax_item_amount pre_tax_ship_amount pre_tax_total commission
72
74
  ].freeze
@@ -102,4 +104,4 @@ module SpreeMultiVendor::Spree::OrderDecorator
102
104
  end
103
105
  end
104
106
 
105
- Spree::Order.prepend SpreeMultiVendor::Spree::OrderDecorator
107
+ Spree::Order.prepend SpreeMultiVendor::Spree::OrderDecorator unless Spree::Order.included_modules.include?(SpreeMultiVendor::Spree::OrderDecorator)
@@ -2,7 +2,7 @@ Deface::Override.new(
2
2
  virtual_path: 'spree/admin/shared/_main_menu',
3
3
  name: 'Display configuration tab for vendors',
4
4
  replace: 'erb[silent]:contains("current_store")',
5
- text: '<% if can?(:admin, current_store) || current_spree_user.vendors.any? %>'
5
+ text: '<% if can?(:admin, current_store) || current_spree_user&.vendors&.any? %>'
6
6
  )
7
7
  Deface::Override.new(
8
8
  virtual_path: 'spree/admin/shared/_main_menu',
@@ -4,6 +4,8 @@ module Spree
4
4
  class VendorOrderTotalsSerializer < BaseSerializer
5
5
  set_type :vendor_totals
6
6
 
7
+ cache_options store: nil
8
+
7
9
  attributes :name, :subtotal, :ship_total, :total, :display_subtotal,
8
10
  :display_ship_total, :display_total, :promo_total,
9
11
  :display_promo_total, :included_tax_total,
@@ -4,7 +4,7 @@
4
4
 
5
5
  <%= form_for [:admin, @vendor], url: admin_vendor_settings_url do |f| %>
6
6
  <fieldset>
7
- <%= render partial: 'spree/shared/error_messages', locals: { target: @vendor } %>
7
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @vendor } %>
8
8
  <div class="form-group">
9
9
  <%= f.field_container :name do %>
10
10
  <%= f.label :name %>
@@ -1,4 +1,4 @@
1
- <%= render partial: 'spree/shared/error_messages', locals: { target: @vendor } %>
1
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @vendor } %>
2
2
  <div class="form-group">
3
3
  <%= f.field_container :name do %>
4
4
  <%= f.label :name %>
@@ -0,0 +1,3 @@
1
+ collection @vendors
2
+
3
+ extends 'spree/api/v1/vendors/show'
@@ -0,0 +1,2 @@
1
+ object @vendor
2
+ attributes *vendor_attributes
@@ -6,5 +6,7 @@ module Spree
6
6
 
7
7
  @@vendor_attributes = [:name, :about_us, :contact_us, :notification_email]
8
8
  @@vendor_attributes << :image if Spree.version.to_f >= 3.6
9
+
10
+ @@product_attributes << :vendor_id if SpreeMultiVendor::Config[:vendorized_models].include?('product')
9
11
  end
10
12
  end
@@ -7,9 +7,11 @@ es:
7
7
  attributes:
8
8
  spree/vendor:
9
9
  about_us: Acerca de
10
+ commission_rate: Porcentaje Comisión
10
11
  contact_us: Contáctanos
11
12
  image: Imagen
12
13
  name: Nombre
14
+ notification_email: Email notificación pedido
13
15
  state: estado
14
16
  created_at: creado en
15
17
  priority: prioridad
@@ -21,6 +23,7 @@ es:
21
23
  order_mailer:
22
24
  vendor_notification_email:
23
25
  dear_vendor: Estimado vendedor,
26
+ order_summary: Resumen del pedido
24
27
  subject: Notificación de vendedor
25
28
  thanks: Gracias
26
29
  vendor: Vendedor
data/config/routes.rb CHANGED
@@ -12,8 +12,11 @@ Spree::Core::Engine.routes.draw do
12
12
  namespace :api, defaults: { format: 'json' } do
13
13
  namespace :v2 do
14
14
  namespace :storefront do
15
- resources :vendors, only: [:show]
15
+ resources :vendors, only: [:show,:index]
16
16
  end
17
17
  end
18
+ namespace :v1 do
19
+ resources :vendors
20
+ end
18
21
  end
19
22
  end
@@ -0,0 +1,10 @@
1
+ class ChangeVendorizedModelsVendorIdType < ActiveRecord::Migration[4.2]
2
+ def change
3
+ SpreeMultiVendor.vendorized_models.each do |klass|
4
+ change_column klass.table_name, :vendor_id, :bigint
5
+ rescue
6
+ message = "Could not change vendor_id column for spree_#{klass}"
7
+ Rails.logger.error message
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ class ChangeVendorIdAndUserIdTypeForSpreeVendorUsers < ActiveRecord::Migration[4.2]
2
+ def change
3
+ change_table(:spree_vendor_users) do |t|
4
+ t.change :vendor_id, :bigint
5
+ t.change :user_id, :bigint
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class ChangeVendorIdAndOrderIdTypeForSpreeOrderCommissions < ActiveRecord::Migration[4.2]
2
+ def change
3
+ change_table(:spree_order_commissions) do |t|
4
+ t.change :vendor_id, :bigint
5
+ t.change :order_id, :bigint
6
+ end
7
+ end
8
+ end
@@ -1,4 +1,4 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  GEM_ROOT = File.dirname(File.dirname(File.dirname(__FILE__)))
3
3
 
4
4
  Dir[File.join(GEM_ROOT, 'spec', 'factories', '**', '*.rb')].each do |factory|
@@ -1,5 +1,5 @@
1
1
  module SpreeMultiVendor
2
- VERSION = '2.0.1'
2
+ VERSION = '2.3.0'
3
3
 
4
4
  module_function
5
5
 
@@ -1,4 +1,5 @@
1
1
  require 'spree_core'
2
+ require 'spree_backend'
2
3
  require 'spree_multi_vendor/engine'
3
4
  require 'spree_multi_vendor/version'
4
5
  require 'spree_extension'
@@ -8,7 +9,7 @@ module SpreeMultiVendor
8
9
  # TODO: this should be moved into preferences
9
10
  def self.vendorized_models
10
11
  SpreeMultiVendor::Config[:vendorized_models].map(&:classify).map do |class_name|
11
- "Spree::#{class_name}".safe_constantize
12
+ "::Spree::#{class_name}".safe_constantize
12
13
  end.compact.uniq
13
14
  end
14
15
  end
@@ -9,6 +9,12 @@ FactoryBot.define do
9
9
  state { :active }
10
10
  end
11
11
 
12
+ factory :active_vendor_list do
13
+ name { "#{FFaker::Company.name} #{FFaker::Company.suffix }" }
14
+ state { :active }
15
+ end
16
+
17
+
12
18
  factory :pending_vendor do
13
19
  name { 'Pending vendor' }
14
20
  state { :pending }