CluPilotCloud/tests
nexxo a87a4f512d feat(billing): one plan change at a time, and every price says what it is
Two contradicting plan upgrades sat in the cart at 799 and 399 € — no checkout
could resolve which one the customer meant. Choosing another now replaces the
pending one and says so; add-ons still stack, because buying 200 GB as two packs
is a sensible thing to want.

Every price now states net or gross and how often. The cart shows net per line
with "pro Monat" or "einmalig", then subtotal, VAT and gross — and separates
the monthly recurring amount from a one-off traffic top-up sharing the same
cart, because those are two different commitments. The rate is configurable
(CLUPILOT_TAX_PERCENT, 20 % default) since it follows the seller's country.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 09:23:49 +02:00
..
Feature feat(billing): one plan change at a time, and every price says what it is 2026-07-26 09:23:49 +02:00
Support/Steps feat(engine-b): CustomerStep base + shared resource trait + config 2026-07-25 11:39:56 +02:00
Unit feat(engine): orchestrator core (state machine + tick + lock) 2026-07-25 09:54:52 +02:00
Pest.php fix(security): match ADMIN_HOSTS case-insensitively; share test helpers 2026-07-25 20:56:26 +02:00
TestCase.php test: do not reach for Redis from the provisioning queue 2026-07-26 02:20:46 +02:00