---
title: "Peniaze a ceny — Purchases for Laravel | Roundly"
description: "Ceny ako Money z money-for-laravel s ľubovoľnou presnosťou, uložené v dvoch stĺpcoch a presne prevedené z formátu každého obchodu."
url: https://roundly-consulting.com/sk/open-source/navody/purchases-for-laravel/peniaze-a-ceny
language: sk
---

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

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

# Peniaze a ceny

Atribút price na modeloch Purchase, PurchaseItem, Subscription, SubscriptionItem a PurchaseRefund je Money z money-for-laravel, castovaný cez AsMoney do dvoch stĺpcov: price (decimal(38,0) v najmenších jednotkách) a price\_currency (ISO kód). Sumy sú reťazce s ľubovoľnou presnosťou — na PostgreSQL ani MySQL nemajú strop 32 či 64 bitov — a meny ako JPY a BHD používajú svoje skutočné exponenty:

```php
use RoundlyConsulting\Money\Money;

$purchase->price = Money::ofMinor(2599, 'USD');   // writes price + price_currency
$purchase->price->minor();                         // "2599" (string)
$purchase->price->currency()->code;                // "USD"
$purchase->price->toDecimal();                     // "25.99"
$purchase->price->add(Money::ofMinor(100, 'USD')); // 26.99 USD
$purchase->price->format('en_US');                 // "$25.99"

$purchase->price = null;                           // clears the amount, keeps price_currency
```

Cast je striktný: priradenie holého čísla vyhodí InvalidMoneyValue (samotné číslo nemá menu) a suma uložená s price\_currency null vyhodí výnimku pri čítaní. Factory a seedery odovzdávajú Money::ofMinor(…).

## Ceny z obchodov

ProviderResult::price() sa prevádza z formátu každého obchodu bez aritmetiky s plávajúcou desatinnou čiarkou:

| Obchod | Zdroj | Prevod |
| --- | --- | --- |
| Stripe | amount, amount\_total, amount\_paid, amount\_due alebo amount\_refunded, plus currency | Najmenšie jednotky cez Money::ofMinor(); ISK, UGX a MGA sa preškálujú podľa StripeAmount::SCALE\_EXCEPTIONS. |
| Apple | Cena podpísanej transakcie v tisícinách, plus currency | Money::ofScaled() so škálou 3, raz zaokrúhlené od nuly; refundácia zaznamená len vrátenú časť. |
| Google predplatné | recurringPrice položiek (units + nanos) | Presne sčítané cez GoogleMoney; predplatené plány cenu nemajú. |
| Google jednorazové produkty | — | Play Developer API cenu neposiela, preto je price() null. |

Cena, ktorú balík nedokáže previesť presne — float alebo zlomková suma zo Stripe, neznáma mena, hodnota mimo rozsahu — sa zmení na null namiesto orezania a zvyšok výsledku sa aj tak uloží.

## Súčty v SQL

Keďže price je číselný stĺpec, orderBy('price') a sum('price') fungujú v rámci jednej meny. sum() vracia na PostgreSQL a MySQL reťazec — odovzdajte ho priamo do Money::ofMinor():

```php
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Purchases\Models\Purchase;

$sum = Purchase::query()
    ->where('price_currency', 'USD')
    ->sum('price');                    // a string on PostgreSQL and MySQL

$total = Money::ofMinor($sum, 'USD');
$total->format('en_US');
```

## Auditné snapshoty

Auditné notifikácie ukladajú cenu ako Money::toArray(), pričom minor je JSON reťazec, takže prežijú aj sumy nad int64. purchases:replay ju obnoví cez Money::fromArray() a snapshot, ktorého cenu obnoviť nemožno, preskočí:

```json
{ "minor": "1999", "decimal": "19.99", "currency": "USD" }
```

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