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

# Varastoartikkeli

> Yksilöivä varastotietue, joka edustaa joko yhtä fyysistä artikkelia tai yhdessä seurattavaa identtisten artikkelien joukkoa.

<Frame caption="Inventaario > Varastoartikkelit">
  <img src="https://mintcdn.com/twicecommerce/5ARkyCTk5wMAizBn/images/inventory-stock-items-list.webp?fit=max&auto=format&n=5ARkyCTk5wMAizBn&q=85&s=d2a1eceae6c8d7703ea1187be5aa336a" alt="Varastoartikkelitaulukko hallinnassa" width="1920" height="1080" data-path="images/inventory-stock-items-list.webp" />
</Frame>

## Määritelmä

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

Varastoartikkeli (API:ssa `article`) on se varaston yksikkö, jonka todella omistat. Se sisältää koodit, sijainnin, kunnon, attribuutit, mediat, dokumentit, täyden tapahtuma-aikajanan sekä tulojen ja kulujen reskontran. Jokainen varastoartikkeli kuuluu tenantille ja sijaitsee palvelusijainnissa. Se voidaan myös linkittää [SKU:hun](/docs/fi/concepts/inventory/skus), jolta se oletuksena perii tuotetason kentät.

<Info>
  **Vertauskuva:** Varastoartikkeli on fyysisen tuotteen passi. Kuten passi seuraa henkilön matkaa yksilöivällä tunnuksella, varastoartikkeli seuraa tuotteen koko elinkaarta omalla artikkelikoodillaan — missä se on ollut, mitä sille on tapahtunut ja missä se on nyt.
</Info>

<Tip>
  **Erityistä TWICEssä:** Varastoartikkelit ovat **oletuksena sarjanumeroituja** — rekisteröinti seuraa jokaista kappaletta erikseen, ellet poista **Track individually** -valintaa. Yksi fyysinen esine = yksi varastoartikkeli. Näin saat käyttöösi kappalekohtaisen kannattavuuden, kunnon seurannan ja huoltohistorian. Sama jako on myös artikkelireskontran perusta, joka kuvataan seuraavassa osiossa.
</Tip>

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

Varastoartikkelit ovat TWICEn varastojärjestelmän perusta. Käytät varastoartikkeleita, kun:

* **Rekisteröit uutta varastoa** — kirjaat kalustoosi, myymälääsi tai varastoosi saapuvat kappaleet
* **Seuraat artikkelin elinkaarta** — käyttö, vuokraukset, myynnit, huolto, arvonalennukset, hävittäminen
* **Hallitset saatavuutta** — tiedät, mikä on käsillä, mikä asiakkaalla ja mikä korjattavana
* **Analysoit kannattavuutta** — luet artikkelikohtaiset tulot ja kulut reskontrasta
* **Toimitat tilauksia** — kohdistat tiettyjä artikkeleita asiakastilauksille ja skannaat niitä ulos ja sisään

Sarjanumeroituina varastoartikkeleita voi seurata tarkasti vuokraustoiminnassa, takaisinosto-ohjelmissa, kunnostusprosesseissa ja huoltopainotteisessa liiketoiminnassa.

## Artikkelireskontra

Jokaisella varastoartikkelilla on oma **reskontransa** — aikajärjestyksessä oleva loki rahamääräisistä merkinnöistä, jotka ryhmitellään joko **tuloiksi** tai **kuluiksi**. Yhdessä ne muodostavat artikkelin **kannattavuuden**. Hallinnassa tämä näkyy artikkelin **Tulot ja kulut** -välilehtenä; API-resurssi on `articleLedgers`.

| Kenttä          | Mitä se sisältää                                                                              |
| --------------- | --------------------------------------------------------------------------------------------- |
| `itemIncome`    | Kaikkien `group: 'income'` -merkintöjen summa (vuokrat, myynnit, myöhästymismaksut, lisäosat) |
| `itemCosts`     | Kaikkien `group: 'cost'` -merkintöjen summa (ostohinta, korjaukset, arvonalennukset)          |
| `profitability` | `itemIncome - itemCosts` tälle varastoartikkelille                                            |
| `changeType`    | `initial` (ostomerkintä), `update` (käsin) tai `depreciation` (järjestelmä)                   |

