Confirmed statements now come with automatically generated PDF receipts used for documenting all issued payments.
This PR also adds generation of transactions for LJP contributions and their validation.
closes#92
Co-authored-by: mariusrklein <47218379+mariusrklein@users.noreply.github.com>
Reviewed-on: #150
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
We add a base template for all latex documents to unify the desings and improve maintainability. Also
the table definitions are simplified fixing the various width issues.
PDF and image attachments are scaled to A4.
follow up for #61
Reviewed-on: #142
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
We add back the functionality to disable the startpage. If a non-empty redirect url is configured,
all startpage urls are disabled except for the index page which redirects to the given url.
Rework the wait cofirmation status shown in the admin: If there is a pending wait confirmation
request (i.e. the number of sent reminders is positive), the status is either `None` (i.e. undecided)
or `False`. Otherwise the status is `True`.
Partially reverts 2761efecaa. To handle invalid unicode characters, we now override
the LaTeX error message to remove invalid characters instead of crashing. We also
add various umlaut and invisible unicode characters to the test data.
Add `Link` model to customize the admin startpage from the admin interface. Also add block rendering of links.
Reviewed-on: #138
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Since access to all media content required staff login, images intended for display on the website
were no longer accessible without login. This commit removes the protection for image files of members
and startpage posts.
We also add tests to prevent this regression from happening again.
Implements the new LJP application format as outlined in #116. In particular:
- The V-32 PDF is replaced by an `.xlsx` sheet.
- The LaTeX generated PDF for the seminar report is replaced by a `.docx` file, generated by `pandoc` from a modified `.tex` file.
- The cost and participants overview from the old PDF can still be generated separately, but is no longer required.
Also adds many fields to `LJPProposal` that are required to generate the full application.
Also add a total participants and youth leaders count on the members on list inline tab.
Reviewed-on: #119
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
closes#108
- fields for receivers of allowance `a` and subsidies `s` are not compulsory anymore. If receivers are given, `a` and `s` are payed out for them. `s` can only be payed out in total, disregarding the number of receivers given for `a`.
- In the overview pages (activity and statement), we are now distinguishing between theoretical `a` + `s` and what has been payed out practically. If no receiver was given for either things, it is made clear that nothing is payed out. All combinations of `0`, ..., `n` payed allowances (`n` being number of approved participating YLs) and `0, `1` payed subsidies are possible.
- transaction generation logic adapted accordingly
Reviewed-on: #112
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
We replace the current environment variable based configuration approach by
reading all local configuration from a `settings.toml` configuration file.
The docker test, development and production setups have been updated to use
the new setup.
The configuration folder also allows overriding every template in a
`config/templates` directory. We use this in a follow-up to move
all local specific templates, e.g. the registration form, into this
config directory.
* Add new attribute `iban_valid` to `Member`.
* Submit pages of regular expenses and activity expenses now include an overview which people with expenses have a valid IBAN.
* Add a note that IBAN validity should be checked manually before submitting.
Right now, no technical barriers are in place that prevent missing/wrong IBANs when a statement is submitted. This is intentional to preserve maximal flexibility.
In a follow-up PR, one could add custom warning messages on top of page when some IBANs are invalid.
Reviewed-on: #104
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Closes#61
Adds to the generate sjr application process a form in order to select one invoice.
Reviewed-on: #103
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Subsidies paid for night and travel costs are expected to be listed
in the bills of the associated statement. Hence, they should not be
counted a second time in the theoretic total. This affects LJP
and SJR applications.
If an excursion has zero admissable youth leaders, the statement and hence the excursion
currently can't be saved, because the `allowance_to` field has to be non-empty, but
the number of entries has to be zero. This commit hence makes the field optional.
Use the new `allowance_to` and `subsidy_to` fields in statement validation. The
night and travel costs have to be transferred to the person listed as `subsidy_to`,
the allowance has to be paid to the persons listed in `allowance_to`.
In the statement tab on excursions, add two new fields to select to which
youth leaders the allowance and subsidies should be paid. The fields
are checked for validity based on the number of approved youth leaders.
Also add a new field on excursions to allow for additional approved youth
leaders.
The new fields are not yet used in the statement confirmation process.
Previously, the age column was sorted according to the birth date. This typically
causes singleton grouping upon multi sort with age as the primary sorting key. A
typical use case is sorting by age and application date.
Now the age column is sorted only by the numerical year value, which causes
the groups to be bigger.
1. IBAN validation in member admin.
2. In the transaction overview, for every transaction an EPC-QR code for banking apps is generated and displayed. The (necessary) BIC field is automatically derived from the IBAN. This closes#63.
Both steps use the python library schwifty.
Reviewed-on: #94
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>