...
The endpoint returns a JSON array of invoice objects. Each object contains a nested `Info` array of supplementary key/value (or title/value) entries.
| Code Block |
|---|
[ { "Id": <value>, // Composite: $"{InstNr}-{ForbnNr}-{UdebNr}-{Id}" = AKOND.INSTNR-FORBNR-UDEBNR-REGNINGNR "ServiceId": <value>, // HARDCODED NULL. Previous: Data: AUDEBFORS.FORSYNINGSART (+AFREGNTYPE) via ForsyningsartMapper. El-only join => in practice "consumption_trade" or null (a supply type, not an identifier — omitted; see limitations). "InvoiceDate": <value>, // Data: AKOND.BILAGSDATO (DateTimeOffset, UTC offset 0) | null "DueDate": <value>, // Data: AKOND.FORFDATO (DateTimeOffset, UTC offset 0) | null "Period": <value>, // Derived from StartDate/EndDate month-span: "1month"/"2month"/"3month"/"6month"/"12month" (defaults to "1month" when dates missing or other span) "StartDate": <value>, // Data: AKOND.DATOFRA (DateTimeOffset, UTC offset 0) | null "EndDate": <value>, // Data: AKOND.DATOTIL (DateTimeOffset, UTC offset 0) | null "RemainingAmount": <value>,// Data: running account saldo (SUM of AKOND.KR up to this line) - NOT a per-invoice remaining figure. "TotalAmount": <value>, // Data: AKOND.KR (decimal) | null "InvoiceStatus": <value>, // Derived (see status logic below): one of cancelled / credited / paid / overdue / unpaid non-empty BDOC.PAYLOAD exists, else "missing" InvoiceType": <value>, // Derived: "pdf" when a rendered PDF (non-empty BDOC.PAYLOAD with matching MIMETYPE) exists, else "missing" // Flat supplementary list; mostly DUPLICATES the structured fields above, as strings/dates. "Info": [ // Every entry carries BOTH Key AND Title (EGCommon emits null for whichever is unset). "Info": [ { "Key": "invoiceNumber", "Title": "Invoice number", "Value": <Id> }, // Data: AKOND.REGNINGNR (string) { "Key": "invoiceDate", "Title": "Invoice date", "Value": <InvoiceDate> },// Data: AKOND.BILAGSDATO (DateTimeOffset|null) { "Key": "dueDate", "Title": "Due date", "Value": <DueDate> }, // Data: AKOND.FORFDATO (DateTimeOffset|null) { "Key": "totalAmount", "Title": "Total amount", "Value": <TotalAmount> },// Data: AKOND.KR .ToString() | null { "Key": "period", "Title": "Period", "Value": <Period> }, // Derived period string { "Key": "remainingAmount", "Title": "Remaining amount", "Value": <Saldo> }, // Data: running saldo .ToString() | null { "Key": "status", "ValueTitle": <InvoiceStatus> },// Derived status string "Status", { "Key": "description", "Value": <Tekst><InvoiceStatus> },// Derived status string // Data: AKOND.TEKST { "TitleKey": "Tekstdescription", "ValueTitle": <Tekst>"Description", } // Data: AKOND.TEKST (DUPLICATE of description, "Value": <Tekst> }, // Data: AKOND.TEKST { "Key": "tekst", "Title": "Tekst", "Value": <Tekst> } // Data: AKOND.TEKST sent(duplicate viaof Title (untranslateddescription) not Key) // NOTE: "ocr" key is NOT emitted (source field not yet identified - TODO) ] } ] |
Field origin detail (top-level BrightInvoice):
...