Skip to content

Commit 0682a3a

Browse files
authored
Make minimum amount env & other small change for Euros (#1165)
* Add subprovider field to users * fix lint * make the option for IBAN Configarable * Make minium amount a env variable * fix otp * code rabbit suggestions * fix otp error ressponse * fix tests * fix lint
1 parent 5a58828 commit 0682a3a

10 files changed

Lines changed: 63 additions & 27 deletions

File tree

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ CODE_CREDIT_MUTATION='0610'
4848
CODE_CASH=1000
4949
CODE_PIN=2060
5050

51+
MIN_PAYMENT_AMOUNT=21.8
52+
5153
DOCKER_PASSWORD=somethingsomething

app/javascript/payment_add.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import Vue from 'vue/dist/vue.esm';
22
import axios from 'axios';
33

4-
const MIN_PAYMENT_AMOUNT = 21.8;
5-
64
document.addEventListener('turbo:load', () => {
75
axios.defaults.headers.common['X-CSRF-Token'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
86

97
const element = document.getElementById('payment-add');
108
if (element !== null) {
9+
const minPaymentAmount = parseFloat(element.dataset.minPaymentAmount);
1110
new Vue({
1211
el: element,
1312
data: () => {
1413
return {
1514
currentCredit: parseFloat(element.dataset.userCredit),
16-
paymentAmount: parseFloat(element.dataset.paymentAmount) || MIN_PAYMENT_AMOUNT
15+
paymentAmount: parseFloat(element.dataset.paymentAmount) || minPaymentAmount,
16+
minPaymentAmount: minPaymentAmount
1717
};
1818
},
1919
computed: {
@@ -23,7 +23,7 @@ document.addEventListener('turbo:load', () => {
2323
},
2424
methods: {
2525
amountValid() {
26-
return parseFloat(this.paymentAmount) >= MIN_PAYMENT_AMOUNT;
26+
return parseFloat(this.paymentAmount) >= this.minPaymentAmount;
2727
}
2828
},
2929
});

app/mailers/user_credit_mailer.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ class UserCreditMailer < ApplicationMailer
22
def insufficient_credit_mail(user)
33
@user = user
44
@title = 'Notificatie over je saldo'
5-
@cab_link = url_for(controller: 'payments', action: 'add', resulting_credit: 20)
6-
@cab_text = 'Saldo opwaarderen naar €20'
5+
@cab_link = url_for(controller: 'payments', action: 'add', resulting_credit: Rails.application.config.x.min_payment_amount)
6+
@cab_text = "Saldo opwaarderen naar €#{Rails.application.config.x.min_payment_amount}"
77
mail to: user.email, subject: 'Verzoek met betrekking tot uw Zatladder saldo'
88
end
99

app/models/payment.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def user_xor_invoice
7777
def user_amount
7878
return unless user
7979

80-
errors.add(:amount, 'must be bigger than or equal to 20') unless amount && (amount >= 20)
80+
min_amount = Rails.application.config.x.min_payment_amount
81+
errors.add(:amount, "must be bigger than or equal to €#{format('%.2f', min_amount)}") unless amount && (amount >= min_amount)
8182
end
8283
end

app/views/layouts/mailer.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ a[x-apple-data-detectors=true] {
292292
<div align="left" class="img-container left fixedwidth " style="padding-right: 0px; padding-left: 0px;">
293293
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px;line-height:0px;"><td style="padding-right: 0px; padding-left: 0px;" align="left"><![endif]-->
294294
<a href="https://streep.csvalpha.nl" target="_blank">
295-
<img class="left fixedwidth" align="left" border="0" src="<%= image_path('/images/alphalogonotextwhite.png')%>" alt="Alpha Logo" title="Alpha Logo" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: block !important;border: none;height: auto;float: none;width: 100%;max-width: 33.4px" width="33.4">
295+
<img class="left fixedwidth" align="left" border="0" src="<%= image_path('/images/sofia.png')%>" alt="Sofia Logo" title="Sofia Logo" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: block !important;border: none;height: auto;float: none;width: 100%;max-width: 33.4px" width="33.4">
296296
</a>
297297
<!--[if mso]></td></tr></table><![endif]-->
298298
</div>

app/views/payments/add.html.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<% content_for :head do %>
33
<%= javascript_include_tag "payment_add", "data-turbo-track": "reload", defer: true %>
44
<% end %>
5-
<%= content_tag :div, id: 'payment-add', class: 'container footer-padding', data: {user_credit: @user.credit, payment_amount: @payment.amount} do %>
5+
<%= content_tag :div, id: 'payment-add', class: 'container footer-padding', data: {user_credit: @user.credit, payment_amount: @payment.amount, min_payment_amount: Rails.application.config.x.min_payment_amount} do %>
66
<div class="container footer-padding">
77
<div class="row py-4">
88
<div class="col-12">
@@ -27,7 +27,7 @@
2727

2828
<div class="col-md-4 col-sm-8 col-12 offset-md-8 offset-sm-4" v-if="!amountValid()">
2929
<div class="alert alert-danger">
30-
U heeft een incorrect getal ingevoerd. Het minimale inleg bedrag is €21,80.
30+
U heeft een incorrect getal ingevoerd. Het minimale inleg bedrag is €{{ minPaymentAmount.toFixed(2).replace('.', ',') }}.
3131
</div>
3232
</div>
3333

app/views/sofia_accounts/login.html.erb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,16 @@ async function authenticate_otp() {
119119

120120
if (contentType.includes("application/json")) {
121121
const json = await response.json();
122-
if (json.login_success) {
122+
document.querySelector("#authenticate_flash_holder").classList.add('d-none');
123+
124+
if (json.state == "logged_in") {
123125
window.location.replace(json.redirect_url);
124-
} else {
125-
// authentication code is wrong
126-
showAuthenticateFlashMessage(json.error_message);
126+
} else if (json.state == "otp_prompt") {
127+
// authentication code is wrong, stay on OTP prompt
128+
}
129+
130+
if (json.error_message) {
131+
showAuthenticateFlashMessage(json.error_message, { allowHtml: true });
127132
}
128133
} else {
129134
// Non-JSON response indicates an error

app/views/user_credit_mailer/insufficient_credit_mail.html.erb

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,47 @@
77

88
<br />
99

10-
<p style="margin: 0; font-size: 16px; line-height: 20px">
11-
U kunt uw saldo automatisch opwaarderen door op onderstaande knop te klikken.
12-
Als u zelf een bedrag wilt invoeren
13-
<%= link_to controller: 'payments', action: 'add' do %>
14-
klik dan hier.
15-
<% end %>
16-
</p>
10+
<% if Rails.application.config.x.mollie_api_key.present? && Rails.application.config.x.personal_transaction_iban.present? %>
11+
<p style="margin: 0; font-size: 16px; line-height: 20px">
12+
U kunt uw saldo aanvullen via twee manieren:
13+
</p>
1714

18-
<br />
15+
<br />
1916

20-
<p style="margin: 0; font-size: 16px; line-height: 20px">
21-
Uw saldo aanvullen kan ook door het geld over te maken naar <span style="white-space: nowrap;"><%= Rails.application.config.x.company_iban %></span>
22-
ten name van <%= Rails.application.config.x.company_name %> onder vermelding van je naam en
23-
'inleg zatladder'. Hiermee kan het echter enkele dagen duren voordat het saldo op uw account staat
24-
</p>
17+
<p style="margin: 0; font-size: 16px; line-height: 20px">
18+
<strong>Optie 1 - iDEAL:</strong> U kunt uw saldo automatisch opwaarderen door op onderstaande knop te klikken.
19+
Als u zelf een bedrag wilt invoeren
20+
<%= link_to controller: 'payments', action: 'add' do %>
21+
klik dan hier.
22+
<% end %>
23+
</p>
24+
25+
<br />
26+
27+
<p style="margin: 0; font-size: 16px; line-height: 20px">
28+
<strong>Optie 2 - Overschrijving:</strong> Uw saldo aanvullen kan ook door het geld over te maken naar <span style="white-space: nowrap;"><%= Rails.application.config.x.personal_transaction_iban %></span>
29+
ten name van <%= Rails.application.config.x.company_name %> onder vermelding van je naam en
30+
'inleg zatladder'. Hiermee kan het echter enkele dagen duren voordat het saldo op uw account staat
31+
</p>
32+
<% elsif Rails.application.config.x.mollie_api_key.present? %>
33+
<p style="margin: 0; font-size: 16px; line-height: 20px">
34+
U kunt uw saldo automatisch opwaarderen door op onderstaande knop te klikken.
35+
Als u zelf een bedrag wilt invoeren
36+
<%= link_to controller: 'payments', action: 'add' do %>
37+
klik dan hier.
38+
<% end %>
39+
</p>
40+
<% elsif Rails.application.config.x.personal_transaction_iban.present? %>
41+
<p style="margin: 0; font-size: 16px; line-height: 20px">
42+
Uw saldo aanvullen kan door het geld over te maken naar <span style="white-space: nowrap;"><%= Rails.application.config.x.personal_transaction_iban %></span>
43+
ten name van <%= Rails.application.config.x.company_name %> onder vermelding van je naam en
44+
'inleg zatladder'. Hiermee kan het echter enkele dagen duren voordat het saldo op uw account staat
45+
</p>
46+
<% else %>
47+
<p style="margin: 0; font-size: 16px; line-height: 20px">
48+
Er is geen betaalmethode geconfigureerd om uw saldo aan te vullen. Neem contact op met de penningmeester.
49+
</p>
50+
<% end %>
2551

2652
<p>
2753
Mocht u meer details willen, of van mening zijn dat uw saldo

config/application.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ class Application < Rails::Application
7676
config.x.site_long_name = ENV.fetch('SITE_LONG_NAME', 'Streepsysteem voor de Ordentelijke Festiviteiten van Inleggend Alpha')
7777
config.x.site_association = ENV.fetch('SITE_ASSOCIATION', 'C.S.V. Alpha')
7878

79+
config.x.min_payment_amount = [ENV.fetch('MIN_PAYMENT_AMOUNT', '21.8').to_f, 0.01].max
80+
7981
config.x.codes = {
8082
beer: ENV.fetch('CODE_BEER', nil),
8183
low_alcohol_beer: ENV.fetch('CODE_LOW_ALCOHOL_BEER', nil),

public/images/sofia.png

32.3 KB
Loading

0 commit comments

Comments
 (0)