> ## Documentation Index
> Fetch the complete documentation index at: https://www.twicecommerce.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Varianta

> Konkrétní verze inzerátu, která se liší atributy jako velikost, barva nebo doba pronájmu.

![Konfigurace variant na inzerátu](https://mintcdn.com/twicecommerce/Ab7tx7ih94KQsi0k/images/catalog-listing-variants.webp?fit=max\&auto=format\&n=Ab7tx7ih94KQsi0k\&q=85\&s=0a062eee747016a798248e34e4bede2a)

Katalog > Inzeráty > \[Inzerát] > Varianty

## Definice

<Snippet file="definitions/cs/variant-definition.mdx" />

> [!NOTE]
>
> **Analogie:** Osa varianty je položka menu (Velikost: Malá / Střední / Velká) a hodnota varianty je konkrétní volba. Inzerát se dvěma osami, Velikost × Barva, se násobí do mřížky kupitelných kombinací.

> [!TIP]
>
> **Zvláštnost v TWICE:** Varianty v TWICE jsou čisté katalogové možnosti na inzerátu. Sklad nevlastní přímo. Dostupnost a plnění pro kombinaci variant se řeší přes **pravidla podle varianty**, která každou kombinaci nasměrují na odpovídající skladové položky ve skladu.

## Kde to použiji?

* **Merchandising katalogu** – Prodávejte několik velikostí nebo barev pod jedním inzerátem místo jeho duplikování
* **Ceny podle varianty** – Účtujte víc za XL nebo uplatněte cenový násobitel na konkrétní barvu
* **Plnění podle varianty** – Nasměrujte každou kombinaci variant na jiné SKU nebo filtr atributu
* **Dostupnost podle varianty** – Počítejte ATS nezávisle pro každou kombinaci hodnot variant
* **Stránka produktu na výkladní skříni** – Výběry variant se zobrazují v sekci Výběr varianty [rezervačního widgetu](https://www.twicecommerce.com/docs/cs/sales-channels/online-store/theme-editor/pages/listing.md) na stránce inzerátu, kde si zákazník vybere svou možnost spolu s daty a množstvím

## Anatomie varianty

Konfigurace variant inzerátu má tři vrstvy:

```
Listing
└── Variants[]            ← osy (Velikost, Barva, Rám …)
     ├── name             ← název osy zobrazený na stránce produktu
     ├── orderIndex       ← pořadí, ve kterém se osy zobrazují
     └── values[]         ← hodnoty osy (S, M, L …)
          ├── value
          └── orderIndex
```

`CatalogItemVariant` je osa, do které jsou vnořené její řádky `CatalogItemVariantValue`. Jedna osa vrácená API vypadá takto:

```json theme={null}
{
  "id": "f1a2b3c4-d5e6-4789-a012-3456789abcde",
  "catalogItemId": "a9b8c7d6-e5f4-4321-b098-7654321fedcb",
  "name": "Size",
  "orderIndex": 0,
  "values": [
    { "id": "11111111-1111-4111-8111-111111111111", "variantId": "f1a2b3c4-d5e6-4789-a012-3456789abcde", "value": "S", "orderIndex": 0 },
    { "id": "22222222-2222-4222-8222-222222222222", "variantId": "f1a2b3c4-d5e6-4789-a012-3456789abcde", "value": "M", "orderIndex": 1 },
    { "id": "33333333-3333-4333-8333-333333333333", "variantId": "f1a2b3c4-d5e6-4789-a012-3456789abcde", "value": "L", "orderIndex": 2 }
  ]
}
```

Konkrétní kupitelná kombinace je kartézský součin jedné hodnoty na osu. Inzerát s `Size = S | M | L` a `Colour = Red | Blue` dá šest kombinací.

## Osy variant (typické použití)

Osy variant jsou volně tvarovatelné: `name` přijímá libovolný řetězec. Několik konvencí je rozšířených:

| Osa | Typické hodnoty |
| - | - |
| Velikost | `XS`, `S`, `M`, `L`, `XL` |
| Barva | `Černá`, `Bílá`, `Červená`. Administrace vykreslí barevný vzorník, když hodnota jde vyhodnotit jako CSS barvu |
| Velikost rámu | `48 cm`, `52 cm`, `56 cm` |
| Délka | `170 cm`, `180 cm`, `190 cm` |

Administrace používá kategorii taxonomie inzerátu k zobrazení **doporučených atributů** jako návrhů osy na jedno kliknutí, ale schéma vás na ně neomezuje.

> [!NOTE]
>
> Doba pronájmu se **nemodeluje** jako osa varianty. Doba trvání patří na cenové tabulky (rezervační cenové řádky s `timeUnit` a `timeUnitAmount`). Varianty používejte pro fyzické možnosti produktu, cenové tabulky pro časově odstupňované ceny.

## Ceny podle varianty

Ceny podle varianty žijí na cenové tabulce, ne na samotné variantě. Když k inzerátu s variantami připojíte cenovou tabulku, můžete volitelně přidat blok `CatalogItemVariantPricingTable`. Tento blok nastaví `rateMultiplier` pro konkrétní hodnotu varianty nebo kombinaci hodnot, uplatněný nad základními cenovými řádky.

Několik pravidel:

* Bez záznamu podle varianty používá každá kombinace variant základní cenové řádky.
* `rateMultiplier` s hodnotou `1.0` odpovídá základní ceně, `1.2` přidá 20 %, `0.8` odečte 20 %.
* Přepsání podle varianty existují nezávisle pro `booking`, `sales` a `subscription`.
* Karta Varianty označí kombinaci jako „Cena varianty", pokud existuje přepsání, jinak jako „Základ".

Celý cenový model najdete v [konceptu Cenová tabulka](https://www.twicecommerce.com/docs/cs/concepts/catalog/price-tables.md).

## Plnění podle varianty (pravidla varianty)

Pravidla plnění inzerátu říkají směrování objednávek, které skladové položky mohou objednávku uspokojit. Každé základní pravidlo (`CatalogItemRule`) může mít přepsání podle varianty (`CatalogItemVariantRule`), které vymění podmínky pro konkrétní hodnotu varianty:

`CatalogItemVariantRule` má následující pole:

| Pole | Typ | Popis |
| - | - | - |
| `id` | String | Identifikátor generovaný serverem |
| `variantValueId` | String | Hodnota varianty, na kterou se toto přepsání vztahuje |
| `baseRuleId` | String | Základní pravidlo plnění, které je přepsáno |
| `conditions` | Array | Podmínky shody skladových položek pro tuto hodnotu varianty |
| `quantity` | Number | Počet jednotek k rezervaci |
| `createdAt` | Timestamp | Kdy bylo pravidlo vytvořeno |

V administraci se toto zobrazuje na kartě **Plnění** jako řádek pro každou hodnotu varianty, ukazující základní pravidlo a jakékoli přepisující podmínky. Podmínky přiřazují skladové položky podle atributu, kódu položky, kódu SKU, názvu položky nebo názvu SKU.

Příklad: inzerát má základní pravidlo „Rezervujte 1 jednotku odpovídající `category = bike`". Přidáte osu varianty `Velikost rámu` s hodnotami `48`, `52`, `56`. Poté přidáte tři pravidla podle varianty, jedno pro každou hodnotu velikosti rámu, každé s podmínkou `attribute:frame_size = 48 cm` (a tak dále). Směrování objednávek pak automaticky rezervuje jednotky se správnou velikostí rámu.

## Dostupnost variant

Dostupnost pro kombinaci variant počítá koncový bod katalogu `GET /catalog/:id/available-by-variant-value-groups`. Každý požadavek přebírá seznam skupin hodnot variant (jedna skupina na každou kombinaci, o kterou máte zájem) a vrací počet skladových položek dostupných v požadovaném okně pro každou skupinu, volitelně rozdělený podle místa.

Administrace tyto požadavky dávkuje po 50 kombinacích, aby se předešlo příliš velkým dotazům.

> [!NOTE]
>
> **Dostupnost skladu** na kartě Varianty je právě tento výpočet, ne uložené pole. Vypadá jako buňka tabulky, kterou byste mohli upravit, ale každé číslo v ní se odvozuje z pravidla plnění varianty vůči aktuálnímu skladu v okamžiku načtení.
>
> Není zde nic k přímému nastavení: chcete-li změnit, co se zobrazuje, změňte podmínky pravidla nebo sklad, kterému tyto podmínky odpovídají. Postup najdete v [Přidání nového SKU k existujícímu inzerátu](https://www.twicecommerce.com/docs/cs/guides/inventory/add-a-sku-to-a-listing.md).

## Kódy SKU a čárové kódy varianty

Varianty nemají na inzerátu vlastní sloupec kódu SKU. Mapování varianty na identifikátory skladu probíhá přes:

1. **Pravidla varianty**, která přiřazují filtry `sku_code`, `item_code` nebo `attribute:*` vůči skladovým položkám.
2. **Čárové kódy** na inzerátu (`CatalogItemBarcode`), které přiřadí naskenovaný kód k tomuto inzerátu. Čárové kódy se dnes rozpoznávají na úrovni inzerátu, ne na úrovni kombinace variant.

Pokud musí jeden kód SKU vždy vést ke konkrétní kombinaci variant, zakódujte tento záměr pravidlem varianty, jehož podmínka je `sku_code = …` a `quantity = 1`.

## Klíčové vlastnosti

### Osa varianty (`CatalogItemVariant`)

| Vlastnost | Typ | Popis |
| - | - | - |
| `id` | UUID | Generováno serverem |
| `catalogItemId` | UUID | Vlastnící inzerát |
| `name` | String | Štítek osy (Velikost, Barva, Velikost rámu, …) |
| `orderIndex` | Number | Pořadí zobrazení mezi osami |
| `values` | `CatalogItemVariantValue[]` | Hodnoty definované na této ose |

### Hodnota varianty (`CatalogItemVariantValue`)

| Vlastnost | Typ | Popis |
| - | - | - |
| `id` | UUID | Generováno serverem |
| `variantId` | UUID | Vlastnící osa |
| `value` | String | Zobrazovaná hodnota |
| `orderIndex` | Number | Pořadí zobrazení hodnot na stránce produktu |

## Vztahy

> **Vlastněny inzerátem**
>
> Varianty existují jen uvnitř [inzerátu](https://www.twicecommerce.com/docs/cs/concepts/catalog/listings.md). Smazání inzerátu odstraní všechny varianty. Varianty nelze sdílet mezi inzeráty.

> **Odkazovány pravidly varianty**
>
> `CatalogItemVariantRule.variantValueId` ukazuje na konkrétní hodnotu a `baseRuleId` na základní pravidlo plnění, které přepisuje. Model pravidel plnění najdete v [konceptu Inzerát](https://www.twicecommerce.com/docs/cs/concepts/catalog/listings.md).

> **Odkazovány cenovými řádky podle varianty**
>
> Přepsání cen podle varianty odkazují na hodnoty variant přes `CatalogItemVariantPricingTable.values`. Viz [koncept Cenová tabulka](https://www.twicecommerce.com/docs/cs/concepts/catalog/price-tables.md).

> **Vede k SKU a skladovým položkám**
>
> Kombinace variant neukazuje přímo na SKU. Cesta je: hodnota varianty → podmínky pravidla varianty → přiřazené [skladové položky](https://www.twicecommerce.com/docs/cs/concepts/inventory/stock-items.md) v okamžiku objednávky.

## Životní cyklus

**1. Přidání osy**

`POST /variants/:catalogItemId` s `{ name, values? }`. Hodnoty lze vytvořit zde, nebo později přes `POST /variants/:catalogItemId/values/:variantId`.

> **Mohu přidat druhou osu poté, co je první v provozu?**
>
> Ano. Existující pravidla variant a ceny podle varianty zůstávají připojené k ID hodnot, se kterými byly vytvořeny, automaticky se nerozšíří na nové kombinace, což vám umožní zavádět nové osy bez narušení stávajícího nastavení.

**2. Nastavení cen**

Na kartě Ceny připojte cenovou tabulku. Volitelně přidejte záznamy `CatalogItemVariantPricingTable` k přepsání základní sazby pro konkrétní hodnoty variant.

**3. Nastavení plnění**

Na kartě Plnění přidejte základní pravidlo. Pro každou hodnotu varianty, která se má plnit jinak, přidejte pravidlo varianty s upravenými podmínkami a množstvím.

**4. Přeřazení**

`POST /variants/:catalogItemId/reorder` s polem `variantIds` pro změnu pořadí os. Pořadí hodnot se aktualizuje přes `PUT /variants/:catalogItemId/:variantId`.

**5. Úprava hodnot**

`PUT /variants/:catalogItemId/:variantId` s `{ name, values }` pro přejmenování osy a úpravu jejích hodnot. Hodnoty vynechané z volání se odstraní přes párový koncový bod `deleteValues` ve formuláři administrace.

**6. Smazání**

`DELETE /variants/:catalogItemId/:variantId` odstraní osu. Jakákoli pravidla variant nebo ceny podle varianty vázané na její hodnoty se dál neuplatňují.

## Časté dotazy

> **Jaký je rozdíl mezi hodnotou varianty a SKU?**
>
> Hodnota varianty (`Size = M`) je štítek katalogové osy. SKU je definice skladu. Stejnou hodnotu varianty může obsluhovat mnoho SKU podle toho, jaká pravidla varianty a podmínky nastavíte.

> **Mohou dva inzeráty sdílet varianty?**
>
> Ne. Varianty patří jednomu inzerátu. Pokud dva inzeráty potřebují stejné osy, vytvořte je znovu na každém, ale zvažte, zda by se inzeráty nedaly sloučit.

> **Jak zabráním přeprodání konkrétní velikosti?**
>
> Ujistěte se, že každá hodnota varianty má pravidlo varianty s `quantity = 1` (nebo více) a podmínkami, které přiřazují správné skladové položky. ATS pro danou kombinaci variant pak odráží jen odpovídající jednotky.

> **Kam patří doba trvání, pokud ne jako varianta?**
>
> Doba trvání je zakódovaná jako rezervační cenové řádky na cenové tabulce (například `1 den @ 40 €`, `3 dny @ 100 €`, `1 týden @ 180 €`). Zákazník vybírá dobu trvání v sekci Výběr data a času [rezervačního widgetu](https://www.twicecommerce.com/docs/cs/sales-channels/online-store/theme-editor/pages/listing.md), výběr varianty řeší jen fyzické možnosti.

> **Jak ocením barvu o 20 % výš než základ?**
>
> Přidejte na cenové tabulce záznam ceny podle varianty pro tuto hodnotu barvy s `rateMultiplier = 1.2`.

## Reference pro vývojáře

Varianty inzerátů jsou v API vystaveny jako `variants`.

> **[API: Variants](https://www.twicecommerce.com/docs/api-reference/variants)**
>
> Otevřít koncový bod v referenci API.

## Související články

> **[Inzeráty](https://www.twicecommerce.com/docs/cs/concepts/catalog/listings.md)**
>
> Řádek katalogu, kterému varianty patří

> **[Cenové tabulky](https://www.twicecommerce.com/docs/cs/concepts/catalog/price-tables.md)**
>
> Kde se nastavují přepsání cen podle varianty

> **[SKU](https://www.twicecommerce.com/docs/cs/concepts/inventory/skus.md)**
>
> Definice skladu, ze kterých varianta plní

> **[Skladové položky](https://www.twicecommerce.com/docs/cs/concepts/inventory/stock-items.md)**
>
> Fyzické jednotky rezervované na kombinaci varianty


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.