solidus_me 1.0.7 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 437a94a0deb0e8c81bff6bafd1d10245618c34008e4f3a84a0001760b225bc92
4
- data.tar.gz: cccefa5ce69265dd4d3824d1b0df3e6d2a99239ef78ef6a1913cc84412943aef
3
+ metadata.gz: 3a2ad07ac04979f655717473221f63da37b4e8b1bb643808d82e24f7b8aad898
4
+ data.tar.gz: a4ee64d15ebf5a5157741d587a39cea98be11d58b0701101219a1d96a59c2151
5
5
  SHA512:
6
- metadata.gz: 8ef1cdb2de6acbdcaa11f8841b6d71fd6d89f0bd455dc6b961649d12a6bd5c8b17d2035fc070a25d448260eb1e0d4102004a435f7ef9770fe8a61f3805df926c
7
- data.tar.gz: 6b2612906888be73c9fe0df813c73fb21c04467e5ce623b72725932edd959f0e0fbf22d3f03a4adc396f4264193bd11182f364cd77c70bae20989051a7847bd8
6
+ metadata.gz: 2bb413c52707e0726ae2b8a90090c84cbfc808dadf7ccdaedcfc67e74d937503923c613fc0ff79d11fb18921d37c8817e330b0cad44c019e5d47e7cbaaaa2a0a
7
+ data.tar.gz: a4b5d06c444ef8d27c124967e29513d36eb40e7ceed957a608b8536756dcc5a623e323a8955fdc6e0e567183774d96f15a6c1facc2eb53a2f4b86623a8add159
data/README.md CHANGED
@@ -7,24 +7,34 @@ Gem para cotar empresas e valores de entrega junto à Api do Melhor Envio.
7
7
 
8
8
  ## Installation
9
9
 
10
- Add solidus_me to your Gemfile:
10
+ Adicionar solidus_me ao Gemfile:
11
11
 
12
12
  ```ruby
13
13
  gem 'solidus_me'
14
14
  ```
15
15
 
16
- Bundle your dependencies and run the installation generator:
16
+ Executar:
17
17
 
18
18
  ```shell
19
+ bundle
19
20
  bin/rails generate solidus_me:install
20
21
  ```
