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

Pomocné metódy na zobrazenie

V šablónach a API čítajte stav kupónu bez ručných výpočtov a try/catch. Každú z týchto metód môžete bezpečne volať kdekoľvek:

$coupon->remainingUsage();              // ?int   — e.g. 37; null when unlimited (max_usage <= 0)
$coupon->remainingUsageFor($user);      // ?int   — null when untracked or per-redeemer unlimited
$coupon->usagePercentage();             // ?float — e.g. 92.6 (0..100); null when unlimited
$coupon->isRedeemableBy($user, $cart);  // bool   — pass a price to also check currency + minimum spend
$coupon->previewDiscount($cart);        // Money  — zero on a currency mismatch
MetódaVracia
remainingUsage(): ?intZostávajúce použitia pod celkovým limitom; null pri neobmedzenom kupóne.
remainingUsageFor(Model $redeemer): ?intZostávajúce použitia pre daného zákazníka; null pri vypnutom sledovaní alebo limite 0.
usagePercentage(): ?floatVyužitý podiel celkového limitu, 0..100, zaokrúhlený na 2 desatinné miesta; null bez limitu.
isRedeemableBy(?Model $redeemer = null, ?Money $price = null): boolRovnaké kontroly ako pri uplatnení; s cenou overí aj menu a minimálnu hodnotu nákupu.
previewDiscount(Money $price): MoneyAko discountFor(), ale pri inej mene vráti nulu — bezpečné v šablónach.

isRedeemableBy() sa pýta Coupons::check() — rovnaké kontroly v rovnakom poradí ako redeem() a pravidlo Redeemable —, takže sa nikdy nerozídu: napríklad soft-deleted inštancia Coupon je pre všetky NotFound, rovnako ako pre ňu redeem() vyhodí CouponNotFound. Ak potrebujete dôvod, nielen áno či nie, použite priamo Coupons::check(); keď máte len kód, Coupons::code($code)->preview($cart) je obdobou previewDiscount() cez fasádu.

Príklad: endpoint s náhľadom kupónu

use RoundlyConsulting\Coupons\Facades\Coupons;

$coupon = Coupons::findOrFail((string) $request->input('code'));

return [
    'code' => $coupon->code,
    'redeemable' => $coupon->isRedeemableBy($request->user(), $cartTotal),
    'you_save' => (string) $coupon->previewDiscount($cartTotal),   // e.g. "4.50 EUR"
    'uses_left' => $coupon->remainingUsage(),
    'free_shipping' => $coupon->appliesToShipping(),
];

Jedna hraničná situácia: riadok Fixed zapísaný mimo CreateCouponAction bez meny sa nedá oceniť vôbec, preto preň previewDiscount() aj tak vyhodí InvalidCouponDefinition.

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.