ba_spree_bank_transfer 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.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +6 -0
  6. data/Gemfile +19 -0
  7. data/LICENSE +26 -0
  8. data/README.md +110 -0
  9. data/Rakefile +15 -0
  10. data/Versionfile +7 -0
  11. data/app/assets/images/payment_details.png +0 -0
  12. data/app/assets/javascripts/spree/backend/spree_bank_transfer.js +0 -0
  13. data/app/assets/javascripts/spree/frontend/spree_bank_transfer.js.erb +37 -0
  14. data/app/assets/stylesheets/spree/backend/spree_bank_transfer.css +0 -0
  15. data/app/assets/stylesheets/spree/frontend/spree_bank_transfer.css +9 -0
  16. data/app/controllers/spree/admin/banks_controller.rb +13 -0
  17. data/app/controllers/spree/content_controller_decorator.rb +8 -0
  18. data/app/controllers/spree/payments_controller.rb +35 -0
  19. data/app/helpers/.DS_Store +0 -0
  20. data/app/helpers/spree/.DS_Store +0 -0
  21. data/app/helpers/spree/admin/banks_helper.rb +19 -0
  22. data/app/models/.DS_Store +0 -0
  23. data/app/models/spree/.DS_Store +0 -0
  24. data/app/models/spree/bank.rb +8 -0
  25. data/app/models/spree/order_decorator.rb +3 -0
  26. data/app/models/spree/payment_decorator.rb +40 -0
  27. data/app/models/spree/payment_method/bank_transfer.rb +48 -0
  28. data/app/overrides/add_bank_details_form_to_order_show.rb +6 -0
  29. data/app/overrides/add_bank_transfer_instructions_link_to_payment.rb +10 -0
  30. data/app/overrides/add_payment_reference_details.rb +32 -0
  31. data/app/overrides/filter_results_by_transaction_reference_no.rb +17 -0
  32. data/app/views/.DS_Store +0 -0
  33. data/app/views/spree/admin/banks/_form.html.erb +26 -0
  34. data/app/views/spree/admin/banks/edit.html.erb +14 -0
  35. data/app/views/spree/admin/banks/index.html.erb +48 -0
  36. data/app/views/spree/admin/banks/new.html.erb +17 -0
  37. data/app/views/spree/admin/banks/toggle_activation.js.erb +10 -0
  38. data/app/views/spree/admin/payments/source_forms/_banktransfer.html.erb +0 -0
  39. data/app/views/spree/admin/payments/source_views/_banktransfer.html.erb +0 -0
  40. data/app/views/spree/checkout/.DS_Store +0 -0
  41. data/app/views/spree/checkout/payment/_banktransfer.html.erb +16 -0
  42. data/app/views/spree/content/bank_transfer.html.erb +38 -0
  43. data/app/views/spree/orders/_bank_transfer_form.html.erb +40 -0
  44. data/ba_spree_bank_transfer.gemspec +39 -0
  45. data/bin/rails +6 -0
  46. data/config/locales/en.yml +25 -0
  47. data/config/locales/it.yml +24 -0
  48. data/config/locales/ja.yml +25 -0
  49. data/config/locales/pl.yml +24 -0
  50. data/config/locales/pt.yml +24 -0
  51. data/config/locales/th.yml +27 -0
  52. data/config/routes.rb +10 -0
  53. data/db/migrate/20130717071443_create_table_bank.rb +11 -0
  54. data/db/migrate/20130717125312_add_index_on_active_on_spree_bank.rb +5 -0
  55. data/db/migrate/20140519125402_add_bank_name_account_number_and_transaction_reference_number_to_payments.rb +7 -0
  56. data/db/migrate/20140530055151_add_column_deposited_on_to_spree_payments.rb +5 -0
  57. data/db/migrate/20140612131656_add_col_additional_details_to_banks.rb +5 -0
  58. data/lib/ba_spree_bank_transfer.rb +6 -0
  59. data/lib/generators/spree_bank_transfer/.DS_Store +0 -0
  60. data/lib/generators/spree_bank_transfer/install/install_generator.rb +30 -0
  61. data/lib/payment_details.rb +21 -0
  62. data/lib/spree_bank_transfer/engine.rb +40 -0
  63. data/lib/spree_bank_transfer/version.rb +3 -0
  64. data/spec/controllers/spree/admin/banks_controller_spec.rb +82 -0
  65. data/spec/controllers/spree/content_controller_spec.rb +16 -0
  66. data/spec/controllers/spree/payments_controller_spec.rb +98 -0
  67. data/spec/lib/payment_details_spec.rb +84 -0
  68. data/spec/models/spree/bank_spec.rb +19 -0
  69. data/spec/models/spree/payment_method/bank_transfer_spec.rb +114 -0
  70. data/spec/models/spree/payment_spec.rb +81 -0
  71. data/spec/models/spree/user_spec.rb +5 -0
  72. data/spec/spec_helper.rb +98 -0
  73. metadata +321 -0
