solidus_bling 2.0.7 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) 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/Gemfile +18 -19
  6. data/LICENSE +1 -1
  7. data/README.md +1 -1
  8. data/Rakefile +2 -2
  9. data/app/controllers/spree/admin/solidus_bling/accounts_controller.rb +80 -0
  10. data/app/jobs/solidus_bling/order_job.rb +4 -7
  11. data/app/models/solidus_bling/account.rb +6 -1
  12. data/app/models/solidus_bling/order.rb +121 -96
  13. data/app/models/solidus_bling/token.rb +44 -0
  14. data/app/subscribers/solidus_bling/subscriber.rb +2 -22
  15. data/app/views/spree/admin/solidus_bling/accounts/_form.html.erb +147 -0
  16. data/app/views/spree/admin/solidus_bling/accounts/_link_auth.html.erb +10 -0
  17. data/app/views/spree/admin/solidus_bling/accounts/edit.html.erb +3 -0
  18. data/app/views/spree/admin/solidus_bling/accounts/index.html.erb +67 -0
  19. data/app/views/spree/admin/solidus_bling/accounts/new.html.erb +3 -0
  20. data/bin/meu_sandbox +67 -0
  21. data/config/locales/pt-BR.yml +1 -1
  22. data/config/routes.rb +6 -2
  23. data/db/migrate/{20230918141419_create_solidus_bling_accounts.rb → 20231109210635_create_solidus_bling_accounts.rb} +4 -5
  24. data/db/migrate/{20230918142547_create_solidus_bling_events.rb → 20231110112819_create_solidus_bling_events.rb} +1 -2
  25. data/db/migrate/{20230918143057_create_solidus_bling_shipping_methods.rb → 20231110113221_create_solidus_bling_shipping_methods.rb} +3 -2
  26. data/lib/generators/solidus_bling/install/install_generator.rb +6 -6
  27. data/lib/solidus_bling/configuration.rb +1 -1
  28. data/lib/solidus_bling/engine.rb +12 -15
  29. data/lib/solidus_bling/version.rb +1 -1
  30. data/lib/solidus_bling.rb +5 -5
  31. data/solidus_bling.gemspec +16 -18
  32. metadata +32 -71
  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/_form.html.erb +0 -76
  46. data/app/views/spree/admin/accounts/edit.html.erb +0 -11
  47. data/app/views/spree/admin/accounts/index.html.erb +0 -13
  48. data/app/views/spree/admin/accounts/new.html.erb +0 -2
  49. data/db/migrate/20230918141700_create_solidus_bling_products.rb +0 -12
  50. data/db/migrate/20231018141940_add_company_to_solidus_bling_shipping_methods.rb +0 -5
  51. data/spec/helpers/solidus_bling/accounts_helper_spec.rb +0 -17
  52. data/spec/helpers/solidus_bling/bling_products_helper_spec.rb +0 -17
  53. data/spec/jobs/solidus_bling/contact_job_spec.rb +0 -7
  54. data/spec/jobs/solidus_bling/order_job_spec.rb +0 -7
  55. data/spec/jobs/solidus_bling/product_job_spec.rb +0 -7
  56. data/spec/jobs/solidus_bling/update_product_job_spec.rb +0 -7
  57. data/spec/models/solidus_bling/account_spec.rb +0 -7
  58. data/spec/models/solidus_bling/event_spec.rb +0 -7
  59. data/spec/models/solidus_bling/payment_method_spec.rb +0 -7
  60. data/spec/models/solidus_bling/product_spec.rb +0 -7
  61. data/spec/models/solidus_bling/seller_spec.rb +0 -7
  62. data/spec/models/solidus_bling/shipping_method_spec.rb +0 -7
  63. data/spec/requests/solidus_bling/accounts_spec.rb +0 -7
  64. data/spec/requests/solidus_bling/bling_products_spec.rb +0 -7
  65. data/spec/spec_helper.rb +0 -32
  66. /data/app/views/spree/admin/{accounts → solidus_bling/accounts}/show.html.erb +0 -0
  67. /data/db/migrate/{20230918141505_add_bling_order_id_to_spree_orders.rb → 20231110112528_add_bling_order_id_to_spree_orders.rb} +0 -0
  68. /data/db/migrate/{20230918142742_create_solidus_bling_payment_methods.rb → 20231110112958_create_solidus_bling_payment_methods.rb} +0 -0
  69. /data/db/migrate/{20230918142953_create_solidus_bling_sellers.rb → 20231110113122_create_solidus_bling_sellers.rb} +0 -0
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.7
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
- - ulysses-bull
8
- autorequire:
7
+ - Hamilton Tumenas Borges
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-20 00:00:00.000000000 Z
11
+ date: 2023-11-17 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
  - - ">="
