---
title: "Peniaze a meny — Shops for Laravel | Roundly"
description: "Každá suma je presné Money z money-for-laravel — casty a stĺpce decimal(38,0), ochrana mien a objednávky, ktoré si pamätajú vlastnú menu."
url: https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel/peniaze-a-meny
language: sk
---

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

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

# Peniaze a meny

Každá suma v shops je Money z money-for-laravel: najmenšie jednotky ako presný celočíselný reťazec v registrovanej mene so skutočným exponentom (JPY 0, EUR 2, BHD 3). Shops nemá vlastný peňažný typ — coupons aj credits používajú ten istý, takže sa medzi balíkmi nič neprevádza:

```php
use RoundlyConsulting\Money\Money;

$price = Money::ofMinor(1000, 'EUR');                      // 10.00 EUR
$same  = Money::ofMajor('10.00', 'EUR');                   // from a decimal string
$total = Money::sum([$price, Money::ofMinor(500, 'EUR')]); // 15.00 EUR

$price->minor();              // "1000" (string — exact past int64)
$price->currency()->code;     // "EUR"
(string) $price;              // "10.00 EUR"
```

## Casty a stĺpce

| Model | Atribút | Cast / stĺpec |
| --- | --- | --- |
| ProductVariant, CartItem, Orders\\Item | `price` | AsMoney::currencyColumn('currency') — decimal(38,0) + currency code |
| Order | `currency` | AsCurrency — snapshotted on insert |
| Order | `discount, store_credit_applied` | AsMoney::currencyColumn('currency') — nullable |
| Cart | `currency` | AsCurrency |
| Shop | `currency` | raw nullable ISO code — Shop::currency() resolves it |

- Cast ceny zapíše stĺpec currency riadku podľa Money. Odmietne zmeniť menu stĺpca, ktorý už obsahuje iný kód, preto pri zmene meny variantu uveďte v poliach fill() či update() currency pred price.
- decimal(38,0) je presný na 38 číslic v pgsql a MySQL — orderBy, sum aj where porovnávajú číselne. V SQLite cast odmietne sumy nad rozsah int64.
- tax\_rates.rate zostáva celé číslo bez znamienka v bázických bodoch, nie peňažná suma.

```php
// decimal(38,0) compares numerically on pgsql/MySQL — bind minor() strings, never (int):
ProductVariant::query()
    ->where('price', '>=', $minimum->minor())
    ->orderBy('price')
    ->get();
```

## Ochrana mien

Miešanie mien vyhodí CurrencyMismatch z balíka money — aj pri pridaní variantu v inej mene do košíka či objednávky:

```php
$cart = Cart::create(['currency' => 'EUR']);
Shops::cart($cart)->add($usdVariant);
// throws RoundlyConsulting\Money\Exceptions\CurrencyMismatch — the cart is unchanged
```

## Zafixovaná mena objednávky

Objednávka ukladá vlastnú menu, ktorá sa pri vložení nastaví, ak nebola zadaná: mena košíka pri vytvorení objednávky, inak mena jej obchodu (shop\_id alebo naviazaný CurrentShop), inak pricing.default\_currency. Výpočet ceny aj AddOrderItemAction používajú menu objednávky, nikdy konfiguráciu — zmena SHOPS\_DEFAULT\_CURRENCY neprepočíta vytvorené objednávky.

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