solidus_bling 2.0.7 → 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/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 -51
- 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
|
|
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,33 +105,24 @@ files:
|
|
104
105
|
- LICENSE
|
105
106
|
- README.md
|
106
107
|
- Rakefile
|
107
|
-
- app/controllers/spree/admin/accounts_controller.rb
|
108
|
-
- app/controllers/spree/admin/bling_products_controller.rb
|
109
|
-
- app/decorators/models/solidus_bling/spree/payment_method_decorator.rb
|
110
|
-
- app/decorators/models/solidus_bling/spree/shipping_method_decorator.rb
|
111
|
-
- app/helpers/solidus_bling/accounts_helper.rb
|
112
|
-
- app/helpers/solidus_bling/bling_products_helper.rb
|
108
|
+
- app/controllers/spree/admin/solidus_bling/accounts_controller.rb
|
113
109
|
- app/jobs/solidus_bling/application_job.rb
|
114
|
-
- app/jobs/solidus_bling/contact_job.rb
|
115
110
|
- app/jobs/solidus_bling/order_job.rb
|
116
|
-
- app/jobs/solidus_bling/product_job.rb
|
117
|
-
- app/jobs/solidus_bling/update_product_job.rb
|
118
111
|
- app/models/solidus_bling/account.rb
|
119
|
-
- app/models/solidus_bling/api.rb
|
120
|
-
- app/models/solidus_bling/contact.rb
|
121
112
|
- app/models/solidus_bling/event.rb
|
122
113
|
- app/models/solidus_bling/order.rb
|
123
114
|
- app/models/solidus_bling/payment_method.rb
|
124
|
-
- app/models/solidus_bling/product.rb
|
125
115
|
- app/models/solidus_bling/seller.rb
|
126
116
|
- app/models/solidus_bling/shipping_method.rb
|
117
|
+
- app/models/solidus_bling/token.rb
|
127
118
|
- app/subscribers/solidus_bling/subscriber.rb
|
128
|
-
- app/views/spree/admin/accounts/_form.html.erb
|
129
|
-
- app/views/spree/admin/accounts/edit.html.erb
|
130
|
-
- app/views/spree/admin/accounts/index.html.erb
|
131
|
-
- app/views/spree/admin/accounts/new.html.erb
|
132
|
-
- 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
|
133
124
|
- bin/console
|
125
|
+
- bin/meu_sandbox
|
134
126
|
- bin/rails
|
135
127
|
- bin/rails-engine
|
136
128
|
- bin/rails-sandbox
|
@@ -140,14 +132,12 @@ files:
|
|
140
132
|
- config/locales/en.yml
|
141
133
|
- config/locales/pt-BR.yml
|
142
134
|
- config/routes.rb
|
143
|
-
- db/migrate/
|
144
|
-
- db/migrate/
|
145
|
-
- db/migrate/
|
146
|
-
- db/migrate/
|
147
|
-
- db/migrate/
|
148
|
-
- db/migrate/
|
149
|
-
- db/migrate/20230918143057_create_solidus_bling_shipping_methods.rb
|
150
|
-
- 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
|
151
141
|
- lib/generators/solidus_bling/install/install_generator.rb
|
152
142
|
- lib/generators/solidus_bling/install/templates/initializer.rb
|
153
143
|
- lib/solidus_bling.rb
|
@@ -156,28 +146,20 @@ files:
|
|
156
146
|
- lib/solidus_bling/testing_support/factories.rb
|
157
147
|
- lib/solidus_bling/version.rb
|
158
148
|
- solidus_bling.gemspec
|
159
|
-
- spec/helpers/solidus_bling/accounts_helper_spec.rb
|
160
|
-
- spec/helpers/solidus_bling/bling_products_helper_spec.rb
|
161
|
-
- spec/jobs/solidus_bling/contact_job_spec.rb
|
162
149
|
- spec/jobs/solidus_bling/order_job_spec.rb
|
163
|
-
- spec/jobs/solidus_bling/product_job_spec.rb
|
164
|
-
- spec/jobs/solidus_bling/update_product_job_spec.rb
|
165
150
|
- spec/models/solidus_bling/account_spec.rb
|
166
151
|
- spec/models/solidus_bling/event_spec.rb
|
167
152
|
- spec/models/solidus_bling/payment_method_spec.rb
|
168
|
-
- spec/models/solidus_bling/product_spec.rb
|
169
153
|
- spec/models/solidus_bling/seller_spec.rb
|
170
154
|
- spec/models/solidus_bling/shipping_method_spec.rb
|
171
|
-
- spec/requests/solidus_bling/accounts_spec.rb
|
172
|
-
- spec/requests/solidus_bling/bling_products_spec.rb
|
173
155
|
- spec/spec_helper.rb
|
174
|
-
homepage: https://github.com/
|
156
|
+
homepage: https://github.com/hamiltontborges/solidus_bling#readme
|
175
157
|
licenses:
|
176
158
|
- BSD-3-Clause
|
177
159
|
metadata:
|
178
|
-
homepage_uri: https://github.com/
|
179
|
-
source_code_uri: https://github.com/
|
180
|
-
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
|
181
163
|
post_install_message:
|
182
164
|
rdoc_options: []
|
183
165
|
require_paths:
|
@@ -201,18 +183,10 @@ signing_key:
|
|
201
183
|
specification_version: 4
|
202
184
|
summary: Solidus extension to integrate with the Bling
|
203
185
|
test_files:
|
204
|
-
- spec/helpers/solidus_bling/accounts_helper_spec.rb
|
205
|
-
- spec/helpers/solidus_bling/bling_products_helper_spec.rb
|
206
|
-
- spec/jobs/solidus_bling/contact_job_spec.rb
|
207
186
|
- spec/jobs/solidus_bling/order_job_spec.rb
|
208
|
-
- spec/jobs/solidus_bling/product_job_spec.rb
|
209
|
-
- spec/jobs/solidus_bling/update_product_job_spec.rb
|
210
187
|
- spec/models/solidus_bling/account_spec.rb
|
211
188
|
- spec/models/solidus_bling/event_spec.rb
|
212
189
|
- spec/models/solidus_bling/payment_method_spec.rb
|
213
|
-
- spec/models/solidus_bling/product_spec.rb
|
214
190
|
- spec/models/solidus_bling/seller_spec.rb
|
215
191
|
- spec/models/solidus_bling/shipping_method_spec.rb
|
216
|
-
- spec/requests/solidus_bling/accounts_spec.rb
|
217
|
-
- spec/requests/solidus_bling/bling_products_spec.rb
|
218
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
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module SolidusBling
|
2
|
-
class Product < ApplicationRecord
|
3
|
-
belongs_to :account
|
4
|
-
|
5
|
-
def self.update bling_account
|
6
|
-
bling_api = SolidusBling::Api.new(bling_account)
|
7
|
-
skus = ::Spree::Variant.pluck(:sku)
|
8
|
-
hash_products = {}
|
9
|
-
products = skus.map do |sku|
|
10
|
-
begin
|
11
|
-
attempts ||= 1
|
12
|
-
req = Typhoeus.get("#{bling_api.account.api_base_url}/produtos?codigo=#{sku}", headers: bling_api.headers)
|
13
|
-
res_json = JSON.parse(req.body)
|
14
|
-
# p "#{sku} => #{res_json}"
|
15
|
-
next if res_json["data"] == []
|
16
|
-
product = res_json["data"].first
|
17
|
-
hash_products[sku] = product["id"]
|
18
|
-
{
|
19
|
-
account_id: bling_api.account.id,
|
20
|
-
sku: sku,
|
21
|
-
external_id: product["id"].to_s,
|
22
|
-
name: product["nome"]
|
23
|
-
}
|
24
|
-
rescue => e
|
25
|
-
hash_products[sku] = res_json
|
26
|
-
# p "#{sku} => #{res_json} => #{e}"
|
27
|
-
sleep 1
|
28
|
-
retry if (attempts += 1) < 5
|
29
|
-
end
|
30
|
-
end.compact.uniq
|
31
|
-
SolidusBling::Product.upsert_all(products, unique_by: :sku)
|
32
|
-
::Spree::Bus.publish :bling_products_updated, products: hash_products
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<div style="margin: 10px 0px">
|
2
|
-
<%= button_to "Baixar produtos", admin_bling_product_path(@bling_account.id), method: :put, data:
|
3
|
-
{confirm: "Deseja baixar os produtos?" } %>
|
4
|
-
<span>Produtos baixados: <%= @products_count %></span>
|
5
|
-
<br>
|
6
|
-
<% if @last_update.present? %>
|
7
|
-
<span>Ultima atualização: <%= @last_update.strftime("%d/%m/%Y %H:%M") %> </span>
|
8
|
-
<% end %>
|
9
|
-
</div>
|
10
|
-
|
11
|
-
<%= render "form", bling_account: @bling_account, form_url: admin_account_path(@bling_account.id) %>
|