---
title: "Fasáda Shops — Shops for Laravel | Roundly"
description: "Handly Shops::cart(), order() a inventory() a k nim coupons(), current() a addresses() — celé API obchodu v jednej fasáde so zoznamom všetkých metód."
url: https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel/fasada
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)

# Fasáda Shops

RoundlyConsulting\\Shops\\Facades\\Shops sprístupňuje celé API na jednom mieste. Každá oblasť je ohraničený handle — jeden košík, jedna objednávka, zásoba jedného variantu — alebo pomocný prístupový bod. Balík fasádu zaregistruje aj ako globálny alias Shops:

```php
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Shops\Facades\Shops;
use RoundlyConsulting\Shops\Inventory\Enums\StockReason;
use RoundlyConsulting\Shops\Orders\DataTransferObjects\PlaceOrderData;
use RoundlyConsulting\Shops\Orders\Enums\Status;

// Cart — lines of another cart are refused (ForeignItemException)
Shops::cart($cart)->add($variant, 2);            // CartItem; the same variant merges into its line
Shops::cart($cart)->update($item, 3);            // ?CartItem — 0 removes the line
Shops::cart($cart)->remove($item);
Shops::cart($cart)->clear();                     // the "empty cart" button
Shops::cart($cart)->price('SUMMER');             // Price DTO, optionally with a coupon code
Shops::cart($cart)->subtotal();                  // Money
$order = Shops::cart($cart)->checkout(new PlaceOrderData(couponCode: 'SUMMER'));

// Order
Shops::order($order)->transition(Status::InProgress);
Shops::order($order)->charge();                  // PaymentResult — Paid on success; New/InProgress only
Shops::order($order)->fulfil();                  // reservation becomes a sale
Shops::order($order)->cancel();                  // reservation released, store credit returned
Shops::order($order)->refund();                  // an unfulfilled order's reservation released too
Shops::order($order)->quoteShipping($address);   // Money, through the bound ShippingMethod

// Inventory — every change is a StockAdjustment ledger row
Shops::inventory($variant)->receive(10, ref: $purchaseOrder, note: 'PO-17');
Shops::inventory($variant)->returned(1, $order); // the variant must be on that order
Shops::inventory($variant)->adjust(-2, StockReason::Manual, note: 'Damaged');
Shops::inventory($variant)->available();         // stock - reserved

// Coupons, tenancy, addresses
Shops::coupons()->preview('WELCOME10', Money::ofMinor(1000, 'EUR')); // DiscountResult, no redemption
Shops::current()->set($shop);                    // CurrentShop: set / get / id / forget / run
Shops::addresses()->defaults($customer);         // OrderAddresses (billing, shipping)
```

## Vstupné body

| Volanie | Vracia | Čo to je |
| --- | --- | --- |
| `Shops::cart(Cart $cart)` | `Handles\CartHandle` | Jeden košík: riadky, cena, objednávka. |
| `Shops::order(Order $order)` | `Handles\OrderHandle` | Jedna objednávka: prechody stavu, platba, cena dopravy. |
| `Shops::inventory(ProductVariant $variant)` | `Handles\InventoryHandle` | Zásoba jedného variantu. |
| `Shops::coupons()` | `Handles\CouponsHandle` | Náhľad kupónov bez uplatnenia. |
| `Shops::current()` | `Shops\CurrentShop` | Naviazaný tenant (pozrite Obchody a tenancy). |
| `Shops::addresses()` | `Orders\AddressBook` | Predvolené adresy objednávky zákazníka. |
| `Shops::fake()` | `Testing\ShopsFake` | Zaznamenávajúci manažér (pozrite Testovanie). |

