Zum Hauptinhalt springen

Budget & Positionen

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

Entitätsübersicht
EntitätBeschreibung
BudgetDas übergeordnete Budgetobjekt eines Projekts
LineItemEinzelne Budgetpositionen (Einnahmen/Ausgaben)
BudgetGroupGruppierung von Positionen
BudgetStateStatusdefinitionen für Budgets
BudgetPresetBudgetvorlagen
FiscalPeriodGeschäftsperioden
FiscalPeriodFundingFinanzierungsplanung pro Periode
LineItemTemplateVorlagen für Budgetpositionen

Budget

Datenmodell

PropertyTypeDescription
BudgetIdGuid (UUID)Eindeutiger Bezeichner des Budgets (Primärschlüssel).
ProjectIdGuidZugehöriges Projekt.
BudgetTypeint32Budgettyp (z. B. Einnahmen, Ausgaben).
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

GET/odata/Budget

Alle Budgets abrufen. Unterstützt OData-Abfrageparameter.

POST/odata/Budget

Neues Budget erstellen.

ParameterTypeRequiredDescription
BodyDelta<ApiBudget>JSON-Objekt mit den Budgeteigenschaften.
GET/odata/Budget({key})

Ein einzelnes Budget abrufen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
PATCH/odata/Budget({key})

Budget teilweise aktualisieren.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
BodyDelta<ApiBudget>JSON-Objekt mit den zu aktualisierenden Feldern.
DELETE/odata/Budget({key})

Budget löschen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
GET/odata/Budget/$count

Gesamtanzahl aller Budgets abrufen.

Rechnungserstellung

GET/odata/Budget({key})/GetUnbilledLineitemsCount()

Anzahl der noch nicht abgerechneten Positionen abrufen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
GET/odata/Budget({key})/CreateInvoiceForAllLineitems()

Eine Rechnung für alle Positionen des Budgets erstellen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
POST/odata/Budget({key})/CreateInvoiceForSelectedLineitems

Eine Rechnung für ausgewählte Positionen erstellen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
lineItemIdsGuid[]Array der LineItem-IDs (als Query-Parameter).
BodyobjectJSON-Objekt mit weiteren Rechnungsdetails.

Dokumente & Verknüpfungen

POST/odata/Budget({key})/AddDocumentToBudget

Ein Dokument mit dem Budget verknüpfen.

POST/odata/Budget({key})/RemoveDocumentFromBudget

Ein Dokument vom Budget entfernen.

POST/odata/Budget({key})/AddRelation

Eine Verknüpfung zum Budget hinzufügen.

POST/odata/Budget({key})/RemoveRelation

Eine Verknüpfung vom Budget entfernen.

Vorlagen

POST/odata/Budget({key})/AddLineItemFromTemplate

Eine Position aus einer Vorlage zum Budget hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie BudgetId.
BodyobjectJSON-Objekt mit der Vorlagen-ID.

LineItem (Positionen)

Datenmodell

PropertyTypeDescription
LineItemIdGuid (UUID)Eindeutiger Bezeichner der Position (Primärschlüssel).
BudgetIdGuidZugehöriges Budget.
GroupIdGuidZugehörige Budgetgruppe.
PerformedByContactIdGuid?Ausführender Kontakt.
OrdinalPositionint32Reihenfolgeposition.
ConsecutiveNumberint32Fortlaufende Nummer.
ShortDescriptionstring?Kurzbeschreibung der Position.
QuantitydoubleMenge.
Unitstring?Einheit (z. B. "Stunden", "Stück").
PricePerUnitdoublePreis pro Einheit.
SecondaryPricePerUnitdoubleSekundärer Preis pro Einheit (Einkaufspreis).
IsCustomPricePerUnitbooleanBenutzerdefinierter Preis aktiviert.
IsBilledbooleanPosition ist abgerechnet.
IsBillablebooleanPosition ist abrechenbar.
CreatedByContactIdGuidErsteller der Position.
CreatedDateDateTimeOffsetErstellungsdatum.
ChangedByContactIdGuid?Letzter Bearbeiter.
ChangedDateDateTimeOffset?Datum der letzten Änderung.
ProvisionDateDateTimeOffset?Leistungsdatum.
DescriptionTextstring?Beschreibung als Klartext.
DescriptionHTMLstring?Beschreibung als HTML.
ProjectIdGuidZugehöriges Projekt.
LineItemTypeLineItemTypeTyp der Position (Enum: 0, 1, 2).

Endpunkte

GET/odata/LineItem

Alle Positionen abrufen.

POST/odata/LineItem

