---
title: "Skupiny v mene — Credits for Laravel | Roundly"
description: "Priraďte skupine ISO alebo vlastnú menu z money, čítajte jej zostatok ako Money a odmietajte zápisy v akejkoľvek inej mene."
url: https://roundly-consulting.com/sk/open-source/navody/credits-for-laravel/skupiny-v-mene
language: sk
---

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

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

# Skupiny v mene

Skupina môže byť vedená v mene z money-for-laravel. Jej celé čísla sú potom najmenšie jednotky tejto meny — centy pre EUR, celé body pre vlastnú PTS — a skupina získa pomocníky pracujúce s Money, ktoré inú menu odmietnu. Priraďte názvom skupín kódy mien:

```php
// config/credits.php
'currencies' => [
    'store_credit' => 'EUR',
    'points' => 'PTS',   // a custom currency — see Custom currencies
],
```

Potom skupinu čítajte a zapisujte ako Money cez jej scope:

```php
use RoundlyConsulting\Credits\Facades\Credits;
use RoundlyConsulting\Money\Money;

$store = Credits::for($user)->bucket('store_credit');

$store->addMoney(Money::ofMajor('25.00', 'EUR'), 'Gift card');
$store->deductMoney(Money::ofMinor(1050, 'EUR'), 'Order #42');
$store->modifyMoney(Money::ofMinor(-100, 'EUR'), 'Fee');   // a signed change

$store->money();                  // Money EUR 13.50
$store->currency();               // Currency EUR — null for a plain bucket
$store->format();                 // "13.50" — read at the EUR exponent
$store->formatMoney('en');        // money's locale formatter
$store->balance();                // 1350 — the int API is unchanged

Credits::currency('store_credit');   // Currency EUR — owner-free
```

Trait má tie isté pomocníky priamo na modeli:

```php
use RoundlyConsulting\Money\Money;

$user->creditsCurrency('store_credit');   // Currency EUR   (null for a plain bucket)

$user->modifyCreditsMoney(Money::ofMajor('25.00', 'EUR'), 'gift card', bucket: 'store_credit');
$user->modifyCreditsMoney(Money::ofMinor(-1050, 'EUR'), 'order #42', bucket: 'store_credit');

$user->creditsBalanceMoney('store_credit');              // Money EUR 14.50
$user->creditsBalanceMoney('store_credit')->minor();     // "1450" — money amounts are strings
$user->creditsBalanceMoney('store_credit')->toDecimal(); // "14.50"
$user->creditsBalance(bucket: 'store_credit');           // 1450 — the int API is unchanged
$user->displayCreditsBalance('store_credit');            // "14.50" (read at the EUR exponent)
$user->formatCreditsBalance('store_credit', 'en');       // money's locale formatter (symbol + amount)
```

## Pomocníky traitu pre Money

| Metóda | Vracia | Vyhadzuje |
| --- | --- | --- |
| `creditsCurrency(?string $bucket = null)` | ?Currency — null, ak skupina nie je v zozname (alebo má priradený prázdny kód) | UnknownCurrency (kód nie je zaregistrovaný), InvalidMoneyConfiguration (chybná mapa) |
| `creditsBalanceMoney(?string $bucket = null, ?CarbonInterface $at = null)` | Money v mene skupiny — Money::ofMinor(creditsBalance($at, $bucket), $currency) | BucketNotDenominatedException |
| `modifyCreditsMoney(Money $amount, ?string $description = null, ?array $meta = null, bool $allowOverdraft = false, ?string $bucket = null)` | Nový záznam Credit | BucketNotDenominatedException, CurrencyMismatch, AmountOverflow, InsufficientCreditsException |
| `formatCreditsBalance(?string $bucket = null, ?string $locale = null)` | Money::format($locale) zostatku | BucketNotDenominatedException |

## Ako sa správajú

- Jedna cesta zápisu. addMoney(), deductMoney(), modifyMoney() aj modifyCreditsMoney() overia menu, prevedú sumu cez Money::minorInt() a zapíšu ju celočíselnou cestou — tá istá ochrana pred prečerpaním, minimálny zostatok, zámok riadku aj udalosť CreditsModified. Každé odmietnutie nastane skôr, než sa čokoľvek zapíše.
- Identitu meny tvorí kód + exponent (Currency::equals() z money): suma v USD do skupiny v EUR vyhodí CurrencyMismatch.
- displayCreditsBalance() číta skupinu v mene v exponente meny a v ňom ju aj zobrazí, pokiaľ scale neurčí inak. displayCredits() skupinu neprijíma, takže vždy použije credits.scale.
- Aj predvolená skupina môže byť v mene, ak ju credits.currencies uvádza — pomocníky potom fungujú bez argumentu bucket.
- Bežné skupiny fungujú ďalej vedľa nich; celočíselné API (creditsBalance(), modifyCredits()) sa pre skupiny v mene nemení.

```php
use RoundlyConsulting\Money\Exceptions\CurrencyMismatch;

try {
    $user->modifyCreditsMoney(Money::ofMajor('5.00', 'USD'), 'refund', bucket: 'store_credit');
} catch (CurrencyMismatch $e) {
    // a USD amount into an EUR bucket — nothing was written
}

$user->creditsBalanceMoney('promotional'); // throws BucketNotDenominatedException (a plain bucket)
```

## Historické zostatky a škála zobrazenia

creditsBalanceMoney() aj displayCreditsBalance() prijímajú okamih a prepísanie škály či zaokrúhľovania vychádza z exponentu meny:

```php
$user->creditsBalanceMoney('store_credit', now()->subMonth());          // Money at a past moment
$user->displayCreditsBalance('store_credit', scale: 0);                  // "15" — rounded at the display scale
$user->displayCreditsBalance('store_credit', scale: 4);                  // "14.5000"
```

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