php-commerce/Services
Snider cd16c7474e feat(commerce): implement CouponService with 5 methods + DTOs (#858)
- create(code, type, value, maxUses, expiresAt) → Coupon
- validate(code, order) → ValidationResult
- apply(coupon, order) → Order (mutates line-item totals)
- expire(coupon) → void
- report() → array of redemption stats

Data/Coupon.php and Data/ValidationResult.php as readonly DTOs.
Pest unit tests with _Good/_Bad/_Ugly per AX-10 for all 5 methods.
pint/pest skipped (vendor binaries missing in sandbox).
Legacy helpers in CouponService preserved.

Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=858
2026-04-25 04:41:44 +01:00
..
PaymentGateway fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
CheckoutRateLimiter.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
CommerceService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
ContentOverrideService.php chore: fix pint code style and add test config 2026-02-23 03:50:05 +00:00
CouponService.php feat(commerce): implement CouponService with 5 methods + DTOs (#858) 2026-04-25 04:41:44 +01:00
CreditNoteService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
CurrencyService.php chore: fix pint code style and add test config 2026-02-23 03:50:05 +00:00
DunningService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
FraudService.php security: complete rate limiting and fraud service implementation (P1-040) 2026-01-29 16:09:29 +00:00
InvoiceService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
PaymentMethodService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
PermissionLockedException.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
PermissionMatrixService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
PermissionResult.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
ProductCatalogService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
ProrationResult.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
ReferralService.php chore: fix pint code style and add test config 2026-02-23 03:50:05 +00:00
RefundService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
SkuBuilderService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
SkuLineageService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
SkuParserService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
SubscriptionService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
TaxService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
UsageBillingService.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
WarehouseService.php refactor: migrate namespace from Core\Commerce to Core\Mod\Commerce 2026-01-27 16:23:12 +00:00
WebhookLogger.php fix(dx): add declare(strict_types=1) and fix PSR-12 compliance 2026-03-17 09:08:03 +00:00
WebhookRateLimiter.php chore: fix pint code style and add test config 2026-02-23 03:50:05 +00:00