# August 2026 individual-lesson changes

This change record links the individual-lesson work completed during the
August 10–11, 2026 session to the current domain documentation. The canonical
description of current behavior is [Individual lessons](../individual-lessons.md).

## Committed foundations

### `6e5fcb9` — Summarize unpaid individual lessons

The instructor report was extended to:

- count completed individual lessons that remain unpaid;
- show the unpaid count in the report summary;
- render every completed individual lesson with an explicit paid or unpaid
  status;
- include the same summary and per-lesson status in the XLSX export.

These rules are documented in the instructor-report section of the canonical
individual-lesson document.

### `2985820` — Remove solo payment method price differences

The durable parts of this commit added:

- an administrator-only individual-lesson payment report;
- a selectable lesson-date range, defaulting to the current calendar month;
- payment type, payment amount, and payment date in the report;
- a manual cash-payment date for individual lessons;
- validation that a manually entered cash date is valid and not in the future;
- a link to the report from the administration reports screen.

The commit temporarily restored one price regardless of payment method. That
pricing rule has been superseded by the final August change set: the price now
depends on payment time relative to the configurable deadline, while cash and
online payments continue to use the same calculation.

### `a61c81f` — Improve individual lessons payment report

The administrator report was extended with:

- links to participant or parent/child account profiles;
- emphasized unpaid status;
- a client-side `Pokaż tylko nieopłacone` filter and a dedicated empty result;
- a responsive Bootstrap table;
- shared semi-transparent table styling for light and dark themes.

The report uses the shared Bootstrap table system and the dedicated
`application/Resources/js/solo-event-payment-report.js` behavior. It does not
introduce a separate UI component framework.

### `46c2089` — Handle missing individual lesson locations

Empty and null location identifiers are normalized to location identifier `0`.
This preserves the existing `Inna lokalizacja` label in tags and report output
and prevents undefined-array PHP warnings.

### Merge commits

`557d86f` and `aa06969` merge the feature branches containing the changes
above. They do not define additional behavior and therefore do not require
separate functional rules.

## Follow-up change set

The subsequent working-tree change completes and supersedes the earlier
partial pricing work by adding:

- lesson type and participant-count selection with automatic pricing;
- a default date equal to the next weekday;
- public and instructor views of both time-dependent price variants;
- configurable payment deadline and per-participant price difference;
- immediate balance inclusion after realization is confirmed;
- account-owner and child individual lessons in the outstanding balance;
- whole-balance online payment assignment for both group and individual items;
- a historical per-lesson required amount at payment;
- historical amount display for paid lessons and removal of the advance-price
  description after payment;
- payment recall that clears both the link and historical allocated amount.
- an explicit zero-value
  `Voucher papierowy starszego typu bez indywidualnych kodów` settlement for the
  historical paper-voucher pool, available only for individual lessons;
- a separate exceptional action allowing an instructor to atomically redeem a
  new individual gift-voucher code for a selected lesson, including a lesson
  for a participant outside the system, while keeping participant self-service
  as the instructed default.

The database part is delivered by:

- `20260810223914_add_solo_payment_timing.sql`;
- `20260810231501_add_solo_required_amount_at_payment.sql`.

The migrations are additive, are applied by the standard backup-first runner,
and require no manual server-owned file or environment configuration changes.

## Documentation disposition

The session does not require changes to the generic migration policy or the
deployment mechanism. The durable behavior is documented in
`docs/individual-lessons.md`, while this file records how the earlier commits
contribute to that final state.
