CluPilotCloud/tests/Feature/Billing
nexxo 3fb7e5f08c
tests / pest (push) Failing after 7m48s Details
tests / assets (push) Successful in 26s Details
tests / release (push) Has been skipped Details
Decide the VAT rate in one place, before the two disagree
The Finance tab wrote a rate into settings while TaxTreatment kept reading one
from config — two sources for one number, added by me two commits ago. It had
not bitten yet only because both happened to say 20.

TaxTreatment now takes the domestic rate from CompanyProfile, which falls back
to the .env-derived config until an operator saves one. Same shape as
ProvisioningSettings, which already solves this for the deployment values, and
the same reason: an operator can change a settings page and cannot change a
config value, so a page that appears to set the rate and does not is worse than
no page at all.

Reverse charge and the seller country stay where they are. That logic already
existed, already handles a verified EU VAT ID correctly, and nothing here
needed to know about it — which is exactly why it should not have been
duplicated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 02:03:29 +02:00
..
FinanceSettingsTest.php Decide the VAT rate in one place, before the two disagree 2026-07-29 02:03:29 +02:00
InvoiceMathTest.php Print every line at full price and take the discount off once, in euros 2026-07-29 01:59:56 +02:00
InvoiceNumberTest.php Lay the foundation for self-issued invoices: series, numbers, frozen documents 2026-07-29 00:57:06 +02:00
PlanCatalogueTest.php feat(admin): a console for creating, pricing and scheduling plans 2026-07-26 12:41:51 +02:00
PlanChangeTest.php feat(billing): the plan catalogue becomes three tables, and config stops selling 2026-07-26 12:05:56 +02:00
ProofRegisterTest.php feat(billing): a proof register, and modules frozen at their booked price 2026-07-26 13:07:34 +02:00
StripeBillingTest.php fix(billing): hold only what cannot be matched, and let migrations roll back 2026-07-26 13:57:11 +02:00