diff --git a/assets/html/invoice.html b/assets/html/invoice.html index bdb9732..8c1eead 100644 --- a/assets/html/invoice.html +++ b/assets/html/invoice.html @@ -1,115 +1,115 @@ - - - Au : -ss="text-break product_name"> - {{ row.name }} - - {{ row.quantity }} -e d'intérêts de retard. Le montant des pénalités résulte de l'application aux sommes restant dues d'un taux d'intérêt légal en vigueur au moment de l'incident.
- - -
-
-
-
- Total -
-
- {{ total }} € -
-
-
- - {{row.price }} € - {{ row.total }} € - - {% endfor %} - - - -
-
- Notes
- TVA non applicable, art. 293 B du CGI
- Dispensé d’immatriculation au registre du commerce et des sociétés (RCS) et au répertoire des métiers.
- Conditions de paiement : paiement à réception de facture. Aucun escompte consenti pour règlement anticipé ou désistement. Tout incident de paiement est passibl {{ to }} - - - - - Montant : - {{ total }} € - - - -
-
-
- - - - - - - - - - - {% for row in lines %} - -
ObjetQuantitéPrixTotal
+ - - - + + + - +
- -
- {{ host.name }}
- {{ host.address }}
- {{ host.zip_code}} {{ host.city }}
- Tel : {{ host.phone }}
- Mail : {{ host.email }}
-
+ +
+ {{ host.name }}
+ {{ host.address }}
+ {{ host.zip_code}} {{ host.city }}
+ Tel : {{ host.phone }}
+ Mail : {{host.email }}
+

- - - - - - - - - - - - - - - - - - -
- {{name}}
- Tel : {{phone_number}}
- Voyageurs : {{ customers_number }}
- Plateforme : {{platform}}
- - - - - - - - - - +
- Nº de facture : {{id}}
- Du : {{ from }}
+ + + + + + + + + + + + + + + + + +
+ {{name}}
+ Tel : {{phone_number}}
+ Voyageurs : {{ customers_number }}
+ Plateforme : {{platform}}
+ + + + + + + + + + + + + + + + + + + +
+ Nº de facture : {{id}}
+ Du : {{ from }}
+ Au : {{ to }}
+ Montant : {{ total }}
+
+
+
+ + + + + + + + + + + {% for row in lines %} + + + + + + + {% endfor %} + +
ObjetQuantitéPrixTotal
+ {{ row.name }} + {{ row.quantity }}{{row.price }}{{ row.total }}
+
+
+
+ Notes
+ TVA non applicable, art. 293 B du CGI
+ Dispensé d’immatriculation au registre du commerce et des sociétés (RCS) et au répertoire des métiers.
+ Conditions de paiement : paiement à réception de facture. Aucun escompte consenti pour règlement anticipé ou désistement. Tout incident de paiement est passible d'intérêts de retard. Le montant des pénalités résulte de l'application aux sommes restant dues d'un taux d'intérêt légal en vigueur au moment de l'incident.
+
+
+
+
+
+
+ Total +
+
+ {{ total }} +
+
+
+ + diff --git a/assets/html/report.html b/assets/html/report.html new file mode 100644 index 0000000..a5cb858 --- /dev/null +++ b/assets/html/report.html @@ -0,0 +1,68 @@ + + + + + + + + +

Bilan réservations

+

{{month}} {{ year }}