@@ -86,14 +86,15 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: '2.7'
89
- description:
90
- email: contato7bulloleo@gmail.com
89
+ description:
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,25 @@ 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/_link_auth.html.erb
121
+ - app/views/spree/admin/solidus_bling/accounts/edit.html.erb
122
+ - app/views/spree/admin/solidus_bling/accounts/index.html.erb
123
+ - app/views/spree/admin/solidus_bling/accounts/new.html.erb
124
+ - app/views/spree/admin/solidus_bling/accounts/show.html.erb
133
125
  - bin/console
126
+ - bin/meu_sandbox
134
127
  - bin/rails
135
128
  - bin/rails-engine
136
129
  - bin/rails-sandbox
@@ -140,14 +133,12 @@ files:
140
133
  - config/locales/en.yml
141
134
  - config/locales/pt-BR.yml
142
135
  - config/routes.rb
143
- - db/migrate/20230918141419_create_solidus_bling_accounts.rb
144
- - db/migrate/20230918141505_add_bling_order_id_to_spree_orders.rb
145
- - db/migrate/20230918141700_create_solidus_bling_products.rb
146
- - db/migrate/20230918142547_create_solidus_bling_events.rb
147
- - db/migrate/20230918142742_create_solidus_bling_payment_methods.rb
148
- - db/migrate/20230918142953_create_solidus_bling_sellers.rb
149
- - db/migrate/20230918143057_create_solidus_bling_shipping_methods.rb
150
- - db/migrate/20231018141940_add_company_to_solidus_bling_shipping_methods.rb
136
+ - db/migrate/20231109210635_create_solidus_bling_accounts.rb
137
+ - db/migrate/20231110112528_add_bling_order_id_to_spree_orders.rb
138
+ - db/migrate/20231110112819_create_solidus_bling_events.rb
139
+ - db/migrate/20231110112958_create_solidus_bling_payment_methods.rb
140
+ - db/migrate/20231110113122_create_solidus_bling_sellers.rb
141
+ - db/migrate/20231110113221_create_solidus_bling_shipping_methods.rb
151
142
  - lib/generators/solidus_bling/install/install_generator.rb
152
143
  - lib/generators/solidus_bling/install/templates/initializer.rb
153
144
  - lib/solidus_bling.rb
@@ -156,29 +147,14 @@ files:
156
147
  - lib/solidus_bling/testing_support/factories.rb
157
148
  - lib/solidus_bling/version.rb
158
149
  - 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
- - 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
- - spec/models/solidus_bling/account_spec.rb
166
- - spec/models/solidus_bling/event_spec.rb
167
- - spec/models/solidus_bling/payment_method_spec.rb
168
- - spec/models/solidus_bling/product_spec.rb
169
- - spec/models/solidus_bling/seller_spec.rb
170
- - 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
- - spec/spec_helper.rb
174
- homepage: https://github.com/ulysses-bull/solidus_bling#readme
150
+ homepage: https://github.com/hamiltontborges/solidus_bling#readme
175
151
  licenses:
176
152
  - BSD-3-Clause
177
153
  metadata:
178
- homepage_uri: https://github.com/ulysses-bull/solidus_bling#readme
179
- source_code_uri: https://github.com/ulysses-bull/solidus_bling
180
- changelog_uri: https://github.com/ulysses-bull/solidus_bling/blob/master/CHANGELOG.md
181
- post_install_message:
154
+ homepage_uri: https://github.com/hamiltontborges/solidus_bling#readme
155
+ source_code_uri: https://github.com/hamiltontborges/solidus_bling
156
+ changelog_uri: https://github.com/hamiltontborges/solidus_bling/blob/master/CHANGELOG.md
157
+ post_install_message:
182
158
  rdoc_options: []
183
159
  require_paths:
184
160
  - lib
@@ -196,23 +172,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
172
  - !ruby/object:Gem::Version
197
173
  version: '0'
198
174
  requirements: []
199
- rubygems_version: 3.4.19
200
- signing_key:
175
+ rubygems_version: 3.4.20
176
+ signing_key:
201
177
  specification_version: 4
202
178
  summary: Solidus extension to integrate with the Bling