Reskontramerkinnät voidaan sitoa `orderId`-arvoon (kirjataan automaattisesti, kun artikkeli tuottaa tilauksesta) tai `scheduledEventId`-arvoon (esim. kulua aiheuttanut huoltovaraus). Ne voivat myös olla itsenäisiä, kuten käsin tehdyt oikaisut.

<Note>
  Kappalekohtainen kannattavuus edellyttää sarjanumeroitua seurantaa. Yhteisvaraston varastoartikkeleilla (yksi tietue kattaa useita kappaleita) reskontran summat koskevat koko joukkoa — niitä ei voi kohdistaa yksittäiseen kappaleeseen. Katso [Varastonseuranta](/docs/fi/concepts/inventory/inventory-tracking).
</Note>

## Määrän käsittely: sarjanumeroitu vs. yhteisvarasto

Varastoartikkelin seurantatapa päätetään rekisteröinnissä **Track individually** -valintaruudulla (`trackIndividually` luontipyynnössä, oletus `true`) ja **Quantity**-kentällä.

| Tapa           | Luodut tietueet                 | Toiminta                                                               |
| -------------- | ------------------------------- | ---------------------------------------------------------------------- |
| Sarjanumeroitu | Yksi fyysistä kappaletta kohden | Täysi elinkaarihistoria ja oma reskontra kappaletta kohden             |
| Yhteisvarasto  | Yksi koko joukolle              | N identtistä kappaletta yhtenä tietueena, koottu historia ja reskontra |

Kun Track individually on päällä, määrän `N` rekisteröinti luo yhden varastoartikkelin kappaletta kohden. Kun se on pois päältä, luot yhden tietueen, joka kattaa `N` kappaletta. `trackIndividually` on vain luontivaiheen syöte — sitä ei tallenneta Article-resurssille. Vastauksissa `quantity`-objekti kertoo tietueen kappalemäärän `total` ja sen sijainneittaisen `byLocation`-erittelyn.

Milloin kumpaakin kannattaa käyttää:

* **Sarjanumeroitu** — pyörät, sukset, kamerat, nostimet, kajakit, sähköpotkulaudat, kaikki vuokrattavat tai arvokkaat käyttöomaisuuserät.
* **Yhteisvarasto** — kypärät, lukot, kaulanauhat, hissiliput (kun ne eivät ole RFID-pohjaisia) ja pienet kulutustavarat, joita ei tarvitse jäljittää yksitellen.

Tapa asetetaan luonnissa. Jos haluat vaihtaa sitä myöhemmin, luo uusi tietue ja siirrä historia; muunnosta paikallaan ei tueta.

Lue lisää: [Varastonseuranta](/docs/fi/concepts/inventory/inventory-tracking).

## Keskeiset ominaisuudet

Varastoartikkelia edustaa `Article`-tyyppi. Tärkeimmät kentät:

