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()returnsNULLfor an untiered line instead oft('places').- Every renderer leaves the tariff out when it is
NULL: the ticket template skips the__tierspan,ticketLine()drops the empty part (no moreplaces - 1 placein text mail), and the mail template omits it. docs/architecture.mdnotes that a ticket shows only what its line actually has.
Before and after, on a free, untiered slot:
- screen:
Ticket 1/places+1 placebecomesTicket 1+1 place - text and rich mail:
places - 1 placebecomes1 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.