solidus_bling 2.0.6 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6db82bc3c77223d35418dc4778dea214887526407f73b566a1e3e36929d9349a
|
4
|
+
data.tar.gz: fb46fb95a4787468f045fb0b3e4b28c5e9d51fe20b6cad8d2292f9c222f11bac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5191696fc43ae7a0e9174bb03eb47464c21eab8f0e181533e4d4c1433e55dde194637af73e8a8363336929cc8e8b7eab28a4de810d102232e5d090488c5eb20f
|
7
|
+
data.tar.gz: d278d7f74dcfe34ddf36833fed252e9149011b7ad43131a034a0ab41854711938917fb3d255760734ff243f21a7b7cc9d2807ecb6a3dce7ca549394d9f923fc5
|
data/.gitattributes
ADDED
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,3 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
3
|
+
See https://github.com/solidusio-contrib/solidus_bling/releases or OLD_CHANGELOG.md for older versions.
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
module SolidusBling
|
4
|
+
|
5
|
+
class AccountsController < BaseController
|
6
|
+
before_action :set_account, only: [:show, :edit, :update, :destroy]
|
7
|
+
|
8
|
+
def index
|
9
|
+
@accounts = ::SolidusBling::Account.all
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
end
|
14
|
+
|
15
|
+
def new
|
16
|
+
@bling_account = ::SolidusBling::Account.new
|
17
|
+
@payment_methods = ::Spree::PaymentMethod.all.pluck(:name, :id)
|
18
|
+
@shipping_methods = ::Spree::ShippingMethod.all.pluck(:name, :id)
|
19
|
+
@bling_account.payment_methods.build
|
20
|
+
@bling_account.shipping_methods.build
|
21
|
+
@bling_account.sellers.build
|
22
|
+
end
|
23
|
+
|
24
|
+
def create
|
25
|
+
bling_account = ::SolidusBling::Account.new account_params
|
26
|
+
if bling_account.save
|
27
|
+
flash[:success] = "Conta criada com sucesso"
|
28
|
+
redirect_to admin_solidus_bling_accounts_path
|
29
|
+
else
|
30
|
+
flash[:error] = bling_account.errors.full_messages.join("\n")
|
31
|
+
redirect_to new_admin_solidus_bling_account_path
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def edit
|
36
|
+
@payment_methods = ::Spree::PaymentMethod.all.pluck(:name, :id)
|
37
|
+
@shipping_methods = ::Spree::ShippingMethod.all.pluck(:name, :id)
|
38
|
+
end
|
39
|
+
|
40
|
+
def update
|
41
|
+
@bling_account.update account_params
|
42
|
+
redirect_to edit_admin_solidus_bling_account_path(@bling_account.id)
|
43
|
+
end
|
44
|
+
|
45
|
+
def destroy
|
46
|
+
@bling_account.delete
|
47
|
+
redirect_to admin_solidus_bling_accounts_path
|
48
|
+
end
|
49
|
+
|
50
|
+
def authorize
|
51
|
+
bling_account = ::SolidusBling::Account.first
|
52
|
+
code = params[:code]
|
53
|
+
unless ::SolidusBling::Token.new.authorize(bling_account, code)
|
54
|
+
bling_account.errors.add(:base, "Erro ao autorizar aplicativo 🦆")
|
55
|
+
flash[:error] = bling_account.errors.full_messages.join("\n")
|
56
|
+
end
|
57
|
+
redirect_to edit_admin_solidus_bling_account_path(bling_account.id)
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def set_account
|
63
|
+
@bling_account = ::SolidusBling::Account.find(params[:id])
|
64
|
+
end
|
65
|
+
|
66
|
+
def account_params
|
67
|
+
params.require(:account).permit(
|
68
|
+
:client_id, :client_secret, :refresh_token, :redirect_url, :state, :access_token, :api_key, :external_store_id, :incoming_category_id,
|
69
|
+
payment_methods_attributes: [:id, :spree_payment_method_id, :external_id],
|
70
|
+
shipping_methods_attributes: [:id, :spree_shipping_method_id, :alias, :company],
|
71
|
+
sellers_attributes: [:id, :name, :external_id]
|
72
|
+
)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -2,21 +2,19 @@ module SolidusBling
|
|
2
2
|
class OrderJob < ApplicationJob
|
3
3
|
queue_as :default
|
4
4
|
|
5
|
-
def perform
|
6
|
-
bling_event = SolidusBling::Event.new
|
5
|
+
def perform(event:)
|
7
6
|
order = event[:order]
|
8
|
-
bling_event.internal_id
|
9
|
-
bling_event.method = method_name
|
7
|
+
bling_event = SolidusBling::Event.new(internal_id: order.id, body: order.to_json)
|
10
8
|
begin
|
11
9
|
SolidusBling::Order.new(order).send
|
12
|
-
bling_event.status =
|
10
|
+
bling_event.status = "success"
|
13
11
|
rescue => e
|
14
|
-
bling_event.status =
|
12
|
+
bling_event.status = "error"
|
15
13
|
bling_event.message = e.to_json
|
16
14
|
ensure
|
17
|
-
bling_event.body = order.to_json
|
18
15
|
bling_event.save!
|
19
16
|
end
|
20
17
|
end
|
18
|
+
|
21
19
|
end
|
22
20
|
end
|
@@ -2,8 +2,14 @@ module SolidusBling
|
|
2
2
|
class Account < ApplicationRecord
|
3
3
|
has_many :payment_methods, dependent: :destroy
|
4
4
|
has_many :shipping_methods, dependent: :destroy
|
5
|
-
has_many :products, dependent: :destroy
|
6
5
|
has_many :sellers, dependent: :destroy
|
7
6
|
accepts_nested_attributes_for :payment_methods, :shipping_methods, :sellers
|
7
|
+
|
8
|
+
def check_token
|
9
|
+
return if client_id.blank? || client_secret.blank? || refresh_token.blank?
|
10
|
+
return if (token_expires_in - 1.day) > DateTime.now
|
11
|
+
Token.new.refresh self
|
12
|
+
end
|
13
|
+
|
8
14
|
end
|
9
15
|
end
|
@@ -1,136 +1,163 @@
|
|
1
1
|
module SolidusBling
|
2
|
-
class Order
|
2
|
+
class Order
|
3
3
|
|
4
|
-
def initialize
|
5
|
-
|
6
|
-
@order = order
|
4
|
+
def initialize spree_order
|
5
|
+
@order = spree_order
|
7
6
|
end
|
8
7
|
|
9
8
|
def send
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
begin
|
14
|
-
attempts ||= 1
|
15
|
-
req = Typhoeus.post("#{@account.api_base_url}/pedidos/vendas", headers: @headers, body: JSON.dump(hash_order))
|
16
|
-
raise if req.code == 429
|
17
|
-
rescue
|
18
|
-
retry if (attempts += 1) < 5
|
19
|
-
ensure
|
20
|
-
json = JSON.parse(req.body)
|
21
|
-
response_has_error?(json)
|
22
|
-
if json.include? "data"
|
23
|
-
@order.bling_order_id = json["data"]["id"]
|
24
|
-
@order.save
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
9
|
+
@account = SolidusBling::Account.first
|
10
|
+
@account.check_token
|
11
|
+
BlingApi.access_token = @account.access_token
|
29
12
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
},
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
"totalProdutos": order.item_total.to_f,
|
53
|
-
"total": order.total.to_f,
|
54
|
-
"observacoes": " Nº Pedido Loja: #{order.number}",
|
55
|
-
"observacoesInternas": "Pagamento: #{@parcelas}x R$ #{(order.total.to_f / @parcelas).round(2)}\nForma de envio: #{order.shipments.last.selected_shipping_rate.name}\n#{build_cupons(order.promotions)}#{build_order_url(order)}",
|
56
|
-
"categoria": {
|
57
|
-
"id": @account.incoming_category_id
|
58
|
-
}
|
59
|
-
}
|
13
|
+
contato = costumer
|
14
|
+
items = products
|
15
|
+
parcelas = installments
|
16
|
+
observacoes_internas = internal_observations
|
17
|
+
transporte = shipment
|
18
|
+
|
19
|
+
bling_order = BlingApi::Order.new(
|
20
|
+
id_contato: contato.id,
|
21
|
+
items: items,
|
22
|
+
parcelas: parcelas,
|
23
|
+
numero_loja: @order.number,
|
24
|
+
data: @order.completed_at.strftime("%Y-%m-%d"),
|
25
|
+
total_produtos: @order.item_total.to_f,
|
26
|
+
total: @order.total.to_f,
|
27
|
+
id_loja: @account.external_store_id,
|
28
|
+
observacoes: "Número do pedido loja: #{@order.number}",
|
29
|
+
observacoes_internas: observacoes_internas,
|
30
|
+
valor_desconto: @order.adjustment_total,
|
31
|
+
id_categoria: @account.incoming_category_id,
|
32
|
+
transporte: transporte,
|
33
|
+
id_vendedor: @account.sellers.first.external_id
|
34
|
+
).create
|
60
35
|
end
|
61
36
|
|
62
|
-
def
|
63
|
-
|
37
|
+
def costumer
|
38
|
+
contato = BlingApi::Customer.find_by_tax_id(@order.tax_id)
|
39
|
+
if contato
|
40
|
+
contato.update(
|
41
|
+
pessoa_juridica: @order.tax_id.length > 14 ? true : false,
|
42
|
+
numero_documento: @order.tax_id,
|
43
|
+
**build_customer
|
44
|
+
)
|
45
|
+
else
|
46
|
+
contato = BlingApi::Customer.new(
|
47
|
+
pessoa_juridica: @order.tax_id.length > 14 ? true : false,
|
48
|
+
numero_documento: @order.tax_id,
|
49
|
+
**build_customer
|
50
|
+
).create
|
51
|
+
end
|
52
|
+
contato
|
64
53
|
end
|
65
54
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
55
|
+
def products
|
56
|
+
@order.line_items.map do |item|
|
57
|
+
product = BlingApi::Product.find_by_sku(item.sku)
|
69
58
|
{
|
70
|
-
"id":
|
59
|
+
"id": product.id,
|
71
60
|
"quantidade": item.quantity,
|
72
61
|
"valor": item.price.to_f,
|
73
62
|
"produto": {
|
74
|
-
|
63
|
+
"id": product.id
|
75
64
|
}
|
76
|
-
|
77
|
-
end
|
65
|
+
}
|
66
|
+
end.compact
|
78
67
|
end
|
79
68
|
|
80
|
-
def
|
81
|
-
@parcelas = 1
|
82
|
-
|
83
|
-
@parcelas = order.payments.last.source.try(:installments) || 1
|
84
|
-
end
|
85
|
-
valor_parcela = order.total.to_f / @parcelas
|
69
|
+
def installments
|
70
|
+
@parcelas = @order.payments.last.source.try(:installments) || 1
|
71
|
+
valor_parcela = @order.total.to_f / @parcelas
|
86
72
|
1.upto(@parcelas).map do |parcela|
|
87
73
|
{
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
74
|
+
dataVencimento: (@order.completed_at + parcela.months).strftime("%Y-%m-%d"),
|
75
|
+
valor: valor_parcela,
|
76
|
+
formaPagamento: {
|
77
|
+
id: @account.payment_methods.find_by(spree_payment_method_id: @order.payments.last.payment_method_id).external_id
|
92
78
|
}
|
93
79
|
}
|
94
80
|
end
|
95
81
|
end
|
96
82
|
|
97
|
-
def
|
98
|
-
|
83
|
+
def internal_observations
|
84
|
+
"Pagamento: #{@parcelas}x R$ #{(@order.total.to_f / @parcelas).round(2)}" +
|
85
|
+
"\n" +
|
86
|
+
"Forma de envio: #{@order.shipments.last.selected_shipping_rate.name}" +
|
87
|
+
"\n" +
|
88
|
+
"#{build_cupons(@order.promotions)}" +
|
89
|
+
"\n" +
|
90
|
+
"#{build_order_url}"
|
91
|
+
end
|
92
|
+
|
93
|
+
def shipment
|
94
|
+
shipping_method = @account.shipping_methods.find_by(spree_shipping_method_id: @order.shipments.last.shipping_method.id)
|
99
95
|
servico = shipping_method.nil? ? "" : shipping_method.alias
|
100
96
|
transportadora = shipping_method.nil? ? "" : shipping_method.company
|
101
97
|
{
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
98
|
+
fretePorConta: 1,
|
99
|
+
frete: @order.shipment_total.to_f,
|
100
|
+
quantidadeVolumes: 1,
|
101
|
+
contato: {
|
102
|
+
nome: transportadora
|
107
103
|
},
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
104
|
+
etiqueta: {
|
105
|
+
nome: @order.ship_address.name,
|
106
|
+
endereco: @order.ship_address.address1,
|
107
|
+
numero: @order.ship_address.number,
|
108
|
+
complemento: @order.ship_address.address2,
|
109
|
+
municipio: @order.ship_address.city,
|
110
|
+
uf: @order.ship_address.state.abbr,
|
111
|
+
bairro: @order.ship_address.district,
|
112
|
+
cep: @order.ship_address.zipcode,
|
113
|
+
nomePais: "Brasil"
|
118
114
|
},
|
119
|
-
|
115
|
+
volumes: [
|
120
116
|
{
|
121
|
-
|
122
|
-
|
117
|
+
servico: servico,
|
118
|
+
codigoRastreamento: ""
|
123
119
|
}
|
124
120
|
]
|
125
121
|
}
|
126
122
|
end
|
127
123
|
|
124
|
+
def build_customer
|
125
|
+
{
|
126
|
+
nome: @order.bill_address.name,
|
127
|
+
telefone: @order.bill_address.phone,
|
128
|
+
email: @order.email,
|
129
|
+
endereco: {
|
130
|
+
"endereco" => @order.bill_address.address1,
|
131
|
+
"cep" => @order.bill_address.zipcode,
|
132
|
+
"bairro" => @order.bill_address.district,
|
133
|
+
"municipio" => @order.bill_address.city,
|
134
|
+
"uf" => @order.bill_address.state.abbr,
|
135
|
+
"numero" => @order.bill_address.number,
|
136
|
+
"complemento" => @order.bill_address.address2,
|
137
|
+
},
|
138
|
+
endereco_cobranca: {
|
139
|
+
"endereco" => @order.bill_address.address1,
|
140
|
+
"cep" => @order.bill_address.zipcode,
|
141
|
+
"bairro" => @order.bill_address.district,
|
142
|
+
"municipio" => @order.bill_address.city,
|
143
|
+
"uf" => @order.bill_address.state.abbr,
|
144
|
+
"numero" => @order.bill_address.number,
|
145
|
+
"complemento" => @order.bill_address.address2,
|
146
|
+
}
|
147
|
+
}
|
148
|
+
end
|
149
|
+
|
128
150
|
def build_cupons cupons
|
129
|
-
string_cupons =
|
151
|
+
string_cupons = ""
|
130
152
|
if !cupons.empty?
|
131
|
-
|
153
|
+
string_cupons = "Cupons utilizados: #{cupons.pluck(:name).join(", ")}"
|
132
154
|
end
|
133
155
|
string_cupons
|
134
156
|
end
|
157
|
+
|
158
|
+
def build_order_url
|
159
|
+
"Link para o pedido: #{@order.store.url}/orders/#{@order.number}/token/#{@order.guest_token}"
|
160
|
+
end
|
161
|
+
|
135
162
|
end
|
136
|
-
end
|
163
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module SolidusBling
|
2
|
+
class Token < ::Ac::Base
|
3
|
+
BASE_URL = "https://www.bling.com.br/Api/v3"
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
def authorize bling_account, code
|
10
|
+
basic_encoded = Base64.strict_encode64("#{bling_account.client_id}:#{bling_account.client_secret}")
|
11
|
+
headers = {
|
12
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
13
|
+
Authorization: "Basic #{basic_encoded}"
|
14
|
+
}
|
15
|
+
body = {
|
16
|
+
code: code,
|
17
|
+
grant_type: "authorization_code"
|
18
|
+
}
|
19
|
+
response_json = post("/oauth/token", headers:, body:).json
|
20
|
+
bling_account.update(
|
21
|
+
access_token: response_json["access_token"],
|
22
|
+
token_expires_in: DateTime.now.utc + response_json["expires_in"].seconds,
|
23
|
+
refresh_token: response_json["refresh_token"]
|
24
|
+
)
|
25
|
+
rescue
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
29
|
+
def refresh bling_account
|
30
|
+
response_json = BlingApi::Client.new.refresh_token(
|
31
|
+
client_id: bling_account.client_id,
|
32
|
+
client_secret: bling_account.client_secret,
|
33
|
+
refresh_token: bling_account.refresh_token
|
34
|
+
)
|
35
|
+
bling_account.update(
|
36
|
+
access_token: response_json["access_token"],
|
37
|
+
token_expires_in: DateTime.now.utc + response_json["expires_in"].seconds,
|
38
|
+
refresh_token: response_json["refresh_token"]
|
39
|
+
)
|
40
|
+
rescue
|
41
|
+
false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -3,30 +3,10 @@ module SolidusBling
|
|
3
3
|
include Omnes::Subscriber
|
4
4
|
|
5
5
|
handle :order_finalized,
|
6
|
-
with: :send_order_to_bling
|
7
|
-
id: :send_order_to_bling
|
8
|
-
|
9
|
-
handle :bling_products_updated,
|
10
|
-
with: :products_updated,
|
11
|
-
id: :products_updated
|
12
|
-
|
13
|
-
handle :bling_contact_created,
|
14
|
-
with: :contato_created,
|
15
|
-
id: :contato_created
|
6
|
+
with: :send_order_to_bling
|
16
7
|
|
17
8
|
def send_order_to_bling event, debug_info = {}
|
18
|
-
|
19
|
-
SolidusBling::OrderJob.perform_later(event: event.payload, method_name: method)
|
20
|
-
end
|
21
|
-
|
22
|
-
def contato_created event, debug_info = {}
|
23
|
-
method = __method__.to_s
|
24
|
-
SolidusBling::ContactJob.perform_later(event: event.payload, method_name: method)
|
25
|
-
end
|
26
|
-
|
27
|
-
def products_updated event, debug_info = {}
|
28
|
-
method = __method__.to_s
|
29
|
-
SolidusBling::ProductJob.perform_later(event: event.payload, method_name: method)
|
9
|
+
SolidusBling::OrderJob.perform_later(event: event.payload)
|
30
10
|
end
|
31
11
|
end
|
32
12
|
end
|
@@ -1,10 +1,5 @@
|
|
1
1
|
<%= form_with model: bling_account, url: form_url do |form| %>
|
2
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
3
|
<div>
|
9
4
|
<%= form.label :client_id, "Client ID: " %>
|
10
5
|
<%= form.text_field :client_id %>
|
@@ -21,8 +16,18 @@
|
|
21
16
|
</div>
|
22
17
|
|
23
18
|
<div>
|
24
|
-
<%= form.label :
|
25
|
-
<%= form.text_field :
|
19
|
+
<%= form.label :redirect_url, "Redirect URL: " %>
|
20
|
+
<%= form.text_field :redirect_url %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div>
|
24
|
+
<%= form.label :state, "State: " %>
|
25
|
+
<%= form.text_field :state %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div>
|
29
|
+
<%= form.label :access_token, "Access Token: " %>
|
30
|
+
<%= form.text_field :access_token %>
|
26
31
|
</div>
|
27
32
|
|
28
33
|
<div>
|
@@ -73,4 +78,12 @@
|
|
73
78
|
</div>
|
74
79
|
|
75
80
|
<%= form.submit "Salvar" %>
|
76
|
-
<% end %>
|
81
|
+
<% end %>
|
82
|
+
|
83
|
+
<div>
|
84
|
+
<input value="https://www.bling.com.br/Api/v3/oauth/authorize?response_type=code&client_id=<%= bling_account.client_id %>&state=<%= bling_account.state %>&scopes=98308+98309+98310+98313+98314+507943+5990556+6631498+106168710+182224097+199272829+200802821+220621674+318257556+318257565+318257568+318257570+318257583+333936575+363921589+363921590+363921591+363921592+363953167+363953556+791588404+875116881+1869535257+5862218180+13645012997+13645013013">
|
85
|
+
<a target="_blank" class="" href="https://www.bling.com.br/Api/v3/oauth/authorize?response_type=code&client_id=<%= bling_account.client_id %>&state=<%= bling_account.state %>&scopes=98308+98309+98310+98313+98314+507943+5990556+6631498+106168710+182224097+199272829+200802821+220621674+318257556+318257565+318257568+318257570+318257583+333936575+363921589+363921590+363921591+363921592+363953167+363953556+791588404+875116881+1869535257+5862218180+13645012997+13645013013">
|
86
|
+
<svg style="width: 24px; height: 24px;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
87
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"></path></svg>
|
88
|
+
</a>
|
89
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", bling_account: @bling_account, form_url: admin_solidus_bling_account_path(@bling_account.id) %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= link_to "Criar", new_admin_solidus_bling_account_path %>
|
2
|
+
<div>
|
3
|
+
<% @accounts.each do |account| %>
|
4
|
+
<div>
|
5
|
+
<div>
|
6
|
+
Nome do aplicativo:
|
7
|
+
<span>ID - <%= account.id %></span>
|
8
|
+
</div>
|
9
|
+
<%= link_to "Editar", edit_admin_solidus_bling_account_path(account.id) %>
|
10
|
+
<%= link_to "Excluir", admin_solidus_bling_account_path(account.id), method: :delete %>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
@@ -1,2 +1,2 @@
|
|
1
1
|
|
2
|
-
<%= render "form", bling_account: @bling_account, form_url:
|
2
|
+
<%= render "form", bling_account: @bling_account, form_url: admin_solidus_bling_accounts_path %>
|
data/bin/meu_sandbox
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
bin/rails db:environment:set RAILS_ENV=development
|
4
|
+
|
5
|
+
set -e
|
6
|
+
test -z "${DEBUG+empty_string}" || set -x
|
7
|
+
|
8
|
+
if [ -z "$SOLIDUS_BRANCH" ]
|
9
|
+
then
|
10
|
+
echo "~~> Use 'export SOLIDUS_BRANCH=[main|v3.2|...]' to control the Solidus branch"
|
11
|
+
SOLIDUS_BRANCH="main"
|
12
|
+
fi
|
13
|
+
echo "~~> Using branch $SOLIDUS_BRANCH of solidus"
|
14
|
+
|
15
|
+
extension_name="solidus_bling"
|
16
|
+
|
17
|
+
# Stay away from the bundler env of the containing extension.
|
18
|
+
function unbundled {
|
19
|
+
ruby -rbundler -e'b = proc {system *ARGV}; Bundler.respond_to?(:with_unbundled_env) ? Bundler.with_unbundled_env(&b) : Bundler.with_clean_env(&b)' -- $@
|
20
|
+
}
|
21
|
+
|
22
|
+
rm -rf ./sandbox
|
23
|
+
unbundled bundle exec rails new sandbox \
|
24
|
+
--database=postgresql \
|
25
|
+
--skip-bundle \
|
26
|
+
--skip-git \
|
27
|
+
--skip-keeps \
|
28
|
+
--skip-rc \
|
29
|
+
--skip-spring \
|
30
|
+
--skip-test \
|
31
|
+
--skip-javascript
|
32
|
+
|
33
|
+
if [ ! -d "sandbox" ]; then
|
34
|
+
echo 'sandbox rails application failed'
|
35
|
+
exit 1
|
36
|
+
fi
|
37
|
+
|
38
|
+
cd ./sandbox
|
39
|
+
cat <<RUBY >> Gemfile
|
40
|
+
gem 'solidus', github: 'solidusio/solidus', branch: '$SOLIDUS_BRANCH'
|
41
|
+
gem 'rails-i18n'
|
42
|
+
gem 'solidus_i18n'
|
43
|
+
|
44
|
+
gem '$extension_name', path: '..'
|
45
|
+
|
46
|
+
group :test, :development do
|
47
|
+
platforms :mri do
|
48
|
+
gem 'pry-byebug'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
RUBY
|
52
|
+
|
53
|
+
unbundled bundle install --gemfile Gemfile
|
54
|
+
|
55
|
+
unbundled bundle exec rake db:drop db:create
|
56
|
+
|
57
|
+
unbundled bundle exec rails generate solidus:install \
|
58
|
+
--auto-accept \
|
59
|
+
--payment-method=none \
|
60
|
+
--frontend=starter \
|
61
|
+
$@
|
62
|
+
|
63
|
+
unbundled bundle exec rails generate ${extension_name}:install --auto-run-migrations
|
64
|
+
|
65
|
+
echo
|
66
|
+
echo "🚀 Sandbox app successfully created for $extension_name!"
|
67
|
+
echo "🧪 This app is intended for test purposes."
|
data/config/locales/pt-BR.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Spree::Core::Engine.routes.draw do
|
4
|
+
# Add your extension routes here
|
4
5
|
namespace :admin do
|
5
|
-
|
6
|
-
|
6
|
+
namespace :solidus_bling do
|
7
|
+
resources :accounts do
|
8
|
+
get "authorize", on: :collection
|
9
|
+
end
|
10
|
+
end
|
7
11
|
end
|
8
12
|
end
|