22
+
23
+ Executar o comando para instalar a gem de dependências `solidus_brasilian_adaptations`:
24
+
25
+ ```shell
26
+ bin/rails generate solidus_brazilian_adaptations:install
27
+ ```
28
+
29
+ Após, seguir o [tutorial](https://github.com/ulysses-bull/solidus_brazilian_adaptations) da gem `soluds_brazilian_adaptations`
30
+
21
31
  Adicionar no arquivo `/config/initilizers/spree.rb`
22
32
 
23
33
  ```ruby
24
34
  Spree.config do |config|
25
- ---
35
+ +++
26
36
  config.stock.estimator_class = "SolidusMe::ShippingEstimator"
27
- ---
37
+ +++
28
38
  end
29
39
  ```
30
40
 
@@ -34,8 +44,10 @@ No painel do admin será adiconado o item do `Melhor Envio` no menu lateral. Nes
34
44
  CEP de origem:
35
45
  Client ID:
36
46
  Client Secret:
47
+ Redirect Url:
48
+ State:
37
49
  ```
38
- Após salvar, o link completo para autenticação do aplicativo ficará disponível abaixo. Uma vez autorizado, são gerados os `refresh_token` e `access_token`, e o sistema estará pronto para cotação dos fretes junto ao Melhor Envio.
50
+ Após salvar, o link completo para autenticação do aplicativo ficará disponível abaixo. A gem disponibiliza um endpoint (`HOST/admin/melhor_envio/authorize`) para receber o code e realizar a autenticação automaticamente. Uma vez autorizado, são gerados os `refresh_token` e `access_token`, e o sistema estará pronto para cotação dos fretes junto ao Melhor Envio.
39
51
 
40
52
  Por padrão, os serviços de entrega são os `SEDEX`, `PAC` e `MiniEnvios` dos CORREIOS. Porém, os serviços podem ser customizados de acordo com a necessidade. Basta adicioná-los aos `preferences` da `Spree::Store`:
41
53
 
@@ -0,0 +1,69 @@
1
+ module Spree
2
+ module Admin
3
+ module SolidusMe
4
+
5
+ class AccountsController < BaseController
6
+
7
+ def index
8
+ @accounts = ::SolidusMe::Account.all
9
+ end
10
+
11
+ def new
12
+ @me_account = ::SolidusMe::Account.new
13
+ end
14
+
15
+ def create
16
+ me_account = ::SolidusMe::Account.new account_params
17
+ if me_account.save
18
+ flash[:success] = "Conta criada com sucesso"
19
+ redirect_to admin_solidus_me_accounts_path
20
+ else
21
+ flash[:error] = me_account.errors.full_messages.join("\n")
22
+ redirect_to new_admin_solidus_me_account_path
23
+ end
24
+ end
25
+
26
+ def edit
27
+ @me_account = ::SolidusMe::Account.find(params[:id])
28
+ end
29
+
30
+ def update
31
+ me_account = ::SolidusMe::Account.find(params[:id])
32
+ me_account.update account_params
33
+ redirect_to edit_admin_solidus_me_account_path(me_account.id)
34
+ end
35
+
36
+ def destroy
37
+ me_account = ::SolidusMe::Account.find(params[:id])
38
+ me_account.delete
39
+ redirect_to admin_solidus_me_accounts_path
40
+ end
41
+
42
+ def authorize
43
+ code = params[:code]
44
+ me_account = ::SolidusMe::Account.first
45
+ authorize_json = MeApi::Client.new.authorize(
46
+ client_id: me_account.client_id,
47
+ client_secret: me_account.client_secret,
48
+ code: code,
49
+ redirect_url: me_account.redirect_url
50
+ ).json
51
+ me_account.update(
52
+ access_token: authorize_json["access_token"],
53
+ refresh_token: authorize_json["refresh_token"],
54
+ token_expires_in: (DateTime.now + authorize_json["expires_in"].seconds).to_s
55
+ )
56
+ redirect_to edit_admin_solidus_me_account_path me_account
57
+ end
58
+
59
+ private
60
+
61
+ def account_params
62
+ params.require(:account).permit(
63
+ :client_id, :client_secret, :access_token, :refresh_token, :redirect_url, :state, :token_expires_in, :services, :postal_code_from
64
+ )
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,23 @@
1
+ module SolidusMe
2
+ class Account < ApplicationRecord
3
+
4
+ def check_token
5
+ return if client_id.blank? || client_secret.blank? || refresh_token.blank?
6
+ return if (token_expires_in - 1.day) > DateTime.now
7
+ refresh
8
+ end
9
+
10
+ def refresh
11
+ refresh_json = MeApi::Client.new.refresh_token(
12
+ client_id: client_id,
13
+ client_secret: client_secret,
14
+ refresh_token: refresh_token
15
+ ).json
16
+ access_token = refresh_json["access_token"]
17
+ refresh_token = refresh_json["refresh_token"]
18
+ token_expires_in = DateTime.now.utc + refresh_json["expires_in"].seconds
19
+ self.update(access_token: access_token, refresh_token: refresh_token, token_expires_in: token_expires_in)
20
+ end
21
+
22
+ end
23
+ end
@@ -1,13 +1,13 @@
1
1
  module SolidusMe
2
2
  class ShippingEstimator
3
3
 
4
- def initialize
5
- store = Spree::Store.first
6
- @preferences = Preferences.new(store).preferences
7
- @me_client = MeApi::Client.new(@preferences[:access_token])
8
- end
9
-
10
4
  def shipping_rates(package, _frontend_only = true)
5
+ @me_account = Account.first
6
+ return [] if @me_account.blank?
7
+
8
+ @me_account.check_token
9
+ @me_client = MeApi::Client.new(@me_account.access_token)
10
+
11
11
  melhor_envio_rates = get_rates_from_melhor_envio(package)
12
12
  shipping_rates = melhor_envio_rates.map do |melhor_envio_rate|
13
13
  build_shipping_rate(melhor_envio_rate, package)
@@ -28,24 +28,17 @@ module SolidusMe
28
28
  weight = package.contents.map {|content| content.weight }.sum
29
29
  price = package.contents.map {|content| content.price }.sum
30
30
  zipcode = package.order.ship_address.zipcode
31
- services = @preferences[:services] || ["SEDEX", "PAC", "Mini Envios", ".Package", ".Com"]
31
+ services = @me_account.services.blank? ? ["SEDEX", "PAC", "Mini Envios", ".Package", ".Com"] : @me_account.services
32
32
 
33
33
  rates = @me_client.rates(
34
- from: @preferences[:postal_code_from],
34
+ from: @me_account.postal_code_from,
35
35
  to: zipcode,
36
36
  weight_kg: (weight/1000),
37
37
  contents_value_brl: price
38
38
  )
39
39
  rates.select { |rate| rate.price > 0 && services.include?(rate.service_name) }
40
40
  rescue
41
- [
42
- OpenStruct.new({
43
- price: 15.00,
44
- service_name: "",
45
- carrier_name: "Frete padrão",
46
- delivery_range: { "min" => 5, "max" => 5 }
47
- })
48
- ]
41
+ [default_rate]
49
42
  end
50
43
  end
51
44
 
@@ -67,5 +60,15 @@ module SolidusMe
67
60
  max_delivery_time: melhor_envio_rate.delivery_range["max"]
68
61
  )
69
62
  end
63
+
64
+ def default_rate
65
+ default_rate = Data.define(:price, :service_name, :carrier_name, :delivery_range)
66
+ default_rate.new(
67
+ price: 15.00,
68
+ service_name: "",
69
+ carrier_name: "Frete padrão",
70
+ delivery_range: { "min" => 5, "max" => 5 }
71
+ )
72
+ end
70
73
  end
71
74
  end
@@ -0,0 +1,58 @@
1
+ <%= form_with model: me_account, url: form_url do |form| %>
2
+ <h3>Melhor Envio</h3>
3
+
4
+ <div style="margin-top: 10px;">
5
+ <%= form.label :postal_code_from, "CEP de Origem: " %>
6
+ <%= form.text_field :postal_code_from, value: me_account.postal_code_from %>
7
+ </div>
8
+
9
+ <div style="margin-top: 10px;">
10
+ <%= form.hidden_field :services, value: me_account.services %>
11
+ <span>Serviços Disponíveis: <%= me_account.services %></span>
12
+ </div>
13
+
14
+ <div style="margin-top: 10px;">
15
+ <%= form.label :client_id, "Client ID: " %>
16
+ <%= form.text_field :client_id, value: me_account.client_id %>
17
+ </div>
18
+
19
+ <div style="margin-top: 10px;">
20
+ <%= form.label :client_secret, "Client Secret: " %>
21
+ <%= form.text_field :client_secret, value: me_account.client_secret %>
22
+ </div>
23
+
24
+ <div style="margin-top: 10px;">
25
+ <%= form.label :redirect_url, "Redirect URL: " %>
26
+ <%= form.text_field :redirect_url, value: me_account.redirect_url %>
27
+ </div>
28
+
29
+ <div style="margin-top: 10px;">
30
+ <%= form.label :state, "State: " %>
31
+ <%= form.text_field :state, value: me_account.state %>
32
+ </div>
33
+
34
+ <div style="margin-top: 10px;">
35
+ <%= form.label :access_token, "Access Token: " %>
36
+ <%= form.text_field :access_token, value: me_account.access_token %>
37
+ </div>
38
+
39
+ <div style="margin-top: 10px;">
40
+ <%= form.label :refresh_token, "Refresh Token: " %>
41
+ <%= form.text_field :refresh_token, value: me_account.refresh_token %>
42
+ </div>
43
+
44
+ <div style="margin-top: 10px;">
45
+ <%= form.hidden_field :token_expires_in, value: me_account.token_expires_in %>
46
+ <span>Expiração do token: <%= me_account.token_expires_in %></span>
47
+ </div>
48
+
49
+ <%= form.submit "Salvar", style: "margin-top: 10px;" %>
50
+ <% end %>
51
+
52
+ <div>
53
+ <input value="https://www.melhorenvio.com.br/oauth/authorize?client_id=<%= me_account.client_id %>&redirect_uri=<%= me_account.redirect_url %>&response_type=code&state=<%= me_account.state %>&scope=shipping-calculate">
54
+ <a target="_blank" class="" href="https://www.melhorenvio.com.br/oauth/authorize?client_id=<%= me_account.client_id %>&redirect_uri=<%= me_account.redirect_url %>&response_type=code&state=<%= me_account.state %>&scope=shipping-calculate">
55
+ <svg style="width: 24px; height: 24px;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
56
+ <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>
57
+ </a>
58
+ </div>
@@ -0,0 +1 @@
1
+ <%= render "form", me_account: @me_account, form_url: admin_solidus_me_account_path(@me_account.id) %>
@@ -0,0 +1,12 @@
1
+ <%= link_to("Criar", new_admin_solidus_me_account_path) if @accounts.count > 1 %>
2
+ <div>
3
+ <% @accounts.each do |account| %>
4
+ <div>
5
+ <% account.attributes.each do |attribute| %>
6
+ <div style="overflow-wrap: break-word;"> <%= attribute[0] %>: <%= attribute[1] %></div>
7
+ <% end %>
8
+ <%= link_to "Editar", edit_admin_solidus_me_account_path(account.id) %>
9
+ <%= link_to "Excluir", admin_solidus_me_account_path(account.id), method: :delete %>
10
+ </div>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1 @@
1
+ <%= render "form", me_account: @me_account, form_url: admin_solidus_me_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_me"
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/routes.rb CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  Spree::Core::Engine.routes.draw do
4
4
  namespace :admin do
5
- resources :melhor_envio, only: [:index, :update]
6
- get "melhor_envio/authorize", at: "melhor_envio#authorize", as: "melhor_envio_authorize"
5
+ namespace :solidus_me do
6
+ resources :accounts do
7
+ get "authorize", on: :collection
8
+ end
9
+ end
7
10
  end
8
11
  end
@@ -0,0 +1,17 @@
1
+ class CreateSolidusMeAccounts < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :solidus_me_accounts do |t|
4
+ t.string :client_id
5
+ t.string :client_secret
6
+ t.string :access_token
7
+ t.string :refresh_token
8
+ t.string :redirect_url
9
+ t.string :state
10
+ t.datetime :token_expires_in
11
+ t.string :services
12
+ t.string :postal_code_from
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -18,7 +18,7 @@ module SolidusMe
18
18
  config.menu_items << config.class::MenuItem.new(
19
19
  label: "melhor_envio",
20
20
  icon: 'truck',
21
- url: "/admin/melhor_envio",
21
+ url: "/admin/solidus_me/accounts",
22
22
  condition: -> { can?(:manage, ::Spree::Store) }
23
23
  )
24
24
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusMe
4
- VERSION = '1.0.7'
4
+ VERSION = '2.0.0'
5
5
  end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ module SolidusMe
4
+ RSpec.describe Account, type: :model do
5
+ pending "add some examples to (or delete) #{__FILE__}"
6
+ end
7
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_me
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 2.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-08 00:00:00.000000000 Z
11
+ date: 2023-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core
@@ -104,12 +104,15 @@ files:
104
104
  - LICENSE
105
105
  - README.md
106
106
  - Rakefile
107
- - app/controller/spree/admin/melhor_envio_controller.rb
108
- - app/models/solidus_me/preferences.rb
107
+ - app/controller/spree/admin/solidus_me/accounts_controller.rb
108
+ - app/models/solidus_me/account.rb
109
109
  - app/models/solidus_me/shipping_estimator.rb
110
- - app/overrides/store_preferences.rb
111
- - app/views/spree/admin/melhor_envio/index.html.erb
110
+ - app/views/spree/admin/solidus_me/accounts/_form.html.erb
111
+ - app/views/spree/admin/solidus_me/accounts/edit.html.erb
112
+ - app/views/spree/admin/solidus_me/accounts/index.html.erb
113
+ - app/views/spree/admin/solidus_me/accounts/new.html.erb
112
114
  - bin/console
115
+ - bin/meu_sandbox
113
116
  - bin/rails
114
117
  - bin/rails-engine
115
118
  - bin/rails-sandbox
@@ -119,7 +122,7 @@ files:
119
122
  - config/locales/en.yml
120
123
  - config/locales/pt-BR.yml
121
124
  - config/routes.rb
122
- - db/migrate/20231103133348_add_preferences_to_spree_store.rb
125
+ - db/migrate/20231109124213_create_solidus_me_accounts.rb
123
126
  - lib/generators/solidus_me/install/install_generator.rb
124
127
  - lib/generators/solidus_me/install/templates/initializer.rb
125
128
  - lib/solidus_me.rb
@@ -128,6 +131,7 @@ files:
128
131
  - lib/solidus_me/testing_support/factories.rb
129
132
  - lib/solidus_me/version.rb
130
133
  - solidus_me.gemspec
134
+ - spec/models/solidus_me/account_spec.rb
131
135
  - spec/spec_helper.rb
132
136
  homepage: https://github.com/solidusio-contrib/solidus_me#readme
133
137
  licenses:
@@ -159,4 +163,5 @@ signing_key:
159
163
  specification_version: 4
160
164
  summary: Gem para integração com a API do Melhor Envio
161
165
  test_files:
166
+ - spec/models/solidus_me/account_spec.rb
162
167
  - spec/spec_helper.rb
@@ -1,43 +0,0 @@
1
- module Spree
2
- module Admin
3
- class MelhorEnvioController < BaseController
4
- before_action :set_melhor_envio_preferences
5
-
6
- def index
7
- end
8
-
9
- def update
10
- @me_preferences = preferences_params
11
- Spree::Store.first.update(preferences: { melhor_envio: @me_preferences })
12
- redirect_to admin_melhor_envio_index_path
13
- end
14
-
15
- def authorize
16
- code = params[:code]
17
- authorize_json = MeApi::Client.new.authorize(
18
- client_id: @me_preferences[:client_id],
19
- client_secret: @me_preferences[:client_secret],
20
- code: code,
21
- redirect_url: @me_preferences[:redirect_url]
22
- ).json
23
- @me_preferences[:access_token] = authorize_json["access_token"]
24
- @me_preferences[:refresh_token] = authorize_json["refresh_token"]
25
- @me_preferences[:token_expires_in] = (DateTime.now + authorize_json["expires_in"].seconds).to_s
26
- Spree::Store.first.update(preferences: { melhor_envio: @me_preferences })
27
- redirect_to admin_melhor_envio_index_path
28
- end
29
-
30
- private
31
-
32
- def set_melhor_envio_preferences
33
- @me_preferences = Spree::Store.first.preferences[:melhor_envio]
34
- end
35
-
36
- def preferences_params
37
- hash_preferences = params.permit(:postal_code_from, :services, :client_id, :client_secret, :redirect_url, :state, :access_token, :refresh_token, :token_expires_in)
38
- hash_preferences[:services] = hash_preferences[:services].split(" ")
39
- hash_preferences.to_h
40
- end
41
- end
42
- end
43
- end
@@ -1,30 +0,0 @@
1
- module SolidusMe
2
- class Preferences
3
-
4
- attr_reader :preferences
5
- def initialize store
6
- @store = store
7
- @preferences = store.preferences[:melhor_envio]
8
- check
9
- end
10
-
11
- def check
12
- return if @preferences[:client_id].blank? || @preferences[:client_secret].blank? || @preferences[:refresh_token].blank?
13
- return if (@preferences[:token_expires_in]&.to_datetime - 1.day) > DateTime.now
14
- refresh
15
- end
16
-
17
- def refresh
18
- refresh_json = MeApi::Client.new.refresh_token(
19
- client_id: @preferences[:client_id],
20
- client_secret: @preferences[:client_secret],
21
- refresh_token: @preferences[:refresh_token]
22
- ).json
23
- @preferences[:access_token] = refresh_json["access_token"]
24
- @preferences[:refresh_token] = refresh_json["refresh_token"]
25
- @preferences[:token_expires_in] = (DateTime.now.utc + refresh_json["expires_in"].seconds).to_s
26
- @store.update(preferences: { melhor_envio: @preferences })
27
- end
28
-
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- module StorePreferences
2
- extend ActiveSupport::Concern
3
-
4
- prepended do
5
- require 'spree/preferences/persistable'
6
-
7
- include Spree::Preferences::Persistable
8
-
9
- preference :melhor_envio, :json, default: {
10
- postal_code_from: "13870320",
11
- services: ["SEDEX", "PAC", "Mini Envios"],
12
- client_id: nil,
13
- client_secret: nil,
14
- redirect_url: nil,
15
- state: nil,
16
- access_token: nil,
17
- refresh_token: nil,
18
- token_expires_in: DateTime.now.to_s
19
- }
20
- end
21
-
22
- ::Spree::Store.prepend self
23
- end
@@ -1,58 +0,0 @@
1
- <%= form_with url: admin_melhor_envio_path("melhor_envio"), method: :put do |form| %>
2
- <h3>Melhor Envio</h3>
3
-
4
- <div style="margin-top: 10px;">
5
- <%= form.label :postal_code_from, "CEP de Origem: " %>
6
- <%= form.text_field :postal_code_from, value: @me_preferences[:postal_code_from] %>
7
- </div>
8
-
9
- <div style="margin-top: 10px;">
10
- <%= form.hidden_field :services, value: @me_preferences[:services] %>
11
- <span>Serviços Disponíveis: <%= @me_preferences[:services]&.join(", ") %></span>
12
- </div>
13
-
14
- <div style="margin-top: 10px;">
15
- <%= form.label :client_id, "Client ID: " %>
16
- <%= form.text_field :client_id, value: @me_preferences[:client_id] %>
17
- </div>
18
-
19
- <div style="margin-top: 10px;">
20
- <%= form.label :client_secret, "Client Secret: " %>
21
- <%= form.text_field :client_secret, value: @me_preferences[:client_secret] %>
22
- </div>
23
-
24
- <div style="margin-top: 10px;">
25
- <%= form.label :redirect_url, "Redirect URL: " %>
26
- <%= form.text_field :redirect_url, value: @me_preferences[:redirect_url] %>
27
- </div>
28
-
29
- <div style="margin-top: 10px;">
30
- <%= form.label :state, "State: " %>
31
- <%= form.text_field :state, value: @me_preferences[:state] %>
32
- </div>
33
-
34
- <div style="margin-top: 10px;">
35
- <%= form.label :access_token, "Access Token: " %>
36
- <%= form.text_field :access_token, value: @me_preferences[:access_token] %>
37
- </div>
38
-
39
- <div style="margin-top: 10px;">
40
- <%= form.label :refresh_token, "Refresh Token: " %>
41
- <%= form.text_field :refresh_token, value: @me_preferences[:refresh_token] %>
42
- </div>
43
-
44
- <div style="margin-top: 10px;">
45
- <%= form.hidden_field :token_expires_in, value: @me_preferences[:token_expires_in] %>
46
- <span>Expiração do token: <%= @me_preferences[:token_expires_in] %></span>
47
- </div>
48
-
49
- <%= form.submit "Salvar", style: "margin-top: 10px;" %>
50
- <% end %>
51
-
52
- <div>
53
- <input value="https://www.melhorenvio.com.br/oauth/authorize?client_id=<%= @me_preferences[:client_id] %>&redirect_uri=<%= @me_preferences[:redirect_url] %>&response_type=code&state=<%= @me_preferences[:state] %>&scope=shipping-calculate">
54
- <a target="_blank" class="" href="https://www.melhorenvio.com.br/oauth/authorize?client_id=<%= @me_preferences[:client_id] %>&redirect_uri=<%= @me_preferences[:redirect_url] %>&response_type=code&state=<%= @me_preferences[:state] %>&scope=shipping-calculate">
55
- <svg style="width: 24px; height: 24px;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
56
- <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>
57
- </a>
58
- </div>
@@ -1,5 +0,0 @@
1
- class AddPreferencesToSpreeStore < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :spree_stores, :preferences, :text, if_not_exists: true
4
- end
5
- end