| Ominaisuus            | Tyyppi                          | Kuvaus                                                                                                                                                                                 |
| --------------------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                  | UUID                            | Varastoartikkelin yksilöivä tunnus.                                                                                                                                                    |
| `codes`               | string\[]                       | Yksi tai useampi artikkelikoodi. Jokainen koodi on yksilöllinen tenantin sisällä. Katso [Varastokoodit](/docs/fi/concepts/inventory/stock-codes).                                           |
| `name`                | string                          | Hallinnassa näytettävä nimi.                                                                                                                                                           |
| `status`              | `active` / `inactive` / `draft` | Operatiivinen elinkaari. Näkyy käyttöliittymässä arvoina **Aktiivinen**, **Ei aktiivinen** ja **Luonnos**. Katso [Varastoartikkelin status](/docs/fi/concepts/inventory/stock-item-status). |
| `skuId`               | UUID, nullable                  | Valinnainen linkki ylätason [SKU:hun](/docs/fi/concepts/inventory/skus). Kun se on asetettu, artikkeli perii SKU-tason kentät.                                                              |
| `sku`                 | object                          | Upotettu SKU-yhteenveto (`id`, `name`, `code`), kun linkitys on olemassa.                                                                                                              |
| `binLocation`         | string, nullable                | Tarkempi paikkamerkintä, esimerkiksi `Rack 3 / Bay B`.                                                                                                                                 |
| `binLocationOrigin`   | `article` / `sku`               | Tuleeko hyllypaikka artikkelilta itseltään vai peritäänkö se SKU:lta.                                                                                                                  |
| `taxonomyCategoryId`  | string, nullable                | Taksonomiakategoria, johon artikkeli kuuluu.                                                                                                                                           |
| `purchasePrice`       | number, nullable                | Hankintahinta (pienimmissä yksiköissä). Kirjautuu reskontraan `initial`-kulumerkintänä.                                                                                                |
| `purchasePriceOrigin` | `article` / `sku`               | Ostohinnan lähde.                                                                                                                                                                      |
| `description`         | rich text JSON, nullable        | Pitkä kuvaus.                                                                                                                                                                          |
| `descriptionOrigin`   | `article` / `sku`               | Kuvauksen lähde.                                                                                                                                                                       |
| `condition`           | string, nullable                | Vapaamuotoinen kuntomerkintä (esim. `New`, `Good`, `Fair`).                                                                                                                            |
| `attributes`          | array                           | Tähän artikkeliin liitetyt resurssiattribuutit (peritään SKU:lta, ohitettavissa artikkelikohtaisesti).                                                                                 |
| `tags`                | array                           | Tunnisteviittaukset.                                                                                                                                                                   |
| `media`               | array                           | Järjestetty lista kuva- ja videotiedostoja.                                                                                                                                            |
| `documents`           | array                           | Järjestetty lista tiedostoja, joissa valinnainen tiedostokohtainen kommentti.                                                                                                          |
| `itemIncome`          | number                          | Laskettu reskontran `income`-merkintöjen summa.                                                                                                                                        |
| `itemCosts`           | number                          | Laskettu reskontran `cost`-merkintöjen summa.                                                                                                                                          |
| `profitability`       | number                          | `itemIncome - itemCosts`.                                                                                                                                                              |
| `parentId` / `path`   | string                          | Valinnainen hierarkiatuki ryhmitellyille artikkeleille.                                                                                                                                |
| `createdAt`           | ISO datetime                    | Luonnin aikaleima.                                                                                                                                                                     |

Artikkelikohtainen tila lasketaan kyselyhetkellä, ja se on saatavilla saatavuustietoja sisältävässä vastauksessa:

| Kenttä                      | Kuvaus                                                                                                                                   |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `unavailability`            | Taulukko saatavuuskatkojaksoja (tilaukset, ajastetut tapahtumat). Ohjaa fyysistä **Out**-tilaa ja ATS-laskentaa.                         |
| `scheduledEvents`           | Tähän artikkeliin liitetyt varaukset ja muistiinpanot. Katso [Varastoartikkelin tapahtumat](/docs/fi/concepts/inventory/events).              |
| `articleLocations`          | Aikaväleihin sidotut sijaintimääritykset. Nykyinen määrittää artikkelin tämänhetkisen sijainnin.                                         |
| `quantity` / `availability` | Objektit, joissa `total`-lukumäärä ja `byLocation`-erittely — tietueen kappalemäärä yhteensä ja parhaillaan saatavilla olevat kappaleet. |
| `temporalStock`             | Aikajaksoihin jaetut `stockBalance`, `stockAvailableToSell`, `stockCommitted` ja `stockUtilisation`.                                     |
| `conflicts`                 | Ennakkonäkymä keräilyristiriidoista, jos vähennät määrää tai vaihdat sijaintia.                                                          |

<Info>
  **Ominaisuuksien perintä SKU:lta.** `purchasePrice`, `description`, `binLocation`, attribuutit ja kategoria voidaan määrittää SKU:lle. Varastoartikkeli lukee arvot SKU:lta, ellei sillä ole omaa arvoa. API:n `*Origin`-kentät kertovat, mistä kukin arvo tuli (`article` vai `sku`). Arvon asettaminen artikkelille ohittaa SKU:n oletuksen; arvon tyhjentäminen palauttaa perinnän.
</Info>

## Status

Status kuvaa, missä kohtaa operatiivista elinkaartaan artikkeli on. Arvoja on kolme:

* **Aktiivinen** — toiminnassa, voidaan kohdistaa tilauksille. (`status: 'active'` API:ssa.)
* **Ei aktiivinen** — poissa toiminnasta (esim. korjattavana, poistettu käytöstä, kadonnut tai myyty). Säilyy järjestelmässä. (`status: 'inactive'`.)
* **Luonnos** — rekisteröinti kesken. Ei vielä toiminnassa. (`status: 'draft'`.)

