Issue #3613324: An untiered line shows a "places" tariff label beside its places quantity

Fixes the "places" tariff fallback: an untiered line has no tariff to name, so it no longer borrows the word its places quantity already carries.

Change

  • TransactionSummary::tierLabel() returns NULL for an untiered line instead of t('places').
  • Every renderer leaves the tariff out when it is NULL: the ticket template skips the __tier span, ticketLine() drops the empty part (no more places - 1 place in text mail), and the mail template omits it.
  • docs/architecture.md notes that a ticket shows only what its line actually has.

Before and after, on a free, untiered slot:

  • screen: Ticket 1 / places + 1 place becomes Ticket 1 + 1 place
  • text and rich mail: places - 1 place becomes 1 place
  • a tiered line is unchanged: Ticket 1 / Adult

API: the summary's ticket tier key is now ?string, NULL when the line is untiered.

Testing: new TransactionSummaryTest::testUntieredLineNamesNoTariff() covers the data, screen, text and mail renders; testRenderArrayThemedMarkup() now also asserts a tiered line does show its tariff. Whole yoyaku kernel suite green (19 dirs), phpcs/phpcbf clean, no new phpstan errors, cspell clean (no new words, untiered was already in the project dictionary). No fr.po change: the places msgid is still used by SlotBookingForm, and this adds no translatable string.

Merge request reports

Loading