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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1078c9453d7e334bd19b7b09a11c491271420bb39c24a83ed645b217bd647d18
4
- data.tar.gz: 95191b668cda00e855dbd41904b3bf884d7efc761d13f901e85b5e29e1413d6d
3
+ metadata.gz: e231ff08a8f0dcf8e7172c16b9b40204576b4fa7e609c9dc255f0c3d870f3b8c
4
+ data.tar.gz: d35235f464d741587aa212f67f11e73df04ebaf82254539714becfb9110fe0dc
5
5
  SHA512:
6
- metadata.gz: 6e54b8db27c49e6330df33ce009b013e26eb37eb68a3e6a57dfc42d1177890d821df07a64c668fe319ee50be354f2c60b2f563292e7a34d99fcbb9731d8318a0
7
- data.tar.gz: '09793f7e54a0bc6366da0aae9234fcca8cf77338c176967ec0fdc141ee5b527d94222e4d8d63f0cde52d273643f4534bd7dc7fbcca1224f12eec308bbcef6d14'
6
+ metadata.gz: 1d4593a8be735e4f38ca6e09d9984f17bcc30622dc01eb534da470c6282703e8e7f76bd8e3b2db5a1e6471d4e739131ca0b68bc26056d39e082812579307eae9
7
+ data.tar.gz: 72a94a36e01fbf611668749443737d0ef918887665002b7204e2c7154a24dc29ba111449bef46b9d1e15de128bd50878c705b746b85c998a3a967b49bd794926
data/README.md CHANGED
@@ -1,17 +1,212 @@
1
- # Solidus Tec Estimator
1
+ # SolidusTecEstimator
2
2
 
3
- <!-- Explain what your extension does. -->
3
+ [![Gem Version](https://badge.fury.io/rb/solidus_tec_estimator.svg)](https://badge.fury.io/rb/solidus_tec_estimator)
4
4
 
5
- ## Installation
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
- Add solidus_tec_estimator to your Gemfile:
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
- Bundle your dependencies and run the installation generator:
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
@@ -1,3 +1,3 @@
1
1
  module SolidusTecEstimator
2
- VERSION = '2.1.2'
2
+ VERSION = '2.1.3'
3
3
  end
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.2
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-06-20 00:00:00.000000000 Z
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