CluPilotCloud/app/Services/Billing
nexxo d3ac839b1e
tests / pest (push) Waiting to run Details
tests / assets (push) Waiting to run Details
tests / release (push) Blocked by required conditions Details
Office (collabora_pro) auch über die Abrechnungsseite sperren
Der Vortag nahm Office nur von der Preistafel — ein eingeloggter Team-
oder Business-Kunde hätte collabora_pro technisch weiterhin über
Billing::purchase() buchen können, weil AddonCatalogue den Preis
unverändert kannte und die Abrechnungsseite nie danach fragte. Der
Schalter (OFFICE_ON_SALE) wandert deshalb vom LandingController in
AddonCatalogue, der einzigen Stelle, die Preistafel UND Abrechnungsseite
kennen; eine neue Methode saleRefusal() weist die Buchung an beiden
Enden ab (Kauf-Aufruf und Karten-Anzeige), ohne BookAddon/GrantAddon
anzufassen — Bestandsfälle und Geschenke des Betreibers bleiben möglich.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 17:10:07 +02:00
..
AddonCatalogue.php Office (collabora_pro) auch über die Abrechnungsseite sperren 2026-08-04 17:10:07 +02:00
AddonPrices.php Recognise the product Stripe already has 2026-07-30 17:39:15 +02:00
AdoptStripePrice.php Say what was adopted, not that it was created 2026-07-30 17:56:13 +02:00
AdoptStripeProduct.php Subtract only what was counted, not everything a singleton adopted 2026-07-30 18:20:27 +02:00
CatalogueSyncStatus.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
CustomDomainAccess.php Die abgebuchte Domain wird jetzt wirklich von der Maschine genommen 2026-08-04 14:50:46 +02:00
DowngradeCheck.php Ein Ausweg wird nur angeboten, wenn er auch buchbar ist 2026-08-01 15:40:26 +02:00
DunningMailer.php Jede Mail faehrt wieder ueber ihren eigenen Mailer 2026-08-03 20:36:20 +02:00
DunningSchedule.php Mahnwesen: Fall, Zeitplan und Gebuehrenstufen 2026-07-31 21:51:42 +02:00
InvoiceArchive.php Leave the archive readable by whoever collects from it 2026-07-29 03:48:03 +02:00
InvoiceDocument.php Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
InvoiceMath.php Charge the price the website shows, and hand a withdrawal back in full 2026-07-29 22:42:02 +02:00
InvoiceNumbers.php Lay the foundation for self-issued invoices: series, numbers, frozen documents 2026-07-29 00:57:06 +02:00
InvoiceRenderer.php Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
IssueInvoice.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
PlanCatalogue.php Interne Pakete verschwinden aus dem Laden und bleiben in der Konsole 2026-08-01 15:31:46 +02:00
PlanChange.php Book a downgrade for a date that cannot move, and sell a module once 2026-07-29 17:51:37 +02:00
PlanPrices.php Put the price recognition back, all 3526 lines of it 2026-07-30 16:35:55 +02:00
SampleInvoice.php Print every line at full price and take the discount off once, in euros 2026-07-29 01:59:56 +02:00
SetupFee.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
StorageAllowance.php Ein Ausweg wird nur angeboten, wenn er auch buchbar ist 2026-08-01 15:40:26 +02:00
StripeInvoiceLines.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
TaxTreatment.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
WithdrawalRight.php Charge the price the website shows, and hand a withdrawal back in full 2026-07-29 22:42:02 +02:00