solidus_brazilian_adaptations 1.0.0 → 1.0.1

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: 54db548988b77722450cfb649c05d932f6f409a0a8649828b241bf844ad83b7a
4
- data.tar.gz: d51a2a71f797caba7714e90cc94908c1d9d440858464d7f493327501ad79dbb3
3
+ metadata.gz: 7797d6654515e8404898c5445c80c24907108084f3bfa40d90394eadff4128ab
4
+ data.tar.gz: 9b45e301f29cb1ac65525f6b743a9d87fea959b56be0982febdfff1736192fdd
5
5
  SHA512:
6
- metadata.gz: 49b156d068a22e8d9b7a987aba5679cdaa3e916050a83bac414f0a3ee56dfb06454e9815ab23b192ec8e5668146e472a123944ba9aeb8ddc67f440e8ece7fa2b
7
- data.tar.gz: 54f6277b1cf922f82ae3ffa110e48e6a9af4e7a1731f2b11631ad90b863c21e89f35ebf963edb25a6c73098b34e0ae7ffcbccf735a16b972e6b0139d99acacd9
6
+ metadata.gz: 36b1d4c5757fd115a7050cea15960888039a211b365b14633f43c0e2ec8b6f36199ef045c29aafa2f2136ff5cd947d9e3ba5a48d2fdee8876e8005e5fc24d268
7
+ data.tar.gz: 45232cb42a3380d80d15f7794bdbafe1eb285220c2a5b0668b0d5f5b571039020a28a4c737502ad97ea2d1f626ed32195979bd47f514b44c6d4532e5f37bf99a
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![CircleCI](https://circleci.com/gh/solidusio-contrib/solidus_brazilian_adaptations.svg?style=shield)](https://circleci.com/gh/solidusio-contrib/solidus_brazilian_adaptations)
4
4
  [![codecov](https://codecov.io/gh/solidusio-contrib/solidus_brazilian_adaptations/branch/master/graph/badge.svg)](https://codecov.io/gh/solidusio-contrib/solidus_brazilian_adaptations)
5
5
 
6
- <!-- Explain what your extension does. -->
6
+ Essa gem tem como objetivo adaptar os modelos do Solidus para se adequar aos padrões brasileiros, tais como a criação dos atributos CPF/CNPJ (tax_id) em Spree::Order, e número (number) do imóvel e bairro (district) em Spree::Address.
7
7
 
8
8
  ## Installation
9
9
 
@@ -21,36 +21,249 @@ bin/rails generate solidus_brazilian_adaptations:install
21
21
 
22
22
  ## Usage
23
23
 
24
- No starter frontend, editar a partial `app/views/checkouts/_checkout_step.html.erb` adicionando um input para preencher o CPF/CNPJ:
24
+ ### Configurações
25
+ A partir do initializer da gem é possivel configurar se será permitido efetuar compras utilizando CNPJ. Por padrão é essa opção é `true`.
26
+
27
+ ### Storefront
28
+ Essa gem utiliza o starter frontend como base, então os exemplos serão feitos a partir de suas views.
29
+
30
+ Para adicionar os campos de CPF/CNPJ, número e bairro é possivel editar o form da etapa de endereço. Porém a edição é feita em duas partials diferentes:
31
+
32
+ Na partial `app/views/checkouts/_checkout_step.html.erb` o seguinte HTML referente ao **CPF/CNPJ** pode ser inserido logo abaixo ao input de e-mail:
25
33
  ```erb
26
- <% label = SolidusBrazilianAdaptations.config.allow_cnpj ? "CPF/CPNJ" : "CPF" %>
34
+
27
35
  <%= form_for order, url: update_checkout_path(order.state), html: { id: "checkout_form_#{order.state}" } do |form| %>
28
36
  <% if order.state == "address" || !order.email? %>
29
37
  <div class="text-input">
30
38
  <%= form.label :email, 'E-Mail:' %>
31
39
  <%= form.email_field :email, required: true, placeholder: 'name@example.com' %>
32
40
  </div>
41
+
42
+ <!-- Adicionar -->
43
+ <% label = SolidusBrazilianAdaptations.config.allow_cnpj ? "CPF/CPNJ" : "CPF" %>
33
44
  <div class="text-input" style="margin-top: 4px;">
34
45
  <%= form.label :tax_id, "#{label}:" %>
35
46
  <%= form.text_field :tax_id, required: true, placeholder: label %>
36
47
  </div>
48
+ <!-- ********* -->
49
+
37
50
  <% end %>
38
51
 
39
52
  <%= render "checkouts/steps/#{order.state}_step", form: form, differentiator: @differentiator %>
40
53
  <% end %>
41
54
  ```
42
55
 
43
- E editar `app/views/checkouts/steps/address_step/_address_inputs.html.erb` adicionando dois novos campos para o número e bairro:
56
+ E na partial `app/views/checkouts/steps/address_step/_address_inputs.html.erb` adicionar o seguinte código referente ao **número** e **bairro**, podendo ser alterada a ordem dos campos:
44
57
  ```erb
45
- <div class="text-input">
46
- <%= form.label :number, "Número:" %>
47
- <%= form.text_field :number, required: true %>
48
- </div>
58
+ <!-- Adicionar -->
59
+ <div class="text-input">
60
+ <%= form.label :number, "Número:" %>
61
+ <%= form.text_field :number, required: true %>
62
+ </div>
63
+ <!-- ********* -->
64
+
65
+ <div class="text-input">
66
+ <%= form.label :address2, "#{I18n.t("spree.street_address_2")}:" %>
67
+ <%= form.text_field :address2, autocomplete: "#{address_type} address-line2" %>
68
+ </div>
69
+
70
+ <!-- Adicionar -->
71
+ <div class="text-input">
72
+ <%= form.label :district, "Bairro:" %>
73
+ <%= form.text_field :district, required: true %>
74
+ </div>
75
+ <!-- ********* -->
76
+
77
+ <div class="text-input">
78
+ <%= form.label :city, "#{I18n.t("spree.city")}:" %>
79
+ <%= form.text_field :city, required: true, autocomplete: "#{address_type} address-level2" %>
80
+ </div>
81
+ ```
82
+
83
+ ### Admin
84
+
85
+ Para visualizar os campos de **CPF/CNPJ**, **número** e **bairro** no painel do Admin na aba `Order/Order_Number/Customer Details` é necessário criar as seguintes views em seu projeto:
86
+
87
+ Essas novas views irão sobrescrever as padrões, localizadas na gem `solidus_backend`. Portanto, você deve ficar atento às atualizações do Solidus, pois ao sobrescrever as views as atualizações não serão aplicadas.
88
+
89
+ `app/views/spree/admin/orders/customer_details/_form.html.erb`
90
+ ```erb
91
+ <fieldset data-hook="admin_customer_detail_form_fields" class="no-border-top">
92
+
93
+ <fieldset class="index no-border-bottom" data-hook="customer_guest">
94
+ <legend align="center"><%= t('spree.account') %></legend>
95
+
96
+ <div data-hook="customer_fields" class="row">
97
+ <div class="col-9">
98
+ <div class="field">
99
+ <%= f.label :email %>
100
+ <%= f.email_field :email, required: true, class: 'fullwidth' %>
101
+ </div>
102
+
103
+ <!-- Adicionado -->
104
+ <div class="field">
105
+ <%= f.label :tax_id, "CPF/CNPJ" %>
106
+ <%= f.text_field :tax_id, required: true, class: 'fullwidth' %>
107
+ </div>
108
+ <!-- ********* -->
109
+ </div>
110
+ <div class="col-3">
111
+ <div class="field">
112
+ <%= label_tag nil, t('spree.guest_checkout') %>
113
+ <ul>
114
+ <% if @order.completed? %>
115
+ <li>
116
+ <%= @order.user.nil? ? t('spree.say_yes') : t('spree.say_no') %>
117
+ </li>
118
+ <% else %>
119
+ <% guest = @order.user.nil? %>
120
+ <li>
121
+ <label>
122
+ <%= radio_button_tag :guest_checkout, true, guest %>
123
+ <%= t('spree.say_yes') %>
124
+ </label>
125
+ </li>
126
+ <li>
127
+ <label>
128
+ <%= radio_button_tag :guest_checkout, false, !guest, disabled: @order.cart? %>
129
+ <%= t('spree.say_no') %>
130
+ </label>
131
+ </li>
132
+ <%= hidden_field_tag :user_id, @order.user_id %>
133
+ <% end %>
134
+ </ul>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </fieldset>
139
+
140
+ <div class="row">
141
+ <% if Spree::Config[:order_bill_address_used] %>
142
+ <div class="col-6" data-hook="bill_address_wrapper">
143
+ <fieldset class="no-border-bottom">
144
+ <legend align="center"><%= t('spree.billing_address') %></legend>
145
+ <div class="js-billing-address">
146
+ <%= f.fields_for :bill_address do |ba_form| %>
147
+ <%= render partial: 'spree/admin/shared/address_form', locals: { f: ba_form, type: "billing" } %>
148
+ <% end %>
149
+ </div>
150
+ </fieldset>
151
+ </div>
152
+ <% end %>
49
153
 
50
- <div class="text-input">
51
- <%= form.label :district, "Bairro:" %>
52
- <%= form.text_field :district, required: true %>
154
+ <div class="col-6" data-hook="ship_address_wrapper">
155
+ <fieldset class="no-border-bottom">
156
+ <legend align="center"><%= t('spree.shipping_address') %></legend>
157
+ <% if Spree::Config[:order_bill_address_used] %>
158
+ <div class="field">
159
+ <span data-hook="use_billing">
160
+ <label>
161
+ <%= check_box_tag 'order[use_billing]', '1', (@order.ship_address.new_record? && @order.bill_address == @order.ship_address) %>
162
+ <%= t('spree.use_billing_address') %>
163
+ </label>
164
+ </span>
165
+ </div>
166
+ <% end %>
167
+
168
+ <div class="js-shipping-address">
169
+ <%= f.fields_for :ship_address do |ba_form| %>
170
+ <%= render partial: 'spree/admin/shared/address_form', locals: { f: ba_form, type: "shipping" } %>
171
+ <% end %>
172
+ </div>
173
+ </fieldset>
174
+ </div>
175
+ </div>
176
+
177
+ <div class="clear"></div>
178
+
179
+ <div class="form-buttons filter-actions actions" data-hook="buttons">
180
+ <%= button_tag t('spree.actions.update'), class: 'btn btn-primary' %>
181
+ </div>
182
+ </fieldset>
183
+ ```
184
+ `app/views/spree/admin/shared/_address_form.html.erb`
185
+ ```erb
186
+ <% s_or_b = type.chars.first %>
187
+
188
+ <div id="<%= type %>" data-hook="address_fields">
189
+ <div class="field <%= "#{type}-row" %>">
190
+ <%= f.label :name %>
191
+ <%= f.text_field :name, class: 'fullwidth' %>
192
+ </div>
193
+
194
+ <% if Spree::Config[:company] %>
195
+ <div class="field <%= "#{type}-row" %>">
196
+ <%= f.label :company %>
197
+ <%= f.text_field :company, class: 'fullwidth' %>
198
+ </div>
199
+ <% end %>
200
+
201
+ <div class="field <%= "#{type}-row" %>">
202
+ <%= f.label :address1 %>
203
+ <%= f.text_field :address1, class: 'fullwidth' %>
204
+ </div>
205
+
206
+ <!-- Adicionado -->
207
+ <div class="field <%= "#{type}-row" %>">
208
+ <%= f.label :number, "Número" %>
209
+ <%= f.text_field :number, class: 'fullwidth' %>
210
+ </div>
211
+ <!-- ********** -->
212
+
213
+ <div class="field <%= "#{type}-row" %>">
214
+ <%= f.label :address2 %>
215
+ <%= f.text_field :address2, class: 'fullwidth' %>
216
+ </div>
217
+
218
+ <!-- Adicionado -->
219
+ <div class="field <%= "#{type}-row" %>">
220
+ <%= f.label :district, "Bairro" %>
221
+ <%= f.text_field :district, class: 'fullwidth' %>
222
+ </div>
223
+ <!-- ********** -->
224
+
225
+ <div class="field <%= "#{type}-row" %>">
226
+ <%= f.label :city %>
227
+ <%= f.text_field :city, class: 'fullwidth' %>
228
+ </div>
229
+
230
+ <div class="field <%= "#{type}-row" %>">
231
+ <%= f.label :zipcode %>
232
+ <%= f.text_field :zipcode, class: 'fullwidth' %>
233
+ </div>
234
+
235
+ <div class="field <%= "#{type}-row" %>">
236
+ <%= f.label :country_id, Spree::Country.model_name.human %>
237
+ <span id="<%= s_or_b %>country">
238
+ <%= f.collection_select :country_id, available_countries, :id, :name, {}, {class: 'custom-select fullwidth js-country_id'} %>
239
+ </span>
240
+ </div>
241
+
242
+ <div class="field <%= "#{type}-row" %>">
243
+ <%= f.label :state_id, Spree::State.model_name.human %>
244
+ <span id="<%= s_or_b %>state">
245
+ <%= f.hidden_field :state_name, value: nil %>
246
+ <% states = f.object.country.try(:states).nil? ? [] : f.object.country.states %>
247
+ <%= f.text_field :state_name,
248
+ style: "display: #{states.empty? ? 'block' : 'none' };",
249
+ disabled: !states.empty?, class: 'fullwidth state_name js-state_name' %>
250
+ <%= f.hidden_field :state_id, value: nil %>
251
+ <%= f.collection_select :state_id,
252
+ states.sort,
253
+ :id, :name,
254
+ { include_blank: true },
255
+ { class: 'custom-select fullwidth js-state_id',
256
+ style: "display: #{states.empty? ? 'none' : 'block' };",
257
+ disabled: states.empty? } %>
258
+ </span>
259
+ </div>
260
+
261
+ <div class="field <%= "#{type}-row" %>">
262
+ <%= f.label :phone %>
263
+ <%= f.phone_field :phone, class: 'fullwidth' %>
264
+ </div>
53
265
  </div>
266
+
54
267
  ```
55
268
 
56
269
  ## Development
@@ -1,5 +1,5 @@
1
1
  class AddTaxIdToSpreeOrders < ActiveRecord::Migration[7.0]
2
2
  def change
3
- add_column :spree_orders, :tax_id, :string, default: ""
3
+ add_column :spree_orders, :tax_id, :string, default: "", if_not_exists: true
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
1
  class AddNumberDistrictToAddresses < ActiveRecord::Migration[7.0]
2
2
  def change
3
- add_column :spree_addresses, :number, :string
4
- add_column :spree_addresses, :district, :string
3
+ add_column :spree_addresses, :number, :string, if_not_exists: true
4
+ add_column :spree_addresses, :district, :string, if_not_exists: true
5
5
  end
6
6
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusBrazilianAdaptations
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_brazilian_adaptations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ulysses-bull
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-12 00:00:00.000000000 Z
11
+ date: 2023-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core