Zum Hauptinhalt springen

Finanzen

Die Budgetverwaltung in InLoox umfasst mehrere zusammenhängende Entitäten: Budget, LineItem (Positionen), BudgetGroup, BudgetState und BudgetPreset. Über die OData-API können Sie die gesamte Finanzstruktur eines Projekts programmatisch verwalten.

Entitätsübersicht​

Projektentitäten​

info

Diese Entitäten sind immer einem Projekt zugeordnet. Verwenden Sie ProjectId beim Filtern, um eine bestimmten Untermenge abzurufen.

EntitätBeschreibung
BudgetDas übergeordnete Budgetobjekt eines Projekts
LineItemEinzelne Budgetpositionen (Einnahmen/Ausgaben)
BudgetGroupGruppierung von Positionen
BudgetStateStatusdefinitionen für Budgets

Stammdaten-Entitäten​

info

Diese Entitäten werden auf Kontoebene in den Einstellungen konfiguriert und gelten für alle Projekte.

EntitätBeschreibung
BudgetPresetBudgetvorlagen
BudgetPresetLineItemPositionen innerhalb einer Budgetvorlage
LineItemTemplateVorlagen für Budgetpositionen
LineItemTemplateGroupZuordnung von Vorlagen zu Gruppen
LineItemTemplatePricePreisdefinitionen für Positionsvorlagen

Budget (Plan)​

Ein Budget stellt einen Finanzplan dar, der einem Projekt zugeordnet ist. Jedes Budget kann Einzelposten (Positionen) enthalten, mit Dokumenten verknüpft werden und einen definierten Status haben.

Datenmodell​

EigenschaftTypBeschreibung
BudgetIdGuid (UUID)Eindeutiger Bezeichner des Budgets (Primärschlüssel).
ProjectIdGuidZugehöriges Projekt.
BudgetTypeint32Budgettyp: 1 = Ist-Betriebskosten (OpEx) aus Zeiterfassung, 2 = Ist-Investitionskosten (CapEx), 3 = Plan-Einnahmen, 4 = Ist-Einnahmen, 5 = Plan-Investitionskosten (CapEx), 6 = Plan-Betriebskosten (OpEx) aus Ressourcenplanung, 7 = Plan-Betriebskosten (OpEx), 8 = Ist-Betriebskosten (OpEx).
BudgetStateIdGuidAktueller Status des Budgets.
ConsecutiveNumberint32Fortlaufende Nummer.
Namestring?Name des Budgets.
BudgetDateDateTimeOffsetDatum des Budgets.
BudgetContactIdGuid?Zuständiger Kontakt.
BudgetCreatedDateDateTimeOffsetErstellungsdatum.
BudgetChangedDateDateTimeOffset?Datum der letzten Änderung.
AmountAssetsdoubleGesamtbetrag.

Endpunkte​

Alle Budgets aller Projekte abrufen

GET/odata/Budget

Unterstützt OData-Abfrageparameter.


Ein einzelnes Budget abrufen

GET/odata/Budget({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.

Neues Budget erstellen

POST/odata/Budget
ParameterTypErforderlichBeschreibung
BodyDelta<ApiBudget>✅JSON-Objekt mit den Budgeteigenschaften.

Budget aktualisieren

PATCH/odata/Budget({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
BodyDelta<ApiBudget>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Budget löschen

DELETE/odata/Budget({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
warnung

Das Löschen eines Budgets entfernt auch alle zugehörigen Positionen. Diese Aktion kann nicht rückgängig gemacht werden.


Rechnungserstellung​

Anzahl der noch nicht abgerechneten Positionen abrufen

GET/odata/Budget({key})/GetUnbilledLineitemsCount()
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.

Eine Rechnung für alle Positionen des Budgets erstellen

GET/odata/Budget({key})/CreateInvoiceForAllLineitems()
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.

Eine Rechnung für ausgewählte Positionen erstellen

POST/odata/Budget({key})/CreateInvoiceForSelectedLineitems
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

lineItemIds (Guid[], erforderlich) — IDs der Positionen, die in die Rechnung aufgenommen werden sollen.

Dokument mit Budget verknüpfen​

Ein Dokument mit dem Budget verknüpfen

POST/odata/Budget({key})/AddDocumentToBudget
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

documentIds (Guid[], erforderlich) — IDs der Dokumente, die mit dem Budget verknüpft werden sollen.

Dokument vom Budget entfernen​

Ein Dokument vom Budget entfernen

POST/odata/Budget({key})/RemoveDocumentFromBudget
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

documentId (Guid, erforderlich) — ID des Dokuments, das vom Budget entfernt werden soll.

Position aus Vorlage hinzufügen​

Eine Position aus einer Vorlage zum Budget hinzufügen

POST/odata/Budget({key})/AddLineItemFromTemplate
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

lineItemTemplateId (Guid, erforderlich) — ID der Positionsvorlage, aus der erstellt werden soll.
lineItemTemplatePriceId (Guid?, optional) — ID eines bestimmten Preiseintrags der Vorlage. Kann weggelassen oder auf null gesetzt werden, wenn kein bestimmter Preis gewünscht ist.
lineItemTemplateGroupId (Guid, erforderlich) — ID der Positionsvorlagengruppe.

Verknüpfung hinzufügen​

Eine Verknüpfung zum Budget hinzufügen

POST/odata/Budget({key})/AddRelation
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — ID des Elements, das als Verknüpfung zum Budget hinzugefügt werden soll.

Verknüpfung entfernen​

Eine Verknüpfung vom Budget entfernen

POST/odata/Budget({key})/RemoveRelation
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — ID des verknüpften Elements, das vom Budget entfernt werden soll.

LineItem (Positionen)​

Eine Position repräsentiert einen einzelnen Finanzeintrag innerhalb eines Budgets. Positionen können gruppiert, als abrechenbar markiert und mit Dokumenten verknüpft werden.

Datenmodell​

EigenschaftTypBeschreibung
LineItemIdGuidPrimärschlüssel. Eindeutiger Bezeichner der Position.
BudgetIdGuidFremdschlüssel zum übergeordneten Budget.
GroupIdGuid?Fremdschlüssel zur Budgetgruppe, der diese Position zugeordnet ist.
PerformedByContactIdGuid?Kontakt, der die Leistung erbracht hat.
OrdinalPositionint?Sortierreihenfolge innerhalb des Budgets.
ConsecutiveNumberint?Automatisch vergebene fortlaufende Nummer.
ShortDescriptionstringKurzbeschreibung der Position.
Quantitydecimal?Menge der Einheiten.
UnitstringMaßeinheit (z. B. Stunden, Stück).
PricePerUnitdecimal?Primärer Preis pro Einheit.
SecondaryPricePerUnitdecimal?Sekundärer Preis pro Einheit (z. B. Einkaufspreis).
IsCustomPricePerUnitboolGibt an, ob der Preis manuell überschrieben wurde.
IsBilledboolOb die Position abgerechnet wurde.
IsBillableboolOb die Position abrechenbar ist.
CreatedByContactIdGuid?Kontakt, der die Position erstellt hat.
ChangedByContactIdGuid?Kontakt, der die Position zuletzt geändert hat.
CreatedDateDateTimeOffset?Zeitstempel der Erstellung der Position.
ChangedDateDateTimeOffset?Zeitstempel der letzten Änderung der Position.
ProvisionDateDateTimeOffset?Datum der Leistungserbringung.
IsCustomProvisionDateboolGibt an, ob `ProvisionDate` manuell gesetzt (`true`) oder automatisch abgeleitet wird (`false`, für automatische Aufgaben-/Zeiteintragspositionen).
DescriptionTextstringBeschreibung der Position als Klartext.
DescriptionHTMLstringBeschreibung der Position als HTML.
ProjectIdGuid?Fremdschlüssel zum zugehörigen Projekt.
LineItemTypeintTyp der Position: 0 = Manuelle Position, 1 = Automatische Position aus einem Zeiteintrag, 2 = Automatische Position aus einem Aufgabenelement.

Endpunkte​

Positionen auflisten​

Gibt alle Positionen aller Budgets aller Projeke zurück. Unterstützt OData-Abfrageoptionen

GET/odata/LineItem

Position abrufen​

Gibt eine einzelne Position anhand ihrer ID zurück

GET/odata/LineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.

Position erstellen​

Erstellt eine neue Position

POST/odata/LineItem
ParameterTypErforderlichBeschreibung
BodyDelta<ApiLineItem>✅JSON-Objekt mit den Positionseigenschaften.

Position aktualisieren​

Aktualisiert eine bestehende Position

PATCH/odata/LineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
BodyDelta<ApiLineItem>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Position löschen​

Löscht eine Position

DELETE/odata/LineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
warnung

Das Löschen einer Position kann nicht rückgängig gemacht werden.

Aktionen​

Position kopieren​

Erstellt ein Duplikat der angegebenen Position

POST/odata/LineItem({key})/Copy
ParameterTypErforderlichBeschreibung
keyGuid✅Die zu kopierende LineItemId.
Bodyobject—JSON-Objekt mit folgenden Feldern:

budgetId (Guid?, optional) — Ziel-Budget-ID, in das kopiert werden soll. Wenn nicht angegeben, wird innerhalb desselben Budgets kopiert.

Dokument zur Position hinzufügen​

Verknüpft ein Dokument mit der Position

POST/odata/LineItem({key})/AddDocumentToLineItem
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

documentIds (Guid[], erforderlich) — IDs der Dokumente, die mit der Position verknüpft werden sollen.

Dokument von Position entfernen​

Entfernt eine Dokumentverknüpfung von der Position

POST/odata/LineItem({key})/RemoveDocumentFromLineItem
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

documentId (Guid, erforderlich) — ID des Dokuments, das von der Position entfernt werden soll.

Verknüpfung hinzufügen​

Erstellt eine Verknüpfung zwischen der Position und einer anderen Entität

POST/odata/LineItem({key})/AddRelation
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — ID des Elements, das als Verknüpfung zur Position hinzugefügt werden soll.

Verknüpfung entfernen​

Entfernt eine Verknüpfung von der Position

POST/odata/LineItem({key})/RemoveRelation
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — ID des verknüpften Elements, das von der Position entfernt werden soll.

BudgetGroup (Gruppen)​

Gruppen organisieren die Positionen innerhalb eines Budgets in logische Kategorien, z. B. Kostenstellen.

Datenmodell​

EigenschaftTypBeschreibung
BudgetGroupIdGuidPrimärschlüssel. Eindeutiger Bezeichner der Gruppe.
NamestringAnzeigename der Gruppe.
OrdinalPositionintSortierposition der Gruppe innerhalb des Budgets.
PurchasePricedecimal?Aggregierter Einkaufspreis der Gruppe.
DispositionPricedecimal?Aggregierter Verkaufspreis der Gruppe.
VisibleboolGibt an, ob die Gruppe in der Benutzeroberfläche sichtbar ist.

Endpunkte​

Alle Budgetgruppen abrufen​

Gibt alle Budgetgruppen zurück

GET/odata/BudgetGroup

Unterstützt OData-Abfrageoptionen.


Einzelne Budgetgruppe abrufen​

Gibt eine einzelne Budgetgruppe anhand ihrer ID zurück

GET/odata/BudgetGroup({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetGroupId der abzurufenden Gruppe.

Budgetgruppe erstellen​

Erstellt eine neue Budgetgruppe

POST/odata/BudgetGroup
ParameterTypErforderlichBeschreibung
BodyDelta<ApiBudgetGroup>✅JSON-Objekt mit den Gruppeneigenschaften.

Budgetgruppe aktualisieren​

Aktualisiert eine bestehende Budgetgruppe

PATCH/odata/BudgetGroup({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetGroupId der zu aktualisierenden Gruppe.
BodyDelta<ApiBudgetGroup>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Budgetgruppe löschen​

Löscht eine Budgetgruppe

DELETE/odata/BudgetGroup({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetGroupId der zu löschenden Gruppe.
Wichtiger Hinweis

Das Löschen einer Budgetgruppe wirkt sich auf alle zugeordneten Budgetpositionen, Aufgaben und Zeiteinträge in allen Projekten aus. Es wird daher empfohlen, Gruppen nicht zu löschen, sondern sie auf unsichtbar zu setzen (Visible: false) und als Alteinträge beizubehalten.


BudgetState​

Budgetstatus definieren die Workflow-Phasen eines Budgets (z. B. Entwurf, Genehmigt, Abgeschlossen).

Datenmodell​

EigenschaftTypBeschreibung
BudgetStateIdGuidPrimärschlüssel. Eindeutiger Bezeichner des Status.
NamestringAnzeigename des Status.
IsHiddenboolGibt an, ob der Status in der Benutzeroberfläche ausgeblendet ist.

Endpunkte​

Alle Budgetstatus abrufen​

Gibt alle Budgetstatus zurück

GET/odata/BudgetState

Unterstützt OData-Abfrageoptionen.


Budgetstatus erstellen​

Erstellt einen neuen Budgetstatus

POST/odata/BudgetState
ParameterTypErforderlichBeschreibung
BodyDelta<ApiBudgetState>✅JSON-Objekt mit den Statuseigenschaften.

Einzelnen Budgetstatus abrufen​

Gibt einen einzelnen Budgetstatus anhand seiner ID zurück

GET/odata/BudgetState({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetStateId des abzurufenden Status.

Budgetstatus aktualisieren​

Aktualisiert einen bestehenden Budgetstatus

PATCH/odata/BudgetState({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetStateId des zu aktualisierenden Status.
BodyDelta<ApiBudgetState>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Budgetstatus löschen​

Löscht einen Budgetstatus

DELETE/odata/BudgetState({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die BudgetStateId des zu löschenden Status.
warnung

Das Löschen eines Budgetstatus wirkt sich auf alle Budgets in allen Projekten aus, die diesen Status verwenden. Es wird daher empfohlen, einen Status nicht zu löschen, sondern ihn auf ausgeblendet zu setzen (IsHidden: true) und als Alteintrag beizubehalten.


BudgetPreset (Budgetvorlagen)​

Budgetvorlagen speichern wiederverwendbare Budgetkonfigurationen, die auf Projekte angewendet werden können. Vorlagen können in ein Projekt geladen werden, um schnell eine vollständige Budgetstruktur einzurichten.

Datenmodell​

EigenschaftTypBeschreibung
PresetIdGuidPrimärschlüssel. Eindeutiger Bezeichner der Budgetvorlage.
PresetTypeintTyp der Vorlage.
NamestringAnzeigename der Vorlage.
PresetDateDateTimeOffsetDatum der Vorlage.
AmountAssetsdecimal?Gesamtbetrag.
IsGlobalboolGibt an, ob die Vorlage global verfügbar ist.

Endpunkte​

Alle Budgetvorlagen abrufen​

Gibt alle Budgetvorlagen zurück

GET/odata/BudgetPreset

Unterstützt OData-Abfrageoptionen.


Einzelne Budgetvorlage abrufen​

Gibt eine einzelne Budgetvorlage anhand ihrer ID zurück

GET/odata/BudgetPreset({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetId der abzurufenden Vorlage.

Budgetvorlage erstellen​

Erstellt eine neue Budgetvorlage

POST/odata/BudgetPreset
ParameterTypErforderlichBeschreibung
BodyDelta<ApiBudgetPreset>✅JSON-Objekt mit den Vorlageneigenschaften.

Budgetvorlage aktualisieren​

Aktualisiert eine bestehende Budgetvorlage

PATCH/odata/BudgetPreset({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetId der zu aktualisierenden Vorlage.

Budgetvorlage löschen​

Löscht eine Budgetvorlage

DELETE/odata/BudgetPreset({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetId der zu löschenden Vorlage.
warnung

Das Löschen einer Budgetvorlage entfernt auch alle zugehörigen Vorlagenpositionen (BudgetPresetLineItem). Diese Aktion kann nicht rückgängig gemacht werden.


Aktionen​

Vorlage in Projekt laden​

Lädt eine Budgetvorlage und wendet sie auf ein Projekt an

POST/odata/BudgetPreset({key})/LoadTemplateForProject
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetId der zu ladenden Vorlage.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

projectId (Guid, erforderlich) — ID des Projekts, auf das die Vorlage angewendet werden soll.
Voraussetzung

Das Laden einer Vorlage setzt voraus, dass die Ordnerstruktur des Zielprojekts initialisiert ist. Kann der Dokumentenspeicher nicht automatisch angelegt werden, schlägt die Anfrage fehl — initialisieren Sie die Ordnerstruktur im Bereich Dokumente des Projekts und wiederholen Sie den Aufruf.

Budget als Vorlage speichern​

Speichert die aktuelle Budgetkonfiguration als wiederverwendbare Vorlage

POST/odata/BudgetPreset/SaveTemplateForBudget
ParameterTypErforderlichBeschreibung
Bodyobject✅JSON-Objekt mit folgenden Feldern:

budgetId (Guid, erforderlich) — ID des bestehenden Budgets, das als Vorlagentemplate gespeichert werden soll.
name (string, erforderlich) — Name für die neue Budgetvorlage.

BudgetPresetLineItem (Vorlagenpositionen)​

Vorlagenpositionen definieren die einzelnen Budgetpositionen innerhalb einer Budgetvorlage. Jede Position enthält Standardwerte für Menge, Einheit, Preis und Abrechnungsstatus, die beim Laden der Vorlage in ein Projekt übernommen werden.

Datenmodell​

EigenschaftTypBeschreibung
PresetLineItemIdGuid (UUID)Eindeutiger Bezeichner der Vorlagenposition.
PresetIdGuidZugehörige Budgetvorlage.
GroupIdGuidZugehörige Budgetgruppe.
PerformedByContactIdGuid?Kontakt, der die Leistung erbringt.
OrdinalPositionint32Sortierposition innerhalb der Vorlage.
ConsecutiveNumberint32Automatisch vergebene laufende Nummer.
ShortDescriptionstringKurzbeschreibung der Position.
QuantitydoubleStandardmenge.
UnitstringMengeneinheit (z. B. Stunden, Stück).
PricePerUnitdoublePrimärer Preis pro Einheit.
SecondaryPricePerUnitdoubleSekundärer Preis pro Einheit (z. B. Einkaufspreis).
IsBilledboolOb die Position als abgerechnet markiert ist.
IsBillableboolOb die Position abrechnungsfähig ist.
ProvisionDateDateTimeOffset?Leistungsdatum.
DescriptionTextstringBeschreibung als Klartext.
DescriptionHTMLstringBeschreibung als HTML.

Endpunkte​

Vorlagenpositionen auflisten​

Alle Vorlagenpositionen abrufen

GET/odata/BudgetPresetLineItem

Unterstützt OData-Abfrageoptionen.


Vorlagenposition abrufen​

Eine einzelne Vorlagenposition anhand ihrer ID abrufen

GET/odata/BudgetPresetLineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetLineItemId der abzurufenden Position.

Vorlagenposition erstellen​

Neue Vorlagenposition erstellen

POST/odata/BudgetPresetLineItem
ParameterTypErforderlichBeschreibung
BodyDelta<ApiBudgetPresetLineItem>✅JSON-Objekt mit den Positionseigenschaften.

Vorlagenposition aktualisieren​

Eine vorhandene Vorlagenposition aktualisieren

PATCH/odata/BudgetPresetLineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetLineItemId der zu aktualisierenden Position.

Vorlagenposition löschen​

Eine Vorlagenposition löschen

DELETE/odata/BudgetPresetLineItem({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die PresetLineItemId der zu löschenden Position.
warnung

Das Löschen einer Vorlagenposition kann nicht rückgängig gemacht werden.


LineItemTemplate (Positionsvorlagen)​

Positionsvorlagen stellen wiederverwendbare Positionskonfigurationen bereit, die zu Budgets hinzugefügt werden können. Vorlagen können in Gruppen organisiert sein und mehrere Preiseinträge besitzen.

Datenmodell​

EigenschaftTypBeschreibung
LineItemTemplateIdGuid (UUID)Eindeutiger Bezeichner der Positionsvorlage.
Namestring?Name der Vorlage.
ShortDescriptionstring?Kurzbeschreibung.
LongDescriptionstring?Ausführliche Beschreibung.
QuantitydoubleStandardmenge.

Endpunkte​

Positionsvorlagen auflisten​

Alle Positionsvorlagen abrufen. Unterstützt OData-Abfrageoptionen

GET/odata/LineItemTemplate

Positionsvorlage erstellen​

Neue Positionsvorlage erstellen

POST/odata/LineItemTemplate
ParameterTypErforderlichBeschreibung
BodyDelta<ApiLineItemTemplate>✅JSON-Objekt mit den Vorlageneigenschaften.

Positionsvorlage abrufen​

Eine einzelne Positionsvorlage anhand ihrer ID abrufen

GET/odata/LineItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplateId der abzurufenden Vorlage.

Positionsvorlage aktualisieren​

Eine vorhandene Positionsvorlage aktualisieren

PATCH/odata/LineItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplateId der zu aktualisierenden Vorlage.
BodyDelta<ApiLineItemTemplate>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Positionsvorlage löschen​

Eine Positionsvorlage löschen

DELETE/odata/LineItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplateId der zu löschenden Vorlage.
warnung

Das Löschen einer Positionsvorlage kann nicht rückgängig gemacht werden.

Aktionen​

Gruppe hinzufügen​

Weist die Vorlage einer Budgetgruppe zu

POST/odata/LineItemTemplate({key})/AddGroup
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplateId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

groupId (Guid, erforderlich) — ID der Budgetgruppe, der die Vorlage zugewiesen werden soll.

Gruppe entfernen​

Entfernt die Vorlage aus einer Budgetgruppe

POST/odata/LineItemTemplate({key})/RemoveGroup
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplateId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

groupId (Guid, erforderlich) — ID der Budgetgruppe, aus der die Vorlage entfernt werden soll.

LineItemTemplateGroup (Vorlagengruppen)​

Vorlagengruppen stellen die Zuordnung zwischen Positionsvorlagen und Budgetgruppen dar. Diese Entität ist schreibgeschützt.

hinweis

Verwenden Sie die Aktionen AddGroup und RemoveGroup der LineItemTemplate-Entität, um Gruppenzuordnungen zu verwalten.

Datenmodell​

EigenschaftTypBeschreibung
LineItemTemplateGroupIdGuidEindeutiger Bezeichner der Vorlagen-Gruppen-Zuordnung.
LineItemTemplateIdGuidZugehörige Positionsvorlage.
GroupIdGuidZugehörige Budgetgruppe.

Endpunkte​

Vorlagen-Gruppen-Zuordnungen auflisten​

Alle Vorlagen-Gruppen-Zuordnungen abrufen

GET/odata/LineItemTemplateGroup

LineItemTemplatePrice (Vorlagenpreise)​

Vorlagenpreise definieren einheitenbasierte Preise für eine Positionsvorlage. Jeder Preiseintrag enthält eine Einheit mit dem jeweiligen Einkaufs- und Verkaufspreis pro Einheit. Vorlagen können mehrere Preiseinträge für unterschiedliche Einheiten haben.

Datenmodell​

EigenschaftTypBeschreibung
LineItemTemplatePriceIdGuidEindeutiger Bezeichner des Preiseintrags.
LineItemTemplateIdGuidZugehörige Positionsvorlage.
UnitstringMengeneinheit (z. B. Stunden, Stück).
PurchasePricePerUnitdecimal?Einkaufspreis pro Einheit.
DispositionPricePerUnitdecimal?Verkaufspreis pro Einheit.

Endpunkte​

Vorlagenpreise auflisten​

Alle Vorlagenpreise abrufen

GET/odata/LineItemTemplatePrice

Unterstützt OData-Abfrageoptionen.


Vorlagenpreis abrufen​

Einen einzelnen Vorlagenpreis anhand seiner ID abrufen

GET/odata/LineItemTemplatePrice({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplatePriceId des abzurufenden Preises.

Vorlagenpreis erstellen​

Neuen Vorlagenpreis erstellen

POST/odata/LineItemTemplatePrice
ParameterTypErforderlichBeschreibung
BodyDelta<ApiLineItemTemplatePrice>✅JSON-Objekt mit den Preiseigenschaften.

Vorlagenpreis aktualisieren​

Einen vorhandenen Vorlagenpreis aktualisieren

PATCH/odata/LineItemTemplatePrice({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplatePriceId des zu aktualisierenden Preises.
BodyDelta<ApiLineItemTemplatePrice>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Vorlagenpreis löschen​

Einen Vorlagenpreis löschen

DELETE/odata/LineItemTemplatePrice({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die LineItemTemplatePriceId des zu löschenden Preises.
warnung

Das Löschen eines Vorlagenpreises kann nicht rückgängig gemacht werden.


DynamicBudget & DynamicLineItem​

Für Budgets und Positionen stehen jeweils abgeflachte, schreibgeschützte Ansichten zur Verfügung, die Daten aus mehreren Entitäten zusammenführen.

DynamicBudget​

Abgeflachte Budgetliste mit Projekt-, Status- und Berechtigungsdaten

GET/odata/DynamicBudget

Ein einzelnes Budget mit benutzerdefinierten Feldspalten abrufen

GET/odata/DynamicBudget({key})

DynamicLineItem​

Abgeflachte Positionsliste mit Budget-, Projekt- und Gruppendaten

GET/odata/DynamicLineItem

Eine einzelne Position mit benutzerdefinierten Feldspalten abrufen

GET/odata/DynamicLineItem({key})
Nur lesender Zugriff

DynamicBudget und DynamicLineItem unterstützen ausschließlich GET-Anfragen. Zum Erstellen oder Bearbeiten verwenden Sie die regulären Endpunkte.


OData-Abfragebeispiele​

Alle Budgets eines Projekts​

GET /odata/Budget?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Positionen eines Budgets abrufen​

GET /odata/LineItem?$filter=BudgetId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Nur abrechenbare, nicht abgerechnete Positionen​

GET /odata/LineItem?$filter=IsBillable eq true and IsBilled eq false

Sichtbare Budgetgruppen​

GET /odata/BudgetGroup?$filter=Visible eq true&$orderby=OrdinalPosition

Aktive Budgetstatus​

GET /odata/BudgetState?$filter=IsHidden eq false

Globale Budgetvorlagen​

GET /odata/BudgetPreset?$filter=IsGlobal eq true&$orderby=Name

Vorlagenpositionen nach Vorlage​

GET /odata/BudgetPresetLineItem?$filter=PresetId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'&$orderby=OrdinalPosition

Positionsvorlagen​

GET /odata/LineItemTemplate?$orderby=Name

Vorlagenpreise nach Vorlage​

GET /odata/LineItemTemplatePrice?$filter=LineItemTemplateId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Budget erstellen​

POST /odata/Budget
Content-Type: application/json

{
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Name": "Q1-Budget",
"BudgetType": 1,
"BudgetDate": "2024-01-01T00:00:00Z"
}

Position erstellen​

POST /odata/LineItem
Content-Type: application/json

{
"BudgetId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"GroupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ShortDescription": "Beratungsstunden",
"Quantity": 8.0,
"Unit": "Stunden",
"PricePerUnit": 150.00,
"IsBillable": true,
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Budgetgruppe erstellen​

POST /odata/BudgetGroup
Content-Type: application/json

{
"Name": "Externe Dienstleistungen",
"OrdinalPosition": 1,
"Visible": true
}

Budgetstatus erstellen​

POST /odata/BudgetState
Content-Type: application/json

{
"Name": "Genehmigt",
"IsHidden": false
}

Budgetvorlage erstellen​

POST /odata/BudgetPreset
Content-Type: application/json

{
"Name": "Standard-Projektbudget",
"PresetType": 1,
"IsGlobal": true
}

Vorlagenposition erstellen​

POST /odata/BudgetPresetLineItem
Content-Type: application/json

{
"PresetId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ShortDescription": "Beratungsstunden",
"Quantity": 10,
"Unit": "Stunden",
"PricePerUnit": 150.00,
"IsBillable": true
}

Positionsvorlage erstellen​

POST /odata/LineItemTemplate
Content-Type: application/json

{
"Name": "Senior-Berater",
"ShortDescription": "Beratungsleistungen",
"Quantity": 1
}

Vorlagenpreis erstellen​

POST /odata/LineItemTemplatePrice
Content-Type: application/json

{
"LineItemTemplateId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Unit": "Stunden",
"PurchasePricePerUnit": 80.00,
"DispositionPricePerUnit": 150.00
}
Rechnungserstellung

Verwenden Sie CreateInvoiceForAllLineitems oder CreateInvoiceForSelectedLineitems, um aus Budgetpositionen direkt Rechnungen zu generieren. Prüfen Sie vorher mit GetUnbilledLineitemsCount, wie viele Positionen noch offen sind.