feat: all-season assignments

This commit is contained in:
Björn Fromme authored and Björn Fromme committed 2026-09-26 12:13:16 +02:00
1 parent 675cec1b69
commit cf876ed224
119 files changed
+6194 -294

No files matched your search

+15
View File
@@ -176,6 +176,20 @@ texts:
**{destination}**
# Weekly, for as long as an entry of the season checklist is not ticked off. It is not tied
# to a deadline, so it must not name one.
reminder_season_tasks:
label: 'Erinnerung: Saisonunterlagen'
placeholders: ['destination', 'tasks']
subject: 'Reminder: Fehlende Saisonunterlagen'
headline: 'Hallo aus Köln,'
body: |-
für deinen Saisoneinsatz **{destination}** fehlen uns noch folgende Unterlagen:
{tasks}
Im E&P-Team Portal findest du unter "Saisonunterlagen" die Vorlagen zum Herunterladen und kannst deine unterschriebenen Unterlagen direkt hochladen.
reminder_invoice_upload:
label: 'Erinnerung: Honorarnote hochladen'
placeholders: ['destination', 'invoiceUploadDeadlineDays']
@@ -232,3 +246,4 @@ placeholders:
dateFrom: 'Beginn des Einsatzes'
dateTo: 'Ende des Einsatzes'
diffInDays: 'Tage bis zum Beginn des Einsatzes'
tasks: 'Noch offene Punkte der Saison-Checkliste, kommagetrennt'
+7
View File
@@ -37,6 +37,13 @@ when@test:
dbal:
# "TEST_TOKEN" is typically set by ParaTest
dbname_suffix: '_test%env(default::TEST_TOKEN)%'
# schema:create otherwise emits MySQL 8's platform default (utf8mb4_0900_ai_ci),
# while the migrations that built dev and production declare utf8mb4_unicode_ci.
# Different collation means different string comparison and ORDER BY semantics,
# so tests would sort and match differently than production.
default_table_options:
charset: utf8mb4
collation: utf8mb4_unicode_ci
when@prod:
doctrine:
+7 -1
View File
@@ -17,7 +17,13 @@ liip_imagine:
format: jpeg
jpeg_quality: 75
filters:
thumbnail: { size: [ 128, 128 ], mode: outbound }
# Phone photos carry their orientation in EXIF rather than in the pixels, so
# without this the table renders them sideways while every other filter set,
# which has always had it, shows them upright.
auto_rotate: ~
# outbound crops to the box but never scales up, so a photo narrower than
# 128px came out oblong and the rounded-full avatar with it.
thumbnail: { size: [ 128, 128 ], mode: outbound, allow_upscale: true }
profile:
format: jpeg
jpeg_quality: 75
+15
View File
@@ -45,6 +45,21 @@ oneup_uploader:
namer: app.upload_namer
storage:
directory: '%kernel.project_dir%/uploads/receipt'
# Saisonunterlagen. Like receipt above, both the mapping key and the directory have to
# be exactly the Upload::TYPE_* value - out for what the office issues to one teamer,
# in for what that teamer sends back signed.
season_document_out:
frontend: dropzone
use_orphanage: true
namer: app.upload_namer
storage:
directory: '%kernel.project_dir%/uploads/season_document_out'
season_document_in:
frontend: dropzone
use_orphanage: true
namer: app.upload_namer
storage:
directory: '%kernel.project_dir%/uploads/season_document_in'
chunks:
maxage: 86400
storage:
+7
View File
@@ -79,6 +79,12 @@ parameters:
season_start: '11-01'
season_end: '04-01'
# How far ahead of the destination's first travel day a season assignment's checklist
# entries fall due. A relative date expression, applied to destination.dateFrom, and the
# single definition of both deadlines: the first is this offset, the second defaults to
# the first. Per-entry overrides are stored on the task row; this is what they override.
season_task_deadline_offset: '-1 month'
# Houses, hotel code: name. The name is used both as a label and to match
# destination.hotel, the code to match destination.hotelCode.
houses:
@@ -124,6 +130,7 @@ services:
$mailingBusTransport: '%mailing_bus_transport%'
$seasonStart: '%season_start%'
$seasonEnd: '%season_end%'
$seasonTaskDeadlineOffset: '%season_task_deadline_offset%'
# Tagged by interface rather than listed by hand: order between collectors is
# irrelevant, so the only thing an explicit list could add here is the chance to