# Udlån og aflevering

2 af 4 understøttet
Kilde: https://plasapi.com/da/funktioner/patron/check-in-and-out/

Lad lånere og personale låne og aflevere fysisk materiale, med de svar en selvbetjeningsautomat eller et sorteringsanlæg har brug for.

## 2.16.1 Lån fysisk materiale ud — Understøttet

Lån et eksemplar ud til en låner.

### Det kan du bygge

Udlån på en selvbetjeningsautomat, ved personaleskranken eller på lånerens egen telefon, med RFID eller stregkode. Har et lån betingelser, for eksempel et udlånsgebyr, accepterer låneren dem i samme flow. En automat kan blive ved med at låne ud, mens bibliotekssystemet ikke kan nås, og registrere lånene bagefter.

### Typisk flow

1. Låneren identificeres, enten ved at logge ind (2.2.1) eller med sit kortnummer og, hvor det kræves, en adgangskode.
2. Eksemplaret scannes, og klienten kalder `Checkout` med eksemplarets ID, låneren, filialen og tidspunktet hvor låneren handlede.
3. Er `status` `needs_acknowledgement`, viser klienten låneren hver post i `acknowledgement.conditions`.
4. Når låneren accepterer, sender klienten samme udlån igen med `acknowledgement.code`.
5. Er `status` `completed`, indeholder `checkout` lånet, inklusive `dueDate`. Er den `failed`, siger `reason` hvorfor.

### Det leverer API'et

- Klienten skal finde `circulation.checkout.isEnabled` sat til true i `GetConfiguration`, før den kalder `Checkout`.
- Når forespørgslen er forstået, er svaret `200`. Udfaldet står i `status`: `completed`, `needs_acknowledgement` eller `failed`. Et ukendt eksemplar er `failed` med `item_not_found`, ikke `404`.
- En betingelse er et `lending_fee` (med `amount` og `currency`), `previously_checked_out` (låneren har haft titlen før) eller en `message` der skal accepteres. Én `code` dækker dem alle. Den kan bruges én gang og udløber ved `expiresAt`.
- Årsager til `failed` er blandt andre `item_not_lendable`, `item_on_loan`, `item_reserved_for_other_patron`, `patron_blocked`, `patron_owes_fees`, `patron_loan_limit_reached`, `patron_expired` og `acknowledgement_rejected`. Behandl en ukendt årsag som `unknown`, og vis `message`.
- En låner der identificeres med kortnummer, får `patron_authentication_failed` ved ethvert problem med identiteten, så ingen kan finde ud af hvilke kortnumre der findes.
- Det er sikkert at sende samme udlån igen. Har låneren allerede eksemplaret, er svaret `completed` med det lån.
- Offline: med `circulation.checkout.offline.isAllowed` kan en automat sende `checkout.offline` med den `dueDate` den gav låneren. Låneren skal identificeres med kortnummer, og `defaultLoanPeriodDays` giver den låneperiode der skal bruges.
- `message.text` vises for låneren. Send `ui_language` for at vælge sproget.

### Kald i API'et

Slås til i konfigurationen: `GetConfiguration`

- [POST /checkout/{itemId}](https://plasapi.com/da/provider/v0.6.7/checkout-and-checkin/#Checkout) — Check out an item

## 2.16.2 Aflevér fysisk materiale — Understøttet

Registrér et afleveret eksemplar, og fortæl hvor det skal hen.

### Det kan du bygge

Aflevering på en selvbetjeningsautomat, et sorteringsanlæg eller ved personaleskranken. Svaret fortæller hvor eksemplaret hører hjemme, og om en medarbejder skal se på det, så et sorteringsanlæg kan sende det videre med det samme.

### Typisk flow

1. Eksemplaret scannes, og klienten kalder `Checkin` med eksemplarets ID, filialen og tidspunktet for afleveringen.
2. Er `status` `completed`, indeholder `checkin` resultatet. Er den `failed`, siger `reason` hvorfor.
3. Eksemplaret sorteres efter `permanentLocation`, `sortingCode` og `needsStaff`.

### Det leverer API'et

- Klienten skal finde `circulation.checkin.isEnabled` sat til true i `GetConfiguration`, før den kalder `Checkin`.
- Når forespørgslen er forstået, er svaret `200`. De kendte årsager til `failed` er `item_not_found`, `item_not_on_loan`, `item_belongs_to_other_library` og `unknown`. Behandl en anden årsag som `unknown`, og vis `message`.
- `permanentLocation` er hvor eksemplaret normalt står: et eksemplar der hører til en anden filial, sendes dertil. `needsStaff` er true når en medarbejder skal se på eksemplaret, for eksempel fordi det er beskadiget.
- `sortingCode` bærer providerens egen sorteringsværdi, aftalt mellem biblioteket, provideren og leverandøren af sorteringsanlægget.
- `fees` viser gebyrer afleveringen skabte, for eksempel et gebyr for overskredet afleveringsdato.
- Det er sikkert at sende samme aflevering igen: `item_not_on_loan` ved et nyt forsøg betyder at eksemplaret allerede er tilbage.
- Offline: med `circulation.checkin.offline.isAllowed` kan en automat sende `checkin.offline` sat til true for en aflevering den allerede har taget imod.
- `securityTags.isDisabled` i `GetConfiguration` fortæller om biblioteket bruger alarmmærker. Gør det ikke, bør klienten ikke aktivere dem ved aflevering.

### Kald i API'et

Slås til i konfigurationen: `GetConfiguration`

- [POST /checkin/{itemId}](https://plasapi.com/da/provider/v0.6.7/checkout-and-checkin/#Checkin) — Check in an item

## 2.16.3 Tilsidesæt udlånsregler — Ikke endnu

Tilsidesæt en regel der ellers ville stoppe et udlån.

> Ikke i PLAS endnu. Funktionen er ikke understøttet i dag. Beskrivelsen viser hvad den gør, så du kan se sammenhængen med resten.

## 2.16.4 Skift afleveringsdato — Ikke endnu

Skift afleveringsdatoen på et lån.

> Ikke i PLAS endnu. Funktionen er ikke understøttet i dag. Beskrivelsen viser hvad den gør, så du kan se sammenhængen med resten.
