summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/reports/invoice.go8
-rw-r--r--internal/reports/testdata/invoice_test_data.json28
2 files changed, 21 insertions, 15 deletions
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"