From f9b23f5c12eda13c6014f6291bdeecb77bb40141 Mon Sep 17 00:00:00 2001 From: T Date: Mon, 23 Feb 2026 11:27:12 -0700 Subject: PDF design tweaks --- internal/reports/invoice.go | 8 +++---- internal/reports/testdata/invoice_test_data.json | 28 ++++++++++++++---------- 2 files changed, 21 insertions(+), 15 deletions(-) (limited to 'internal') diff --git a/internal/reports/invoice.go b/internal/reports/invoice.go index 4ac5eb4..503851e 100644 --- a/internal/reports/invoice.go +++ b/internal/reports/invoice.go @@ -106,7 +106,7 @@ func GenerateInvoiceData( return nil, fmt.Errorf("unsupported entry type") } - lineItems := groupTimeEntriesIntoLineItems(timeEntries) + lineItems := groupTimeEntriesIntoLineItems(timeEntries, contractor.Label) totalHours := 0.0 totalAmount := 0.0 @@ -133,7 +133,7 @@ func GenerateInvoiceData( return invoice, nil } -func groupTimeEntriesIntoLineItems(entries []timeEntryData) []LineItem { +func groupTimeEntriesIntoLineItems(entries []timeEntryData, contractorLabel string) []LineItem { var lineItems []LineItem // Group 1: Entries with overridden rates @@ -187,13 +187,13 @@ func groupTimeEntriesIntoLineItems(entries []timeEntryData) []LineItem { // Process client rates for _, entries := range clientRateGroups { if len(entries) > 0 { - clientName := entries[0].ClientName rateCents := int64(0) if entries[0].ClientBillableRate.Valid { rateCents = entries[0].ClientBillableRate.Int64 } - lineItem := createLineItem(entries, rateCents, fmt.Sprintf("General work - %s", clientName)) + clientName := entries[0].ClientName + lineItem := createLineItem(entries, rateCents, fmt.Sprintf("%s - %s", contractorLabel, clientName)) lineItems = append(lineItems, lineItem) } } diff --git a/internal/reports/testdata/invoice_test_data.json b/internal/reports/testdata/invoice_test_data.json index a6adc28..499f104 100644 --- a/internal/reports/testdata/invoice_test_data.json +++ b/internal/reports/testdata/invoice_test_data.json @@ -1,26 +1,32 @@ { - "client_name": "Test Client", - "project_name": "Test Project", + "client_name": "Acme Corporation", + "project_name": "", "date_range_start": "2025-07-01", "date_range_end": "2025-07-31", "generated_date": "2025-08-04", "invoice_number": "2025-07-001", "line_items": [ { - "description": "Development work", - "hours": 8.5, + "description": "Software Development - Acme Corporation", + "hours": 14.5, "rate": 150.0, - "amount": 1275.0 + "amount": 2175.0 }, { - "description": "Code review and testing", - "hours": 2.25, - "rate": 150.0, - "amount": 337.5 + "description": "Platform Modernization", + "hours": 8.0, + "rate": 175.0, + "amount": 1400.0 + }, + { + "description": "Custom rate work", + "hours": 3.0, + "rate": 225.0, + "amount": 675.0 } ], - "total_hours": 10.75, - "total_amount": 1612.5, + "total_hours": 25.5, + "total_amount": 4250.0, "contractor_name": "Travis Parker", "contractor_label": "Software Development", "contractor_email": "travis.parker@gmail.com" -- cgit v1.2.3