---
title: "Peniaze, jednotky a uzamknutie meny — Coupons for Laravel | Roundly"
description: "Ako sa ukladá hodnota kupónu — v najmenších jednotkách meny alebo v bázických bodoch — a kedy musí byť kupón uzamknutý na jednu menu."
url: https://roundly-consulting.com/sk/open-source/navody/coupons-for-laravel/peniaze-a-jednotky
language: sk
---

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

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

# Peniaze, jednotky a uzamknutie meny

Každá suma je RoundlyConsulting\\Money\\Money z money-for-laravel: presné najmenšie jednotky ako celočíselný reťazec v registrovanej mene s jej skutočným exponentom — nikde žiadny float. Celočíselný stĺpec value má pri každom type zľavy iný význam:

| Typ | Význam value | Príklad |
| --- | --- | --- |
| `Fixed` | Najmenšie jednotky meny kupónu | 500 + EUR = zľava 5.00 EUR |
| `Percentage` | Celé bázické body, 0..10 000 | 2500 = 25 %, 1250 = 12,5 % |
| `FreeShipping` | Ignoruje sa (0) | — |

Najmenšie jednotky rešpektujú skutočný exponent meny, takže meny bez desatinných miest aj s tromi desatinnými miestami sú presné:

```php
use RoundlyConsulting\Money\Money;

Money::ofMinor(500, 'EUR');    // 5.00 EUR
Money::ofMinor(500, 'JPY');    // 500 JPY   (zero-decimal currency)
Money::ofMinor(1500, 'BHD');   // 1.500 BHD (three-decimal currency)
```

## Uzamknutie meny

Kupón s vyplnenou menou platí len pre ceny v tejto mene. Kupón musí byť uzamknutý, ak je typu Fixed alebo má minimum\_spend či max\_discount — obe sa ukladajú ako Money a zdieľajú stĺpec currency kupónu. Percentuálne kupóny a kupóny na dopravu zadarmo bez minima či stropu môžu zostať neuzamknuté a platia pre ľubovoľnú menu; zľava sa potom počíta v mene ceny.

```php
$coupon->currency;                 // ?Currency — null = any currency, or the lock
$coupon->minimum_spend;            // ?Money    — null = no minimum
$coupon->max_discount;             // ?Money    — null = uncapped

$coupon->appliesToCurrency($price);   // bool — unlocked, or locked to $price's currency
$coupon->meetsMinimumSpend($price);   // bool — no minimum, or $price >= minimum_spend
```

- CreateCouponAction uzamknutie vynucuje: kupón Fixed bez meny vyhodí InvalidCouponDefinition.
- Minimum alebo strop v inej mene, než na ktorú je kupón uzamknutý, vyhodí CurrencyMismatch z money.
- Percento sa ukladá v celých bázických bodoch (0,01 %): CreateCouponData::percentage('12.5') prejde, '12.345' vyhodí RoundingNecessary z money.
- Riadok Fixed zapísaný mimo akcie bez meny sa odmietne pri použití — Coupon::discount() vyhodí InvalidCouponDefinition.

## Priame plnenie modelu

Ak atribúty kupónu zapisujete sami namiesto CreateCouponAction, nastavte currency skôr ako minimum\_spend a max\_discount: cast z money odmietne zmeniť menu stĺpca, ktorý už obsahuje iný kód. Zápis mimo akcie zároveň obchádza jej validáciu, preto podľa možnosti uprednostnite CreateCouponData.

```php
use RoundlyConsulting\Coupons\Enums\DiscountType;
use RoundlyConsulting\Coupons\Models\Coupon;
use RoundlyConsulting\Money\Money;

// currency first: minimum_spend and max_discount share that column.
$coupon = new Coupon([
    'code' => 'SPRING10',
    'type' => DiscountType::Percentage,
    'value' => 1000,                                // 10 %
    'currency' => 'EUR',
    'minimum_spend' => Money::ofMinor(2000, 'EUR'),
]);

$coupon->save();
```

## 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/coupons-for-laravel.md)