+
+ + + + + + + + + + + + + + + + {% for row in lines %} + + + + + + + + + + + + {% endfor %} + + + + + + + + + + + + + + + + + + + + + + + + + +
#NomDuAuRevenue (€)PlatformeCommission (€)NemoImmo (€)Profit (€)
{{ row.Id }} {{ row.CustomerName }}{{ row.From }}{{ row.To }}{{ row.Total }}{{ row.Platform }}{{ row.PlatformFees }}{{ row.Fee }}{{ row.Profit }}
Totaux{{ total }}{{ platformFees }}{{ fee }}{{ profit }}
dont CB :{{ cardTotal }}Frais Booking :{{ bookingFees }}
+
+ + diff --git a/internal/server/handle_pdf.go b/internal/server/handle_pdf.go index 5346fd5..9af0917 100644 --- a/internal/server/handle_pdf.go +++ b/internal/server/handle_pdf.go @@ -1,12 +1,15 @@ package server import ( + "fmt" + "net/http" "strconv" "github.com/labstack/echo/v4" "github.com/rjNemo/rentease/config" "github.com/rjNemo/rentease/internal/booking" "github.com/rjNemo/rentease/internal/pdf" + u "github.com/rjNemo/underscore" ) func handleCreateInvoicePdf(bs *booking.Service, ps *pdf.PdfService, hc *config.Host) echo.HandlerFunc { @@ -26,3 +29,41 @@ func handleCreateInvoicePdf(bs *booking.Service, ps *pdf.PdfService, hc *config. return c.Attachment("tmp.pdf", "tmp.pdf") } } + +func handleCreateReportPdf(bs *booking.Service, ps *pdf.PdfService) echo.HandlerFunc { + return func(c echo.Context) error { + period := c.QueryParam("period") + if !u.Contains([]string{"month", "year"}, period) { + return &echo.HTTPError{ + Code: http.StatusBadRequest, + Message: fmt.Sprintf("%q is not a valid period", period), + } + } + + monthStr := c.QueryParam("month") + month, err := strconv.Atoi(monthStr) + if err != nil || month < 1 || month > 12 { + return &echo.HTTPError{ + Code: http.StatusBadRequest, + Message: fmt.Sprintf("%q is not a valid month", month), + } + } + + yearStr := c.QueryParam("year") + year, err := strconv.Atoi(yearStr) + if err != nil { + return &echo.HTTPError{ + Code: http.StatusBadRequest, + Message: fmt.Sprintf("%q is not a valid year", year), + } + } + + report := bs.BuildReport(period, month, year) + err = ps.BuildReport(report, month, year) + if err != nil { + return err + } + + return c.Attachment("tmp.pdf", "tmp.pdf") + } +} diff --git a/internal/server/handle_reports.go b/internal/server/handle_reports.go index f41df6e..9ea2738 100644 --- a/internal/server/handle_reports.go +++ b/internal/server/handle_reports.go @@ -74,6 +74,7 @@ func handleComputeReport(bs *booking.Service, hc *config.Host) echo.HandlerFunc Profit: strconv.FormatFloat(r.Profit, 'f', 2, 64), CardTotal: strconv.FormatFloat(r.CardTotal, 'f', 2, 64), BookingFees: strconv.FormatFloat(r.BookingFees, 'f', 2, 64), + PdfUrl: templ.URL(fmt.Sprintf("%s/pdf?period=%s&month=%d&year=%d", constants.RouteReports, period, month, year)), Lines: u.Map(r.Lines, func(l *booking.Line) *views.ReportLine { return &views.ReportLine{ Id: l.InvoiceNumber(hc), diff --git a/internal/server/routes.go b/internal/server/routes.go index 83cb020..d8241b9 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -10,4 +10,5 @@ func (s Server) MountHandlers() { s.Router.GET("/bookings/pdf/:id", handleCreateInvoicePdf(s.bs, s.ps, s.hc)) s.Router.GET("/reports", handleReportsPage()) s.Router.GET("/reports/do", handleComputeReport(s.bs, s.hc)) + s.Router.GET("/reports/pdf", handleCreateReportPdf(s.bs, s.ps)) } diff --git a/internal/views/base_templ.go b/internal/views/base_templ.go index f5b0f9b..dba23a2 100644 --- a/internal/views/base_templ.go +++ b/internal/views/base_templ.go @@ -23,7 +23,7 @@ func BaseLayout() templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("RentEase | Your Property Management System
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -31,7 +31,7 @@ func BaseLayout() templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 2) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
🏨 RentEase © 2024
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/report_section.templ b/internal/views/report_section.templ index a0cc1a9..db567e9 100644 --- a/internal/views/report_section.templ +++ b/internal/views/report_section.templ @@ -7,6 +7,7 @@ type ReportViewModel struct { PlatformFees string Fee string Profit string + PdfUrl templ.SafeURL Lines []*ReportLine } @@ -27,7 +28,7 @@ templ ReportSection(report *ReportViewModel) {

Your report

- + Create PDF
diff --git a/internal/views/report_section_templ.go b/internal/views/report_section_templ.go index b0e2ca5..a4ef555 100644 --- a/internal/views/report_section_templ.go +++ b/internal/views/report_section_templ.go @@ -17,6 +17,7 @@ type ReportViewModel struct { PlatformFees string Fee string Profit string + PdfUrl templ.SafeURL Lines []*ReportLine } @@ -46,7 +47,16 @@ func ReportSection(report *ReportViewModel) templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Your report

") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Your report

IDNameFromToRevenue (€)PlatformPlatform Fees (€)Fees (€)Profit (€)
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -55,8 +65,8 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var2 templ.SafeURL = row.Url - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var2))) + var templ_7745c5c3_Var3 templ.SafeURL = row.Url + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var3))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -64,12 +74,12 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var3 string - templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(row.Id) + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(row.Id) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 53, Col: 16} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 54, Col: 16} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -77,23 +87,10 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var4 string - templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(row.CustomerName) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 56, Col: 28} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -186,12 +196,12 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var12 string - templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(report.Total) + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(report.Total) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 73, Col: 23} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 74, Col: 23} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -199,23 +209,10 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var13 string - templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(report.PlatformFees) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 75, Col: 30} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
IDNameFromToRevenue (€)PlatformPlatform Fees (€)Fees (€)Profit (€)
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } var templ_7745c5c3_Var5 string - templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(row.From) + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(row.CustomerName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 57, Col: 20} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 57, Col: 28} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -104,9 +101,9 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var6 string - templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(row.To) + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(row.From) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 58, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 58, Col: 20} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) if templ_7745c5c3_Err != nil { @@ -117,9 +114,9 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var7 string - templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(row.Total) + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(row.To) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 59, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 59, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) if templ_7745c5c3_Err != nil { @@ -130,9 +127,9 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var8 string - templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(row.Platform) + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(row.Total) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 60, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 60, Col: 21} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -143,9 +140,9 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var9 string - templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(row.PlatformFees) + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(row.Platform) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 61, Col: 28} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 61, Col: 24} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -156,9 +153,9 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var10 string - templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(row.Fee) + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(row.PlatformFees) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 62, Col: 19} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 62, Col: 28} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -169,14 +166,27 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var11 string - templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(row.Profit) + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(row.Fee) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 63, Col: 22} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 63, Col: 19} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(row.Profit) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 64, Col: 22} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } var templ_7745c5c3_Var14 string - templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(report.Fee) + templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(report.PlatformFees) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 76, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 76, Col: 30} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { @@ -226,24 +223,37 @@ func ReportSection(report *ReportViewModel) templ.Component { return templ_7745c5c3_Err } var templ_7745c5c3_Var15 string - templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(report.Profit) + templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(report.Fee) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 77, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 77, Col: 21} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var16 string + templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(report.Profit) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 78, Col: 24} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Card-only: ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var16 string - templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(report.CardTotal) + var templ_7745c5c3_Var17 string + templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(report.CardTotal) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 84, Col: 27} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 85, Col: 27} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -251,12 +261,12 @@ func ReportSection(report *ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var17 string - templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(report.BookingFees) + var templ_7745c5c3_Var18 string + templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(report.BookingFees) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 86, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/report_section.templ`, Line: 87, Col: 29} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err }