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

# SKU (varastonimike)

> Tuotetason tunniste, joka ryhmittelee samankaltaiset varastoartikkelit yhteisen määritelmän alle tuotetietojen hallitsemiseksi laajassa mittakaavassa.

<Frame caption="Inventaario > SKU:t">
  <img src="https://mintcdn.com/twicecommerce/R_1b45pRTajoRzbd/images/inventory-skus-list.webp?fit=max&auto=format&n=R_1b45pRTajoRzbd&q=85&s=433c6023ec07c8cead8c85a6a43d00c7" alt="SKU-taulukko hallinnassa" width="1920" height="1080" data-path="images/inventory-skus-list.webp" />
</Frame>

## Määritelmä

<Snippet file="definitions/fi/sku-definition.mdx" />

SKU (varastonimike) on tuotetyypin **malli**. Se sisältää tuotetason tiedot — nimen, koodin, kategorian, attribuutit, kuvauksen, ostohinnan perusarvon ja hyllypaikan — ja toimii ylätason määritelmänä kaikille niille [varastoartikkeleille](/docs/fi/concepts/inventory/stock-items), jotka edustavat todellisia fyysisiä kappaleita.

<Info>
  **SKU:t ovat malleja.** Määritä tuotetiedot kerran SKU:lle, ja jokainen linkitetty varastoartikkeli perii ne. Varastoartikkelit voivat silti ohittaa minkä tahansa perityn kentän erikseen — SKU on oletus, ei lukko.
</Info>

**Esimerkki.** Luo SKU `BIK-S` nimeltä **Bike S** ja anna sille:

* Kategoria: *Polkupyörät > Kaupunki*
* Attribuutit: `Brand: Trek`, `Frame size: S`
* Ostohinta: `499 €`

Rekisteröi sitten 20 tähän SKU:hun linkitettyä varastoartikkelia. Jokainen perii kaikki neljä ominaisuutta. Yksi niistä tulee eri toimittajalta hintaan `520 €` — ohita `purchasePrice` vain tuolla artikkelilla; loput lukevat edelleen arvon `499 €` SKU:sta.

<Tip>
  **Erityistä TWICEssä:** SKU:t erottavat **mikä jokin on** (tuote) siitä, **mikä yksilö se on** (fyysinen kappale). Juuri siksi voit hallita tuotekatalogia ja silti säilyttää artikkelikohtaisen elinkaaren, kunnon ja kannattavuuden.
</Tip>

## Missä sitä käytetään?

SKU:t ovat keskeisiä tuotehallinnassa ja näkyvät kaikkialla TWICEssä:

* **Tuotekatalogin hallinta** — määritä tuotemalleja, jotka moni varastoartikkeli jakaa
* **Listausten luonti** — listaukset viittaavat SKU:hin määrittääkseen, mitä voidaan toimittaa
* **Joukkotoiminnot** — päivitä hinnoittelu, kuvaus tai attribuutit kerran SKU:lle ja anna muutoksen välittyä kaikkiin linkitettyihin artikkeleihin
* **Raportointi ja analytiikka** — analysoi tuloksia tuotetyypeittäin artikkelikohtaisen tarkastelun sijaan
* **Varaston suunnittelu** — seuraa varastotasoja ja kysyntää SKU:ttain
* **Tekoälyehdotukset** — `suggestSkuCode` ehdottaa koodia SKU:n nimen perusteella

## SKU vs. varastoartikkeli

| Käsite               | SKU                  | Varastoartikkeli                                |
| -------------------- | -------------------- | ----------------------------------------------- |
| Mitä se kuvaa        | Tuotetyyppiä         | Fyysistä kappaletta                             |
| Lukumäärä            | Yksi tuotetta kohden | Monta SKU:ta kohden                             |
| Tunniste             | `code` (SKU-koodi)   | `codes` (artikkelikoodit)                       |
| Sisältääkö varastoa? | Ei                   | Kyllä — määrä, sijainti, status, tila           |
| Onko reskontraa?     | Ei                   | Kyllä — tulot, kulut, kannattavuus              |
| Onko tapahtumia?     | Ei                   | Kyllä — varaukset, muistiinpanot, tapahtumaloki |
| Asetetaan luonnissa  | Kerran               | Kerran fyysistä kappaletta kohden               |

Varastoartikkeli voi olla myös **linkittämätön** (`skuId: null`) — hyödyllistä yksittäisille artikkeleille, jotka eivät sovi mihinkään tuotemalliin.

## Perityt kentät

Seuraavat kentät periytyvät SKU:lta jokaiselle linkitetylle varastoartikkelille:

| SKU-kenttä                                      | Varastoartikkelin perimä kenttä                  | Lähdekenttä artikkelilla                    |
| ----------------------------------------------- | ------------------------------------------------ | ------------------------------------------- |
| `purchasePrice`                                 | `purchasePrice`                                  | `purchasePriceOrigin` (`sku` tai `article`) |
| `description`                                   | `description`                                    | `descriptionOrigin` (`sku` tai `article`)   |
| `binLocation`                                   | `binLocation`                                    | `binLocationOrigin` (`sku` tai `article`)   |
| `taxonomyCategoryId`                            | `taxonomyCategoryId`                             | —                                           |
| `attributes`                                    | `attributes` (yhdistetään artikkelitason kanssa) | —                                           |
| `tags`                                          | `tags` (näkyvät linkitetyillä artikkeleilla)     | —                                           |
| `bufferTimeAmountAfter` + `bufferTimeUnitAfter` | `bufferTimeAmountAfter` + `bufferTimeUnitAfter`  | `bufferTimeOrigin` (`sku` tai `article`)    |

**Ohitusten toiminta:**

* Varastoartikkelin oma arvo menee SKU:n arvon edelle.
* API tarjoaa `*Origin`-kentät, joten tiedät aina, onko arvo peritty vai asetettu artikkelille.
* Arvon tyhjentäminen varastoartikkelilta (`null`) palauttaa perinnän SKU:sta.
* SKU-kentän päivitys muuttaa välittömästi voimassa olevan arvon jokaisella linkitetyllä artikkelilla, jolla ei ole omaa ohitusta.
* Puskuriaika käyttää kolmen tilan mallia: `null` = peritään SKU:sta, `0` = nimenomaisesti ei puskuria (ohittaa SKU:n), `> 0` = oma ohitusarvo. Katso tarkemmin [Varastoartikkelin keräily](/docs/fi/inventory/stock-items/fulfillment).

<Warning>
  SKU:n `purchasePrice`-arvon muuttaminen **ei** kirjoita uudelleen aiempia reskontramerkintöjä — ne säilyttävät sen hinnan, jolla ne kirjattiin. Perintä koskee vain **nykyisiä** lukuja.
</Warning>

## SKU-koodi

`code` on SKU:n käyttäjälle näkyvä tunniste. Säännöt:

* Pakollinen, vähimmäispituus 1.
* Oltava yksilöllinen tenantin sisällä.
* Tarkista ennen luontia kutsulla `POST /skus/validate-codes`.
* Ehdota koodia nimen perusteella kutsulla `POST /skus/suggest-code`.
* Muokattavissa luonnin jälkeen, mutta päivityksiin sovelletaan samaa yksilöllisyyssääntöä.

Tavallisia muotoja: `BIK-S`, `SKI-ATOM-170`, `HELM-MD-RED`. Valitse lyhyt, helposti muistettava ja pysyvä koodi.

## Keskeiset ominaisuudet

| Ominaisuus                | Tyyppi                   | Kuvaus                                                                         |
| ------------------------- | ------------------------ | ------------------------------------------------------------------------------ |
| `id`                      | UUID                     | Yksilöivä tunnus.                                                              |
| `name`                    | string                   | Ihmisluettava tuotenimi.                                                       |
| `code`                    | string                   | Tenantin sisällä yksilöllinen SKU-koodi.                                       |
| `taxonomyCategoryId`      | string, nullable         | Kategoria taksonomiassasi.                                                     |
| `purchasePrice`           | number, nullable         | Oletusostohinta, jonka linkitetyt artikkelit perivät (pienimmissä yksiköissä). |
| `description`             | rich text JSON, nullable | Oletuskuvaus.                                                                  |
| `binLocation`             | string, nullable         | Oletushyllypaikka.                                                             |
| `attributes`              | array                    | SKU:hun liitetyt resurssiattribuutit.                                          |
| `tags`                    | array                    | Tunnisteviittaukset.                                                           |
| `createdAt` / `updatedAt` | ISO datetime             | Aikaleimat.                                                                    |
| `articles`                | array (valinnainen)      | Pyydettäessä upotetut tähän SKU:hun linkitetyt varastoartikkelit.              |

## Useita listauksia yhtä SKU:ta kohden

Yksi SKU voi toimia usean listauksen pohjana. Listaustaso lisää vuokraehdot, hintataulukot, saatavuusjaksot ja kanavat — mutta taustalla oleva SKU pysyy samana. Näin yksi tuote voi näkyä eri toimipisteissä, paketeissa tai hinnoittelutilanteissa ilman, että sen identiteettiä monistetaan.

