solidus_tec_estimator 2.1.2 → 2.1.3
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 +4 -4
- data/README.md +202 -7
- data/lib/solidus_tec_estimator/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e231ff08a8f0dcf8e7172c16b9b40204576b4fa7e609c9dc255f0c3d870f3b8c
|
4
|
+
data.tar.gz: d35235f464d741587aa212f67f11e73df04ebaf82254539714becfb9110fe0dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d4593a8be735e4f38ca6e09d9984f17bcc30622dc01eb534da470c6282703e8e7f76bd8e3b2db5a1e6471d4e739131ca0b68bc26056d39e082812579307eae9
|
7
|
+
data.tar.gz: 72a94a36e01fbf611668749443737d0ef918887665002b7204e2c7154a24dc29ba111449bef46b9d1e15de128bd50878c705b746b85c998a3a967b49bd794926
|
data/README.md
CHANGED
@@ -1,17 +1,212 @@
|
|
1
|
-
#
|
1
|
+
# SolidusTecEstimator
|
2
2
|
|
3
|
-
|
3
|
+
[](https://badge.fury.io/rb/solidus_tec_estimator)
|
4
4
|
|
5
|
-
|
5
|
+
Uma extensão para Solidus que fornece um sistema flexível de estimativa de frete com suporte a múltiplos provedores de entrega.
|
6
6
|
|
7
|
-
|
7
|
+
## Características
|
8
|
+
|
9
|
+
- **Sistema de Provedores Plugável**: Arquitetura modular que permite adicionar facilmente novos provedores de entrega
|
10
|
+
- **Entrega Local**: Provedor integrado para entrega local com estimativas de tempo em tempo real
|
11
|
+
- **Interface Administrativa**: Interface web para gerenciar provedores de entrega
|
12
|
+
- **Integração com Solidus Brazilian Adaptations**: Compatibilidade total com adaptações brasileiras do Solidus
|
13
|
+
- **Cálculo Dinâmico de Frete**: Estimativas baseadas em peso, localização e disponibilidade de estoque
|
14
|
+
- **Estimativas de Tempo de Entrega**: Cálculo automático de janelas de entrega baseado em horários comerciais
|
15
|
+
|
16
|
+
## Instalação
|
17
|
+
|
18
|
+
Adicione esta linha ao Gemfile da sua aplicação:
|
8
19
|
|
9
20
|
```ruby
|
10
21
|
gem 'solidus_tec_estimator'
|
11
22
|
```
|
12
23
|
|
13
|
-
|
24
|
+
E execute:
|
25
|
+
|
26
|
+
```bash
|
27
|
+
$ bundle install
|
28
|
+
```
|
29
|
+
|
30
|
+
Ou instale diretamente:
|
31
|
+
|
32
|
+
```bash
|
33
|
+
$ gem install solidus_tec_estimator
|
34
|
+
```
|
35
|
+
|
36
|
+
### Configuração
|
37
|
+
|
38
|
+
Execute o gerador de instalação:
|
39
|
+
|
40
|
+
```bash
|
41
|
+
$ rails generate solidus_tec_estimator:install
|
42
|
+
```
|
43
|
+
|
44
|
+
Execute as migrações:
|
45
|
+
|
46
|
+
```bash
|
47
|
+
$ rails db:migrate
|
48
|
+
```
|
49
|
+
|
50
|
+
### Configuração da Interface Administrativa
|
51
|
+
|
52
|
+
Para acessar a interface administrativa dos provedores, você precisa adicionar uma aba na seção de shipping do painel administrativo do Solidus.
|
53
|
+
|
54
|
+
Crie o arquivo `app/views/spree/admin/shared/_shipping_tabs.html.erb` no seu projeto (se não existir) copiando o conteúdo do [arquivo original do Solidus](https://github.com/solidusio/solidus/blob/main/backend/app/views/spree/admin/shared/_shipping_tabs.html.erb) e adicione o seguinte bloco:
|
55
|
+
|
56
|
+
```erb
|
57
|
+
<% if can?(:show, Spree::ShippingMethod) %>
|
58
|
+
<%= settings_tab_item "Providers", admin_solidus_tec_estimator_providers_path %>
|
59
|
+
<% end %>
|
60
|
+
```
|
61
|
+
|
62
|
+
O arquivo completo deve ficar assim:
|
63
|
+
|
64
|
+
```erb
|
65
|
+
<% content_for :tabs do %>
|
66
|
+
<nav>
|
67
|
+
<ul class="tabs" data-hook="admin_settings_shipping_tabs">
|
68
|
+
<% if can?(:show, Spree::ShippingMethod) %>
|
69
|
+
<%= settings_tab_item plural_resource_name(Spree::ShippingMethod), spree.admin_shipping_methods_path %>
|
70
|
+
<% end %>
|
71
|
+
|
72
|
+
<% if can?(:show, Spree::ShippingCategory) %>
|
73
|
+
<%= settings_tab_item plural_resource_name(Spree::ShippingCategory), spree.admin_shipping_categories_path %>
|
74
|
+
<% end %>
|
75
|
+
|
76
|
+
<% if can?(:show, Spree::StockLocation) %>
|
77
|
+
<%= settings_tab_item plural_resource_name(Spree::StockLocation), spree.admin_stock_locations_path %>
|
78
|
+
<% end %>
|
79
|
+
|
80
|
+
<% if can?(:show, Spree::ShippingMethod) %>
|
81
|
+
<%= settings_tab_item "Providers", admin_solidus_tec_estimator_providers_path %>
|
82
|
+
<% end %>
|
83
|
+
</ul>
|
84
|
+
</nav>
|
85
|
+
<% end %>
|
86
|
+
```
|
87
|
+
|
88
|
+
## Uso
|
89
|
+
|
90
|
+
### Configuração Básica
|
91
|
+
|
92
|
+
A gem estende o sistema de estimativa de frete do Solidus, permitindo que você use tanto os métodos de envio tradicionais quanto provedores personalizados.
|
93
|
+
|
94
|
+
### Provedores de Entrega
|
95
|
+
|
96
|
+
#### Criando um Novo Provedor
|
97
|
+
|
98
|
+
Para criar um novo provedor de entrega, crie uma classe que implemente a interface do provedor:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
module SolidusTecEstimator
|
102
|
+
module Providers
|
103
|
+
class MeuProvedor
|
104
|
+
attr_accessor :package, :shipping_methods
|
105
|
+
|
106
|
+
def initialize(package, shipping_methods)
|
107
|
+
@package = package
|
108
|
+
@shipping_methods = shipping_methods
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.install
|
112
|
+
# Lógica para instalar/configurar o método de envio
|
113
|
+
Spree::ShippingMethod.find_or_create_by(code: name.underscore) do |shipping_method|
|
114
|
+
shipping_method.name = "Meu Provedor"
|
115
|
+
shipping_method.carrier = "Transportadora Custom"
|
116
|
+
shipping_method.code = name.underscore
|
117
|
+
# ... outras configurações
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def shipping_rates
|
122
|
+
# Retorna um array de Spree::ShippingRate
|
123
|
+
[]
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
```
|
129
|
+
|
130
|
+
#### Registrando um Provedor
|
131
|
+
|
132
|
+
Para registrar um novo provedor:
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
SolidusTecEstimator::Provider.create!(
|
136
|
+
name: "Meu Provedor",
|
137
|
+
class_name: "SolidusTecEstimator::Providers::MeuProvedor",
|
138
|
+
active: true
|
139
|
+
)
|
140
|
+
```
|
141
|
+
|
142
|
+
### Provedor de Entrega Local
|
143
|
+
|
144
|
+
A gem inclui um provedor de entrega local (`LocalDelivery`) que oferece:
|
145
|
+
|
146
|
+
- Verificação de CEP para São João da Boa Vista
|
147
|
+
- Validação de estoque na filial F1
|
148
|
+
- Cálculo de tempo de entrega baseado em horários comerciais
|
149
|
+
- Limite de peso de 50kg
|
150
|
+
|
151
|
+
## Interface Administrativa
|
152
|
+
|
153
|
+
Acesse a interface administrativa em:
|
154
|
+
|
155
|
+
```
|
156
|
+
/admin/solidus_tec_estimator/providers
|
157
|
+
```
|
158
|
+
|
159
|
+
Através desta interface você pode:
|
160
|
+
|
161
|
+
- Visualizar todos os provedores cadastrados
|
162
|
+
- Ativar/desativar provedores
|
163
|
+
- Adicionar novos provedores
|
164
|
+
- Editar configurações dos provedores
|
165
|
+
|
166
|
+
## Estrutura do Projeto
|
14
167
|
|
15
|
-
```shell
|
16
|
-
bin/rails generate solidus_tec_estimator:install
|
17
168
|
```
|
169
|
+
app/
|
170
|
+
├── controllers/
|
171
|
+
│ └── spree/admin/solidus_tec_estimator/
|
172
|
+
│ └── providers_controller.rb # Controller administrativo
|
173
|
+
├── models/
|
174
|
+
│ └── solidus_tec_estimator/
|
175
|
+
│ ├── estimator.rb # Motor principal de estimativas
|
176
|
+
│ ├── provider.rb # Model do provedor
|
177
|
+
│ └── providers/
|
178
|
+
│ └── local_delivery.rb # Provedor de entrega local
|
179
|
+
└── views/
|
180
|
+
└── spree/admin/solidus_tec_estimator/
|
181
|
+
└── providers/ # Views administrativas
|
182
|
+
```
|
183
|
+
|
184
|
+
## Dependências
|
185
|
+
|
186
|
+
- `solidus_brazilian_adaptations` - Adaptações brasileiras para Solidus
|
187
|
+
- Rails 7.1+
|
188
|
+
- Solidus
|
189
|
+
|
190
|
+
## Como Funciona
|
191
|
+
|
192
|
+
1. **Estimador Principal**: A classe `SolidusTecEstimator::Estimator` é responsável por coletar estimativas de todos os métodos de envio e provedores ativos.
|
193
|
+
|
194
|
+
2. **Provedores**: Cada provedor implementa sua própria lógica de cálculo de frete e tempo de entrega.
|
195
|
+
|
196
|
+
3. **Seleção Automática**: O sistema automaticamente seleciona uma opção padrão baseada na configuração do Solidus.
|
197
|
+
|
198
|
+
4. **Filtragem**: Os métodos de envio são filtrados baseados em disponibilidade, localização e outros critérios.
|
199
|
+
|
200
|
+
## Exemplo de Integração
|
201
|
+
|
202
|
+
```ruby
|
203
|
+
# No seu modelo de Order ou similar
|
204
|
+
def shipping_rates_for_package(package)
|
205
|
+
estimator = SolidusTecEstimator::Estimator.new
|
206
|
+
estimator.shipping_rates(package)
|
207
|
+
end
|
208
|
+
```
|
209
|
+
|
210
|
+
## Versão
|
211
|
+
|
212
|
+
Versão atual: 2.1.2
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_tec_estimator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ulysses
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-08-04 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: solidus_brazilian_adaptations
|