laravel-shop/tests/Unit
Fabian @ Blax Software 459b561567 feat(tax): multi-purpose vouchers are sold without VAT
Add Product::TAX_CLASS_MULTI_PURPOSE_VOUCHER and TaxService::ratesFor($product, ...),
which applies no tax rate to a product whose tax class is untaxed at sale
(config shop.tax.untaxed_classes, default the multi-purpose voucher). Under EU
VAT (Directive Art. 30a/30b, DE § 3 Abs. 15 UStG) selling a multi-purpose
voucher is not a taxable supply; VAT is due when it is redeemed, on the full
price of what it pays for. rates() is unchanged; ratesFor() is additive.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 09:55:01 +02:00
..
Cart feat(cart): WS-first storefront primitives + shared cart/auth controllers 2026-09-17 10:53:28 +02:00
Enums I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Models I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Order fix(orders): dispatch OrderPaid once; honour shop.models.order on webhook + service paths 2026-09-24 08:22:55 +02:00
Product feat(pricing): percentage conditional prices + cheapest-effective resolver + authoring helper 2026-08-26 15:52:24 +02:00
Purchase I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Resources feat(cart): price options and richer cart items (both additive) 2026-09-25 10:37:59 +02:00
Stripe feat(stripe): checkout confirmation links the charge and syncs the ledger 2026-09-25 12:32:54 +02:00
HtmlDateTimeCastTest.php BFI cart single item 2025-12-24 19:40:10 +01:00
ShopServiceTest.php BFI cart / orders 2026-01-05 10:30:21 +01:00
StockManagementTest.php BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
StockTypeSafetyTest.php BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
TaxServiceTest.php feat(tax): multi-purpose vouchers are sold without VAT 2026-10-01 09:55:01 +02:00