Vain **Aktiiviset** artikkelit lasketaan ATS:ään ja voidaan kohdistaa uusiin tilauksiin. Ei-aktiiviset artikkelit säilyttävät koko historiansa (reskontra, tapahtumat, liitteet).

Lue lisää: [Varastoartikkelin status](/docs/fi/concepts/inventory/stock-item-status).

## Tila (In / Out)

Tila kuvaa artikkelin fyysistä sijaintia suhteessa toimintaasi. Se on **automaattinen** — sitä ei voi asettaa käsin.

* **In** — käsillä varastossasi. Voi silti olla sidottu tulevaan tilaukseen.
* **Out** — parhaillaan asiakkaalla (vuokraus käynnissä) tai muuten poissa.

Tilasiirtymät tapahtuvat keräilytapahtumissa:

* Nouto / luovutus → **Out**
* Palautus → **In**

Lue lisää: [Varastoartikkelin tila](/docs/fi/concepts/inventory/stock-item-state).

## Sijainnin seuranta

Varastoartikkeli on aina sidottu palvelusijaintiin. `articleLocations`-taulukko tallentaa määrityksen **aikaväleinä**:

```json theme={null}
{
  "id": "loc_abc123",
  "articleId": "art_xyz789",
  "serviceLocationId": "loc_helsinki",
  "slotId": "slot_42",
  "range": { "start": "2025-01-01T00:00:00Z", "end": null }
}
```

* Nykyinen sijainti on se määritys, jonka aikaväli kattaa nykyhetken.
* Voit ajastaa tulevia siirtoja lisäämällä uuden aikavälin, jonka alku on tulevaisuudessa.
* Kaikki sijaintimuutokset kirjataan tapahtumalokiin `location_changed`-tapahtumina.
* Hyllypaikka (`binLocation`) on vapaamuotoinen tarkempi paikka palvelusijainnin sisällä — esim. `Rack 3 / Bay B`.

Kun vaihdat sijaintia API:n kautta (`PUT /articles/:id` uudella `serviceLocationId`-arvolla), TWICE tarkistaa ristiriidat: tilaukset tai ajastetut tapahtumat, jotka jäisivät siirron takia orvoiksi. Artikkelivastauksen `conflicts`-kenttä nostaa nämä esiin ennakolta.

## Media ja dokumentit

Kaksi järjestettyä tiedostokokoelmaa artikkelia kohden:

* **Media** (`media`) — artikkelin tiedoissa näytettävät kuvat ja videot. Ensimmäistä mediaa käytetään pikkukuvana listoissa. Järjestettävissä uudelleen.
* **Dokumentit** (`documents`) — mitä tahansa tiedostoja (PDF-tiedostoja, taulukoita, valokuvia). Jokaisella dokumentilla on `orderIndex` ja valinnainen `comment`.

Dokumentteja voi liittää myös tiettyihin ajastettuihin tapahtumiin (esim. tarkastusmerkinnät huoltovaraukseen) — katso [Varastoartikkelin tapahtumat](/docs/fi/concepts/inventory/events).

## Tapahtumaloki ja tapahtumat

Jokaisella varastoartikkelilla on kaksi historiavirtaa:

1. **Tapahtumaloki** — järjestelmän kirjaamat muutokset itse artikkeliin. Esimerkkejä kirjatuista tapahtumatyypeistä:
   * `assigned_to_order` / `freed_from_order`
   * `handed_out` / `returned`
   * `status_changed`
   * `allocation_changed`
   * `sku_changed`
   * `location_changed`
   * `identifiers_changed`
   * `specifications_changed`

2. **Ajastetut tapahtumat** — käyttäjän luomat varaukset ja muistiinpanot, jotka voivat estää saatavuuden ja joihin voi liittyä dokumentteja. Tyypit: `reservation`, `note`.

Molemmat näkyvät artikkelin tietojen **Aikajana / Tapahtumat** -välilehdellä.

Lue lisää: [Varastoartikkelin tapahtumat](/docs/fi/concepts/inventory/events).

## Suhteet

