solidus_bling 2.0.6 → 3.0.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.
- checksums.yaml +4 -4
- data/.gitattributes +2 -0
- data/.gitignore +0 -1
- data/CHANGELOG.md +1 -3
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/app/controllers/spree/admin/solidus_bling/accounts_controller.rb +77 -0
- data/app/jobs/solidus_bling/order_job.rb +5 -7
- data/app/models/solidus_bling/account.rb +7 -1
- data/app/models/solidus_bling/order.rb +122 -95
- data/app/models/solidus_bling/token.rb +44 -0
- data/app/subscribers/solidus_bling/subscriber.rb +2 -22
- data/app/views/spree/admin/{accounts → solidus_bling/accounts}/_form.html.erb +21 -8
- data/app/views/spree/admin/solidus_bling/accounts/edit.html.erb +1 -0
- data/app/views/spree/admin/solidus_bling/accounts/index.html.erb +13 -0
- data/app/views/spree/admin/{accounts → solidus_bling/accounts}/new.html.erb +1 -1
- data/bin/meu_sandbox +67 -0
- data/config/locales/pt-BR.yml +1 -1
- data/config/routes.rb +6 -2
- data/db/migrate/{20230918141419_create_solidus_bling_accounts.rb → 20231109210635_create_solidus_bling_accounts.rb} +4 -5
- data/db/migrate/{20230918142547_create_solidus_bling_events.rb → 20231110112819_create_solidus_bling_events.rb} +1 -2
- data/db/migrate/{20230918143057_create_solidus_bling_shipping_methods.rb → 20231110113221_create_solidus_bling_shipping_methods.rb} +1 -0
- data/lib/generators/solidus_bling/install/install_generator.rb +0 -10
- data/lib/solidus_bling/engine.rb +8 -11
- data/lib/solidus_bling/version.rb +1 -1
- data/lib/solidus_bling.rb +1 -1
- data/solidus_bling.gemspec +6 -7
- metadata +25 -55
- data/app/assets/javascripts/spree/backend/solidus_bling.js +0 -2
- data/app/assets/javascripts/spree/frontend/solidus_bling.js +0 -2
- data/app/assets/stylesheets/spree/backend/solidus_bling.css +0 -4
- data/app/assets/stylesheets/spree/frontend/solidus_bling.css +0 -4
- data/app/controllers/spree/admin/accounts_controller.rb +0 -67
- data/app/controllers/spree/admin/bling_products_controller.rb +0 -20
- data/app/decorators/models/solidus_bling/spree/payment_method_decorator.rb +0 -13
- data/app/decorators/models/solidus_bling/spree/shipping_method_decorator.rb +0 -13
- data/app/helpers/solidus_bling/accounts_helper.rb +0 -4
- data/app/helpers/solidus_bling/bling_products_helper.rb +0 -4
- data/app/jobs/solidus_bling/contact_job.rb +0 -22
- data/app/jobs/solidus_bling/product_job.rb +0 -13
- data/app/jobs/solidus_bling/update_product_job.rb +0 -9
- data/app/models/solidus_bling/api.rb +0 -57
- data/app/models/solidus_bling/contact.rb +0 -83
- data/app/models/solidus_bling/product.rb +0 -36
- data/app/views/spree/admin/accounts/edit.html.erb +0 -11
- data/app/views/spree/admin/accounts/index.html.erb +0 -13
- data/db/migrate/20230918141700_create_solidus_bling_products.rb +0 -12
- data/db/migrate/20231018141940_add_company_to_solidus_bling_shipping_methods.rb +0 -5
- data/spec/helpers/solidus_bling/accounts_helper_spec.rb +0 -17
- data/spec/helpers/solidus_bling/bling_products_helper_spec.rb +0 -17
- data/spec/jobs/solidus_bling/contact_job_spec.rb +0 -7
- data/spec/jobs/solidus_bling/product_job_spec.rb +0 -7
- data/spec/jobs/solidus_bling/update_product_job_spec.rb +0 -7
- data/spec/models/solidus_bling/product_spec.rb +0 -7
- data/spec/requests/solidus_bling/accounts_spec.rb +0 -7
- data/spec/requests/solidus_bling/bling_products_spec.rb +0 -7
- /data/app/views/spree/admin/{accounts → solidus_bling/accounts}/show.html.erb +0 -0
- /data/db/migrate/{20230918141505_add_bling_order_id_to_spree_orders.rb → 20231110112528_add_bling_order_id_to_spree_orders.rb} +0 -0
- /data/db/migrate/{20230918142742_create_solidus_bling_payment_methods.rb → 20231110112958_create_solidus_bling_payment_methods.rb} +0 -0
- /data/db/migrate/{20230918142953_create_solidus_bling_sellers.rb → 20231110113122_create_solidus_bling_sellers.rb} +0 -0
@@ -1,17 +1,16 @@
|
|
1
1
|
class CreateSolidusBlingAccounts < ActiveRecord::Migration[7.0]
|
2
2
|
def change
|
3
3
|
create_table :solidus_bling_accounts do |t|
|
4
|
-
t.string :name
|
5
|
-
t.string :app_name
|
6
|
-
t.string :api_base_url
|
7
|
-
t.string :api_key
|
8
4
|
t.string :client_id
|
9
5
|
t.string :client_secret
|
10
6
|
t.string :refresh_token
|
7
|
+
t.string :redirect_url
|
8
|
+
t.string :state
|
11
9
|
t.string :access_token
|
10
|
+
t.string :api_key
|
11
|
+
t.datetime :token_expires_in
|
12
12
|
t.string :external_store_id
|
13
13
|
t.string :incoming_category_id
|
14
|
-
t.datetime :token_expires_in
|
15
14
|
|
16
15
|
t.timestamps
|
17
16
|
end
|
@@ -2,6 +2,7 @@ class CreateSolidusBlingShippingMethods < ActiveRecord::Migration[7.0]
|
|
2
2
|
def change
|
3
3
|
create_table :solidus_bling_shipping_methods do |t|
|
4
4
|
t.string :alias
|
5
|
+
t.string :company
|
5
6
|
t.integer :account_id, null: false, index: true, index: { name: "solidus_bling_shipping_account_index" }
|
6
7
|
t.integer :spree_shipping_method_id, null: false, index: true, index: { name: "solidus_bling_spree_shipping_index" }
|
7
8
|
|
@@ -14,16 +14,6 @@ module SolidusBling
|
|
14
14
|
template 'initializer.rb', 'config/initializers/solidus_bling.rb'
|
15
15
|
end
|
16
16
|
|
17
|
-
def add_javascripts
|
18
|
-
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_bling\n"
|
19
|
-
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_bling\n"
|
20
|
-
end
|
21
|
-
|
22
|
-
def add_stylesheets
|
23
|
-
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_bling\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
24
|
-
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_bling\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
25
|
-
end
|
26
|
-
|
27
17
|
def add_migrations
|
28
18
|
run 'bin/rails railties:install:migrations FROM=solidus_bling'
|
29
19
|
end
|
data/lib/solidus_bling/engine.rb
CHANGED
@@ -7,7 +7,7 @@ module SolidusBling
|
|
7
7
|
class Engine < Rails::Engine
|
8
8
|
include SolidusSupport::EngineExtensions
|
9
9
|
|
10
|
-
isolate_namespace SolidusBling
|
10
|
+
isolate_namespace ::SolidusBling
|
11
11
|
|
12
12
|
engine_name 'solidus_bling'
|
13
13
|
|
@@ -16,26 +16,23 @@ module SolidusBling
|
|
16
16
|
|
17
17
|
::Spree::Backend::Config.configure do |config|
|
18
18
|
config.menu_items << config.class::MenuItem.new(
|
19
|
-
|
20
|
-
'exclamation',
|
21
|
-
url:
|
19
|
+
label: "bling_account",
|
20
|
+
icon: 'exclamation',
|
21
|
+
url: "/admin/solidus_bling/accounts",
|
22
22
|
condition: -> { can?(:manage, ::Spree::Store) }
|
23
23
|
)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
# use rspec for tests
|
28
|
-
config.generators do |g|
|
29
|
-
g.test_framework :rspec
|
30
|
-
end
|
31
|
-
|
32
27
|
initializer "solidus_bling.pub_sub", after: "spree.core.pub_sub" do |app|
|
33
28
|
app.reloader.to_prepare do
|
34
|
-
::Spree::Bus.register(:bling_products_updated)
|
35
|
-
::Spree::Bus.register(:bling_contact_created)
|
36
29
|
SolidusBling::Subscriber.new.subscribe_to(::Spree::Bus)
|
37
30
|
end
|
38
31
|
end
|
39
32
|
|
33
|
+
# use rspec for tests
|
34
|
+
config.generators do |g|
|
35
|
+
g.test_framework :rspec
|
36
|
+
end
|
40
37
|
end
|
41
38
|
end
|
data/lib/solidus_bling.rb
CHANGED
data/solidus_bling.gemspec
CHANGED
@@ -5,16 +5,16 @@ require_relative 'lib/solidus_bling/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'solidus_bling'
|
7
7
|
spec.version = SolidusBling::VERSION
|
8
|
-
spec.authors = ['
|
9
|
-
spec.email = '
|
8
|
+
spec.authors = ['Hamilton Tumenas Borges']
|
9
|
+
spec.email = 'hamiltontubo@gmail.com'
|
10
10
|
|
11
11
|
spec.summary = 'Solidus extension to integrate with the Bling'
|
12
|
-
spec.homepage = 'https://github.com/
|
12
|
+
spec.homepage = 'https://github.com/hamiltontborges/solidus_bling#readme'
|
13
13
|
spec.license = 'BSD-3-Clause'
|
14
14
|
|
15
15
|
spec.metadata['homepage_uri'] = spec.homepage
|
16
|
-
spec.metadata['source_code_uri'] = 'https://github.com/
|
17
|
-
spec.metadata['changelog_uri'] = 'https://github.com/
|
16
|
+
spec.metadata['source_code_uri'] = 'https://github.com/hamiltontborges/solidus_bling'
|
17
|
+
spec.metadata['changelog_uri'] = 'https://github.com/hamiltontborges/solidus_bling/blob/master/CHANGELOG.md'
|
18
18
|
|
19
19
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.5', '< 4')
|
20
20
|
|
@@ -30,9 +30,8 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 5']
|
32
32
|
spec.add_dependency 'solidus_support', '~> 0.5'
|
33
|
-
spec.add_dependency 'typhoeus'
|
34
33
|
spec.add_dependency 'solidus_brazilian_adaptations'
|
34
|
+
spec.add_dependency 'bling_api'
|
35
35
|
|
36
36
|
spec.add_development_dependency 'solidus_dev_support', '~> 2.7'
|
37
|
-
|
38
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_bling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Hamilton Tumenas Borges
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus_core
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.5'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: solidus_brazilian_adaptations
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: bling_api
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
@@ -87,13 +87,14 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '2.7'
|
89
89
|
description:
|
90
|
-
email:
|
90
|
+
email: hamiltontubo@gmail.com
|
91
91
|
executables: []
|
92
92
|
extensions: []
|
93
93
|
extra_rdoc_files: []
|
94
94
|
files:
|
95
95
|
- ".circleci/config.yml"
|
96
96
|
- ".gem_release.yml"
|
97
|
+
- ".gitattributes"
|
97
98
|
- ".github/stale.yml"
|
98
99
|
- ".github_changelog_generator"
|
99
100
|
- ".gitignore"
|
@@ -104,37 +105,24 @@ files:
|
|
104
105
|
- LICENSE
|
105
106
|
- README.md
|
106
107
|
- Rakefile
|
107
|
-
- app/
|
108
|
-
- app/assets/javascripts/spree/frontend/solidus_bling.js
|
109
|
-
- app/assets/stylesheets/spree/backend/solidus_bling.css
|
110
|
-
- app/assets/stylesheets/spree/frontend/solidus_bling.css
|
111
|
-
- app/controllers/spree/admin/accounts_controller.rb
|
112
|
-
- app/controllers/spree/admin/bling_products_controller.rb
|
113
|
-
- app/decorators/models/solidus_bling/spree/payment_method_decorator.rb
|
114
|
-
- app/decorators/models/solidus_bling/spree/shipping_method_decorator.rb
|
115
|
-
- app/helpers/solidus_bling/accounts_helper.rb
|
116
|
-
- app/helpers/solidus_bling/bling_products_helper.rb
|
108
|
+
- app/controllers/spree/admin/solidus_bling/accounts_controller.rb
|
117
109
|
- app/jobs/solidus_bling/application_job.rb
|
118
|
-
- app/jobs/solidus_bling/contact_job.rb
|
119
110
|
- app/jobs/solidus_bling/order_job.rb
|
120
|
-
- app/jobs/solidus_bling/product_job.rb
|
121
|
-
- app/jobs/solidus_bling/update_product_job.rb
|
122
111
|
- app/models/solidus_bling/account.rb
|
123
|
-
- app/models/solidus_bling/api.rb
|
124
|
-
- app/models/solidus_bling/contact.rb
|
125
112
|
- app/models/solidus_bling/event.rb
|
126
113
|
- app/models/solidus_bling/order.rb
|
127
114
|
- app/models/solidus_bling/payment_method.rb
|
128
|
-
- app/models/solidus_bling/product.rb
|
129
115
|
- app/models/solidus_bling/seller.rb
|
130
116
|
- app/models/solidus_bling/shipping_method.rb
|
117
|
+
- app/models/solidus_bling/token.rb
|
131
118
|
- app/subscribers/solidus_bling/subscriber.rb
|
132
|
-
- app/views/spree/admin/accounts/_form.html.erb
|
133
|
-
- app/views/spree/admin/accounts/edit.html.erb
|
134
|
-
- app/views/spree/admin/accounts/index.html.erb
|
135
|
-
- app/views/spree/admin/accounts/new.html.erb
|
136
|
-
- app/views/spree/admin/accounts/show.html.erb
|
119
|
+
- app/views/spree/admin/solidus_bling/accounts/_form.html.erb
|
120
|
+
- app/views/spree/admin/solidus_bling/accounts/edit.html.erb
|
121
|
+
- app/views/spree/admin/solidus_bling/accounts/index.html.erb
|
122
|
+
- app/views/spree/admin/solidus_bling/accounts/new.html.erb
|
123
|
+
- app/views/spree/admin/solidus_bling/accounts/show.html.erb
|
137
124
|
- bin/console
|
125
|
+
- bin/meu_sandbox
|
138
126
|
- bin/rails
|
139
127
|
- bin/rails-engine
|
140
128
|
- bin/rails-sandbox
|
@@ -144,14 +132,12 @@ files:
|
|
144
132
|
- config/locales/en.yml
|
145
133
|
- config/locales/pt-BR.yml
|
146
134
|
- config/routes.rb
|
147
|
-
- db/migrate/
|
148
|
-
- db/migrate/
|
149
|
-
- db/migrate/
|
150
|
-
- db/migrate/
|
151
|
-
- db/migrate/
|
152
|
-
- db/migrate/
|
153
|
-
- db/migrate/20230918143057_create_solidus_bling_shipping_methods.rb
|
154
|
-
- db/migrate/20231018141940_add_company_to_solidus_bling_shipping_methods.rb
|
135
|
+
- db/migrate/20231109210635_create_solidus_bling_accounts.rb
|
136
|
+
- db/migrate/20231110112528_add_bling_order_id_to_spree_orders.rb
|
137
|
+
- db/migrate/20231110112819_create_solidus_bling_events.rb
|
138
|
+
- db/migrate/20231110112958_create_solidus_bling_payment_methods.rb
|
139
|
+
- db/migrate/20231110113122_create_solidus_bling_sellers.rb
|
140
|
+
- db/migrate/20231110113221_create_solidus_bling_shipping_methods.rb
|
155
141
|
- lib/generators/solidus_bling/install/install_generator.rb
|
156
142
|
- lib/generators/solidus_bling/install/templates/initializer.rb
|
157
143
|
- lib/solidus_bling.rb
|
@@ -160,28 +146,20 @@ files:
|
|
160
146
|
- lib/solidus_bling/testing_support/factories.rb
|
161
147
|
- lib/solidus_bling/version.rb
|
162
148
|
- solidus_bling.gemspec
|
163
|
-
- spec/helpers/solidus_bling/accounts_helper_spec.rb
|
164
|
-
- spec/helpers/solidus_bling/bling_products_helper_spec.rb
|
165
|
-
- spec/jobs/solidus_bling/contact_job_spec.rb
|
166
149
|
- spec/jobs/solidus_bling/order_job_spec.rb
|
167
|
-
- spec/jobs/solidus_bling/product_job_spec.rb
|
168
|
-
- spec/jobs/solidus_bling/update_product_job_spec.rb
|
169
150
|
- spec/models/solidus_bling/account_spec.rb
|
170
151
|
- spec/models/solidus_bling/event_spec.rb
|
171
152
|
- spec/models/solidus_bling/payment_method_spec.rb
|
172
|
-
- spec/models/solidus_bling/product_spec.rb
|
173
153
|
- spec/models/solidus_bling/seller_spec.rb
|
174
154
|
- spec/models/solidus_bling/shipping_method_spec.rb
|
175
|
-
- spec/requests/solidus_bling/accounts_spec.rb
|
176
|
-
- spec/requests/solidus_bling/bling_products_spec.rb
|
177
155
|
- spec/spec_helper.rb
|
178
|
-
homepage: https://github.com/
|
156
|
+
homepage: https://github.com/hamiltontborges/solidus_bling#readme
|
179
157
|
licenses:
|
180
158
|
- BSD-3-Clause
|
181
159
|
metadata:
|
182
|
-
homepage_uri: https://github.com/
|
183
|
-
source_code_uri: https://github.com/
|
184
|
-
changelog_uri: https://github.com/
|
160
|
+
homepage_uri: https://github.com/hamiltontborges/solidus_bling#readme
|
161
|
+
source_code_uri: https://github.com/hamiltontborges/solidus_bling
|
162
|
+
changelog_uri: https://github.com/hamiltontborges/solidus_bling/blob/master/CHANGELOG.md
|
185
163
|
post_install_message:
|
186
164
|
rdoc_options: []
|
187
165
|
require_paths:
|
@@ -205,18 +183,10 @@ signing_key:
|
|
205
183
|
specification_version: 4
|
206
184
|
summary: Solidus extension to integrate with the Bling
|
207
185
|
test_files:
|
208
|
-
- spec/helpers/solidus_bling/accounts_helper_spec.rb
|
209
|
-
- spec/helpers/solidus_bling/bling_products_helper_spec.rb
|
210
|
-
- spec/jobs/solidus_bling/contact_job_spec.rb
|
211
186
|
- spec/jobs/solidus_bling/order_job_spec.rb
|
212
|
-
- spec/jobs/solidus_bling/product_job_spec.rb
|
213
|
-
- spec/jobs/solidus_bling/update_product_job_spec.rb
|
214
187
|
- spec/models/solidus_bling/account_spec.rb
|
215
188
|
- spec/models/solidus_bling/event_spec.rb
|
216
189
|
- spec/models/solidus_bling/payment_method_spec.rb
|
217
|
-
- spec/models/solidus_bling/product_spec.rb
|
218
190
|
- spec/models/solidus_bling/seller_spec.rb
|
219
191
|
- spec/models/solidus_bling/shipping_method_spec.rb
|
220
|
-
- spec/requests/solidus_bling/accounts_spec.rb
|
221
|
-
- spec/requests/solidus_bling/bling_products_spec.rb
|
222
192
|
- spec/spec_helper.rb
|
@@ -1,67 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Admin
|
3
|
-
class AccountsController < ResourceController
|
4
|
-
def index
|
5
|
-
end
|
6
|
-
|
7
|
-
def show
|
8
|
-
@bling_account = SolidusBling::Account.find(params[:id])
|
9
|
-
end
|
10
|
-
|
11
|
-
def new
|
12
|
-
@bling_account = SolidusBling::Account.new
|
13
|
-
@payment_methods = ::Spree::PaymentMethod.all.pluck(:name, :id)
|
14
|
-
@shipping_methods = ::Spree::ShippingMethod.all.pluck(:name, :id)
|
15
|
-
@bling_account.payment_methods.build
|
16
|
-
@bling_account.shipping_methods.build
|
17
|
-
@bling_account.sellers.build
|
18
|
-
end
|
19
|
-
|
20
|
-
def create
|
21
|
-
bling_account = SolidusBling::Account.new account_params.merge(name: "Bling")
|
22
|
-
if bling_account.save
|
23
|
-
flash[:success] = "Conta criada com sucesso"
|
24
|
-
redirect_to admin_accounts_path
|
25
|
-
else
|
26
|
-
flash[:error] = bling_account.errors.full_messages.join("\n")
|
27
|
-
redirect_to new_admin_account_path
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def edit
|
32
|
-
@bling_account = SolidusBling::Account.find(params[:id])
|
33
|
-
@payment_methods = ::Spree::PaymentMethod.all.pluck(:name, :id)
|
34
|
-
@shipping_methods = ::Spree::ShippingMethod.all.pluck(:name, :id)
|
35
|
-
@products_count = @bling_account.products.count
|
36
|
-
@last_update = SolidusBling::Event.where(method: "products_updated").max.try(:created_at)
|
37
|
-
end
|
38
|
-
|
39
|
-
def update
|
40
|
-
bling_account = SolidusBling::Account.find(params[:id])
|
41
|
-
bling_account.update account_params
|
42
|
-
redirect_to edit_admin_account_path(bling_account.id)
|
43
|
-
end
|
44
|
-
|
45
|
-
def delete
|
46
|
-
bling_account = SolidusBling::Account.find(params[:id])
|
47
|
-
bling_account.delete
|
48
|
-
redirect_to admin_accounts_path
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def model_class
|
54
|
-
SolidusBling::Account
|
55
|
-
end
|
56
|
-
|
57
|
-
def account_params
|
58
|
-
params.require(:account).permit(
|
59
|
-
:app_name, :client_id, :client_secret, :refresh_token, :api_base_url, :external_store_id, :incoming_category_id,
|
60
|
-
payment_methods_attributes: [:id, :spree_payment_method_id, :external_id],
|
61
|
-
shipping_methods_attributes: [:id, :spree_shipping_method_id, :alias, :company],
|
62
|
-
sellers_attributes: [:id, :name, :external_id]
|
63
|
-
)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Admin
|
3
|
-
class BlingProductsController < ResourceController
|
4
|
-
|
5
|
-
def update
|
6
|
-
account = SolidusBling::Account.find(params[:id])
|
7
|
-
SolidusBling::UpdateProductJob.perform_later(account)
|
8
|
-
flash[:success] = "Baixando produtos"
|
9
|
-
redirect_to edit_admin_account_path(account)
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def model_class
|
15
|
-
SolidusBling::Account
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
module Spree
|
3
|
-
module PaymentMethodDecorator
|
4
|
-
def self.prepended(base)
|
5
|
-
base.class_eval do
|
6
|
-
has_many :solidus_bling_payment_methods, class_name: "SolidusBling::PaymentMethod", foreign_key: "spree_payment_method_id"
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
::Spree::PaymentMethod.prepend self
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
module Spree
|
3
|
-
module ShippingMethodDecorator
|
4
|
-
def self.prepended(base)
|
5
|
-
base.class_eval do
|
6
|
-
has_many :solidus_bling_shipping_methods, class_name: "SolidusBling::ShippingMethod", foreign_key: "spree_shipping_method_id"
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
::Spree::ShippingMethod.prepend self
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
class ContactJob < ApplicationJob
|
3
|
-
queue_as :default
|
4
|
-
|
5
|
-
def perform event:, method_name:
|
6
|
-
bling_event = SolidusBling::Event.new
|
7
|
-
contact = event[:args][:contato]
|
8
|
-
order = event[:args][:order]
|
9
|
-
bling_event.internal_id = order.id
|
10
|
-
bling_event.name = "event.omnes_event_name"
|
11
|
-
bling_event.method = method_name
|
12
|
-
if contact.include? "error"
|
13
|
-
bling_event.status = 'error'
|
14
|
-
bling_event.message = contact["error"]["description"]
|
15
|
-
else
|
16
|
-
bling_event.status = 'success'
|
17
|
-
end
|
18
|
-
bling_event.body = order.to_json
|
19
|
-
bling_event.save!
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
class ProductJob < ApplicationJob
|
3
|
-
queue_as :default
|
4
|
-
|
5
|
-
def perform event:, method_name:
|
6
|
-
bling_event = SolidusBling::Event.new
|
7
|
-
products = event[:products]
|
8
|
-
bling_event.method = method_name
|
9
|
-
bling_event.body = products.to_json
|
10
|
-
bling_event.save!
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
class Api
|
3
|
-
|
4
|
-
attr_reader :account, :headers
|
5
|
-
def initialize account
|
6
|
-
@account = account
|
7
|
-
verify_token
|
8
|
-
@headers = {
|
9
|
-
"Content-Type": "application/json",
|
10
|
-
"Authorization": "Bearer #{@account.access_token}"
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
def refresh_token
|
15
|
-
basic_encoded = Base64.strict_encode64("#{@account.client_id}:#{@account.client_secret}")
|
16
|
-
headers = {
|
17
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
18
|
-
"Authorization": "Basic #{basic_encoded}"
|
19
|
-
}
|
20
|
-
body = "grant_type=refresh_token&refresh_token=#{@account.refresh_token}"
|
21
|
-
res = ::Typhoeus.post("#{@account.api_base_url}/oauth/token", headers: headers, body: body)
|
22
|
-
body = JSON.parse(res.body)
|
23
|
-
response_has_error? body
|
24
|
-
expire_datetime = res.headers["date"].to_datetime.utc + body["expires_in"].seconds
|
25
|
-
@account.update(
|
26
|
-
access_token: body["access_token"],
|
27
|
-
refresh_token: body["refresh_token"],
|
28
|
-
token_expires_in: expire_datetime
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
def need_refresh_token?
|
33
|
-
return true if @account.token_expires_in.nil?
|
34
|
-
DateTime.now.utc > (@account.token_expires_in - 2.hours)
|
35
|
-
end
|
36
|
-
|
37
|
-
def verify_token
|
38
|
-
refresh_token if need_refresh_token?
|
39
|
-
end
|
40
|
-
|
41
|
-
def response_has_error? json
|
42
|
-
if json.include? "error"
|
43
|
-
error = json["error"]
|
44
|
-
raise "ERROR: #{json}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def find_account app_name
|
51
|
-
account = SolidusBling::Account.find_by(app_name: app_name)
|
52
|
-
raise 'Conta de aplicativo inexistente' if account.nil?
|
53
|
-
account
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
@@ -1,83 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
class Contact < SolidusBling::Api
|
3
|
-
|
4
|
-
attr_reader :info
|
5
|
-
|
6
|
-
def initialize order, account
|
7
|
-
super(account)
|
8
|
-
@info = find_or_create(order)
|
9
|
-
end
|
10
|
-
|
11
|
-
def find_or_create order
|
12
|
-
raise "Order com CPF/CNPJ vazio" if order.tax_id.nil?
|
13
|
-
contato = find_by_cpf(order.tax_id)
|
14
|
-
if contato.nil?
|
15
|
-
contato_external_id = create(order)
|
16
|
-
contato = {"id" => contato_external_id}
|
17
|
-
end
|
18
|
-
contato
|
19
|
-
end
|
20
|
-
|
21
|
-
def find_by_cpf tax_id
|
22
|
-
req = Typhoeus.get("#{@account.api_base_url}/contatos?numeroDocumento=#{tax_id.gsub(/\D/, "")}", headers: @headers)
|
23
|
-
json = JSON.parse(req.body)
|
24
|
-
response_has_error?(json)
|
25
|
-
user = {}
|
26
|
-
if json.include? "data" || !json["data"].empty?
|
27
|
-
user = json["data"].first
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def create order
|
32
|
-
contato = build_hash_contato(order)
|
33
|
-
begin
|
34
|
-
attempts ||= 1
|
35
|
-
req = Typhoeus.post("#{@account.api_base_url}/contatos", headers: @headers, body: JSON.dump(contato))
|
36
|
-
raise if req.code == 429
|
37
|
-
rescue
|
38
|
-
retry if (attempts += 1) < 5
|
39
|
-
ensure
|
40
|
-
json = JSON.parse(req.body)
|
41
|
-
response_has_error?(json)
|
42
|
-
::Spree::Bus.publish :bling_contact_created, args: {order: order, contato: json}
|
43
|
-
return json.dig("data", "id")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def tipo_pessoa doc
|
50
|
-
doc.gsub(/\D/, "").length > 11 ? "J" : "F"
|
51
|
-
end
|
52
|
-
|
53
|
-
def build_hash_contato order
|
54
|
-
{
|
55
|
-
"nome": order.ship_address.name,
|
56
|
-
"telefone": order.ship_address.phone,
|
57
|
-
"tipo": tipo_pessoa(order.tax_id),
|
58
|
-
"numeroDocumento": order.tax_id,
|
59
|
-
"email": order.email,
|
60
|
-
"endereco": {
|
61
|
-
"geral": {
|
62
|
-
"endereco": order.bill_address.address1,
|
63
|
-
"cep": order.bill_address.zipcode,
|
64
|
-
"bairro": order.bill_address.district,
|
65
|
-
"municipio": order.bill_address.city,
|
66
|
-
"uf": order.bill_address.state.abbr,
|
67
|
-
"numero": order.bill_address.number,
|
68
|
-
"complemento": order.bill_address.address2
|
69
|
-
},
|
70
|
-
"cobranca": {
|
71
|
-
"endereco": order.bill_address.address1,
|
72
|
-
"cep": order.bill_address.zipcode,
|
73
|
-
"bairro": order.bill_address.district,
|
74
|
-
"municipio": order.bill_address.city,
|
75
|
-
"uf": order.bill_address.state.abbr,
|
76
|
-
"numero": order.bill_address.number,
|
77
|
-
"complemento": order.bill_address.address2
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|