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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.gitignore +0 -1
  4. data/CHANGELOG.md +1 -3
  5. data/LICENSE +1 -1
  6. data/README.md +1 -1
  7. data/app/controllers/spree/admin/solidus_bling/accounts_controller.rb +77 -0
  8. data/app/jobs/solidus_bling/order_job.rb +5 -7
  9. data/app/models/solidus_bling/account.rb +7 -1
  10. data/app/models/solidus_bling/order.rb +122 -95
  11. data/app/models/solidus_bling/token.rb +44 -0
  12. data/app/subscribers/solidus_bling/subscriber.rb +2 -22
  13. data/app/views/spree/admin/{accounts → solidus_bling/accounts}/_form.html.erb +21 -8
  14. data/app/views/spree/admin/solidus_bling/accounts/edit.html.erb +1 -0
  15. data/app/views/spree/admin/solidus_bling/accounts/index.html.erb +13 -0
  16. data/app/views/spree/admin/{accounts → solidus_bling/accounts}/new.html.erb +1 -1
  17. data/bin/meu_sandbox +67 -0
  18. data/config/locales/pt-BR.yml +1 -1
  19. data/config/routes.rb +6 -2
  20. data/db/migrate/{20230918141419_create_solidus_bling_accounts.rb → 20231109210635_create_solidus_bling_accounts.rb} +4 -5
  21. data/db/migrate/{20230918142547_create_solidus_bling_events.rb → 20231110112819_create_solidus_bling_events.rb} +1 -2
  22. data/db/migrate/{20230918143057_create_solidus_bling_shipping_methods.rb → 20231110113221_create_solidus_bling_shipping_methods.rb} +1 -0
  23. data/lib/generators/solidus_bling/install/install_generator.rb +0 -10
  24. data/lib/solidus_bling/engine.rb +8 -11
  25. data/lib/solidus_bling/version.rb +1 -1
  26. data/lib/solidus_bling.rb +1 -1
  27. data/solidus_bling.gemspec +6 -7
  28. metadata +25 -55
  29. data/app/assets/javascripts/spree/backend/solidus_bling.js +0 -2
  30. data/app/assets/javascripts/spree/frontend/solidus_bling.js +0 -2
  31. data/app/assets/stylesheets/spree/backend/solidus_bling.css +0 -4
  32. data/app/assets/stylesheets/spree/frontend/solidus_bling.css +0 -4
  33. data/app/controllers/spree/admin/accounts_controller.rb +0 -67
  34. data/app/controllers/spree/admin/bling_products_controller.rb +0 -20
  35. data/app/decorators/models/solidus_bling/spree/payment_method_decorator.rb +0 -13
  36. data/app/decorators/models/solidus_bling/spree/shipping_method_decorator.rb +0 -13
  37. data/app/helpers/solidus_bling/accounts_helper.rb +0 -4
  38. data/app/helpers/solidus_bling/bling_products_helper.rb +0 -4
  39. data/app/jobs/solidus_bling/contact_job.rb +0 -22
  40. data/app/jobs/solidus_bling/product_job.rb +0 -13
  41. data/app/jobs/solidus_bling/update_product_job.rb +0 -9
  42. data/app/models/solidus_bling/api.rb +0 -57
  43. data/app/models/solidus_bling/contact.rb +0 -83
  44. data/app/models/solidus_bling/product.rb +0 -36
  45. data/app/views/spree/admin/accounts/edit.html.erb +0 -11
  46. data/app/views/spree/admin/accounts/index.html.erb +0 -13
  47. data/db/migrate/20230918141700_create_solidus_bling_products.rb +0 -12
  48. data/db/migrate/20231018141940_add_company_to_solidus_bling_shipping_methods.rb +0 -5
  49. data/spec/helpers/solidus_bling/accounts_helper_spec.rb +0 -17
  50. data/spec/helpers/solidus_bling/bling_products_helper_spec.rb +0 -17
  51. data/spec/jobs/solidus_bling/contact_job_spec.rb +0 -7
  52. data/spec/jobs/solidus_bling/product_job_spec.rb +0 -7
  53. data/spec/jobs/solidus_bling/update_product_job_spec.rb +0 -7
  54. data/spec/models/solidus_bling/product_spec.rb +0 -7
  55. data/spec/requests/solidus_bling/accounts_spec.rb +0 -7
  56. data/spec/requests/solidus_bling/bling_products_spec.rb +0 -7
  57. /data/app/views/spree/admin/{accounts → solidus_bling/accounts}/show.html.erb +0 -0
  58. /data/db/migrate/{20230918141505_add_bling_order_id_to_spree_orders.rb → 20231110112528_add_bling_order_id_to_spree_orders.rb} +0 -0
  59. /data/db/migrate/{20230918142742_create_solidus_bling_payment_methods.rb → 20231110112958_create_solidus_bling_payment_methods.rb} +0 -0
  60. /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