<AccordionGroup>
  <Accordion title="Kuuluu SKU:hun (valinnainen)">
    [Varastoartikkelit voidaan linkittää SKU:hun](/docs/fi/concepts/inventory/skus) `skuId`-kentällä. SKU toimii tuotetason mallina: `purchasePrice`, `description`, `binLocation`, attribuutit ja kategoria periytyvät alaspäin, ellei niitä ohiteta. Ilman SKU:ta oleva varastoartikkeli on täysin itsenäinen.
  </Accordion>

  <Accordion title="Sisältää reskontran">
    Sisältää monta <Tooltip tip="Tuloiksi tai kuluiksi ryhmiteltyjä talousmerkintöjä">ArticleLedger</Tooltip>-merkintää, jotka muodostavat arvot `itemIncome`, `itemCosts` ja `profitability`.
  </Accordion>

  <Accordion title="Sisältää tapahtumia">
    Sisältää monta <Tooltip tip="Saatavuutta estäviä varauksia ja muistiinpanoja">ajastettua tapahtumaa</Tooltip> ja <Tooltip tip="Järjestelmän kirjaamia elinkaaritapahtumia">tapahtumalokin</Tooltip>. Katso [Tapahtumat](/docs/fi/concepts/inventory/events).
  </Accordion>

  <Accordion title="Viittaa tilauksiin ja asiakkaisiin">
    Linkitetty [tilauksiin](/docs/fi/concepts/orders/order-lifecycle), jotka varaavat artikkelin. Tilaa ja saatavuuskatkoja ohjaavat ne tilaukset, jotka sisältävät artikkelin. Elinkaaritapahtumat kuten `handed_out` ja `returned` tulevat tilausten keräilystä.
  </Accordion>

  <Accordion title="Sijaitsee sijainnissa">
    Kuuluu [palvelusijaintiin](/docs/fi/concepts/admin/locations). Sijainti on aikaväleihin sidottu (`articleLocations`), joten sekä siirrot että tulevat muutot ovat osa mallia.
  </Accordion>
</AccordionGroup>

```mermaid theme={null}
%%{init: {'flowchart': {'nodeSpacing': 20, 'rankSpacing': 30}}}%%
flowchart TB
    subgraph InventoryBox[" "]
        SKU["SKU (malli)"]
        StockItem["**Varastoartikkeli**"]
        OtherItems["Muut varastoartikkelit"]
        SKU ~~~ StockItem ~~~ OtherItems
    end
    Ledger["Artikkelireskontra<br/>(tulot + kulut)"]
    Events["Ajastetut tapahtumat<br/>+ tapahtumaloki"]
    subgraph RelatedBox[" "]
        direction TB
        Listing["Listaus"]
        Location["Palvelusijainti"]
        Order["Tilaukset"]
        Listing ~~~ Location ~~~ Order
    end
    SKU -->|periytyy| StockItem
    StockItem -->|kirjoittaa| Ledger
    StockItem -->|kirjaa| Events
    StockItem -.->|viittaa| RelatedBox
    style InventoryBox fill:#0000000d,stroke:#888,stroke-width:2px
    style StockItem fill:#3b82f633,stroke:#3b82f6,stroke-width:3px,font-weight:bold
    style SKU fill:#0000000a,stroke:#999,stroke-width:1px
    style OtherItems fill:#0000000a,stroke:#999,stroke-width:1px
    style Ledger fill:#10b98133,stroke:#10b981,stroke-width:2px
    style Events fill:#10b98133,stroke:#10b981,stroke-width:2px
    style RelatedBox fill:#f59e0b1a,stroke:#f59e0b,stroke-width:2px
```

## Elinkaari

