concrexit issueshttps://gitlab.science.ru.nl/thalia/concrexit/-/issues2020-03-09T17:59:50+01:00https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1013Prevent payment cancellation when payment in batch2020-03-09T17:59:50+01:00Job DoesburgPrevent payment cancellation when payment in batch### One-sentence description
Prevent payment cancellation / changes when payment in batch
### Why?
When a payment is added to a payment batch (#932), it must stay in there and may not be changed or deleted anymore.
### Current implem...### One-sentence description
Prevent payment cancellation / changes when payment in batch
### Why?
When a payment is added to a payment batch (#932), it must stay in there and may not be changed or deleted anymore.
### Current implementation
This might be possible
### Suggested implementationhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/977Remove obsolete permissions2019-12-04T21:29:10+01:00Sébastiaan VersteegRemove obsolete permissions### One-sentence description
Remove obsolete permissions that are left from removed things
### Why?
They're obsolete!
### Current implementation
We have the sentry backend, access to the board wiki and soon the nextcloud admin permi...### One-sentence description
Remove obsolete permissions that are left from removed things
### Why?
They're obsolete!
### Current implementation
We have the sentry backend, access to the board wiki and soon the nextcloud admin permissions.
### Suggested implementation
Should be removed.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/961Remove Payment type None2020-03-09T17:59:50+01:00Job DoesburgRemove Payment type None<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### One-sentence description
Remove Payment type None
### Why?
It is weird to have payment objects for payments that not yet have taken place. It makes much more sense to just have no payment then.
### Current implementation
For registrations, we now make payments for every accepted registration, and change the type when it really is paid.
### Suggested implementation
Make a payment object upon payment.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1017Remove redundant html templates from `/thaliawebsite/templates/singlepages/`2020-03-13T16:29:15+01:00Job DoesburgRemove redundant html templates from `/thaliawebsite/templates/singlepages/`<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### One-sentence description
Remove redundant html templates from `/thaliawebsite/templates/singlepages/`
### Why?
They are redundant, since they are also in `/singlepages/templates` and these are the ones that are used.
### Current implementation
It appears as if the translations are still in `/thaliawebsite` though, so it would probably be nice to move these.
### Suggested implementationMarthijn van den NieuwenhuizenMarthijn van den Nieuwenhuizenhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1021Replace Docker image used by Renovate2020-02-28T12:09:51+01:00Joren VranckenReplace Docker image used by Renovate### One-sentence description
Replace Docker image used by Renovate.
### Why?
Apparently Renovate still uses [`thalia/python-thalia`](https://hub.docker.com/r/thalia/python-thalia). `thalia/python-thalia` is outdated and not automaticall...### One-sentence description
Replace Docker image used by Renovate.
### Why?
Apparently Renovate still uses [`thalia/python-thalia`](https://hub.docker.com/r/thalia/python-thalia). `thalia/python-thalia` is outdated and not automatically updated.
### Suggested implementation
Either [`renovate/python`](https://hub.docker.com/r/renovate/python) or [`thalia/concrexit-dependencies`](https://hub.docker.com/r/thalia/concrexit-dependencies).https://gitlab.science.ru.nl/thalia/concrexit/-/issues/310Set is_staff to False for old board members2019-09-11T20:14:01+02:00Joost Rijneveldjoost@joostrijneveld.nlSet is_staff to False for old board members### One-sentence description
Set is_staff to False for old board members
### Why?
This follows from the dicussion in !335 but it is not clear how and if this should be solved.
This issue was created so that we could think about this a...### One-sentence description
Set is_staff to False for old board members
### Why?
This follows from the dicussion in !335 but it is not clear how and if this should be solved.
This issue was created so that we could think about this and discuss this with everyone.
### Current implementation
`is_staff` is set to True for everyone who becomes a board member and is never set to False because board memberships don't end. This is also the reason why committee membership end dates cannot be in the future, since it sets `is_staff` to False if applicable.
### Desired implementation
Do nothing
or
Set it to False using a Celery task or cronjob for examplehttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/632Thalia Pay2019-10-03T16:58:43+02:00Aucke BosThalia PayThis is the general overview issue for Thalia Pay. The work has been split in multiple subissues that all begin with 'Thalia Pay'
### One-sentence description
Members can pay for things by keeping a tab using their account.
### Desire...This is the general overview issue for Thalia Pay. The work has been split in multiple subissues that all begin with 'Thalia Pay'
### One-sentence description
Members can pay for things by keeping a tab using their account.
### Desired behaviour
A member has a virtual wallet with a maximum balance of 0 euro. This wallet can be used to pay for things.
Once a member registers for an event or orders a pizza an option will appear to pay using the wallet. Such a payment is registered in the ~payments app. The amount of the payment will be deducted from the wallet.
At the end of the month all the payments of that month will be collected by direct debit.
Before these direct debits can take place we need to collect information from members:
- Bank account
- Initials and last name of the bank account holder
- The member has to sign a SEPA mandate
Then the treasurer has to be able to create an export that contains all the information for a direct debit. The overview only has to contain members that made a payment. It should have the following fields:
- Relationnumber
- First name
- Last name
- IBAN
- Initials + last name of holder
- Amount
- Overview of all payments in this row
The treasurer will send a mail before the direct debit will be executed. But an overview in the frontend of the website would be desirable.
---
## What has been done
- The Payment model introduced in !533 was moved to it's own app in !704.
- The event payments were refactored to use the Payment model in !1112.
- We're syncing member information and mandates to Conscribo, first introduced in !1132.
- The pizza payments were refactored to use the Payment model in !1225.
- We added digital SEPA mandates in !1241.
- We added a user-facing payment overview in !1350.
## What we should do next
Mostly taken from https://gitlab.science.ru.nl/thalia/concrexit/issues/632#note_74956 and responses.
1. Add a direct debit payment method to the payment model. (#930)
2. Export payment batches for ING (the bank). (#931)
- Need to determine the format with the treasurer.
- We can do this by adding extra payment actions to the ~payments admin that only exports payments marked for direct-debit.
- The selection for which time the payments are exported can already be selected using Django's built-in date filter.
- The mandate 'last used' field should be updated upon export of the payments.
3. Export financial information that can be imported to Conscribo.
- Need to determine the format with the treasurer.
- We can do this by adding extra payment actions to the ~payments.
4. We should investigate how we are going to notify members of an upcoming direct debit.
- Could be on export noted in (1).
5. Add an option to ~events for users to mark their registration as paid using direct debit.
- Do not forget the app.
- Needs check for a valid mandate.
6. Add an option to ~pizzas for users to mark their order as paid using direct debit.
- See (5).Sébastiaan VersteegSébastiaan Versteeghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/938Thalia Pay: Add an option to membership registrations to pay with Thalia Pay2019-11-27T17:01:11+01:00Job DoesburgThalia Pay: Add an option to membership registrations to pay with Thalia Pay<!--
You want something new.
-->
### One-sentence description
Add an option to membership renewals and registrations to pay with Thalia Pay
### Motivation
Everyone wants to do this via Thalia Pay remotely!
### Desired functiona...<!--
You want something new.
-->
### One-sentence description
Add an option to membership renewals and registrations to pay with Thalia Pay
### Motivation
Everyone wants to do this via Thalia Pay remotely!
### Desired functionality
During registration (or after registration is approved, which is easier to build but less user friendly) people should have the possibility to immediately add a bank account and select payment via Thalia Pay.
### Suggested implementationhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/939Thalia Pay: Add an option to membership renewals to pay with Thalia Pay2020-03-12T00:18:27+01:00Job DoesburgThalia Pay: Add an option to membership renewals to pay with Thalia Pay<!--
You want something new.
-->
### One-sentence description
Add an option to membership renewals to pay with Thalia Pay
### Motivation
Because everyone wants to pay their contribution remotely via Thalia Pay and not come to a ...<!--
You want something new.
-->
### One-sentence description
Add an option to membership renewals to pay with Thalia Pay
### Motivation
Because everyone wants to pay their contribution remotely via Thalia Pay and not come to a bbq
### Desired functionality
Just a 'Pay with Thalia Pay' button while requesting membership renewal (if a bank account is added, otherwise show a message that if they do add a bank account they can pay with Thalia Pay).
### Suggested implementationJob DoesburgJob Doesburghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/951Thalia Pay: Add user-instructions for activating in bankaccounts2019-11-03T20:34:15+01:00Job DoesburgThalia Pay: Add user-instructions for activating in bankaccounts### One-sentence description
Add information about Thalia Pay to bankaccounts
### Motivation
People should know what Thalia Pay is and how to activate it.
### Desired functionality
Something about that if you sign a direct debit, it...### One-sentence description
Add information about Thalia Pay to bankaccounts
### Motivation
People should know what Thalia Pay is and how to activate it.
### Desired functionality
Something about that if you sign a direct debit, it will be used for Thalia Pay etc.
### Suggested implementation
Maybe ask the board? Or just come up with something ourselves. It should not be too extensive in my opinion, just something short.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/944Thalia Pay: also enable late-cancellation fines to happen with Thalia Pay2019-11-27T17:00:39+01:00Job DoesburgThalia Pay: also enable late-cancellation fines to happen with Thalia Pay### One-sentence description
Also enable late-cancellation fines to happen with Thalia Pay
### Motivation
Because it is weird to do let this happen via invoices if people normally can pay with Thalia Pay
### Desired functionality
Cu...### One-sentence description
Also enable late-cancellation fines to happen with Thalia Pay
### Motivation
Because it is weird to do let this happen via invoices if people normally can pay with Thalia Pay
### Desired functionality
Currently if somebody wants has said to pay with Thalia Pay, but cancels, we delete the payment.
After the event, the treasurer should be able to determine the real amount of the fine and have some action available to add TPAY payments for everyone that was too late and deserves a fine (now we will probably need to reopen #821 heheheheh)
### Suggested implementationhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/932Thalia Pay: Export financial information that can be imported to Conscribo2020-02-12T20:41:09+01:00Sébastiaan VersteegThalia Pay: Export financial information that can be imported to Conscribo### One-sentence description
Export financial information that can be imported to Conscribo
### Motivation
Because we want to introduce Thalia Pay (#632)
### Desired functionality
Have an option to export financial payment informati...### One-sentence description
Export financial information that can be imported to Conscribo
### Motivation
Because we want to introduce Thalia Pay (#632)
### Desired functionality
Have an option to export financial payment information that can be imported in Conscribo. We currently have an export option but the use format cannot be used with Conscribo. If we add the format Conscribo wants the work to process direct debits (which might be a lot) will be decreased a lot.
### Suggested implementation
- Need to determine the format with the treasurer.
- We can do this by adding extra payment actions to the ~payments.Luko van der MaasLuko van der Maashttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/931Thalia Pay: Export payment batches for ING2020-02-12T20:39:14+01:00Sébastiaan VersteegThalia Pay: Export payment batches for INGSubtask of #632, partially blocked by #930.
### One-sentence description
Export payment batches for ING for #632.
### Motivation
Because we want Thalia Pay (#632).
### Desired functionality
Export option for payment batches in the ...Subtask of #632, partially blocked by #930.
### One-sentence description
Export payment batches for ING for #632.
### Motivation
Because we want Thalia Pay (#632).
### Desired functionality
Export option for payment batches in the right format. These batches can be used to execute a direct debit batch.
### Suggested implementation
- Need to determine the format with the treasurer.
- We can do this by adding extra payment actions to the ~payments admin that only exports payments marked for direct-debit (#930).
- The selection for which time the payments are exported can already be selected using Django's built-in date filter.
- The mandate 'last used' field should be updated upon export of the payments.Luko van der MaasLuko van der Maashttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/943Thalia Pay: Only allow revocation of mandates if all payments were processed2020-03-09T17:59:50+01:00Job DoesburgThalia Pay: Only allow revocation of mandates if all payments were processed### One-sentence description
Only allow revocation of mandates if all Thalia Pay payments were processed (the batch were all payments are in should be processed)
### Motivation
Because legally from the moment a mandate is revoked, we ...### One-sentence description
Only allow revocation of mandates if all Thalia Pay payments were processed (the batch were all payments are in should be processed)
### Motivation
Because legally from the moment a mandate is revoked, we cannot use it anymore. And users of course cannot revoke their mandate if they still have open amounts (or actually they can, but then the treasurer should be notified of this and discuss with that person he/she should pay another way - I suggest we do not add that flow in the website).
### Desired functionality
When a user tries to revoke a mandate, but there are still Thalia Pay payments in batches that are not fully processed yet, the user should receive a message that he/she should contact the board by email to revoke the mandate because there are still open amounts to be paid.
### Suggested implementationhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1011Use create_payment everywhere2020-03-09T17:59:50+01:00Job DoesburgUse create_payment everywhere### One-sentence description
Use create_payment (from #1010 ) everywhere where we use payments
### Why?
Prevent code duplication
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested implementation
Make models P...### One-sentence description
Use create_payment (from #1010 ) everywhere where we use payments
### Why?
Prevent code duplication
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested implementation
Make models Payable (implement the interface / abstract class from #1010) and use `create_payment` as the only way to interact with / create payments.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/976Use html email template for all emails we send2020-02-19T21:13:30+01:00Job DoesburgUse html email template for all emails we send### One-sentence description
Use html email template for all emails we send
### Why?
It looks nice
### Current implementation
We only send plaintext mails, except for the information check emails
### Suggested implementation
Use t...### One-sentence description
Use html email template for all emails we send
### Why?
It looks nice
### Current implementation
We only send plaintext mails, except for the information check emails
### Suggested implementation
Use the information check email templatehttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/885ValidationError when saving completed membership registration2020-03-04T17:07:01+01:00Thalia TechnicieValidationError when saving completed membership registration
### One-sentence description
<!-- What breaks -->
### Current behaviour / Reproducing the bug
Click save while observing a completed registration.
Sentry Issue: [CONCREXIT-4](https://sentry.io/organizations/thalia/issues/1057927495/...
### One-sentence description
<!-- What breaks -->
### Current behaviour / Reproducing the bug
Click save while observing a completed registration.
Sentry Issue: [CONCREXIT-4](https://sentry.io/organizations/thalia/issues/1057927495/?referrer=gitlab_integration)
```
ValueError: 'RegistrationForm' has no field named 'email'.
(14 additional frame(s) were not displayed)
...
File "django/forms/forms.py", line 180, in errors
self.full_clean()
File "django/forms/forms.py", line 383, in full_clean
self._post_clean()
File "django/forms/models.py", line 405, in _post_clean
self._update_errors(e)
File "django/forms/models.py", line 379, in _update_errors
self.add_error(None, errors)
File "django/forms/forms.py", line 353, in add_error
"'%s' has no field named '%s'." % (self.__class__.__name__, field))
ValidationError: {'email': ['A user with that email address already exists. Login using the existing account and renew the membership by visiting the account settings.'], 'student_number': ['A user with that student number already exists. Login using the existing account and renew the membership by visiting the account settings.'], 'username': ['A user with that username already exists.']}
File "django/forms/models.py", line 403, in _post_clean
self.instance.full_clean(exclude=exclude, validate_unique=False)
File "django/db/models/base.py", line 1152, in full_clean
raise ValidationError(errors)
```
### Expected behaviour
No crash, maybe even no save button available.
https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1025ValueError: day is out of range for month2020-03-04T20:22:40+01:00Thalia TechnicieValueError: day is out of range for monthSentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)
```
ValueError: day is out of range for month
(11 additional frame(s) were not displayed)
...
File "rest_framework/ser...Sentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)
```
ValueError: day is out of range for month
(11 additional frame(s) were not displayed)
...
File "rest_framework/serializers.py", line 260, in data
self._data = self.to_representation(self.instance)
File "rest_framework/serializers.py", line 529, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "rest_framework/fields.py", line 1905, in to_representation
return method(value)
File "members/api/serializers.py", line 93, in _achievements
return member_achievements(instance.user)
File "members/services.py", line 72, in member_achievements
earliest = earliest.replace(year=earliest.year + mentor_year.year)
```Marie SimonMarie Simonhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/593Warn the organiser when the maximum number of participants of an event is cha...2020-01-29T18:43:19+01:00Lennart JansenWarn the organiser when the maximum number of participants of an event is changed### One-sentence description
https://gitlab.science.ru.nl/thalia/
### Current behaviour
People on the waiting list don't get any notification and thus cannot know that their status changed.
### Expected behaviour
The organiser shoul...### One-sentence description
https://gitlab.science.ru.nl/thalia/
### Current behaviour
People on the waiting list don't get any notification and thus cannot know that their status changed.
### Expected behaviour
The organiser should do a follow-up.
### Steps to reproduce
1. Create an event
2. Enable x registrations
3. Register at least x+1 people
4. Change the number of registrations to x+1
5. See that the person x+1 didn't get an email notificationMario TsatsevMario Tsatsev