@@ -5,8 +5,7 @@ class CreateSolidusBlingEvents < ActiveRecord::Migration[7.0]
5
5
  t.string :status
6
6
  t.string :message
7
7
  t.string :body
8
- t.string :name
9
- t.string :method
8
+ t.string :event
10
9
 
11
10
  t.timestamps
12
11
  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
@@ -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
- [:bling_account],
20
- 'exclamation',
21
- url: :admin_accounts_path,
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusBling
4
- VERSION = '2.0.6'
4
+ VERSION = '3.0.0'
5
5
  end
data/lib/solidus_bling.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'solidus_brazilian_adaptations'
4
- require 'typhoeus'
4
+ require 'bling_api'
5
5
  require 'solidus_bling/configuration'
6
6
  require 'solidus_bling/version'
7
7
  require 'solidus_bling/engine'
@@ -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 = ['ulysses-bull']
9
- spec.email = 'contato7bulloleo@gmail.com'
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/ulysses-bull/solidus_bling#readme'
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/ulysses-bull/solidus_bling'
17
- spec.metadata['changelog_uri'] = 'https://github.com/ulysses-bull/solidus_bling/blob/master/CHANGELOG.md'
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: 2.0.6
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - ulysses-bull
7
+ - Hamilton Tumenas Borges
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-18 00:00:00.000000000 Z
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: typhoeus
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: solidus_brazilian_adaptations
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: contato7bulloleo@gmail.com
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/assets/javascripts/spree/backend/solidus_bling.js
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/20230918141419_create_solidus_bling_accounts.rb
148
- - db/migrate/20230918141505_add_bling_order_id_to_spree_orders.rb
149
- - db/migrate/20230918141700_create_solidus_bling_products.rb
150
- - db/migrate/20230918142547_create_solidus_bling_events.rb
151
- - db/migrate/20230918142742_create_solidus_bling_payment_methods.rb
152
- - db/migrate/20230918142953_create_solidus_bling_sellers.rb
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/ulysses-bull/solidus_bling#readme
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/ulysses-bull/solidus_bling#readme
183
- source_code_uri: https://github.com/ulysses-bull/solidus_bling
184
- changelog_uri: https://github.com/ulysses-bull/solidus_bling/blob/master/CHANGELOG.md
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,2 +0,0 @@
1
- // Placeholder manifest file.
2
- // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js'
@@ -1,2 +0,0 @@
1
- // Placeholder manifest file.
2
- // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js'
@@ -1,4 +0,0 @@
1
- /*
2
- Placeholder manifest file.
3
- the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css'
4
- */
@@ -1,4 +0,0 @@
1
- /*
2
- Placeholder manifest file.
3
- the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
4
- */
@@ -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,4 +0,0 @@
1
- module SolidusBling
2
- module AccountsHelper
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module SolidusBling
2
- module BlingProductsHelper
3
- end
4
- 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,9 +0,0 @@
1
- module SolidusBling
2
- class UpdateProductJob < ApplicationJob
3
- queue_as :default
4
-
5
- def perform(account)
6
- SolidusBling::Product.update(account)
7
- end
8
- end
9
- 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