SolidusMe
Extensão do Solidus para integração com a API do Melhor Envio, permitindo:
- Cálculo de frete em tempo real
- Geração de etiquetas de envio
- Gerenciamento de contas do Melhor Envio
- Interface administrativa para controle de etiquetas
Requisitos
- Ruby >= 2.7
- Solidus >= 3.0
- Rails >= 6.0
Instalação
Adicione esta linha ao Gemfile da sua aplicação:
ruby
gem 'solidus_me'
Execute:
bash
$ bundle install
Execute o gerador de instalação:
bash
$ rails generate solidus_me:install
Execute as migrações:
bash
$ rails db:migrate
Dependências
Esta gem depende de outras gems que precisam ser configuradas antes do uso:
1. SolidusTecEstimator
Execute o gerador de instalação:
bash
$ rails generate solidus_tec_estimator:install
Siga as instruções de configuração da gem solidus_tec_estimator.
2. SolidusBrazilianAdaptations
Execute o gerador de instalação:
bash
$ rails generate solidus_brazilian_adaptations:install
Siga as instruções de configuração da gem solidus_brazilian_adaptations.
Configuração
1. Configuração da Conta do Melhor Envio
Acesse o painel administrativo do Solidus e navegue até Configurações > Contas Melhor Envio para configurar suas credenciais da API.
2. Configuração do Provider de Frete
Configure o TecEstimator ou outro provider compatível para usar o “Melhor Envio” como provedor de frete.
3. Configuração da Interface de Etiquetas
Para exibir a aba “Etiqueta” nas ordens do painel administrativo, você precisa adicionar o seguinte código ao arquivo app/views/spree/admin/shared/_order_submenu.html.erb:
erb
<% if @order.completed? %>
<% provider_id = @order.shipments.sole.selected_shipping_rate.shipping_method.provider_id %>
<% if provider_id && SolidusTecEstimator::Provider.find(provider_id).name == "Melhor Envio" %>
<% label = SolidusMe::Label.find_by(spree_order_id: @order.id) %>
<li class="tab" data-hook='admin_order_tabs_return_authorizations'>
<% if label %>
<a href="<%= admin_orders_label_path(order_number: @order.number, id: label.id) %>">Etiqueta</a>
<% else %>
<a href="<%= admin_orders_labels_path(order_number: @order.number) %>">Etiqueta</a>
<% end %>
</li>
<% end %>
<% end %>
Importante: Se o arquivo app/views/spree/admin/shared/_order_submenu.html.erb não existir na sua aplicação, você deve criá-lo copiando o arquivo original do Solidus:
👉 Baixar arquivo original do Solidus
Após baixar, coloque o arquivo no caminho correto da sua aplicação e adicione o código da aba de etiqueta.
Funcionalidades
Gerenciamento de Contas
- Múltiplas contas: Suporte a contas de teste e produção
- Autenticação OAuth2: Integração segura com a API do Melhor Envio
- Sincronização automática: Atualização de saldos e informações da conta
Etiquetas de Envio
- Geração de etiquetas: Criação automática de etiquetas após finalização do pedido
- Rastreamento: Acompanhamento do status de entrega
- Impressão: Interface para impressão de etiquetas
- Histórico: Controle completo do ciclo de vida das etiquetas
Interface Administrativa
- Dashboard de contas: Visualização de saldos e status das contas
- Gestão de etiquetas: Interface completa para gerenciar etiquetas por pedido
- Configurações: Painel de configuração das integrações
Modelos
SolidusMe::Account
Representa uma conta do Melhor Envio configurada no sistema.
```ruby # Buscar conta ativa em modo de teste account = SolidusMe::Account.first_active_test_mode
Verificar saldo da conta
balance = account.get_balance
Obter dados da conta
account_data = account.get_account_data ```
SolidusMe::Label
Representa uma etiqueta de envio gerada para um pedido.
```ruby # Buscar etiqueta por pedido label = SolidusMe::Label.find_by(spree_order_id: order.id)
Verificar status da etiqueta
puts label.status ```
Configuração Avançada
Inicializador
O gerador cria um arquivo de configuração em config/initializers/solidus_me.rb:
ruby
SolidusMe.configure do |config|
# Suas configurações personalizadas
end
Rotas
As rotas são automaticamente montadas na aplicação:
ruby
# config/routes.rb
Rails.application.routes.draw do
mount SolidusMe::Engine => "/solidus_me"
# suas outras rotas...
end