@@ -0,0 +1,10 @@
1
+ <% if @success %>
2
+ $('#active-status-<%= @bank.id %>').text('<%= bank_status(@bank) %>')
3
+ <% action_class = @bank.active ? "btn-danger" : "btn-success" %>
4
+ <% btn_class = "btn " + action_class + " btn-sm" %>
5
+ <% status = @bank.active ? "active" : "inactive" %>
6
+ <% bank_id = "bank-" + @bank[:id].to_s %>
7
+ $('#toggle-status-<%= @bank.id %>').html('<%= link_to_with_icon(action_text_to_toggle_bank_status(@bank), action_to_toggle_bank_status(@bank), toggle_activation_admin_bank_path(@bank), {class: btn_class, id: bank_id, rel: status, remote: true, method: :put}) %>')
8
+ <% else %>
9
+ alert('<%= @bank.errors.full_messages.to_sentence %>')
10
+ <% end %>
Binary file
@@ -0,0 +1,16 @@
1
+ <% if (banks = Spree::Bank.active).present? %>
2
+ <table class="table index">
3
+ <tr>
4
+ <th><%= Spree.t(:bank_name) %></th>
5
+ <th><%= Spree.t(:account_no) %></th>
6
+ <th><%= Spree.t(:additional_details) %></th>
7
+ </tr>
8
+ <% banks.each do |bank| %>
9
+ <tr>
10
+ <td><%= bank.name %></td>
11
+ <td><%= bank.account_no %></td>
12
+ <td><%= bank.additional_details %></td>
13
+ </tr>
14
+ <% end %>
15
+ </table>
16
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <div class="container mt-4 pb-3">
2
+ <h1 class="text-center h2">วิธีการชำระเงินโดยวิธี "โอนเงินผ่านธนาคาร"</h3>
3
+ <h4><strong>ขั้นตอนการแจ้งชำระเงิน:</strong></h4>
4
+ <ol>
5
+ <li>ชำระเงินเต็มจำนวนตามคำสั่งซื้อ ตามบัญชีธนาคารข้างล่าง
6
+ <% if (banks = Spree::Bank.active).any? %>
7
+ <div class="w-75">
8
+ <table class="table table-bordered">
9
+ <tr class="table-active">
10
+ <th><%= Spree.t(:bank_name) %></th>
11
+ <th><%= Spree.t(:account_no) %></th>
12
+ <th><%= Spree.t(:additional_details) %></th>
13
+ </tr>
14
+ <% banks.each do |bank| %>
15
+ <tr>
16
+ <td><%= bank.name %></td>
17
+ <td><%= bank.account_no %></td>
18
+ <td><%= bank.additional_details %></td>
19
+ </tr>
20
+ <% end %>
21
+ </table>
22
+ </div>
23
+ <% end %>
24
+ </li>
25
+ <li>แนบหลักฐานการโอนเงินผ่านระบบ
26
+ <ol>
27
+ <li>ไปยัง "บัญชีของฉัน" page.</li>
28
+ <li>เลือก คำสั่งซื้อ</li>
29
+ <li>คลิก "แนบหลักฐานการชำระเงิน"</li>
30
+ <li>กรอกข้อมูล และกด ยืนยัน</li>
31
+ </ol>
32
+ </li>
33
+ </ol>
34
+
35
+ <div class="w-100">
36
+ <%= image_tag 'payment_details.png', class: "w-75 img-thumbnail" %>
37
+ </div>
38
+ </div>
@@ -0,0 +1,40 @@
1
+ <% bank_transfer_payment = @order.payments.from_bank_transfer.first %>
2
+ <% if bank_transfer_payment.present? %>
3
+ <% unless bank_transfer_payment.details_submitted? %>
4
+ <br>
5
+ <%= link_to Spree.t(:add_details), "javascript:void(0);", class: 'button add_bt_details' %>
6
+ <%= form_for bank_transfer_payment, html: { class: "bt_payment_form", style: "#{bank_transfer_payment.details_submitted? ? '' : 'display:none;'}" } do |f| %>
7
+ <div class="row mx-0 my-3">
8
+ <div class="form-group col-12 px-0">
9
+ <%= f.label Spree.t(:deposited_on), class: 'mb-0' %>
10
+ <%= f.text_field :deposited_on, disabled: bank_transfer_payment.details_submitted?, class: 'required_field form-control form-control-sm' %>
11
+ </div>
12
+ <br>
13
+ <div class="form-group col-12 px-0">
14
+ <%= f.label Spree.t(:bank_name), class: 'mb-0' %>
15
+ <%= f.select :bank_name, options_for_select(Spree::Bank.pluck(:name)), {}, {disabled: bank_transfer_payment.details_submitted?, class: 'required_field form-control form-control-sm'} %>
16
+ </div>
17
+ <br>
18
+ <div class="form-group col-12 px-0">
19
+ <%= f.label Spree.t(:receipt), class: 'mb-0' %>
20
+ <%= f.file_field :receipt, disabled: bank_transfer_payment.details_submitted?, class: 'required_field form-control-file' %>
21
+ </div>
22
+ <br>
23
+ <div class="col-12 px-0">
24
+ <% unless bank_transfer_payment.details_submitted? %>
25
+ <%= f.submit "Submit", confirm: Spree.t(:confirm_details_submit), class: "btn btn-success btn-block btn-sm" %>
26
+ <% end %>
27
+ </div>
28
+ </div>
29
+ <% end %>
30
+ <% else %>
31
+ <div class="my-3">
32
+ <p class="text-success font-weight-bold mb-0">
33
+ <i class="fas fa-check-circle"></i> <%= Spree.t(:bank_transfer_completed) %>
34
+ </p>
35
+ <p class="mb-0"><%= Spree.t(:deposited_on) %>: <%= bank_transfer_payment.deposited_on.strftime("%d/%m/%Y") %></p>
36
+ <p class="mb-0"><%= Spree.t(:bank_name) %>: <%= bank_transfer_payment.bank_name %></p>
37
+ <a href="<%= main_app.url_for(bank_transfer_payment.receipt) %>" target="_blank"><%= Spree.t(:view_receipt) %></a>
38
+ </div>
39
+ <% end %>
40
+ <% end %>
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'spree_bank_transfer/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.platform = Gem::Platform::RUBY
8
+ s.name = 'ba_spree_bank_transfer'
9
+ s.version = SpreeBankTransfer::VERSION
10
+ s.summary = 'Spree extension to create bank transfer payment method. (be agile fork)'
11
+ s.description = 'This Spree extension provides bank transfer payment method functionality. Compatible with Ruby 3.1, Rails 7.1 and Spree 4.10.'
12
+ s.required_ruby_version = '>= 3.1.4'
13
+
14
+ s.author = 'be agile Co., Ltd.'
15
+ s.email = 'develop@be-agile.jp'
16
+ s.homepage = 'https://github.com/be-agile/ba_spree_bank_transfer'
17
+ s.licenses = ['AGPL-3.0-or-later', 'BSD-3-Clause']
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- spec/*`.split("\n")
21
+ s.require_path = 'lib'
22
+ s.requirements << 'none'
23
+
24
+ s.add_dependency 'spree_core', '>= 4.10.0'
25
+ s.add_dependency 'spree_backend', '>= 4.8.0'
26
+ s.add_dependency 'spree_frontend', '>= 4.8.0'
27
+ s.add_dependency 'spree_extension', '>= 0.1.0'
28
+ s.add_dependency 'deface', '~> 1.0'
29
+ s.add_dependency 'jquery-rails', ' ~> 4.6.0'
30
+ s.add_dependency 'jquery-ui-rails', ' ~> 6.0.1'
31
+
32
+ s.add_development_dependency "bundler"
33
+ s.add_development_dependency "rake"
34
+ s.add_development_dependency 'sass-rails'
35
+ s.add_development_dependency 'coffee-rails'
36
+ s.add_development_dependency 'sqlite3'
37
+ s.add_development_dependency 'mysql2'
38
+ s.add_development_dependency 'pg'
39
+ end
data/bin/rails ADDED
@@ -0,0 +1,6 @@
1
+
2
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
3
+ ENGINE_PATH = File.expand_path('../../lib/spree_bank_transfer/engine', __FILE__)
4
+
5
+ require 'rails/all'
6
+ require 'rails/engine/commands'
@@ -0,0 +1,25 @@
1
+ en:
2
+ spree:
3
+ account_no: Account No
4
+ add_details: Add details
5
+ additional_details: Additional Details
6
+ back_to_banks_list: Back to Banks list
7
+ banks: Banks
8
+ bank_name: Bank Name
9
+ confirm_details_submit: Are you sure you want to Submit these details? You will not be able to Edit these details once Submitted. Press 'OK' to confirm.
10
+ deactivate: Deactivate
11
+ deposited_on: Deposited on
12
+ how_bank_transfer_works: How Bank Transfer works?
13
+ listing_banks: Listing Banks
14
+ new_bank: New Bank
15
+ only_show_orders_with_bank_transfer_payment_reference_number: Only show orders with bank transfer payment reference number
16
+ payment_not_found: Payment not found
17
+ payment_successfully_updated: Payment successfully updated
18
+ payment_reference_details: Bank Transfer Payment Reference Details
19
+ transaction_reference_no: Transaction Reference No
20
+ receipt: "Receipt"
21
+ activerecord:
22
+ models:
23
+ spree/bank:
24
+ one: Bank
25
+ other: Banks
@@ -0,0 +1,24 @@
1
+ it:
2
+ spree:
3
+ account_no: Numero Conto
4
+ add_details: Aggiungi dettagli
5
+ additional_details: Dettagli aggiuntivi
6
+ back_to_banks_list: Torna alla lista Banche
7
+ banks: Banche
8
+ bank_name: Nome Banca
9
+ confirm_details_submit: Sei sicuro di voler inserire i dettagli? Non sarà possibile modificarli successivamente. Premi 'OK' per confermare.
10
+ deactivate: Disattiva
11
+ deposited_on: Vresato il
12
+ how_bank_transfer_works: Come funziona il Bonifico Bancario?
13
+ listing_banks: Lista Banche
14
+ new_bank: Nuova Banca
15
+ only_show_orders_with_bank_transfer_payment_reference_number: Visualiza solo ordini con numero transazione bonifico
16
+ payment_not_found: Pagamento non trovato
17
+ payment_successfully_updated: Pagamento aggiornato con successo
18
+ payment_reference_details: Dettagli pagamento
19
+ transaction_reference_no: Numero transazione
20
+ activerecord:
21
+ models:
22
+ spree/bank:
23
+ one: Banca
24
+ other: Banche
@@ -0,0 +1,25 @@
1
+ ja:
2
+ spree:
3
+ account_no: 口座番号
4
+ add_details: 詳細を追加
5
+ additional_details: 追加詳細
6
+ back_to_banks_list: 銀行一覧に戻る
7
+ banks: 銀行
8
+ bank_name: 銀行名
9
+ confirm_details_submit: これらの詳細を送信してもよろしいですか?送信後は編集できなくなります。「OK」を押して確認してください。
10
+ deactivate: 無効化
11
+ deposited_on: 入金日
12
+ how_bank_transfer_works: 銀行振込について
13
+ listing_banks: 銀行一覧
14
+ new_bank: 新規銀行
15
+ only_show_orders_with_bank_transfer_payment_reference_number: 銀行振込の支払い参照番号がある注文のみ表示
16
+ payment_not_found: 支払いが見つかりません
17
+ payment_successfully_updated: 支払いが正常に更新されました
18
+ payment_reference_details: 銀行振込支払い参照詳細
19
+ transaction_reference_no: 取引参照番号
20
+ receipt: "領収書"
21
+ activerecord:
22
+ models:
23
+ spree/bank:
24
+ one: 銀行
25
+ other: 銀行
@@ -0,0 +1,24 @@
1
+ pl:
2
+ spree:
3
+ account_no: Numer konta
4
+ add_details: Szczegóły
5
+ additional_details: Dodatkowe informacje
6
+ back_to_banks_list: Wróć do listy banków
7
+ banks: Banki
8
+ bank_name: Nazwa banku
9
+ confirm_details_submit: Czy jestes pewien że chcesz dodać te informacje ? Jeśli potwierdzisz te informacje, nie będziesz upoważniony by je zmienić w czasie późniejszym. Raz dodane nie będą mogły być zmienione. Wciśnij "OK" aby potwierdzić.
10
+ deactivate: Deaktywacja
11
+ deposited_on: Depozyt
12
+ how_bank_transfer_works: Jak działa przelew bankowy ?
13
+ listing_banks: Lista banków
14
+ new_bank: Nowy bank
15
+ only_show_orders_with_bank_transfer_payment_reference_number: Pokaż tylko zlecenia z numerem referencyjnym przelewu
16
+ payment_not_found: Płatnośc nie została odnotowana
17
+ payment_successfully_updated: Płatność potwierdzona
18
+ payment_reference_details: Szczegoły przelewu bankowego
19
+ transaction_reference_no: Numer referencyjny transakcji
20
+ activerecord:
21
+ models:
22
+ spree/bank:
23
+ one: Bank
24
+ other: Banki
@@ -0,0 +1,24 @@
1
+ pt:
2
+ spree:
3
+ account_no: N.º Conta
4
+ add_details: Adicionar detalhes
5
+ additional_details: Detalhes Adicionais
6
+ back_to_banks_list: Voltar à lista de Bancos
7
+ banks: Bancos
8
+ bank_name: Nome do Banco
9
+ confirm_details_submit: Tem a certeza que pretende submeter estes detalhes? Não será possível editar estes detalhes após envio. Confirme escolhendo "OK".
10
+ deactivate: Desactivar
11
+ deposited_on: Depositado em
12
+ how_bank_transfer_works: Como funciona a Transferência Bancária?
13
+ listing_banks: A listar Bancos
14
+ new_bank: Novo Banco
15
+ only_show_orders_with_bank_transfer_payment_reference_number: Mostrar apenas encomendas pagas por Transferência Bancária
16
+ payment_not_found: Pagamento não encontrado
17
+ payment_successfully_updated: Pagamento actualizado com sucesso
18
+ payment_reference_details: Detalhes de Pagamento por Transferência Bancária
19
+ transaction_reference_no: N.º da Transacção Bancária
20
+ activerecord:
21
+ models:
22
+ spree/bank:
23
+ one: Banco
24
+ other: Bancos
@@ -0,0 +1,27 @@
1
+ en:
2
+ spree:
3
+ account_no: เลขบัญชี
4
+ add_details: แนบสลิป
5
+ additional_details: รายละเอียดเพิ่มเติม
6
+ back_to_banks_list: กลับไปยังรายการธนาคาร
7
+ banks: กลับไปยังรายการธนาคาร
8
+ bank_name: ชื่อธนาคาร
9
+ confirm_details_submit: Are you sure you want to Submit these details? You will not be able to Edit these details once Submitted. Press 'OK' to confirm.
10
+ deactivate: ปิดการใช้งาน
11
+ deposited_on: วันที่โอนเงิน
12
+ how_bank_transfer_works: วิธีการชำระเงินโดยวิธี "โอนเงินผ่านธนาคาร"
13
+ listing_banks: รายการธนาคาร
14
+ new_bank: เพิ่มธนาคาร
15
+ only_show_orders_with_bank_transfer_payment_reference_number: Only show orders with bank transfer payment reference number
16
+ payment_not_found: ไม่พบการชำระเงิน
17
+ payment_successfully_updated: แนบหลักฐานการชำระเงินสำเร็จ
18
+ payment_reference_details: Bank Transfer Payment Reference Details
19
+ transaction_reference_no: Transaction Reference No
20
+ receipt: "ใบเสร็จ"
21
+ view_receipt: "ดูใบเสร็จ"
22
+ bank_transfer_completed: แจ้งชำระเงินเรียบร้อยแล้ว
23
+ activerecord:
24
+ models:
25
+ spree/bank:
26
+ one: ธนาคาร
27
+ other: ธนาคาร
data/config/routes.rb ADDED
@@ -0,0 +1,10 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ namespace :admin do
4
+ resources :banks, except: [:show, :destroy] do
5
+ put :toggle_activation, on: :member
6
+ end
7
+ end
8
+ resources :payments, only: :update
9
+ get '/content/bank_transfer', to: 'content#bank_transfer', as: :bank_transfer_instructions
10
+ end
@@ -0,0 +1,11 @@
1
+ class CreateTableBank < SpreeExtension::Migration[4.2]
2
+ def change
3
+ create_table :spree_banks do |t|
4
+ t.string :name
5
+ t.string :account_no
6
+ t.boolean :active, default: true
7
+ t.timestamps
8
+ end
9
+ add_index :spree_banks, [:name, :account_no], unique: true
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddIndexOnActiveOnSpreeBank < SpreeExtension::Migration[4.2]
2
+ def change
3
+ add_index :spree_banks, :active
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddBankNameAccountNumberAndTransactionReferenceNumberToPayments < SpreeExtension::Migration[4.2]
2
+ def change
3
+ add_column :spree_payments, :bank_name, :string
4
+ add_column :spree_payments, :account_no, :string
5
+ add_column :spree_payments, :transaction_reference_no, :string
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class AddColumnDepositedOnToSpreePayments < SpreeExtension::Migration[4.2]
2
+ def change
3
+ add_column :spree_payments, :deposited_on, :date
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddColAdditionalDetailsToBanks < SpreeExtension::Migration[4.2]
2
+ def change
3
+ add_column :spree_banks, :additional_details, :text
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ require 'spree_core'
2
+ require 'rails/generators'
3
+ require 'spree_bank_transfer/engine'
4
+ require 'spree_bank_transfer/version'
5
+ require 'spree_extension'
6
+ require 'deface'
@@ -0,0 +1,30 @@
1
+ module SpreeBankTransfer
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+
5
+ class_option :auto_run_migrations, type: :boolean, default: true
6
+
7
+ def add_javascripts
8
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "\n//= require spree/frontend/spree_bank_transfer\n"
9
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "\n//= require spree/backend/spree_bank_transfer\n"
10
+ end
11
+
12
+ def add_stylesheets
13
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_bank_transfer\n", before: /\*\//, verbose: true
14
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_bank_transfer\n", before: /\*\//, verbose: true
15
+ end
16
+
17
+ def add_migrations
18
+ run 'bundle exec rake railties:install:migrations FROM=spree_bank_transfer'
19
+ end
20
+
21
+ def run_migrations
22
+ if options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
23
+ run 'bundle exec rake db:migrate'
24
+ else
25
+ puts "Skiping rake db:migrate, don't forget to run it!"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ class PaymentDetails
2
+ attr_accessor :payment, :errors, :params
3
+
4
+ def initialize(payment, params)
5
+ self.payment = payment
6
+ self.params = params
7
+ self.errors = []
8
+ end
9
+
10
+ def save
11
+ if payment.details_submitted?
12
+ errors << "Payment Details can be submitted only once."
13
+ else
14
+ payment.validate_bank_details = true
15
+ unless payment.update_attributes(params)
16
+ errors << payment.errors.full_messages.to_sentence
17
+ end
18
+ end
19
+ errors.empty?
20
+ end
21
+ end
@@ -0,0 +1,40 @@
1
+ module SpreeBankTransfer
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace SpreeBankTransfer
5
+ engine_name 'spree_bank_transfer'
6
+
7
+ config.autoload_paths += %W[#{config.root}/lib]
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
16
+ Rails.configuration.cache_classes ? require(c) : load(c)
17
+ end
18
+ Spree.user_class.class_eval do
19
+ has_many :payments, through: :orders
20
+ end
21
+ end
22
+
23
+ initializer 'spree_bank_transfer.autoloader' do |app|
24
+ if Rails.autoloaders.zeitwerk_enabled?
25
+ Rails.autoloaders.main.ignore("#{root}/app/overrides")
26
+ end
27
+ end
28
+
29
+ config.after_initialize do
30
+ Rails.application.config.spree.payment_methods << Spree::PaymentMethod::BankTransfer
31
+ settings = Rails.application.config.spree_backend.main_menu.items.find { |item| item.key == "settings" }
32
+ settings.items << Spree::Admin::MainMenu::ItemBuilder.new('banks', Spree::Core::Engine.routes.url_helpers.admin_banks_path).
33
+ with_match_path('/banks').
34
+ with_manage_ability_check(Spree::Bank).
35
+ build
36
+ end
37
+
38
+ config.to_prepare(&method(:activate).to_proc)
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module SpreeBankTransfer
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Admin::BanksController, type: :controller do
4
+
5
+ let(:role) { Spree::Role.create!(name: 'user') }
6
+ let(:roles) { [role] }
7
+
8
+ before(:each) do
9
+ @user = mock_model(Spree::User, :generate_spree_api_key! => false)
10
+ allow(@user).to receive_message_chain(:roles, :includes).and_return([])
11
+ allow(@user).to receive(:has_spree_role?).with('admin').and_return(true)
12
+ allow(controller).to receive(:spree_user_signed_in?).and_return(true)
13
+ allow(controller).to receive(:spree_current_user).and_return(@user)
14
+ allow(@user).to receive(:roles).and_return(roles)
15
+ allow(roles).to receive(:includes).with(:permissions).and_return(roles)
16
+ allow(controller).to receive(:authorize_admin).and_return(true)
17
+ allow(controller).to receive(:authorize!).and_return(true)
18
+ end
19
+
20
+ describe "GET index" do
21
+ before(:each) do
22
+ @bank1 = mock_model(Spree::Bank)
23
+ allow(Spree::Bank).to receive(:page).and_return([@bank1])
24
+ end
25
+
26
+ def send_request
27
+ get :index
28
+
29
+
30
+
31
+ end
32
+
33
+ it "assigns @banks" do
34
+ send_request
35
+ expect(assigns(:banks)).to eq([@bank1])
36
+ end
37
+
38
+ it "paginates banks" do
39
+ expect(Spree::Bank).to receive(:page)
40
+ send_request
41
+ end
42
+
43
+ it "renders index template" do
44
+ send_request
45
+ expect(response).to render_template(:index)
46
+ end
47
+ end
48
+
49
+ describe "PUT toggle_activation" do
50
+ before(:each) do
51
+ @bank = mock_model(Spree::Bank, :toggle! => true)
52
+ allow(Spree::Bank).to receive(:find).with("1").and_return(@bank)
53
+ end
54
+
55
+ def send_request
56
+ put :toggle_activation, id: "1", format: :js
57
+ end
58
+
59
+ it "toggles activation status of bank" do
60
+ expect(@bank).to receive(:toggle!).with(:active)
61
+ send_request
62
+ end
63
+
64
+ context "when activation status toggled successfully" do
65
+ it "sets @success to true" do
66
+ send_request
67
+ expect(assigns(:success)).to be true
68
+ end
69
+ end
70
+
71
+ context "when activation status not toggled successfully" do
72
+ before(:each) do
73
+ allow(@bank).to receive(:toggle!).and_return(false)
74
+ end
75
+
76
+ it "sets @success to false" do
77
+ send_request
78
+ expect(assigns(:success)).to be false
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::ContentController, type: :controller do
4
+ before do
5
+ allow(controller).to receive(:authenticate_spree_user!).and_return(true)
6
+ @user = mock_model(Spree::User, :generate_spree_api_key! => false, last_incomplete_spree_order: nil)
7
+ allow(controller).to receive(:spree_current_user).and_return(@user)
8
+ end
9
+
10
+ describe "GET bank_transfer" do
11
+ it "renders bank_transfer" do
12
+ get :bank_transfer
13
+ expect(response).to render_template("bank_transfer")
14
+ end
15
+ end
16
+ end