Neue Position erstellen.

ParameterTypeRequiredDescription
BodyDelta<ApiLineItem>JSON-Objekt mit den Positionseigenschaften.
GET/odata/LineItem({key})

Eine einzelne Position abrufen.

PATCH/odata/LineItem({key})

Position teilweise aktualisieren.

DELETE/odata/LineItem({key})

Position löschen.

GET/odata/LineItem/$count

Gesamtanzahl aller Positionen abrufen.

POST/odata/LineItem({key})/Copy

Position kopieren.

POST/odata/LineItem({key})/AddDocumentToLineItem

Dokument mit der Position verknüpfen.

POST/odata/LineItem({key})/RemoveDocumentFromLineItem

Dokument von der Position entfernen.

POST/odata/LineItem({key})/AddRelation

Verknüpfung zur Position hinzufügen.

POST/odata/LineItem({key})/RemoveRelation

Verknüpfung von der Position entfernen.


BudgetGroup

Datenmodell

PropertyTypeDescription
BudgetGroupIdGuid (UUID)Eindeutiger Bezeichner der Gruppe.
Namestring?Name der Budgetgruppe.
OrdinalPositionint32Sortierposition.
PurchasePricedoubleEinkaufspreis.
DispositionPricedoubleVerkaufspreis.
Visibleboolean?Sichtbarkeit der Gruppe.

Endpunkte

GET/odata/BudgetGroup

Alle Budgetgruppen abrufen.

POST/odata/BudgetGroup

Neue Budgetgruppe erstellen.

GET/odata/BudgetGroup({key})

Eine einzelne Budgetgruppe abrufen.

PATCH/odata/BudgetGroup({key})

Budgetgruppe aktualisieren.

DELETE/odata/BudgetGroup({key})

Budgetgruppe löschen.

GET/odata/BudgetGroup/$count

Gesamtanzahl der Budgetgruppen abrufen.


BudgetState

Datenmodell

PropertyTypeDescription
BudgetStateIdGuid (UUID)Eindeutiger Bezeichner des Budgetstatus.
Namestring?Name des Status.
IsHiddenbooleanGibt an, ob der Status ausgeblendet ist.

Endpunkte

GET/odata/BudgetState

Alle Budgetstatus-Definitionen abrufen.

POST/odata/BudgetState

Neuen Budgetstatus erstellen.

GET/odata/BudgetState({key})

Einen einzelnen Budgetstatus abrufen.

PATCH/odata/BudgetState({key})

Budgetstatus aktualisieren.

DELETE/odata/BudgetState({key})

Budgetstatus löschen.

GET/odata/BudgetState/$count

Gesamtanzahl der Budgetstatus-Definitionen abrufen.


BudgetPreset (Budgetvorlagen)

Datenmodell

PropertyTypeDescription
PresetIdGuid (UUID)Eindeutiger Bezeichner der Vorlage.
PresetTypeint32Typ der Vorlage.
Namestring?Name der Vorlage.
PresetDateDateTimeOffsetDatum der Vorlage.
AmountAssetsdoubleGesamtbetrag.
IsGlobalbooleanGibt an, ob die Vorlage global verfügbar ist.

Endpunkte

GET/odata/BudgetPreset

Alle Budgetvorlagen abrufen.

POST/odata/BudgetPreset

Neue Budgetvorlage erstellen.

GET/odata/BudgetPreset({key})

Eine einzelne Vorlage abrufen.

PATCH/odata/BudgetPreset({key})

Vorlage aktualisieren.

DELETE/odata/BudgetPreset({key})

Vorlage löschen.

GET/odata/BudgetPreset/$count

Gesamtanzahl der Vorlagen abrufen.

POST/odata/BudgetPreset({key})/LoadTemplateForProject

Budgetvorlage in ein Projekt laden.

ParameterTypeRequiredDescription
keyGuidDie PresetId.
BodyobjectJSON-Objekt mit der Projekt-ID.
POST/odata/BudgetPreset/SaveTemplateForBudget

Ein Budget als Vorlage speichern.

ParameterTypeRequiredDescription
BodyobjectJSON-Objekt mit der Budget-ID und dem Vorlagennamen.

FiscalPeriod (Geschäftsperioden)

Datenmodell

PropertyTypeDescription
FiscalPeriodIdGuid (UUID)Eindeutiger Bezeichner der Geschäftsperiode.
Namestring?Name der Periode.
PeriodTypeint32Periodentyp (z. B. Monat, Quartal, Jahr).
PeriodStartDateTimeOffsetStartdatum der Periode.
PeriodEndDateTimeOffsetEnddatum der Periode.

