show payment status in user view; Fixes #965
All checks were successful
CI/CD Pipeline / test (push) Successful in 14m34s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
Philipp Hofer 2025-04-30 23:31:17 +02:00
parent c4ed766c4d
commit d2000f4699
3 changed files with 59 additions and 10 deletions

View File

@ -41,4 +41,14 @@ impl Member {
_ => false,
}
}
pub(crate) fn supposed_to_pay(&self) -> bool {
match self {
Member::Schnupperant(_)
| Member::Scheckbuch(_)
| Member::Regular(_)
| Member::Foerdernd(_)
| Member::Unterstuetzend(_) => true,
_ => false,
}
}
}

View File

@ -127,6 +127,7 @@ async fn view(
};
let member = Member::from(db, user.clone()).await;
let fee = user.fee(db).await;
let user = UserWithRolesAndMembershipPdf::from_user(db, user).await;
@ -143,6 +144,8 @@ async fn view(
context.insert("allowed_to_edit", &allowed_to_edit);
context.insert("user", &user);
context.insert("is_clubmember", &member.is_club_member());
context.insert("supposed_to_pay", &member.supposed_to_pay());
context.insert("fee", &fee);
context.insert("member", &member);
context.insert("roles", &roles);
context.insert("families", &families);

View File

@ -63,11 +63,11 @@
{% if not role.cluster and not role.hide_in_lists %}
<li>
<strong>
{% if role.formatted_name %}
{{ role.formatted_name }}
{% else %}
{{ role.name }}
{% endif %}
{% if role.formatted_name %}
{{ role.formatted_name }}
{% else %}
{{ role.name }}
{% endif %}
</strong> {{ role.desc }}
{% if allowed_to_edit %}
<a href="/admin/user/{{ user.id }}/remove-role/{{ role.id }}"
@ -85,11 +85,14 @@
<select name="role_id">
{% for role in roles %}
{% if not role.cluster and role not in user.proper_roles and not role.hide_in_lists %}
<option value="{{ role.id }}">{% if role.formatted_name %}
{{ role.formatted_name }}
{% else %}
{{ role.name }}
{% endif %} {% if role.desc %} ({{ role.desc }}) {% endif %}</option>
<option value="{{ role.id }}">
{% if role.formatted_name %}
{{ role.formatted_name }}
{% else %}
{{ role.name }}
{% endif %}
{% if role.desc %}({{ role.desc }}){% endif %}
</option>
{% endif %}
{% endfor %}
</select>
@ -101,6 +104,39 @@
</div>
</div>
</div>
{% if supposed_to_pay %}
<div class="bg-white dark:bg-primary-900 text-black dark:text-white rounded-md block shadow mt-5"
role="alert">
<h2 class="h2">💸</h2>
<div class="mx-2 divide-y divide-gray-200 dark:divide-primary-600">
<div class="py-3">
{% if "Schnupperant" in member %}
{% if "paid" in user.roles %}
✅ Schnupperant hat schon bezahlt
{% else %}
❌ Schnupperant hat noch <b>nicht</b> bezahlt
{% endif %}
{% else %}
<div>
<strong>{{ fee.name }}</strong>
<span class="block">{{ fee.sum_in_cents / 100 }}€</span>
</div>
<div>
{% for p in fee.parts %}
{{ p.0 }} ({{ p.1 / 100 }}€)
{% if not loop.last %}+{% endif %}
{% endfor %}
</div>
{% if "paid" in user.roles %}
✅ bezahlt
{% else %}
❌ Zahlung ausständig
{% endif %}
{% endif %}
</div>
</div>
</div>
{% endif %}
{% if is_clubmember %}
<div class="bg-white dark:bg-primary-900 text-black dark:text-white rounded-md block shadow mt-5"
role="alert">