Optimierung 3.5: Kleinere Zentralisierungen (VAT, findByEmail, Waehrung, Provisioning)
- VatResolver::normalizeCountryCode()/isEuCountry() als Single Source of Truth;
resolve(), VatIdValidationService und StripeCheckoutService nutzen jetzt die
zentrale EU-Pruefung statt eigener config-Lookups.
- User::findByEmail() buendelt die LOWER(email)-Lookups (ContactAccessService,
SocialAuthService). Bleibt bewusst case-insensitiv, da E-Mails nicht
normalisiert gespeichert werden; der indexfreundliche Direktvergleich
braucht erst eine Schreib-Normalisierung (offen, dokumentiert).
- config('billing.default_currency') ersetzt 8 verstreute 'EUR'/'eur'-Literale
(Stripe-Calls via strtolower). Vereinheitlicht nebenbei die zuvor uneinheitlich
gespeicherte SinglePurchase.currency.
- Neuer CustomerAccountProvisioner::provisionVerifiedCustomer() ist die
gemeinsame Provisioning-Methode (verifiziert + aktiv + customer-Rolle) fuer
ContactAccessService und SocialAuthService.
- Tests: UserFindByEmailTest, erweiterte VatResolverTest.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
31d407d3ad
commit
b255d90721
19 changed files with 151 additions and 46 deletions
|
|
@ -17,6 +17,22 @@ test('vat treatment follows the 12.06. decision rules', function (?string $count
|
|||
'Fehlendes Land wie Inland behandeln' => [null, null, VatTreatment::Domestic],
|
||||
]);
|
||||
|
||||
test('normalizeCountryCode uppercases and tolerates null', function () {
|
||||
$resolver = app(VatResolver::class);
|
||||
|
||||
expect($resolver->normalizeCountryCode('at'))->toBe('AT')
|
||||
->and($resolver->normalizeCountryCode(null))->toBe('')
|
||||
->and($resolver->normalizeCountryCode('De'))->toBe('DE');
|
||||
});
|
||||
|
||||
test('isEuCountry recognises EU members and excludes DE and third countries', function () {
|
||||
$resolver = app(VatResolver::class);
|
||||
|
||||
expect($resolver->isEuCountry('AT'))->toBeTrue()
|
||||
->and($resolver->isEuCountry('DE'))->toBeFalse()
|
||||
->and($resolver->isEuCountry('CH'))->toBeFalse();
|
||||
});
|
||||
|
||||
test('tax cents are derived from the treatment', function () {
|
||||
$resolver = app(VatResolver::class);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue