---
title: "Pravidelné obnovenie — Credits for Laravel | Roundly"
description: "Nastavte skupinu na presný zostatok najviac raz za deň, týždeň, mesiac, rok alebo vlastné obdobie — a plánujte credits:reset bez dvojitého obnovenia."
url: https://roundly-consulting.com/sk/open-source/navody/credits-for-laravel/pravidelne-obnovenie
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)

# Pravidelné obnovenie

Pravidelné obnovenie nastaví zvolené skupiny na presný zostatok raz za obdobie — mesačné bezplatné kredity, denný limit. Je idempotentné pre vlastníka, skupinu a obdobie, takže dvojito naplánovaný beh, dva servery ani zopakovaný job neobnovia skupinu dvakrát. Obnovenie potrebuje tabuľku credit\_resets (pozrite Inštalácia) a žiadny prepínač:

```php
use RoundlyConsulting\Credits\Enums\ResetPeriod;
use RoundlyConsulting\Credits\Facades\Credits;

$result = Credits::for($user)->bucket('free')->reset(ResetPeriod::Monthly, to: 100);

$result->reset;    // true — false when this bucket was already reset this period
$result->period;   // '2026-11'
$result->credit;   // the delta row, or null (already reset, or the balance already matched)

Credits::reset($user, 'billing-cycle-7', to: 500, bucket: 'pro');     // an explicit period key
$user->resetCredits(ResetPeriod::Daily, to: 10, bucket: 'daily_allowance');
```

- Idempotentné pre obdobie: jeden riadok credit\_resets na vlastníka, skupinu a kľúč obdobia, zapísaný v transakcii obnovenia pod zámkom vlastníka. Druhé obnovenie v tom istom období nič nezapíše a vráti reset: false.
- Kľúče obdobia sa určia z aktuálneho času v časovom pásme aplikácie: Daily → 2026-11-09, Weekly → 2026-W46 (rok podľa ISO týždňov), Monthly → 2026-11, Yearly → 2026. Alebo zadajte vlastný kľúč (1–64 znakov, orezaný) pre fakturačné cykly, ktoré sa neriadia kalendárom.
- Obnovenie je setTo($to): jeden rozdielový záznam (meta \['reset\_period' => key\], pokiaľ nezadáte vlastné meta), CreditsModified a tá istá ochrana — zníženie skupiny pod jej rezervované kredity sa odmietne, pokiaľ nie je povolené prečerpanie. Odmietnuté obnovenie nezanechá žiadnu značku, takže ho ďalší beh zopakuje.
- K dispozícii je aj Credits::reset($owner, $period, to:, bucket:, description:, meta:, allowOverdraft:) a $user->resetCredits($period, to:, …, bucket:).

## Plánovanie — credits:reset

```
credits:reset {bucket*}
    {--period=monthly : daily, weekly, monthly or yearly}
    {--key= : an explicit period key instead of --period}
    {--to=0 : the balance to reset to}
    {--timezone= : the timezone the period is read in (default app.timezone)}
    {--description= : description for the delta rows}
    {--allow-overdraft : reset even when held credits would breach the minimum}
    {--resolvers : reset the owners the credits.modifiable resolvers yield}
```

| Argument / voľba | Predvolené | Význam |
| --- | --- | --- |
| `bucket*` | — | Jedna alebo viac skupín na obnovenie. |
| `--period` | monthly | daily, weekly, monthly alebo yearly. |
| `--key` | — | Explicitný kľúč obdobia namiesto --period (napr. 2026-11). |
| `--to` | 0 | Zostatok, na ktorý sa každá skupina obnoví; musí to byť celé číslo. |
| `--timezone` | app.timezone | Časové pásmo, v ktorom sa obdobie určí. |
| `--description` | null | Popis rozdielových záznamov. |
| `--allow-overdraft` | false | Obnoviť aj vtedy, keď by rezervované kredity dostali dostupný zostatok pod minimum. |
| `--resolvers` | false | Obnoviť vlastníkov, ktorých vrátia closures z credits.modifiable, namiesto každého vlastníka so záznamami v skupine. |

Predvolene obnoví každého vlastníka, ktorý má v danej skupine záznamy — vlastníci sa načítajú cez svoj morph typ a záznam, ktorého vlastník už neexistuje, sa nahlási a preskočí. S --resolvers obnoví namiesto toho vlastníkov, ktorých vrátia closures z credits.modifiable; to potrebujete pre vlastníkov, ktorí kredity ešte nikdy nemali. Kľúč obdobia sa určí raz za beh, takže beh, ktorý prekročí polnoc, obnoví všetkých do toho istého obdobia:

```php
// routes/console.php — free credits back to 100 on the 1st, in the business's timezone
Schedule::command('credits:reset free --period=monthly --to=100 --timezone=Europe/Bratislava')
    ->monthlyOn(1, '00:05')
    ->timezone('Europe/Bratislava');

// daily allowance, topping up every user (resolvers in credits.modifiable)
Schedule::command('credits:reset daily_allowance --period=daily --to=10 --resolvers')->dailyAt('00:01');
```

Druhé spustenie toho istého príkazu v jednom období už nič neobnoví. Príkaz vypíše, koľko vlastníkov obnovil a koľko už v danom období obnovených bolo; vlastník, ktorého ochrana odmietne, sa nahlási, beh pokračuje a príkaz skončí s kódom 1. Chybné voľby — --period=hourly, neceločíselné --to, priveľký --key, neznáme --timezone — zlyhajú skôr, než sa čokoľvek zapíše.

## Tabuľka credit\_resets

| Stĺpec | Typ | Poznámka |
| --- | --- | --- |
| `creditable_type / creditable_id` | morph pair, id per key\_type | |
| `bucket` | string | |
| `period` | string(64) | Kľúč obdobia. |
| `reset_to` | bigInteger | |
| `credit_id` | per primary\_key\_type, nullable | Rozdielový záznam, ak sa zapísal. |
| `created_at` | timestamp | |

Primárny kľúč (creditable\_type, creditable\_id, bucket, period) — záruka idempotencie. Na zostatok sa nikdy nečíta.

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