Endpunkte

Nur lesender Zugriff

Geschäftsperioden können nur gelesen, aber nicht über die API erstellt, geändert oder gelöscht werden. Die Verwaltung erfolgt über die InLoox-Administrationseinstellungen.

GET/odata/FiscalPeriod

Alle Geschäftsperioden abrufen.

GET/odata/FiscalPeriod({key})

Eine einzelne Geschäftsperiode abrufen.

GET/odata/FiscalPeriod/$count

Gesamtanzahl der Geschäftsperioden abrufen.


FiscalPeriodFunding (Periodenfinanzierung)

Datenmodell

PropertyTypeDescription
FiscalPeriodFundingIdGuid (UUID)Eindeutiger Bezeichner.
FiscalPeriodIdGuidZugehörige Geschäftsperiode.
FiscalPeriodNamestring?Name der Geschäftsperiode (schreibgeschützt).
ProjectIdGuidZugehöriges Projekt.
Descriptionstring?Beschreibung.
BudgetOpexdouble?Budgetierter OPEX-Betrag.
BudgetCapexdouble?Budgetierter CAPEX-Betrag.
BudgetTotaldouble?Budgetierter Gesamtbetrag.
PlannedOpexdoubleGeplanter OPEX-Betrag.
PlannedCapexdoubleGeplanter CAPEX-Betrag.
PlannedTotaldoubleGeplanter Gesamtbetrag.
ActualOpexdoubleTatsächlicher OPEX-Betrag.
ActualCapexdoubleTatsächlicher CAPEX-Betrag.
ActualTotaldoubleTatsächlicher Gesamtbetrag.
EstimatedOpexdoubleGeschätzter OPEX-Betrag.
EstimatedCapexdoubleGeschätzter CAPEX-Betrag.
EstimatedTotaldoubleGeschätzter Gesamtbetrag.
ActualBenefitdoubleTatsächlicher Nutzen.
PlannedBenefitdoubleGeplanter Nutzen.
PeriodTypeint32Periodentyp.
BudgetApprovalStateint32Genehmigungsstatus des Budgets.

Endpunkte

GET/odata/FiscalPeriodFunding

Alle Periodenfinanzierungen abrufen.

POST/odata/FiscalPeriodFunding

Neue Periodenfinanzierung erstellen.

GET/odata/FiscalPeriodFunding({key})

Eine einzelne Periodenfinanzierung abrufen.

PATCH/odata/FiscalPeriodFunding({key})

Periodenfinanzierung aktualisieren.

DELETE/odata/FiscalPeriodFunding({key})

Periodenfinanzierung löschen.

GET/odata/FiscalPeriodFunding/$count

Gesamtanzahl der Periodenfinanzierungen abrufen.

POST/odata/FiscalPeriodFunding/CreateFundingPlanForProject

Finanzierungsplan für ein Projekt automatisch erstellen.

ParameterTypeRequiredDescription
BodyobjectJSON-Objekt mit der Projekt-ID.

LineItemTemplate (Positionsvorlagen)

Datenmodell

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

Endpunkte

GET/odata/LineItemTemplate

Alle Positionsvorlagen abrufen.

POST/odata/LineItemTemplate

Neue Positionsvorlage erstellen.

GET/odata/LineItemTemplate({key})

Eine einzelne Positionsvorlage abrufen.

PATCH/odata/LineItemTemplate({key})

Positionsvorlage aktualisieren.

DELETE/odata/LineItemTemplate({key})

Positionsvorlage löschen.

GET/odata/LineItemTemplate/$count

Gesamtanzahl der Positionsvorlagen abrufen.

POST/odata/LineItemTemplate({key})/AddGroup

Eine Gruppe zur Positionsvorlage hinzufügen.

POST/odata/LineItemTemplate({key})/RemoveGroup

Eine Gruppe von der Positionsvorlage entfernen.


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

GET/odata/DynamicBudget

Abgeflachte Budgetliste mit Projekt-, Status- und Berechtigungsdaten.

GET/odata/DynamicBudget/$count

Gesamtanzahl der DynamicBudget-Einträge.

DynamicLineItem

GET/odata/DynamicLineItem

Abgeflachte Positionsliste mit Budget-, Projekt- und Gruppendaten.

GET/odata/DynamicLineItem/$count

Gesamtanzahl der DynamicLineItem-Einträge.

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

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"
}

Finanzierungsplan für alle Perioden eines Projekts

GET /odata/FiscalPeriodFunding?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'&$orderby=FiscalPeriodName
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.