Project Position Schema
Felder
Project Position Schema
ADR 0310 — optional billing/grouping layer between a project and its tasks; carries the billing model and aggregates the effort of its tasks.
projectId
Owning project UUID.
positionNumber
Position number carried over from the sales order (display / ordering).
sortOrder
Manual sort order within the project (drag & drop).
title
Position title.
generatedTitle
ADR 1018 — title materialise_order last generated from the order line. While `title` still equals it, nobody renamed the position and the title follows a renamed weclapp line; null on rows created before the field (the history CREATE entry is used instead).
description
Position description.
status
Position lifecycle status.
OPENDONECANCELLEDbillingModel
flat_rate = fixed price, bookings are a profitability metric only (never hard-blocked). time_and_material = billed by actual bookings; an optional cap lives on the task (limitMode).
flat_ratetime_and_materialplannedMinutes
Planned effort in minutes (Soll).
plannedAmount
Planned / sold net amount in EUR (Soll), decimal string.
plannedAmountCurrency
ISO 4217 currency for plannedAmount (default EUR when null).
quantity
Sold quantity carried over from the order item (decimal string).
unitPrice
Unit price carried over from the order item (decimal string).
netAmount
Net amount carried over from the order item (decimal string).
orderItemSnapshot
Frozen copy of the sold order line, written ONCE when the position is created from a sales order (order intake / order import) and never refreshed. quantity/unitPrice/netAmount above follow the order on every intake run; this snapshot keeps the sold terms visible for the price check even after the line was edited or deleted in weclapp. Server-managed (protected).
quantity
unitName
unitPrice
discountPercent
netAmount
weclappItemId
consumedMinutes
Sum of loggedMinutes of the tasks under this position (cached rollup). ADR 0924: rounded working time.
consumedRealMinutes
ADR 0924: the same bookings as consumedMinutes summed as NET working time (cached rollup) — the "(real)" part of the display.
consumedAmount
Sum of consumedAmount of the tasks under this position (cached rollup, EUR).
articleId
Optional linked article UUID.
salesOrderId
Sales order this position was materialised from (order-import path).
salesOrderItemId
ID of the orderItem inside the linked sales_order (matches salesOrder.orderItems[].id).
salesOrderItemSource
Origin of the linked sales-order item — internal or weclapp.
internalweclappnullweclappBillingMode
ADR 0634 — wie diese Position im weclapp-Auftrag abgerechnet wird. `position` (Default, auch bei null) = die Auftragsposition bleibt stehen und wird bebucht/fakturiert wie verkauft; `replace` = die Auftragsposition ist eine Nicht-DL-Platzhalterposition und wird beim Abrechnungsabschluss durch die gerenderten Buchungspositionen ERSETZT. Vorbelegt aus der Intake-Regel (`position.weclappBilling`), danach im Projektabrechnungs-Dialog änderbar; ein Re-Import überschreibt den Wert bewusst NICHT.
positionreplacenullbilledAt
When this flat-rate position was put on a Leistungsnachweis (per-project billing run). Null = not billed yet.
performanceRecordId
Leistungsnachweis this position was billed on. Server-managed.
invoiceId
Invoice this position was billed on. Server-managed.
Keine Felder passen zum Filter.
Standard-Endpoints
Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:
GET /api/v1/project_positions— Liste, paginiert + filterbarGET /api/v1/project_positions/<id>— Einzelne EntityPOST /api/v1/project_positions— AnlegenPATCH /api/v1/project_positions/<id>— Teil-UpdateDELETE /api/v1/project_positions/<id>— Soft-DeleteGET /api/v1/project_positions/<id>/timeline— Audit + Aktivitäten