// frontend/src/routes/invoices/[id]/+page.svelte
Back to Invoices

Invoice Details

{#if isAdmin && !isEditing && invoice && invoice.status !== 'paid' && invoice.status !== 'cancelled'}
{#if invoice.status === 'sent'} {/if}
{/if}
{#if loading}
Loading...
{:else if error} {:else if !invoice} {:else}
Invoice Information
{invoice.status.charAt(0).toUpperCase() + invoice.status.slice(1)}
{#if isEditing}
{#if invoice.status === 'paid' || isEditing}
{/if}
{:else}
Invoice Date

{formatDate(invoice.date)}

Invoice ID

{invoice.id}

{#if invoice.status === 'paid' && invoice.date_paid}
Date Paid

{formatDate(invoice.date_paid)}

Payment Method

{invoice.payment_type ? invoice.payment_type.charAt(0).toUpperCase() + invoice.payment_type.slice(1).replace('_', ' ') : 'Not specified'}

{/if} {#if customer}
Billing Contact

{customer.billing_contact_first_name} {customer.billing_contact_last_name}
{customer.billing_email}

Billing Address

{customer.billing_street_address}
{customer.billing_city}, {customer.billing_state} {customer.billing_zip_code}

{/if} {/if}
Invoice Items
{#if revenues && revenues.length > 0}
{#each revenues as revenue (revenue.id)} {/each}
Account Description Amount
{typeof revenue.account === 'object' ? revenue.account.name : accounts.find(a => a.id === revenue.account)?.name || 'Unknown Account'} Monthly Service ({formatDate(revenue.start_date)} - {revenue.end_date ? formatDate(revenue.end_date) : 'Ongoing'}) {formatCurrency(revenue.amount)}
{/if} {#if projects && projects.length > 0}
{#each projects as project (project.id)} {/each}
Project Date Amount
Project for {typeof project.customer === 'object' ? project.customer.name : customer?.name || 'Unknown Customer'} {formatDate(project.date)} {formatCurrency(project.amount || 0)}
{/if} {#if (!revenues || revenues.length === 0) && (!projects || projects.length === 0)}

No items attached to this invoice.

{/if}
Actions
{#if invoice.status === 'draft'} {/if} {#if invoice.status === 'sent'} {/if}
{#if invoice.status === 'paid' && invoice.date_paid}
Payment History
Payment Received

{formatDate(invoice.date_paid)}

{formatCurrency(getInvoiceTotal())}

Payment Method:

{invoice.payment_type ? invoice.payment_type.charAt(0).toUpperCase() + invoice.payment_type.slice(1).replace('_', ' ') : 'Not specified'}

{/if} {#if customer}
Customer Information
{customer.name}

Primary Contact:
{customer.primary_contact_first_name} {customer.primary_contact_last_name}
{customer.primary_contact_phone}
{customer.primary_contact_email}

Billing Contact:
{customer.billing_contact_first_name} {customer.billing_contact_last_name}
{customer.billing_email}

{/if}
{/if}