# Afgeleide kenmerken op facturen tonen en bewerken

Toon uit workflows afgeleide velden op factuurdetails (statisch of via LLM), sta bewerken optioneel toe, toon bij aanwijzen de reden van de LLM en koppel waarden aan omschrijvingsvelden in Twinfield of Exact Online.

Gebruik **Set derived attribute** niet alleen voor goedkeuringsroutering: voeg ook een duidelijk, direct bruikbaar veld toe aan de weergave **factuurdetails**. Schakel **Show on invoice detail** in zodat reviewers het veld boven de regelitems zien. Schakel eventueel ook **Allow editing on invoice detail** in, zodat ze de waarde kunnen verfijnen, bijvoorbeeld een boekingsomschrijving, voordat ze de factuur naar **Twinfield** sturen of naar Exact Online exporteren.

Dit is een van de duidelijkste manieren waarop Cortena **flexibiliteit in workflows** laat zien: je bepaalt de sleutel, hoe de waarde wordt opgebouwd, of mensen deze mogen overschrijven en hoe de boekhoudexport de waarde gebruikt, zonder voor elke ERP-notitie een nieuw productveld hard te coderen.

**Voor wie dit is:** Financiële beheerders die factuurworkflows configureren en AP-reviewers die een extra notitie of omschrijving op de factuur nodig hebben voordat deze naar **Twinfield**, **Exact Online** of vergelijkbare systemen met vrije tekstomschrijvingen wordt geboekt.

