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

Typy zliav a kombinovanie

Enum DiscountType s reťazcovými hodnotami určuje, ako sa hodnota kupónu uplatní; samotný výpočet zabezpečuje Discount z money-for-laravel:

PrípadHodnotaVýznam uloženej hodnoty
FixedfixedNajmenšie jednotky meny kupónu.
PercentagepercentageBázické body (2500 = 25 %).
FreeShippingfree_shippingIgnoruje sa — príznak pre riadok dopravy v aplikácii.
use RoundlyConsulting\Coupons\Enums\DiscountType;
use RoundlyConsulting\Money\Currency;
use RoundlyConsulting\Money\Money;

$eur = Currency::of('EUR');

DiscountType::Fixed->toDiscount(250, $eur)->applyTo(Money::ofMinor(1000, 'EUR'));        // 7.50 EUR
DiscountType::Percentage->toDiscount(1250, $eur)->amountFor(Money::ofMinor(999, 'EUR'));  // 1.25 EUR (12.5 %, half away from zero)
DiscountType::Percentage->toDiscount(5000, $eur, cap: Money::ofMinor(300, 'EUR'));       // 50 % capped at 3.00 EUR

// Free shipping is a discount on the SHIPPING target — route by $discount->target(); never
// apply it to the price of the goods.
DiscountType::FreeShipping->toDiscount(0, $eur)->target(); // DiscountTarget::Shipping

// Translatable labels and descriptions for admin UIs:
DiscountType::Percentage->label();            // "Percentage"
DiscountType::Percentage->description();      // "Subtracts a percentage of the price."
DiscountType::FreeShipping->requiresValue();  // false (Fixed/Percentage are true)

Názvy pre administráciu

label() a description() sa prekladajú cez coupons::messages.type.*, takže výber do administračného formulára zostavíte jedným riadkom:

collect(DiscountType::cases())->mapWithKeys(fn ($t) => [$t->value => $t->label()]);
// Collection: ['fixed' => 'Fixed amount', 'percentage' => 'Percentage', 'free_shipping' => 'Free shipping']

Kombinovanie s ďalšími zľavami

Coupon::discount(Currency $for) vám vráti kupón ako Discount z money — označený kódom, obmedzený stropom max_discount a pri uzamknutí vo vlastnej mene kupónu. Skombinujte ho s ďalšími zľavami v DiscountStack:

use RoundlyConsulting\Money\Currency;
use RoundlyConsulting\Money\Discounts\Discount;
use RoundlyConsulting\Money\Discounts\DiscountStack;
use RoundlyConsulting\Money\Money;

$subtotal = Money::ofMinor(8000, 'EUR');
$shipping = Money::ofMinor(500, 'EUR');
$loyalty  = Discount::percentage(5)->labelled('Loyalty');

$breakdown = DiscountStack::of(
    $coupon->discount(Currency::of('EUR')),
    $loyalty,
)->apply($subtotal, $shipping);

$breakdown->discountedSubtotal();
$breakdown->discountedShipping();   // a free-shipping coupon targets shipping here
$breakdown->total();

Kupón na dopravu zadarmo vytvorí zľavu s cieľom doprava, takže sa v rozpise prejaví na riadku dopravy, nikdy na tovare. DiscountType::toDiscount(int $value, Currency $currency, ?Money $cap = null) vytvorí rovnaký Discount zo surových hodnôt.

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.