---
title: "Vlastné meny a výmena — Credits for Laravel | Roundly"
description: "Veďte skupiny vo vlastných jednotkách, napríklad vernostných bodoch, rešpektujte 64-bitový limit a vymieňajte body za peniaze."
url: https://roundly-consulting.com/sk/open-source/navody/credits-for-laravel/vlastne-meny
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)

# Vlastné meny a výmena

Vlastné meny poskytuje money-for-laravel. Deklarujte ich v jeho konfigurácii:

```php
// config/money.php — inside 'currencies'
'custom' => [
    'PTS' => ['exponent' => 0, 'name' => 'Loyalty points', 'symbol' => 'pts'],
],
```

Alebo ich zaregistrujte v kóde, v boot() vášho providera:

```php
use RoundlyConsulting\Money\Currency;
use RoundlyConsulting\Money\Facades\Currencies;

// In your AppServiceProvider::boot()
Currencies::register(Currency::custom('PTS', 0, 'Loyalty points'));
```

Balík vyhodnocuje credits.currencies lenivo, pri prvom použití, takže registrácia v provideri, ktorý sa spustí až po providerovi kreditov, bude prijatá. Potom skupine priraďte kód a používajte ju:

```php
// config/credits.php
'currencies' => ['points' => 'PTS'],

// anywhere
$points = Credits::for($user)->bucket('points');
$points->addMoney(Money::ofMinor(1250, 'PTS'), 'order reward');

$points->money()->minor(); // "1250"
$points->format();         // "1250" — PTS has exponent 0
```

## Limit presnosti

Stĺpec knihy pohybov je 64-bitové celé číslo so znamienkom, takže skupina v mene pojme najviac 9223372036854775807 najmenších jednotiek. Pri bežných menách a bodoch je to nepodstatné, no mena s 18 desatinnými miestami, ako ETH, končí približne pri 9,22 jednotky — veľké kryptozostatky veďte v hrubšej vlastnej jednotke (s nižším exponentom). Suma mimo rozsahu vyhodí AmountOverflow z money a nič nezapíše. To isté platí pre každú zmenu, po ktorej by zostatok skupiny vyšiel mimo int64, aj pre setTo(), ktorého rozdiel sa doň nezmestí — balík ich odmietne skôr, než sa čokoľvek zapíše, bez záznamu aj bez udalosti. Čítanie, ktoré sa nezmestí — súčet naprieč skupinami alebo historický zostatok nad záznamami zapísanými mimo poradia created\_at (spätne datovaný záznam) — tiež vyhodí AmountOverflow, nikdy nevráti orezané číslo.

## Recept: výmena bodov za peniaze

Balík medzi skupinami neprevádza, no s výmennou vrstvou money je pevný kurz výmeny otázkou dvoch riadkov — tu 100 bodov = 1 EUR:

```php
use RoundlyConsulting\Money\Exchange\Converter;
use RoundlyConsulting\Money\Exchange\Providers\ArrayExchangeRateProvider;

$redemption = new Converter(new ArrayExchangeRateProvider(['PTS/EUR' => '0.01'], pivot: null));

$eur = $redemption->convert(Credits::for($user)->bucket('points')->money(), 'EUR', rounding: \RoundingMode::TowardsZero);
// 1250 PTS -> Money EUR 12.50
```

Na presun hodnoty odpíšte jednu skupinu a pripíšte druhú v jednej transakcii — každý zápis stále prechádza ochranou pred prečerpaním:

```php
use Illuminate\Support\Facades\DB;

DB::transaction(function () use ($user, $redemption): void {
    $points = Credits::for($user)->bucket('points');
    $balance = $points->money();
    $eur = $redemption->convert($balance, 'EUR', rounding: \RoundingMode::TowardsZero);

    $points->deductMoney($balance, 'redeemed for store credit');
    Credits::for($user)->bucket('store_credit')->addMoney($eur, 'redeemed from points');
});
```

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