<Steps>
  <Step title="Luonti">
    Varastoartikkelit tulevat järjestelmään, kun rekisteröit uutta varastoa.

    <AccordionGroup>
      <Accordion title="Miten luon varastoartikkelin?">
        Napsauta kohdassa **Inventaario > Varastoartikkelit** painiketta **Register stock item**. Anna nimi, valitse käytetäänkö **Track individually** -seurantaa, aseta määrä, valitse saapumissijainti ja linkitä halutessasi SKU:hun.
      </Accordion>

      <Accordion title="Mitä tietoja vaaditaan?">
        Vähintään: `name` ja `serviceLocationId`. Suositeltavat: `skuId` (perintää varten), `taxonomyCategoryId`, `purchasePrice` ja yksi tai useampi `codes`-arvo (luodaan automaattisesti, jos jätetään pois).
      </Accordion>

      <Accordion title="Mikä on alkutila?">
        Uudet artikkelit saavat oletuksena arvon `status: 'active'` (**Aktiivinen**) ja tilan **In**. Ne näkyvät heti saatavuuslaskennassa. Jos artikkelit on tarkastettava ennen käyttöönottoa, aseta statukseksi `inactive` (**Ei aktiivinen**) luonnissa.
      </Accordion>

      <Accordion title="Voinko luoda monta kerralla?">
        Kyllä. Käytä hallinnan joukkorekisteröintiä (luo koodit automaattisesti `N` artikkelille), CSV-tuontia tai API-tuontia kutsulla `POST /articles/create-many`.
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Käyttö">
    Aktiiviset varastoartikkelit ovat mukana tilauksissa, listauksissa ja raporteissa.

    <AccordionGroup>
      <Accordion title="Missä näen varastoartikkelit?">
        Taulukossa **Inventaario > Varastoartikkelit**, artikkelin tarkastelusivulla (välilehdet Yleiset / Attribuutit / Tulot ja kulut / Keräily / Dokumentit / Tapahtumat / Tapahtumaloki), keräilynäkymissä, saatavuuskalentereissa ja SKU:n tarkastelusivuilla.
      </Accordion>

      <Accordion title="Mitä toimintoja voin tehdä?">
        Muokata mitä tahansa kenttää, siirtää sijaintia, vaihtaa statusta, lisätä mediaa tai dokumentteja, lisätä ajastettuja tapahtumia (varauksia / muistiinpanoja), kirjata tulo- ja kulumerkintöjä, lisätä tunnisteita sekä linkittää tai irrottaa SKU:n.
      </Accordion>

      <Accordion title="Miten se vaikuttaa listauksiin?">
        Vain artikkelit, joilla on `status: active` ja tila **In** (eivätkä ole sidottuja päällekkäiseen varaukseen), kasvattavat listauksen ATS:ää. Katso [Varastoartikkelin tila](/docs/fi/concepts/inventory/stock-item-state).
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Muokkaus">
    Päivitä kenttiä koko elinkaaren ajan.

    <AccordionGroup>
      <Accordion title="Miten muokkaan varastoartikkelia?">
        Avaa artikkelin tiedot ja muokkaa suoraan tai valitse useita rivejä taulukosta ja käytä joukkomuokkausta. API-päätepiste on `PUT /articles/:id`.
      </Accordion>

      <Accordion title="Mitä voi muuttaa?">
        Lähes kaiken: nimen, SKU-linkin, koodit, statuksen, sijainnin, attribuutit, kunnon, ostohinnan, kuvauksen, mediat, dokumentit ja tunnisteet. Itse `id` on muuttumaton. Koodeja voi lisätä tai poistaa, mutta niiden on pysyttävä yksilöllisinä tenantin sisällä.
      </Accordion>

      <Accordion title="Entä määrä?">
        Yhteisvaraston artikkeleille käytä kutsuja `POST /articles/:id/increase-quantity` tai `POST /articles/:id/decrease-quantity`. Kutsu ennen vähentämistä `GET /articles/:id/plan-quantity-change`, niin näet vaikutukset (`blockingUnavailabilities`, `moves`, `removedSlotIds`).
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="Käytöstä poisto tai poistaminen">
    Suosi statusmuutoksia poistamisen sijaan, jotta historia säilyy.

    <AccordionGroup>
      <Accordion title="Miten poistan artikkelin käytöstä?">
        Aseta statukseksi **Ei aktiivinen**. Koko historia — reskontra, tapahtumat, liitteet — säilyy ja artikkeli poistuu saatavuudesta välittömästi. `POST /articles/:id/inactivate` yrittää myös kohdistaa artikkelin tulevat varaukset toiselle saatavilla olevalle varastoartikkelille.
      </Accordion>

      <Accordion title="Miten poistan artikkelin?">
        `DELETE /articles/:id` tai rivin toiminnoista **Delete**. Artikkeleita, jotka on kohdistettu aktiivisiin tilauksiin, ei voi poistaa ennen kuin nuo tilaukset on päätetty tai peruutettu.
      </Accordion>

      <Accordion title="Mitä historialle tapahtuu poistettaessa?">
        Tilaushistoriaan jää viittaus poistetun artikkelin tunnukseen, mutta siihen liitetyt tiedot (reskontramerkinnät, tapahtumat, mediat) poistetaan. Käytä statusmuutosta, jos tarvitset historian.
      </Accordion>
    </AccordionGroup>
  </Step>
