{t('invoiceTemplates.section.templates.title')}
-{t('invoiceTemplates.section.templates.desc')}
-{t('invoiceTemplates.section.items.title')}
-{t('invoiceTemplates.section.items.desc')}
-| {t('invoiceTemplates.col.bankName')} | +{t('invoiceTemplates.col.accountHolder')} | +{t('invoiceTemplates.col.cardNumber')} | +{t('invoiceTemplates.col.iban')} | ++ {t('invoiceTemplates.col.actions')} + | +
|---|---|---|---|---|
|
+ {template.bankName}
+ |
+ {template.accountHolderName || '—'} | +{template.cardNumber || '—'} | +{template.iban || '—'} | +
+
+
+ |
+
{t('invoiceTemplates.hint')}
@@ -513,6 +778,79 @@ export function InvoiceTemplatesPage() {{accountFormError}
: null} +Account numbers
- +No bank accounts yet.
diff --git a/apps/super-admin/src/pages/BusinessInvoicesPage.module.css b/apps/super-admin/src/pages/BusinessInvoicesPage.module.css index 2c0b2f4..113fd0c 100644 --- a/apps/super-admin/src/pages/BusinessInvoicesPage.module.css +++ b/apps/super-admin/src/pages/BusinessInvoicesPage.module.css @@ -424,6 +424,15 @@ justify-content: space-between; gap: 12px; margin-bottom: 10px; + flex-wrap: wrap; +} + +.blockHeaderActions { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + justify-content: flex-end; } .blockTitle { diff --git a/apps/super-admin/src/pages/InvoiceTemplateEditorPage.tsx b/apps/super-admin/src/pages/InvoiceTemplateEditorPage.tsx index c54cea6..a467e10 100644 --- a/apps/super-admin/src/pages/InvoiceTemplateEditorPage.tsx +++ b/apps/super-admin/src/pages/InvoiceTemplateEditorPage.tsx @@ -8,15 +8,17 @@ import { ApiError, isAbortError } from '../lib/api' import { createInvoiceTemplate, getInvoiceTemplate, + listInvoiceAccountTemplates, listInvoiceItemTemplates, updateInvoiceTemplate, } from '../services/invoiceService' -import type { InvoiceItemTemplate } from '../types/invoice' +import type { InvoiceAccountTemplate, InvoiceItemTemplate } from '../types/invoice' import { buildAccountsPayload, buildKeyPointsPayload, buildPaymentMethodsPayload, buildTemplateItemsPayload, + defaultDraftPaymentMethods, draftsFromInvoiceTemplate, emptyDraftItem, type DraftAccount, @@ -36,15 +38,19 @@ export function InvoiceTemplateEditorPage() { const { showToast } = useToast() const [itemTemplates, setItemTemplates] = useState{error}
: null} -Invoice templates
-- Full blueprints (name, top text, items, key points, bank accounts) used when issuing - invoices to businesses. Pick one and edit, or start blank. -
-Invoice item templates
-- Reusable line items you can drop into invoice templates or when issuing an invoice. -
-| Bank | +Account holder | +Card number | +IBAN | +Actions | +
|---|---|---|---|---|
|
+ {template.bankName}
+ |
+ {template.accountHolderName || '—'} | +{template.cardNumber || '—'} | +{template.iban || '—'} | +
+
+
+
+
+ |
+
Tip: open a business from Businesses to issue an invoice from a @@ -478,6 +734,77 @@ export function SettingsPage() {
{accountFormError}
: null} +