Zie [Afgeleide attributen instellen](https://help.cortena.ai/guides/workflows/set-derived-attributes) voor het gebruik van afgeleide kenmerken als kolommen in een **goedkeuringsmatrix**, bijvoorbeeld bedrijfssegment, inclusief het verschil tussen **Statische waarde** en **Afgeleid met LLM**. Dit artikel richt zich op **factuurweergave**, **bewerken** en **boekhoudkundige omschrijvingen**.

## 1. Waarom dit belangrijk is voor boekhoudsystemen

Veel grootboeken slaan niet alleen bedragen en grootboekrekeningen op. Ze accepteren ook een **aanvullende omschrijving** bij de inkoopboeking: een korte omschrijving, notitie of vrije tekst die in het dagboek, leveranciersgrootboek of schermen voor bankafstemming verschijnt.

| Systeem | Gebruikelijk omschrijvingsveld | Hoe Cortena dit kan invullen |
| --- | --- | --- |
| **Twinfield** | **Omschrijving** van de totalenregel van de inkoopboeking, plus optionele kopteksten met vrije tekst wanneer het dagboek dit toestaat | Bouw een afgeleid kenmerk op, bijvoorbeeld `description`, toon en bewerk dit op de factuur en koppel het tijdens **Export to accounting** via veldexpressies zoals `${derived.description}` |
| **Exact Online** | **Description** in de koptekst van de inkoopboeking | Gebruik hetzelfde patroon: sla de tekst op als afgeleid kenmerk, laat reviewers deze eventueel bewerken en koppel **header description** in de Exact-exportstap |

Veelvoorkomende zakelijke behoeften:

- Elke boeking laten beginnen met `Invoice ${invoice_number}`, zodat Twinfield of Exact altijd een doorzoekbare referentie toont
- Leverancier en inkooporder combineren (`${invoice_supplier_name} / ${purchase_order_number}`) voor kostenbeheerders die in het grootboek werken en niet in Cortena
- Een reviewer na extractie een korte kostenplaatsnotitie of projectcode laten toevoegen zonder de pdf te wijzigen
- Zorgen dat de reviewer op de factuurdetails **dezelfde** tekst ziet als de tekst die bij export wordt verzonden, zonder stille herschrijving op het moment van verzenden

## 2. De workflowstap configureren

1. Open **Settings → Workflow** voor de tenant.
2. Voeg via **ADD STEP → Actions** de stap **Set derived attribute** toe, of selecteer een bestaande stap op het canvas.
3. Geef de stap een duidelijke **Label**. Dit is wat operators in de workflowbalk zien, bijvoorbeeld **Set invoice header description**.
4. Stel **Attribute key** in: kleine letters, cijfers en underscores; de sleutel moet met een letter beginnen, bijvoorbeeld `description`.
5. Stel in hoe de waarde wordt geproduceerd:
   - **Value source → Static value**: gewone tekst en/of tokens, door op een variabelechip te klikken, bijvoorbeeld `Invoice ${invoice_number}`.
   - **Value source → LLM derived**: schrijf een **Instruction for the LLM**; Cortena gebruikt de factuur en de boekingsmatch. Configureer **When the LLM returns nothing or fails** als je een pad **Empty / error** nodig hebt. Zie [Set derived attributes](https://help.cortena.ai/guides/workflows/set-derived-attributes) voor alle details.
6. Stel onder de weergaveopties het volgende in:
   - Vink **Show on invoice detail** aan. Het veld verschijnt boven de regelitems zodra de stap een waarde heeft geschreven, of wanneer bewerken is toegestaan.
   - Vink **Allow editing on invoice detail** aan. Reviewers kunnen de waarde op de factuur wijzigen met bewerken in spreadsheetstijl. Wanneer bewerken is toegestaan, wordt het veld altijd getoond.
7. Klik op **Save** en publiceer de workflow, zodat nieuwe facturen de wijziging overnemen.

![Workflow: Set derived attribute met opties voor tonen en bewerken](https://help.cortena.ai/assets/img/help/show-edit-derived-attributes/01-set-derived-attribute-workflow.png)

**Screenshot:** Workflowcanvas met **Set invoice header description**, attribuutsleutel `description`, waarde `Invoice ${invoice_number}` en zowel **Show on invoice detail** als **Allow editing on invoice detail** ingeschakeld.

### Handige waardetokens

| Token | Betekenis |
| --- | --- |
| `${invoice_number}` | Factuurnummer van de leverancier |
| `${purchase_order_number}` | Inkoopordernummer op de factuur |
| `${invoice_supplier_name}` | Naam van de leverancier |
| `${invoice_recipient_company}` | Bedrijf van de ontvanger |
| `${invoice_recipient_name}` | Naam van de ontvanger |
| `${currency}` | Valutacode |
| `${note}` | Factuurnotitie |
| `${service_period}` | Serviceperiode(s) |
| `${derived.<key>}` | Ander afgeleid kenmerk dat eerder is ingesteld |

Als de opgeloste waarde leeg zou zijn, mislukt de instelstap. Gebruik bij voorkeur tokens die op je facturen voorkomen, of combineer ze met gewone tekst.

## 3. Wat reviewers op de factuur zien

Open de factuur nadat de workflowstap is uitgevoerd. Velden die je hebt ingesteld om te tonen, verschijnen in het koptekstgebied **boven de regelitems**, met een leesbaar gemaakt label, bijvoorbeeld sleutel `description` → label **DESCRIPTION**.

![Factuurdetails: bewerkbaar afgeleid kenmerk Description](https://help.cortena.ai/assets/img/help/show-edit-derived-attributes/02-derived-attribute-invoice-detail.png)

**Screenshot:** Factuur **BC-0002** met een bewerkbaar veld **DESCRIPTION** met de waarde `Invoice BC-0002`, klaar voordat de factuur naar **Twinfield** wordt gestuurd.

Gedrag:

- **Show only**: de waarde is zichtbaar, maar kan niet vanuit de factuur worden bewerkt. De waarde kan alleen door een andere workflowstap voor het instellen van kenmerken worden gewijzigd.
- **Allow editing**: klik op het veld, of gebruik spreadsheetachtige toetsenbordnavigatie zoals bij andere koptekstvelden, wijzig de tekst en druk op **Enter** om op te slaan. **Escape** annuleert. De focus verliezen, op Tab drukken of buiten het veld klikken slaat de wachtende waarde op.
- **LLM reason**: als de waarde is ingesteld via **LLM derived**, beweeg je de muis over het veld om de korte reden van het model te zien, dus waarom die waarde is gekozen.
- Bewerkingen worden op de factuur opgeslagen onder die sleutel van het afgeleide kenmerk. Daardoor gebruikt de exportkoppeling later **dezelfde** waarde als de waarde die de reviewer zag.

## 4. End-to-endvoorbeeld: omschrijving in de Twinfield- of Exact-koptekst

**Doel:** Elke inkoopexport moet een korte omschrijving bevatten, zoals `Invoice BC-0002`, die zichtbaar is in Cortena en kan worden bewerkt als het AP-team een andere formulering voor het grootboek nodig heeft.

### Stap A: De tekst afleiden en tonen

1. Voeg **Set derived attribute** vroeg genoeg toe, zodat de stap vóór de export wordt uitgevoerd, vaak na matching, vóór goedkeuring of direct vóór **Export to accounting**.
2. Sleutel: `description`
3. Waarde: `Invoice ${invoice_number}`
4. Schakel **Show on invoice detail** en **Allow editing on invoice detail** in.

### Stap B: De waarde koppelen aan Export to accounting

Ga naar de **Export to accounting**-node voor je doel:

- **Twinfield**: koppel de veldexpressie van het veld voor de totalenregel of omschrijving aan `${derived.description}`, of aan de positie die je tenant voor de inkoopomschrijving gebruikt.
- **Exact Online**: koppel **header description** aan `${derived.description}`, zodat **Description** van de Exact-inkoopboeking alleen wordt ingevuld wanneer je dit bewust instelt. Cortena verzint geen standaardomschrijving met het factuurnummer.

### Stap C: Controleren vóór verzending

1. Open een factuur waarop de instelstap is uitgevoerd.
2. Controleer of **DESCRIPTION**, of jouw label, de verwachte tekst toont.
3. Bewerk de tekst indien nodig, bijvoorbeeld naar `Invoice BC-0002 · Q1 license`.
4. Klik op **Send to Twinfield**, of op je Exact-exportactie. De geëxporteerde omschrijving moet overeenkomen met de tekst op de factuur.

**Flexibiliteit in workflows:** Hetzelfde bouwblok **Set derived attribute** ondersteunt ook kolommen in goedkeuringsmatrices, latere **Conditional**-vertakkingen op basis van afgeleide waarden en expressies voor exportvelden. Door tonen en bewerken op de factuur te gebruiken, houd je mensen in controle over vrije tekst die naar het ERP gaat, zonder het product voor elk boekhoudsysteem apart te moeten aanpassen.

## 5. Patronen naast omschrijvingen

Je kunt meerdere instelstappen met verschillende sleutels uitvoeren:

| Patroon | Voorbeeldsleutel | Tonen / bewerken | Typisch gebruik |
| --- | --- | --- | --- |
| Boekingsomschrijving | `description` | Tonen + bewerken | Omschrijving voor Twinfield / Exact |
| Bedrijfssegment (routering) | `business_line` | Vaak verborgen of alleen tonen | Kolom in goedkeuringsmatrix: zie [Afgeleide attributen instellen](https://help.cortena.ai/guides/workflows/set-derived-attributes) |
| Kanaal / segment | `channel` | Alleen tonen | Zichtbaarheid voor reviewers; later vertakken |
| Gecombineerde referentie | `export_note` | Tonen + bewerken | Aangepaste tekenreeks voor Sheets- of Drive-sjablonen |

Gebruik bij voorkeur **één duidelijke sleutel** per doel. Als je dezelfde sleutel later in de workflow overschrijft, wordt de vorige waarde vervangen.

## 6. Tips en beperkingen

- **Bewerken betekent ook tonen**: wanneer **Allow editing** is ingeschakeld, wordt het veld altijd op de factuurdetails getoond.
- **Publiceer de workflow**: de weergaveopties komen uit de **gepubliceerde** workflowdefinitie voor de tenant.
- **Alleen bewerkbare sleutels kunnen worden aangepast**: de API accepteert alleen bewerkingen voor sleutels die in die workflow als bewerkbaar zijn gemarkeerd; andere sleutels worden afgewezen.
- **Gesynchroniseerde of vergrendelde facturen** volgen dezelfde bewerkingsvergrendelingen als andere koptekstvelden. Na export en vergrendeling zijn waarden niet bedoeld om zomaar te worden gewijzigd.
- **Tekenlimieten in het ERP** blijven van toepassing, bijvoorbeeld de maximale lengte van de omschrijving op de Twinfield-totalenregel. Houd waarden kort als het doelsysteem ze afkapt.
- **Exact Online**: de omschrijving in de koptekst wordt alleen verzonden wanneer deze is gekoppeld; de waarde wordt niet automatisch ingevuld met het factuurnummer.
- **Rechten**: voor het configureren van de node heb je workflowbeheer nodig; voor bewerken op de factuur heb je de normale rechten voor het bewerken van facturen in die tenant nodig.

## Naslag

| Taak | Waar |
| --- | --- |
| **Set derived attribute** toevoegen of configureren | **Settings → Workflow** → **ADD STEP → Actions** |
| Veld boven de regelitems tonen | Nodepaneel → **Show on invoice detail** |
| Bewerken in spreadsheetstijl toestaan | Nodepaneel → **Allow editing on invoice detail** |
| De waarde bekijken of bewerken | Factuurdetails: koptekstgebied boven de regelitems |
| Tekst naar Twinfield / Exact sturen | **Export to accounting** → veldexpressie `${derived.<key>}` |
| Hetzelfde kenmerk voor goedkeurders gebruiken | [Afgeleide attributen instellen](https://help.cortena.ai/guides/workflows/set-derived-attributes) |