</Steps>

## Usein kysytyt kysymykset

<AccordionGroup>
  <Accordion title="Milloin varastoartikkelin määrän kannattaa olla > 1?">
    Käytä yhteisvarastoa **identtisille, edullisille ja keskenään vaihdettaville** artikkeleille, joissa kappalekohtainen seuranta ei tuo lisäarvoa (kypärät, lukot, kaulanauhat). Käytä sarjanumeroitua (määrä = 1, Track individually) kaikelle, mitä haluat seurata kappaleittain: arvokkaat välineet, eri tahtiin arvoaan menettävät kohteet ja kaikki vuokrattava.
  </Accordion>

  <Accordion title="Voinko muuttaa varastoartikkelin SKU-linkkiä?">
    Kyllä. Aseta `skuId` uuteen arvoon tai arvoon `null`, jolloin linkki irtoaa. Muutos kirjataan `sku_changed`-tapahtumana. Olemassa oleva reskontra- ja tapahtumahistoria pysyy artikkelilla.
  </Accordion>

  <Accordion title="Mitä eroa on artikkelikoodilla ja SKU-koodilla?">
    `codes` kuuluu varastoartikkelille — se tunnistaa fyysisen esineen. SKU:n `code` tunnistaa tuotetyypin. Yhdellä SKU:lla voi olla monta varastoartikkelia, joilla kullakin on omat artikkelikoodinsa.
  </Accordion>

  <Accordion title="Mitkä ominaisuudet peritään SKU:lta?">
    `purchasePrice`, `description`, `binLocation`, attribuutit ja `taxonomyCategoryId`. API palauttaa `*Origin`-kentät, jotka kertovat, tuliko arvo artikkelilta vai SKU:lta. Arvon asettaminen artikkelille ohittaa perinnän; arvon tyhjentäminen palauttaa sen.
  </Accordion>

  <Accordion title="Miten tila eroaa statuksesta?">
    Status on sinun päätöksesi (Active / Inactive / Draft). Tilan asettaa keräily (In / Out). Ne ovat toisistaan riippumattomia — **Active / Out** -artikkeli on kunnossa olevaa varastoa, joka on parhaillaan asiakkaalla.
  </Accordion>

  <Accordion title="Mitä jos artikkeli katoaa tai myydään pois?">
    Aseta sen statukseksi **Ei aktiivinen** — erillistä Lost- tai Sold-statusta ei ole. Muutos ei muuta takautuvasti artikkelin sisältäviä tilauksia; hoida ne käsin (hyvitys, uudelleenkohdistus). Kirjaa syy muistiinpanona tai reskontramerkintänä.
  </Accordion>
</AccordionGroup>

## Kehittäjän viitetiedot

Varastoartikkelit ovat API:ssa `articles`-resurssi.

<Card title="API: Articles" 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="SKU:t" icon="layer-group" href="/docs/fi/concepts/inventory/skus">
    Varastoartikkelien tuotetason malli
  </Card>

  <Card title="Varastoartikkelin status" icon="toggle-on" href="/docs/fi/concepts/inventory/stock-item-status">
    Active / Inactive / Draft
  </Card>

  <Card title="Varastoartikkelin tila" icon="arrows-rotate" href="/docs/fi/concepts/inventory/stock-item-state">
    In / Out — fyysinen sijainti suhteessa toimintaasi
  </Card>

  <Card title="Varastokoodit" icon="barcode" href="/docs/fi/concepts/inventory/stock-codes">
    Tunnisteet, viivakoodit, skannausprosessit
  </Card>

  <Card title="Varastonseuranta" icon="boxes-stacked" href="/docs/fi/concepts/inventory/inventory-tracking">
    Sarjanumeroitu vs. yhteisvarasto
  </Card>

  <Card title="Varastoartikkelin tapahtumat" icon="clock-rotate-left" href="/docs/fi/concepts/inventory/events">
    Varaukset, muistiinpanot, tapahtumaloki
  </Card>
</CardGroup>