203
- 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
- - 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
- - spec/models/solidus_bling/account_spec.rb
211
- - spec/models/solidus_bling/event_spec.rb
212
- - spec/models/solidus_bling/payment_method_spec.rb
213
- - spec/models/solidus_bling/product_spec.rb
214
- - spec/models/solidus_bling/seller_spec.rb
215
- - 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
- - spec/spec_helper.rb
179
+ test_files: []
@@ -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
@@ -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,76 +0,0 @@
1
- <%= form_with model: bling_account, url: form_url do |form| %>
2
- <h6>Dados da conta</h6>
3
- <div>
4
- <%= form.label :app_name, "Nome do Aplicativo: " %>
5
- <%= form.text_field :app_name %>
6
- </div>
7
-
8
- <div>
9
- <%= form.label :client_id, "Client ID: " %>
10
- <%= form.text_field :client_id %>
11
- </div>
12
-
13
- <div>
14
- <%= form.label :client_secret, "Client Secret: " %>
15
- <%= form.text_field :client_secret %>
16
- </div>
17
-
18
- <div>
19
- <%= form.label :refresh_token, "Refresh Token: " %>
20
- <%= form.text_field :refresh_token %>
21
- </div>
22
-
23
- <div>
24
- <%= form.label :api_base_url, "API URL: " %>
25
- <%= form.text_field :api_base_url %>
26
- </div>
27
-
28
- <div>
29
- <%= form.label :external_store_id, "ID da Loja no Bling: " %>
30
- <%= form.text_field :external_store_id %>
31
- </div>
32
-
33
- <div>
34
- <%= form.label :incoming_category_id, "ID da Categoria de Receita: " %>
35
- <%= form.text_field :incoming_category_id %>
36
- </div>
37
-
38
- <div style="margin: 10px 0">
39
- <h6>Métodos de Pagamento</h6>
40
- <%= form.fields_for :payment_methods do |payment_form| %>
41
- <div>
42
- <%= payment_form.select :spree_payment_method_id, @payment_methods %>
43
- <%= payment_form.label :external_id, "ID Forma de Pagamento: " %>
44
- <%= payment_form.text_field :external_id %>
45
- </div>
46
- <% end %>
47
- </div>
48
-
49
- <div style="margin: 10px 0">
50
- <h6>Métodos de Envio</h6>
51
- <%= form.fields_for :shipping_methods do |shipping_form| %>
52
- <div>
53
- <%= shipping_form.select :spree_shipping_method_id, @shipping_methods %>
54
- <%= shipping_form.label :alias, "Alias: " %>
55
- <%= shipping_form.text_field :alias %>
56
- <%= shipping_form.label :company, "Nome Transportadora: " %>
57
- <%= shipping_form.text_field :company %>
58
- </div>
59
- <% end %>
60
- </div>
61
-
62
- <div style="margin: 10px 0">
63
- <h6>Vendedores</h6>
64
- <% bling_account.sellers.each do |seller| %>
65
- <%= form.fields_for :sellers do |seller_form| %>
66
- <%= seller_form.label :name, "Nome do Vendedor: " %>
67
- <%= seller_form.text_field :name %>
68
-
69
- <%= seller_form.label :external_id, "ID do Vendedor: " %>
70
- <%= seller_form.text_field :external_id %>
71
- <% end %>
72
- <% end %>
73
- </div>
74
-
75
- <%= form.submit "Salvar" %>
76
- <% 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) %>
@@ -1,13 +0,0 @@
1
- <%= link_to "Criar", new_admin_account_path %>
2
- <div>
3
- <% @accounts.each do |account| %>
4
- <div>
5
- <div>
6
- Nome do aplicativo:
7
- <span><%= account.app_name %></span>
8
- </div>
9
- <%= link_to "Editar", edit_admin_account_path(account.id) %>
10
- <%= link_to "Excluir", admin_account_path(account.id), method: :delete %>
11
- </div>
12
- <% end %>
13
- </div>
@@ -1,2 +0,0 @@
1
-
2
- <%= render "form", bling_account: @bling_account, form_url: admin_accounts_path %>
@@ -1,12 +0,0 @@
1
- class CreateSolidusBlingProducts < ActiveRecord::Migration[7.0]
2
- def change
3
- create_table :solidus_bling_products do |t|
4
- t.string :external_id, null: false, index: { unique: true }
5
- t.string :name, null: false
6
- t.string :sku, null: false, index: { unique: true }
7
- t.integer :account_id, null: false, index: true
8
-
9
- t.timestamps
10
- end
11
- end
12
- end
@@ -1,5 +0,0 @@
1
- class AddCompanyToSolidusBlingShippingMethods < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :solidus_bling_shipping_methods, :company, :string, default: ""
4
- end
5
- end