solidus_me 1.0.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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