{{- /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial */ -}} {{- /* SPDX-FileCopyrightText: 2025-2026 Christian Galo */ -}} {{/* operator_invoices.html Invoices view inside the operator_billing.html wrapper (which owns the page header). Built from the page-anatomy parts: the invoice number is the row's link (chrome-conventions "Row navigation is the primary column's link"; the leading View button and the always- "Default" account name retired, maintainer 2026-08-30), states render through statusBadge (Overdue is the derived danger state), the Currency column is gone because the amounts carry their ISO code. */}} {{ if .Error }} {{ else }} {{ template "environmentNotice" .EnvNotice }} {{ if eq (len .Invoices) 0 }} {{ if .Nav.Filtered }} {{ template "listControls" .Nav }} {{ template "listNoMatch" .Nav }} {{ else }} {{ template "emptyState" .Empty }} {{ end }} {{ else }} {{ template "listControls" .Nav }}
{{ range .Invoices }} {{ end }}
Invoice Organization Status Amount due Amount paid Due date Paid at Created Stripe sync {{ template "helpIcon" (helpIcon "Stripe sync" "Whether the row has a linked Stripe object. Not mapped means none is linked yet; that is expected when Stripe is not configured or a sync has not run. Check the Stripe integration settings before assuming something is broken.") }}
{{ if .InvoiceNumber }} {{ .InvoiceNumber }} {{ else }} Unnumbered {{ end }}{{ if .EnvState }}{{ template "statusBadge" .EnvBadge }}{{ end }} {{ if .OrgName }} {{ .OrgName }} {{ else }} {{ .OrgID }} {{ end }} {{ template "statusBadge" .StatusBadge }} {{ .AmountDue }} {{ .AmountPaid }} {{ if .DueDate }}{{ .DueDate }}{{ else }}{{ end }} {{ if .PaidAt }}{{ .PaidAt }}{{ else }}{{ end }} {{ .CreatedAt }} {{ template "statusBadge" .SyncBadge }}
{{ template "listPager" .Nav }} {{ end }} {{ end }}