## Metódy handlov

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `cart($cart)->add(ProductVariant $variant, int $quantity = 1)` | `CartItem` | Zafixuje variant; ten istý variant sa pripočíta k svojmu riadku. |
| `cart($cart)->update(CartItem $item, int $quantity)` | `?CartItem` | Nastaví množstvo riadku; 0 ho odstráni a vráti null. |
| `cart($cart)->remove(CartItem $item)` | `void` | Odstráni riadok. |
| `cart($cart)->clear()` | `Cart` | Odstráni všetky riadky; košík zostane. |
| `cart($cart)->price(?string $couponCode = null)` | `Price` | Ocení košík s uloženým alebo zadaným kódom kupónu. Nikdy ho neuplatní. |
| `cart($cart)->subtotal()` | `Money` | Medzisúčet tovaru pred zľavou. |
| `cart($cart)->checkout(PlaceOrderData $data = new PlaceOrderData)` | `Order` | Vytvorí objednávku v jednej transakcii pod zámkom riadku košíka — dvojité odoslanie vytvorí jednu objednávku. |
| `order($order)->transition(Status $to)` | `Order` | Ľubovoľný povolený prechod stavu. |
| `order($order)->cancel() / refund() / fulfil()` | `Order` | Skratky pre Canceled (kredit sa vráti), Refunded a Fulfilled. |
| `order($order)->charge()` | `PaymentResult` | Len objednávky New alebo InProgress, rozhodnuté pod zámkom riadku objednávky. Najprv kredit (ak je zapnutý), zvyšok cez bránu; pri úspechu Paid. |
| `order($order)->quoteShipping(Address $to)` | `Money` | Cena cez naviazaný ShippingMethod. |
| `inventory($variant)->receive(int $quantity, ?Model $ref = null, ?string $note = null)` | `StockAdjustment` | Príjem tovaru: zásoba na sklade stúpne. |
| `inventory($variant)->returned(int $quantity, ?Model $ref = null, ?string $note = null)` | `StockAdjustment` | Vrátenie od zákazníka; pri odkaze na Order na nej variant musí byť. |
| `inventory($variant)->adjust(int $delta, StockReason $reason = StockReason::Manual, ?Model $ref = null, ?string $note = null)` | `StockAdjustment` | Ľubovoľná úprava so znamienkom; predvolene ručná korekcia. |
| `inventory($variant)->available()` | `int` | Zásoba mínus rezervované. |
| `inventory($variant)->inStock(int $quantity = 1)` | `bool` | Či sa dá množstvo predať hneď. |
| `coupons()->preview(string $code, Money $goods)` | `DiscountResult` | Koľko by kód odpočítal, cez naviazaný DiscountResolver. |
| `addresses()->defaults(Addressable $customer, ?bool $billingSameAsShipping = null)` | `OrderAddresses` | Primárna fakturačná a doručovacia adresa ako údaje objednávky. |
| `addresses()->map(?AddressModel $address)` | `?Address` | Jedna uložená adresa ako Address objednávky. |

- Riadok iného košíka handle odmietne výnimkou ForeignItemException skôr, než sa čokoľvek zapíše — košíky obmedzte na aktuálneho zákazníka a ID riadkov z requestu nechajte strážiť handle.
- returned() s odkazom na Order odmietne variant, ktorý na danej objednávke nikdy nebol — tiež výnimkou ForeignItemException.
- Nepovolený prechod stavu vyhodí IllegalStatusTransitionException a nič nezmení; nedostatok tovaru pri vytvorení objednávky vyhodí InsufficientStockException a prázdny košík alebo riadok s odstráneným variantom CheckoutRefusedException — ani jedna nič nezapíše.
- Metódy Shops::current() (set, get, id, forget, run) nájdete v sekcii Obchody a tenancy.

## Skratky na modeloch

Pomocné metódy modelov idú cez ten istý manažér, takže sa správajú rovnako a Shops::fake() ich vidí:

```php
use RoundlyConsulting\Shops\Orders\Enums\Status;
use RoundlyConsulting\Shops\Shops\Shop;

$cart->add($variant, 2);            // Shops::cart($cart)->add($variant, 2)
$order->transitionTo(Status::Paid); // Shops::order($order)->transition(Status::Paid)
$order->markInProgress();           // → InProgress
$order->markPaid();                 // → Paid
$order->markFulfilled();            // → Fulfilled
$order->cancel();                   // Shops::order($order)->cancel()
$order->refund();                   // Shops::order($order)->refund()
Shop::current();                    // Shops::current()->get(), typed to the package's Shop model
```

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