```mermaid theme={null}
%%{init: {'flowchart': {'nodeSpacing': 20, 'rankSpacing': 30}}}%%
flowchart TB
    SKU["**SKU: Bike S**"]
    L1["Listaus: Päivävuokra"]
    L2["Listaus: Viikkopaketti"]
    L3["Listaus: Myynnissä"]
    A1["Varastoartikkeli #1"]
    A2["Varastoartikkeli #2"]
    A3["Varastoartikkeli #3"]
    SKU --> L1
    SKU --> L2
    SKU --> L3
    SKU --> A1
    SKU --> A2
    SKU --> A3
    style SKU fill:#3b82f633,stroke:#3b82f6,stroke-width:3px,font-weight:bold
    style A1 fill:#10b98133,stroke:#10b981,stroke-width:2px
    style A2 fill:#10b98133,stroke:#10b981,stroke-width:2px
    style A3 fill:#10b98133,stroke:#10b981,stroke-width:2px
    style L1 fill:#f59e0b1a,stroke:#f59e0b,stroke-width:1px
    style L2 fill:#f59e0b1a,stroke:#f59e0b,stroke-width:1px
    style L3 fill:#f59e0b1a,stroke:#f59e0b,stroke-width:1px
```

## Suhteet

<AccordionGroup>
  <Accordion title="Sisältää monta varastoartikkelia">
    Sisältää monta [varastoartikkelia](/docs/fi/concepts/inventory/stock-items) kentän `articles[].skuId` kautta. Jokainen varastoartikkeli perii SKU:n ominaisuudet mutta ylläpitää omaa seurantaansa, reskontraansa ja tapahtumahistoriaansa.
  </Accordion>

  <Accordion title="Listaukset viittaavat siihen">
    [Listaukset](/docs/fi/concepts/catalog/listings) viittaavat SKU:hin toimitettavan varaston lähteinä. Yksi SKU voi toimia monen listauksen pohjana.
  </Accordion>

  <Accordion title="Kuuluu kategoriaan ja sisältää attribuutteja">
    Kuuluu taksonomiakategoriaan ja sisältää omat resurssiattribuuttinsa. Nämä periytyvät linkitetyille varastoartikkeleille.
  </Accordion>
</AccordionGroup>

## Elinkaari

<Steps>
  <Step title="Luonti">
    SKU:t luodaan, kun katalogiin määritetään uusia tuotetyyppejä.

    <AccordionGroup>
      <Accordion title="Miten luon SKU:n?">
        Napsauta kohdassa **Inventaario > SKU:t** painiketta **Create SKU**. Anna nimi; koodi voidaan ehdottaa automaattisesti. Voit luoda SKU:ita myös automaattisesti varastoartikkeleita rekisteröidessäsi kirjoittamalla uuden SKU-nimen SKU-valitsimeen.
      </Accordion>

      <Accordion title="Mitä tietoja vaaditaan?">
        Vähintään: `name` ja `code`. Suositeltavat: `taxonomyCategoryId`, `purchasePrice`, `description` ja attribuutit — kaikki, minkä haluat periytyvän jokaiselle varastoartikkelille.
      </Accordion>

      <Accordion title="Voiko luonnin automatisoida?">
        Kyllä. Käytä kutsua `POST /skus` (yksi) tai `POST /skus/many` (joukko). Molemmat ovat idempotentteja `code`-kentän suhteen — päällekkäiset koodit hylätään etukäteen `validateCodes`-tarkistuksella.
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Käyttö">
    Aktiiviset SKU:t toimivat malleina läpi toiminnan.

    <AccordionGroup>
      <Accordion title="Missä näen SKU:t?">
        Kohdassa **Inventaario > SKU:t**, SKU:n tarkastelusivulla (upotettuine varastoartikkeleineen), varastoartikkelien rekisteröinnissä, listausten määrityksessä ja raportoinnissa.
      </Accordion>

      <Accordion title="Mitä toimintoja voin tehdä?">
        Muokata mitä tahansa kenttää, linkittää varastoartikkeleita asettamalla niiden `skuId`, liittää tunnisteita, määrittää attribuutteja ja hallita taksonomiaa. SKU-tason päivitykset välittyvät välittömästi niille linkitetyille varastoartikkeleille, jotka eivät ole ohittaneet kenttää.
      </Accordion>

      <Accordion title="Onko SKU:lla status?">
        Ei suoraan. Saatavuus määräytyy linkitettyjen varastoartikkelien perusteella. SKU:lla, jolla ei ole yhtään `active`-varastoartikkelia, ATS on nolla.
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Muokkaus">
    Käytä SKU:ita joukkomuutosten tekemiseen.

    <AccordionGroup>
      <Accordion title="Miten muokkaan SKU:ta?">
        Avaa SKU:n tarkastelusivu ja muokkaa tai käytä kutsua `PATCH /skus/:skuId`. Muutokset välittyvät linkitetyille varastoartikkeleille perinnän kautta.
      </Accordion>

      <Accordion title="Entä SKU-koodi?">
        Muokattavissa, mutta uuden arvon on oltava yksilöllinen tenantin sisällä. Vältä sellaisten koodien muuttamista, jotka on painettu fyysisiin tarroihin.
      </Accordion>

      <Accordion title="Voinko päivittää attribuutteja joukkona?">
        Kyllä. Attribuuttien päivitys SKU:lla päivittää voimassa olevan arvon jokaisella linkitetyllä varastoartikkelilla, joka ei ole ohittanut kyseistä attribuuttia.
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Poistaminen">
    SKU:t voi poistaa, kun tuote poistuu valikoimasta.

    <AccordionGroup>
      <Accordion title="Miten poistan SKU:n?">
        SKU-taulukosta tai kutsulla `DELETE /skus/:skuId`. Useamman poistoon kerralla: `POST /skus/delete` joko arvoilla `{ ids }` tai `{ deleteAllExcept }`.
      </Accordion>

      <Accordion title="Mitä linkitetyille varastoartikkeleille tapahtuu?">
        Niiden `skuId` muuttuu arvoon `null` (ne muuttuvat linkittämättömiksi). Perityt arvot menetetään seuraavalla lukukerralla — aseta ne suoraan artikkeleille, jos haluat säilyttää ne.
      </Accordion>
    </AccordionGroup>
  </Step>
