NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

RoundlyConsulting\Coupons\Models\Coupon je bežný Eloquent model s HasFactory a SoftDeletes. Nie je final, takže z neho môžete dediť (pozrite si Rozširovanie).

use RoundlyConsulting\Coupons\Models\Coupon;

$coupon = Coupon::query()->where('code', 'SAVE20')->firstOrFail();

$coupon->activate();          // activated_at = now (pass a CarbonInterface to schedule)
$coupon->expire($expiresAt);  // expires_at (no argument = now)
$coupon->setMaxUsageTo(50);
$coupon->save();

$coupon->isActive();                 // bool
$coupon->isExpired();                // bool
$coupon->isAtMaximumUsage();         // bool (a 0 cap is unlimited)
$coupon->hasBeenUsedAtLeastOnce();   // bool
$coupon->canBeApplied();             // active, not expired, not at max usage

Kontroly stavu

MetódaPravda, keď / vracia
isActive(): boolactivated_at je nastavené a v minulosti.
isExpired(): boolexpires_at je nastavené a v minulosti.
canBeApplied(): boolAktívny, s platnosťou a bez vyčerpaného limitu.
isAtMaximumUsage(): boolKladný max_usage je dosiahnutý (0 = bez limitu).
isAtMaximumUsageFor(Model $redeemer): boolKladný max_usage_per_redeemer je pre daného zákazníka dosiahnutý.
usageBy(Model $redeemer): intPočet zaznamenaných uplatnení daným zákazníkom.
hasBeenUsedAtLeastOnce(): boolusage > 0.
isFreeShipping() / appliesToShipping(): boolTyp je FreeShipping — vynulujte vlastný riadok dopravy.
appliesToCurrency(Money $price): boolBez uzamknutia alebo uzamknutý na menu ceny.
meetsMinimumSpend(Money $price): boolBez minima alebo cena >= minimum_spend. Pri rôznych menách vyhodí CurrencyMismatch z money — najprv overte appliesToCurrency().

Výpočet zľavy

Tri metódy premenia kupón na peniaze. Zľava je vždy medzi nulou a cenou a nikdy nad max_discount, takže celková suma nemôže klesnúť pod nulu:

$coupon->discountFor($price);   // Money — 0 <= discount <= price, never above max_discount
$coupon->apply($price);         // Money — the price minus the discount, never negative
$coupon->discount($currency);   // money Discount labelled with the code, for a DiscountStack

Zaokrúhľovanie zabezpečuje money-for-laravel — predvolene polovica smerom od nuly. Niekoľko prepočítaných príkladov:

use RoundlyConsulting\Coupons\Models\Coupon;
use RoundlyConsulting\Money\Money;

$quarter = Coupon::factory()->percentage(2500)->make();         // 25 %
$quarter->apply(Money::ofMinor(1000, 'EUR'));                    // 7.50 EUR

$eighth = Coupon::factory()->percentage(1250)->make();          // 12.5 %
$eighth->discountFor(Money::ofMinor(999, 'EUR'));                // 1.25 EUR (124.875 minor units, half away from zero)

$capped = Coupon::factory()->cappedPercentage(5000, Money::ofMinor(300, 'EUR'))->make();
$capped->discountFor(Money::ofMinor(1000, 'EUR'));               // 3.00 EUR — 50 %, capped

$big = Coupon::factory()->fixed(5000, 'EUR')->make();           // 50.00 EUR off
$big->discountFor(Money::ofMinor(1000, 'EUR'));                  // 10.00 EUR — never more than the price
$big->apply(Money::ofMinor(1000, 'EUR'));                        // 0.00 EUR

$yen = Coupon::factory()->fixed(500, 'JPY')->make();
$yen->discountFor(Money::ofMinor(1200, 'JPY'));                  // 500 JPY

discountFor() a apply() vyhodia CurrencyMismatch z money, ak je kupón uzamknutý na inú menu — najprv overte appliesToCurrency() alebo použite previewDiscount(), ktorá výnimku nevyhodí. Pri kupóne na dopravu zadarmo vráti discountFor() nulu a apply() cenu bez zmeny.

Atribúty a casty

  • code — ukladá sa orezaný a veľkými písmenami bez ohľadu na to, ako ho zapíšete.
  • type — enum DiscountType.
  • value, usage, max_usage, max_usage_per_redeemer — celé čísla.
  • currency — ?Currency (cast AsCurrency z money).
  • minimum_spend, max_discount — ?Money so zdieľaným stĺpcom currency.
  • activated_at, expires_at — dátum a čas.
  • meta — kolekcia pre voľné údaje, napríklad kampaň, do ktorej kupón patrí.

redemptions() je relácia HasMany na CouponRedemption. Zmazanie kupónu je soft delete; natrvalo zmazaný kupón kaskádovo odstráni aj svoje riadky uplatnení.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.