---
title: "Zľavy — Money for Laravel | Roundly"
description: "Percentuálne, pevné zľavy a doprava zdarma so stropmi, prioritami a exkluzivitou, tri stratégie kombinovania a podrobný rozpis."
url: https://roundly-consulting.com/sk/open-source/navody/money-for-laravel/zlavy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Money for Laravel](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)

# Zľavy

Základné stavebné prvky zliav pre kupóny, akcie a košíky. Zľava nikdy neodpočíta viac, ako je jej základ, a nikdy nevytvorí záporný súčet:

```php
use RoundlyConsulting\Money\Discounts\Discount;

$subtotal = Money::ofMajor('100', 'EUR');

Discount::percentage('12.5')->cappedAt(Money::ofMajor('20', 'EUR'))->applyTo($subtotal); // 87.50 EUR
Discount::percentage('12.5')->amountFor($subtotal);                                     // 12.50 EUR
Discount::fixed(Money::ofMajor('150', 'EUR'))->applyTo($subtotal);                      // 0.00 EUR — never negative
```

- Discount::fixed(Money) — pevná suma z medzisúčtu.
- Discount::percentage($percent) — 0 až 100 %.
- Discount::freeShipping() — 100 % na dopravu.
- \->cappedAt(Money), ->withPriority(int) (vyššia sa uplatní skôr), ->exclusive(), ->labelled('KOD'), ->onShipping() / ->onSubtotal().
- amountFor($base) — koľko sa odpočíta (0 ≤ suma ≤ základ a ≤ strop); applyTo($base) — základ mínus táto suma.

Cieľ (target) slúži len ako informácia pre kombinovanie zliav: amountFor() sa uplatní na akýkoľvek zadaný základ, preto nikdy nevolajte applyTo() so zľavou na dopravu na cenu tovaru — smerujte podľa target().

## Kombinovanie zliav

```php
use RoundlyConsulting\Money\Discounts\Discount;
use RoundlyConsulting\Money\Discounts\DiscountStack;
use RoundlyConsulting\Money\Enums\StackingStrategy;

$subtotal = Money::ofMajor('100', 'EUR');
$shipping = Money::ofMajor('5', 'EUR');

$breakdown = DiscountStack::of(
    Discount::percentage(10)->labelled('WELCOME10'),
    Discount::fixed(Money::ofMajor('5', 'EUR'))->withPriority(10),
    Discount::freeShipping(),
    Discount::percentage(25)->exclusive(),
)->using(StackingStrategy::Sequential)
 ->capTotalAt(Money::ofMajor('30', 'EUR'))
 ->apply($subtotal, $shipping);

$breakdown->totalDiscount();   // 25.00 EUR — the exclusive 25 % wins
$breakdown->total();           // 80.00 EUR
```

- Sequential (predvolené) — každá zľava sa uplatní na priebežný zvyšok svojho cieľa, takže sa percentá navzájom skladajú.
- Additive — každá zľava sa uplatní na pôvodný základ.
- BestOf — uplatní sa len jediná najväčšia zľava.
- Exkluzivita — najlepšia exkluzívna zľava súťaží s celou skupinou neexkluzívnych; vyhrá vyšší súčet, pri zhode neexkluzívne.
- Poradie — zľavy na medzisúčet podľa priority (zostupne), potom podľa poradia pridania; potom zľavy na dopravu.
- Každý cieľ sa oreže na svoj základ, potom sa uplatní capTotalAt(); oboje uberá v opačnom poradí, než sa zľavy uplatnili.

V príklade exkluzívnych 25 % (25.00) prekoná neexkluzívnu skupinu (5.00 + 9.50 + 5.00 doprava = 19.50), takže rozpis obsahuje jeden riadok. Bez exkluzívnej zľavy sa uplatnia všetky tri a súčet je 85.50 EUR.

## Rozpis

```php
$breakdown->subtotal;             // 100.00 EUR
$breakdown->subtotalDiscount;     // Money
$breakdown->shipping;             // 5.00 EUR (zero when none was passed)
$breakdown->shippingDiscount;     // Money
$breakdown->discountedSubtotal();
$breakdown->discountedShipping();

foreach ($breakdown->applied as $row) {   // list<AppliedDiscount>
    $row->discount->label();              // e.g. "WELCOME10"
    $row->target;                         // DiscountTarget::Subtotal or DiscountTarget::Shipping
    $row->amount;                         // the Money removed
}
```

Uplatnené sumy dajú vždy dokopy subtotalDiscount + shippingDiscount a ani jedna neprekročí svoj základ. Ak chcete zľavu objednávky rozpočítať na položky, použite DiscountAllocator (pozri Rozdeľovanie súm).

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)