</Steps>

## Usein kysytyt kysymykset

<AccordionGroup>
  <Accordion title="Pitäisikö SKU luoda ennen varastoartikkeleita vai niiden jälkeen?">
    Kumpikin toimii. Luo SKU:t ensin, kun suunnittelet katalogia. Yksittäisessä varastonlisäyksessä varastoartikkelien rekisteröinti luo tai linkittää SKU:n lennossa.
  </Accordion>

  <Accordion title="Voiko varastoartikkeli kuulua useampaan SKU:hun?">
    Ei. `skuId` on yksiarvoinen. Voit vaihtaa linkin milloin tahansa (kirjataan `sku_changed`-tapahtumana), mutta vain yksi on kerrallaan voimassa.
  </Accordion>

  <Accordion title="Miten SKU:n attribuutit eroavat varastoartikkelin attribuuteista?">
    Sama rakenne, eri laajuus. SKU:n attribuutit kuvaavat tuotetyyppiä (esim. `Brand: Trek`). Varastoartikkelin attribuutit voivat lisätä tai ohittaa kappalekohtaisia arvoja (esim. tietty artikkeli, jolla `Frame number: ABC123`). API:ssa artikkelitason arvot voittavat.
  </Accordion>

  <Accordion title="Tarvitsenko SKU:ta lainkaan?">
    Et — `skuId` voi olla `null`. Yksittäisille artikkeleille voit rekisteröidä varastoartikkelin ilman SKU:ta. Menetät perinnän ja artikkelien väliset koosteet, mutta artikkelilla on silti oma reskontransa, tapahtumansa ja elinkaarensa.
  </Accordion>

  <Accordion title="Voinko siirtää kaikki artikkelit SKU:sta A SKU:hun B?">
    Kyllä — päivitä kunkin varastoartikkelin `skuId` (yhtenä joukkopäivityksenä tai skriptattuna API:n kautta). Kunkin artikkelin SKU-koodi kirjoitetaan uudeksi SKU-koodiksi; reskontra ja tapahtumahistoria seuraavat artikkelia.
  </Accordion>
</AccordionGroup>

## Kehittäjän viitetiedot

SKU:t ovat API:ssa `skus`-resurssi.

<Card title="API: SKUs" icon="code" href="https://server.twicecommerce.com/api/internal">
  Avaa päätepiste API-viitteessä.
</Card>

## Aiheeseen liittyvät käsitteet

<CardGroup cols={2}>
  <Card title="Varastoartikkelit" icon="box" href="/docs/fi/concepts/inventory/stock-items">
    Yksittäiset fyysiset kappaleet, jotka linkittyvät SKU:hun
  </Card>

  <Card title="Varastonseuranta" icon="boxes-stacked" href="/docs/fi/concepts/inventory/inventory-tracking">
    Sarjanumeroitu vs. yhteisvarasto — asetetaan varastoartikkeleille, ei SKU:lle
  </Card>

  <Card title="Varastokoodit" icon="barcode" href="/docs/fi/concepts/inventory/stock-codes">
    Varastoartikkelien koodit vs. SKU-koodi
  </Card>
</CardGroup>
