solidus_tiny 1.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 +7 -0
- data/.circleci/config.yml +53 -0
- data/.gem_release.yml +5 -0
- data/.github/stale.yml +1 -0
- data/.github_changelog_generator +2 -0
- data/.gitignore +21 -0
- data/.rspec +2 -0
- data/.rubocop.yml +5 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +48 -0
- data/LICENSE +26 -0
- data/README.md +73 -0
- data/Rakefile +7 -0
- data/app/controllers/spree/admin/orders/solidus_tiny/sellers_controller.rb +38 -0
- data/app/controllers/spree/admin/solidus_tiny/accounts_controller.rb +82 -0
- data/app/controllers/spree/admin/solidus_tiny/orders_controller.rb +20 -0
- data/app/jobs/solidus_tiny/application_job.rb +9 -0
- data/app/jobs/solidus_tiny/order_job.rb +10 -0
- data/app/jobs/solidus_tiny/upsert_sellers_job.rb +9 -0
- data/app/models/solidus_tiny/account.rb +8 -0
- data/app/models/solidus_tiny/event.rb +4 -0
- data/app/models/solidus_tiny/order.rb +129 -0
- data/app/models/solidus_tiny/payment_method.rb +4 -0
- data/app/models/solidus_tiny/seller.rb +44 -0
- data/app/models/solidus_tiny/shipping_method.rb +10 -0
- data/app/models/spree/permission_sets/tiny_seller_update.rb +9 -0
- data/app/subscribers/solidus_tiny/subscriber.rb +12 -0
- data/app/views/spree/admin/orders/solidus_tiny/sellers/edit.html.erb +19 -0
- data/app/views/spree/admin/shared/_order_submenu.html.erb +67 -0
- data/app/views/spree/admin/shared/_order_summary.html.erb +75 -0
- data/app/views/spree/admin/solidus_tiny/accounts/_form.html.erb +110 -0
- data/app/views/spree/admin/solidus_tiny/accounts/edit.html.erb +3 -0
- data/app/views/spree/admin/solidus_tiny/accounts/index.html.erb +54 -0
- data/app/views/spree/admin/solidus_tiny/accounts/new.html.erb +3 -0
- data/bin/console +17 -0
- data/bin/rails +7 -0
- data/bin/rails-engine +13 -0
- data/bin/rails-sandbox +16 -0
- data/bin/rake +7 -0
- data/bin/sandbox +76 -0
- data/bin/setup +8 -0
- data/config/locales/en.yml +5 -0
- data/config/locales/pt-BR.yml +5 -0
- data/config/routes.rb +17 -0
- data/db/migrate/20240506185512_create_solidus_tiny_accounts.rb +11 -0
- data/db/migrate/20240507111938_create_solidus_tiny_sellers.rb +15 -0
- data/db/migrate/20240507112822_add_solidus_tiny_seller_id_to_orders.rb +5 -0
- data/db/migrate/20240507114823_create_solidus_tiny_shipping_methods.rb +15 -0
- data/db/migrate/20240507121424_create_solidus_tiny_payment_methods.rb +13 -0
- data/db/migrate/20240507181649_add_tiny_order_id_to_spree_orders.rb +5 -0
- data/db/migrate/20240507190528_create_solidus_tiny_events.rb +13 -0
- data/lib/generators/solidus_tiny/install/install_generator.rb +31 -0
- data/lib/generators/solidus_tiny/install/templates/initializer.rb +4 -0
- data/lib/solidus_tiny/configuration.rb +18 -0
- data/lib/solidus_tiny/engine.rb +38 -0
- data/lib/solidus_tiny/testing_support/factories.rb +4 -0
- data/lib/solidus_tiny/version.rb +5 -0
- data/lib/solidus_tiny.rb +7 -0
- data/solidus_tiny.gemspec +36 -0
- metadata +182 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
<%= render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Vendedor' } %>
|
2
|
+
|
3
|
+
<% admin_breadcrumb("Vendedor") %>
|
4
|
+
|
5
|
+
<div data-order-number="<%= @order.number %>">
|
6
|
+
<div>
|
7
|
+
<fieldset class="no-border-bottom">
|
8
|
+
<legend>Vendedor</legend>
|
9
|
+
<%= form_with model: @order, url: admin_orders_solidus_tiny_update_seller_path(@order) do |form| %>
|
10
|
+
<%= form.select :seller_id, @sellers.pluck(:name, :id), { selected: @order.solidus_tiny_seller_id || @sellers.default&.id }, class:"custom-select fullwidth" %>
|
11
|
+
<div class="form-buttons filter-actions actions" data-hook="buttons">
|
12
|
+
<%= form.submit t('spree.actions.update'), class: 'btn btn-primary mt-4' %>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
</fieldset>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %>
|
19
|
+
</div>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<nav>
|
2
|
+
<ul class="tabs" data-hook="admin_order_tabs">
|
3
|
+
<% if (@order.shipments.count == 0 || @order.shipped_shipments.count == 0) %>
|
4
|
+
<li class="<%= "active" if current == "Cart" %>" data-hook='admin_order_tabs_order_details'>
|
5
|
+
<%= link_to t('spree.cart'), spree.cart_admin_order_url(@order) %>
|
6
|
+
</li>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% if checkout_steps.include?("address") %>
|
10
|
+
<li class="<%= "active" if (current == "Customer Details") %>" data-hook='admin_order_tabs_customer_details'>
|
11
|
+
<% if can?(:update, @order) %>
|
12
|
+
<%= link_to t('spree.customer'), spree.edit_admin_order_customer_url(@order) %>
|
13
|
+
<% else %>
|
14
|
+
<%= link_to t('spree.customer'), spree.admin_order_customer_url(@order) %>
|
15
|
+
<% end %>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<li class="<%= "active" if current == "Vendedor" %>" data-hook='admin_order_tabs_order_details'>
|
20
|
+
<%= link_to "Vendedor", admin_orders_solidus_tiny_seller_path(@order) %>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<li class="<%= "active" if current == "Shipments" %>" data-hook='admin_order_tabs_order_details'>
|
24
|
+
<%= link_to plural_resource_name(Spree::Shipment), spree.edit_admin_order_url(@order) %>
|
25
|
+
</li>
|
26
|
+
|
27
|
+
<% if can? :show, Spree::Adjustment %>
|
28
|
+
<li class="<%= "active" if current == "Adjustments" %>" data-hook='admin_order_tabs_adjustments'>
|
29
|
+
<%= link_to plural_resource_name(Spree::Adjustment), spree.admin_order_adjustments_url(@order) %>
|
30
|
+
</li>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<% if can?(:show, Spree::Payment) %>
|
34
|
+
<li class="<%= "active" if current == "Payments" %>" data-hook='admin_order_tabs_payments'>
|
35
|
+
<%= link_to plural_resource_name(Spree::Payment), spree.admin_order_payments_url(@order) %>
|
36
|
+
</li>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if !@order.completed? && can?(:update, @order) %>
|
40
|
+
<li class="<%= "active" if current == "Confirm" %>" data-hook='admin_order_tabs_confirm'>
|
41
|
+
<%= link_to t('spree.confirm'), spree.confirm_admin_order_url(@order) %>
|
42
|
+
</li>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<% if can? :show, Spree::ReturnAuthorization %>
|
46
|
+
<% if @order.completed? %>
|
47
|
+
<li class="tab <%= "active" if current == "Return Authorizations" %>" data-hook='admin_order_tabs_return_authorizations'>
|
48
|
+
<%= link_to t('spree.admin.tab.rma'), spree.admin_order_return_authorizations_url(@order) %>
|
49
|
+
</li>
|
50
|
+
<% end %>
|
51
|
+
<% end %>
|
52
|
+
|
53
|
+
<% if can? :show, Spree::CustomerReturn %>
|
54
|
+
<% if @order.completed? %>
|
55
|
+
<li class="<%= "active" if current == "Customer Returns" %>" data-hook='admin_order_tabs_customer_returns'>
|
56
|
+
<%= link_to plural_resource_name(Spree::CustomerReturn), spree.admin_order_customer_returns_url(@order) %>
|
57
|
+
</li>
|
58
|
+
<% end %>
|
59
|
+
<% end %>
|
60
|
+
|
61
|
+
<% if can?(:manage, Spree::OrderCancellations) && @order.inventory_units.cancelable.present? %>
|
62
|
+
<li class="<%= "active" if current == "Cancel Inventory" %>" data-hook='admin_order_tabs_cancel_inventory'>
|
63
|
+
<%= link_to t('spree.cancel_inventory'), spree.admin_order_cancellations_path(@order) %>
|
64
|
+
</li>
|
65
|
+
<% end %>
|
66
|
+
</ul>
|
67
|
+
</nav>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
|
2
|
+
<header id="order_tab_summary" data-hook>
|
3
|
+
<dl class="additional-info">
|
4
|
+
<dt class="order-state" id="order_status" data-hook><%= t('spree.status') %>:</dt>
|
5
|
+
<dd class="order-state">
|
6
|
+
<span class="pill pill-<%= @order.state %>">
|
7
|
+
<%= t(@order.state, scope: 'spree.order_state') %>
|
8
|
+
</span>
|
9
|
+
|
10
|
+
<% if @order.user.present? %>
|
11
|
+
<dt data-hook='admin_order_user_link'><%= t('spree.user') %>:</dt>
|
12
|
+
<dd id='order_user_link'><%= link_to @order.user.email, spree.edit_admin_user_path(@order.user) %></dd>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<dt data-hook='admin_order_tab_subtotal_title'><%= Spree::Order.human_attribute_name(:item_total) %>:</dt>
|
16
|
+
<dd id='item_total'><%= @order.display_item_total.to_html %></dd>
|
17
|
+
|
18
|
+
<% if checkout_steps.include?("delivery") %>
|
19
|
+
<dt class="order-shipment_total <%= "hidden" if @order.ship_total.zero? %>" data-hook='admin_order_tab_ship_total_title'><%= Spree::Order.human_attribute_name(:shipment_total) %>:</dt>
|
20
|
+
<dd class="order-shipment_total <%= "hidden" if @order.ship_total.zero? %>" id='ship_total'><%= @order.display_ship_total.to_html %></dd>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<dt class="order-included_tax_total <%= "hidden" if @order.included_tax_total.zero? %>" data-hook='admin_order_tab_included_tax_title'><%= Spree::Order.human_attribute_name(:included_tax_total) %>:</dt>
|
24
|
+
<dd class="order-included_tax_total <%= "hidden" if @order.included_tax_total.zero? %>" id='included_tax_total'><%= @order.display_included_tax_total.to_html %></dd>
|
25
|
+
|
26
|
+
<dt class="order-additional_tax_total <%= "hidden" if @order.additional_tax_total.zero? %>" data-hook='admin_order_tab_additional_tax_title'><%= Spree::Order.human_attribute_name(:additional_tax_total) %>:</dt>
|
27
|
+
<dd class="order-additional_tax_total <%= "hidden" if @order.additional_tax_total.zero? %>" id='additional_tax_total'><%= @order.display_additional_tax_total.to_html %></dd>
|
28
|
+
|
29
|
+
<dt data-hook='admin_order_tab_total_title'><%= Spree::Order.human_attribute_name(:total) %>:</dt>
|
30
|
+
<dd id='order_total'><%= @order.display_total.to_html %></dd>
|
31
|
+
|
32
|
+
<% if @order.shipment_state %>
|
33
|
+
<dt class="order-shipment_state"><%= Spree::Shipment.model_name.human %>: </dt>
|
34
|
+
<dd class="order-shipment_state" id='shipment_status'>
|
35
|
+
<span class="pill pill-<%= @order.shipment_state %>">
|
36
|
+
<%= t(@order.shipment_state, scope: 'spree.shipment_states') %>
|
37
|
+
</span>
|
38
|
+
</dd>
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
<% if @order.payment_state %>
|
42
|
+
<dt class="order-payment_state"><%= Spree::Payment.model_name.human %>: </dt>
|
43
|
+
<dd class="order-payment_state" id='payment_status'>
|
44
|
+
<span class="pill pill-<%= @order.payment_state %>">
|
45
|
+
<%= t(@order.payment_state, scope: 'spree.payment_states') %>
|
46
|
+
</span>
|
47
|
+
</dd>
|
48
|
+
<% end %>
|
49
|
+
|
50
|
+
<% if @order.completed? %>
|
51
|
+
<dt data-hook='admin_order_tab_date_completed_title'><%= Spree::Order.human_attribute_name(:completed_at) %>:</dt>
|
52
|
+
<dd id='date_complete'><%= pretty_time(@order.completed_at) %></dd>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<% if @order.approved? %>
|
56
|
+
<dt><%= Spree::Order.human_attribute_name(:approver) %></dt>
|
57
|
+
<dd><%= @order.approver.try(:email) || @order.approver_name %></dd>
|
58
|
+
<dt><%= Spree::Order.human_attribute_name(:approved_at) %></dt>
|
59
|
+
<dd><%= pretty_time(@order.approved_at) %></dd>
|
60
|
+
<% end %>
|
61
|
+
|
62
|
+
<% if @order.canceled? && @order.canceler && @order.canceled_at %>
|
63
|
+
<dt><%= Spree::Order.human_attribute_name(:canceler) %></dt>
|
64
|
+
<dd><%= @order.canceler.email %></dd>
|
65
|
+
<dt><%= Spree::Order.human_attribute_name(:canceled_at) %></dt>
|
66
|
+
<dd><%= pretty_time(@order.canceled_at) %></dd>
|
67
|
+
<% end %>
|
68
|
+
|
69
|
+
<% if @order.solidus_tiny_seller_id %>
|
70
|
+
<dt data-hook='admin_order_tab_seller_title'>Vendedor:</dt>
|
71
|
+
<dd id='seller'><%= ::SolidusTiny::Seller.find_by(id: @order.solidus_tiny_seller_id).name %></dd>
|
72
|
+
<% end %>
|
73
|
+
</dl>
|
74
|
+
|
75
|
+
</header>
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<%= form_with model: tiny_account, url: form_url do |form| %>
|
2
|
+
<fieldset class="no-border-top">
|
3
|
+
<legend>
|
4
|
+
Dados da Conta
|
5
|
+
</legend>
|
6
|
+
<div class="row">
|
7
|
+
<div class="col-12">
|
8
|
+
<%= form.field_container :api_key do %>
|
9
|
+
<%= form.label :api_key, "API Key", class: 'required' %>
|
10
|
+
<%= form.text_field :api_key, required: true, class: 'fullwidth' %>
|
11
|
+
<%= form.error_message_on :api_key %>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
14
|
+
<div class="col-md-6 col-12">
|
15
|
+
<%= form.field_container :stock_location do %>
|
16
|
+
<%= form.label :stock_location, "Depósito", class: 'required' %>
|
17
|
+
<%= form.text_field :stock_location, required: true, class: 'fullwidth' %>
|
18
|
+
<%= form.error_message_on :stock_location %>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
<div class="col-md-6 col-12">
|
22
|
+
<%= form.field_container :operation_id do %>
|
23
|
+
<%= form.label :operation_id, "ID Natureza de Operação", class: 'required' %>
|
24
|
+
<%= form.text_field :operation_id, required: true, class: 'fullwidth' %>
|
25
|
+
<%= form.error_message_on :operation_id %>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</fieldset>
|
30
|
+
|
31
|
+
<fieldset id="payment_methods" class="no-border-top">
|
32
|
+
<legend>
|
33
|
+
Métodos de Pagamento
|
34
|
+
</legend>
|
35
|
+
<%= form.fields_for :payment_methods do |payment_form| %>
|
36
|
+
<div class="row">
|
37
|
+
<div class="col-12 col-md-6">
|
38
|
+
<div class="field">
|
39
|
+
<%= payment_form.label :spree_payment_method_id, "Método de Pagamento", class: 'required' %>
|
40
|
+
<%= payment_form.select :spree_payment_method_id, @payment_methods, {}, { class: "custom-select fullwidth" } %>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
<div class="col-12 col-md-6">
|
44
|
+
<div class="field">
|
45
|
+
<%= payment_form.label :alias, "Nome da Forma de Pagamento", class: 'required' %>
|
46
|
+
<%= payment_form.text_field :alias, required: true, class:"fullwidth" %>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
<% end %>
|
51
|
+
</fieldset>
|
52
|
+
|
53
|
+
<fieldset class="no-border-top">
|
54
|
+
<legend>
|
55
|
+
Métodos de Envio
|
56
|
+
</legend>
|
57
|
+
<%= form.fields_for :shipping_methods do |ship_form| %>
|
58
|
+
<div class="row">
|
59
|
+
<div class="col-12 col-md-3">
|
60
|
+
<div class="field">
|
61
|
+
<%= ship_form.label :spree_shipping_method_id, "Método de Envio", class: 'required' %>
|
62
|
+
<%= ship_form.select :spree_shipping_method_id, @shipping_methods, {}, { class: "custom-select fullwidth" } %>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<div class="col-12 col-md-3">
|
66
|
+
<div class="field">
|
67
|
+
<%= ship_form.label :name, "Nome da Logística", class: 'required' %>
|
68
|
+
<%= ship_form.text_field :name, required: true, class:"fullwidth" %>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
<div class="col-12 col-md-3">
|
72
|
+
<div class="field">
|
73
|
+
<%= ship_form.label :service, "Serviço", class: 'required' %>
|
74
|
+
<%= ship_form.text_field :service, required: true, class:"fullwidth" %>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
<div class="col-12 col-md-3">
|
78
|
+
<div class="field">
|
79
|
+
<%= ship_form.label :company, "Nome Transportadora", class: 'required' %>
|
80
|
+
<%= ship_form.text_field :company, required: true, class:"fullwidth" %>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
<% end %>
|
85
|
+
</fieldset>
|
86
|
+
|
87
|
+
<% if @sellers %>
|
88
|
+
<fieldset class="no-border-top text-center">
|
89
|
+
<legend>
|
90
|
+
Vendedor padrão
|
91
|
+
</legend>
|
92
|
+
<div class="field">
|
93
|
+
<%= form.label "default_seller[id]", "Vendedor Padrão", class: '' %>
|
94
|
+
<%= form.select "default_seller[id]", @sellers, {selected: ::SolidusTiny::Seller.default&.id, include_blank: true }, { class: "custom-select fullwidth" } %>
|
95
|
+
</div>
|
96
|
+
</fieldset>
|
97
|
+
<% end %>
|
98
|
+
|
99
|
+
<div class="form-buttons filter-actions actions" data-hook="buttons">
|
100
|
+
<%= form.submit "Salvar", class: 'btn btn-primary' %>
|
101
|
+
<% if params["action"] == 'edit' %>
|
102
|
+
<%= link_to "Excluir", admin_solidus_tiny_account_path(tiny_account.id), method: :delete, data: { confirm: "Tem certeza que deseja excluir a conta?"}, class: 'button' %>
|
103
|
+
<% end %>
|
104
|
+
</div>
|
105
|
+
<% end %>
|
106
|
+
|
107
|
+
|
108
|
+
<script>
|
109
|
+
|
110
|
+
</script>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
|
2
|
+
<% admin_layout "full-width" %>
|
3
|
+
|
4
|
+
<% admin_breadcrumb("Tiny") %>
|
5
|
+
|
6
|
+
<% content_for :page_actions do %>
|
7
|
+
<% if SolidusTiny::Account.count < 1 %>
|
8
|
+
<li>
|
9
|
+
<%= link_to "Nova Conta", new_admin_solidus_tiny_account_path, class: 'btn btn-primary' %>
|
10
|
+
</li>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="content-wrapper">
|
15
|
+
<% @accounts.each do |account| %>
|
16
|
+
|
17
|
+
<fieldset class="no-border-top">
|
18
|
+
<legend>
|
19
|
+
Dados da Conta
|
20
|
+
</legend>
|
21
|
+
<div class="row">
|
22
|
+
|
23
|
+
<div class="col-12">
|
24
|
+
<div class="field">
|
25
|
+
<%= label_tag :api_key, "API Key" %>
|
26
|
+
<%= text_field_tag :api_key, account.api_key, class:"fullwidth", disabled: true %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="col-md-6 col-12">
|
30
|
+
<div class="field">
|
31
|
+
<%= label_tag :stock_location, "Depósito" %>
|
32
|
+
<%= text_field_tag :stock_location, account.stock_location, class:"fullwidth", disabled: true %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="col-md-6 col-12">
|
36
|
+
<div class="field">
|
37
|
+
<%= label_tag :operation_id, "ID Natureza de Operação" %>
|
38
|
+
<%= text_field_tag :operation_id, account.operation_id, class:"fullwidth", disabled: true %>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
<div class="field">
|
44
|
+
<%= button_to "Atualizar vendedores", upsert_sellers_admin_solidus_tiny_accounts_path %>
|
45
|
+
</div>
|
46
|
+
</fieldset>
|
47
|
+
|
48
|
+
<div class="form-buttons filter-actions actions" data-hook="buttons">
|
49
|
+
<%= link_to "Editar", edit_admin_solidus_tiny_account_path(account.id), class: 'btn btn-primary' %>
|
50
|
+
<%= link_to "Excluir", admin_solidus_tiny_account_path(account.id), method: :delete, data: { confirm: "Tem certeza que deseja excluir a conta?"}, class: 'button' %>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
54
|
+
|
data/bin/console
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require "bundler/setup"
|
6
|
+
require "solidus_tiny"
|
7
|
+
|
8
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
9
|
+
# with your gem easier. You can also use a different console, if you like.
|
10
|
+
$LOAD_PATH.unshift(*Dir["#{__dir__}/../app/*"])
|
11
|
+
|
12
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
13
|
+
# require "pry"
|
14
|
+
# Pry.start
|
15
|
+
|
16
|
+
require "irb"
|
17
|
+
IRB.start(__FILE__)
|
data/bin/rails
ADDED
data/bin/rails-engine
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
+
# installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_ROOT = File.expand_path('..', __dir__)
|
6
|
+
ENGINE_PATH = File.expand_path('../lib/solidus_tiny/engine', __dir__)
|
7
|
+
|
8
|
+
# Set up gems listed in the Gemfile.
|
9
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
10
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
11
|
+
|
12
|
+
require 'rails/all'
|
13
|
+
require 'rails/engine/commands'
|
data/bin/rails-sandbox
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
app_root = 'sandbox'
|
4
|
+
|
5
|
+
unless File.exist? "#{app_root}/bin/rails"
|
6
|
+
warn 'Creating the sandbox app...'
|
7
|
+
Dir.chdir "#{__dir__}/.." do
|
8
|
+
system "#{__dir__}/sandbox" or begin
|
9
|
+
warn 'Automatic creation of the sandbox app failed'
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Dir.chdir app_root
|
16
|
+
exec 'bin/rails', *ARGV
|
data/bin/rake
ADDED
data/bin/sandbox
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
test -z "${DEBUG+empty_string}" || set -x
|
5
|
+
|
6
|
+
test "$DB" = "sqlite" && export DB="sqlite3"
|
7
|
+
|
8
|
+
if [ -z "$PAYMENT_METHOD" ]
|
9
|
+
then
|
10
|
+
PAYMENT_METHOD="none"
|
11
|
+
fi
|
12
|
+
|
13
|
+
if [ -z "$SOLIDUS_BRANCH" ]
|
14
|
+
then
|
15
|
+
echo "~~> Use 'export SOLIDUS_BRANCH=[main|v4.0|...]' to control the Solidus branch"
|
16
|
+
SOLIDUS_BRANCH="main"
|
17
|
+
fi
|
18
|
+
echo "~~> Using branch $SOLIDUS_BRANCH of solidus"
|
19
|
+
|
20
|
+
extension_name="solidus_tiny"
|
21
|
+
|
22
|
+
# Stay away from the bundler env of the containing extension.
|
23
|
+
function unbundled {
|
24
|
+
ruby -rbundler -e'
|
25
|
+
Bundler.with_unbundled_env {system *ARGV}' -- \
|
26
|
+
env BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES=true $@
|
27
|
+
}
|
28
|
+
|
29
|
+
echo "~~~> Removing the old sandbox"
|
30
|
+
rm -rf ./sandbox
|
31
|
+
|
32
|
+
echo "~~~> Creating a pristine Rails app"
|
33
|
+
rails new sandbox \
|
34
|
+
--database="${DB:-sqlite3}" \
|
35
|
+
--skip-git \
|
36
|
+
--skip-keeps \
|
37
|
+
--skip-rc \
|
38
|
+
--skip-bootsnap \
|
39
|
+
--skip-test
|
40
|
+
|
41
|
+
if [ ! -d "sandbox" ]; then
|
42
|
+
echo 'sandbox rails application failed'
|
43
|
+
exit 1
|
44
|
+
fi
|
45
|
+
|
46
|
+
echo "~~~> Adding solidus (with i18n) to the Gemfile"
|
47
|
+
cd ./sandbox
|
48
|
+
cat <<RUBY >> Gemfile
|
49
|
+
gem 'solidus', github: 'solidusio/solidus', branch: '$SOLIDUS_BRANCH'
|
50
|
+
gem 'rails-i18n'
|
51
|
+
gem 'solidus_i18n'
|
52
|
+
gem 'solidus_auth_devise'
|
53
|
+
|
54
|
+
gem '$extension_name', path: '..'
|
55
|
+
|
56
|
+
group :test, :development do
|
57
|
+
platforms :mri do
|
58
|
+
gem 'pry-byebug'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
RUBY
|
62
|
+
|
63
|
+
unbundled bundle install --gemfile Gemfile
|
64
|
+
|
65
|
+
unbundled bundle exec rake db:drop db:create
|
66
|
+
|
67
|
+
unbundled bundle exec rails generate solidus:install \
|
68
|
+
--auto-accept \
|
69
|
+
$@
|
70
|
+
|
71
|
+
unbundled bundle exec rails generate solidus:auth:install --auto-run-migrations
|
72
|
+
unbundled bundle exec rails generate ${extension_name}:install --auto-run-migrations
|
73
|
+
|
74
|
+
echo
|
75
|
+
echo "🚀 Sandbox app successfully created for $extension_name!"
|
76
|
+
echo "🧪 This app is intended for test purposes."
|
data/bin/setup
ADDED
data/config/routes.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
Spree::Core::Engine.routes.draw do
|
2
|
+
namespace :admin do
|
3
|
+
namespace :orders do
|
4
|
+
namespace :solidus_tiny do
|
5
|
+
get "/:order_number/sellers", controller: "sellers", action: "edit", as: :seller
|
6
|
+
patch "/:order_number/sellers", controller: "sellers", action: "update", as: :update_seller
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :solidus_tiny do
|
11
|
+
resources :accounts do
|
12
|
+
post "upsert_sellers", on: :collection
|
13
|
+
end
|
14
|
+
resources :orders, only: [:update]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSolidusTinySellers < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :solidus_tiny_sellers do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :external_id
|
6
|
+
t.integer :account_id, null: false, index: true
|
7
|
+
t.boolean :default, default: false
|
8
|
+
t.boolean :active, default: true
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :solidus_tiny_sellers, :external_id, unique: true
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSolidusTinyShippingMethods < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :solidus_tiny_shipping_methods do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :service
|
6
|
+
t.string :company
|
7
|
+
t.integer :account_id, null: false, index: { name: "solidus_tiny_shipping_account_index" }
|
8
|
+
t.integer :spree_shipping_method_id, null: false, index: { name: "solidus_tiny_spree_shipping_index" }
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
|
12
|
+
t.foreign_key :spree_shipping_methods, column: :spree_shipping_method_id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateSolidusTinyPaymentMethods < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :solidus_tiny_payment_methods do |t|
|
4
|
+
t.string :alias
|
5
|
+
t.integer :account_id, null: false, index: true
|
6
|
+
t.integer :spree_payment_method_id, null: false, index: true
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
|
10
|
+
t.foreign_key :spree_payment_methods, column: :spree_payment_method_id
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusTiny
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
7
|
+
source_root File.expand_path('templates', __dir__)
|
8
|
+
|
9
|
+
def self.exit_on_failure?
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_initializer
|
14
|
+
template 'initializer.rb', 'config/initializers/solidus_tiny.rb'
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_migrations
|
18
|
+
run 'bin/rails railties:install:migrations FROM=solidus_tiny'
|
19
|
+
end
|
20
|
+
|
21
|
+
def run_migrations
|
22
|
+
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Layout/LineLength
|
23
|
+
if run_migrations
|
24
|
+
run 'bin/rails db:migrate'
|
25
|
+
else
|
26
|
+
puts 'Skipping bin/rails db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|