Thalia Pay

Ghost User
2019-10-03T16:58:43+02:00

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).