implement latest changes to employee payroll process
- Add ContractDaysWeek - Add Sickness Days to employee export sheet - Add Gesundheitsbonus value per employee - Additional fixes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package genpdf
|
||||
|
||||
import (
|
||||
"business-engine/internal/database"
|
||||
domain "business-engine/internal/domain"
|
||||
"fmt"
|
||||
"slices"
|
||||
@@ -77,6 +78,8 @@ func GenerateSalaryStatement(stmt domain.PayrollStatement, filename string, mont
|
||||
|
||||
drawSummary(pdf, gesamtbetrag)
|
||||
|
||||
drawSickdays(pdf, stmt.SickdaysYear)
|
||||
|
||||
if err := pdf.OutputFileAndClose(filename); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -147,12 +150,12 @@ func genLineItemsFromStatement(stmt domain.PayrollStatement) []LineItem {
|
||||
Betrag: 14.0,
|
||||
})
|
||||
}
|
||||
if stmt.GesundheitsbonusAbzug == "" {
|
||||
if stmt.Gesundheitsbonus > 0 {
|
||||
items = append(items, LineItem{
|
||||
Lohnart: "1032",
|
||||
Beschreibung: "Gesundheitsbonus",
|
||||
Anzahl: 1,
|
||||
Betrag: 200.0,
|
||||
Betrag: stmt.Gesundheitsbonus,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -295,6 +298,41 @@ func drawSummary(pdf *fpdf.Fpdf, total float64) {
|
||||
pdf.CellFormat(30, 8, formatCurrency(total), "T", 0, "R", false, 0, "")
|
||||
}
|
||||
|
||||
func drawSickdays(pdf *fpdf.Fpdf, sickdays []database.ListSickdaysForEmployeeRow) {
|
||||
// 1. Abstand und Überschrift
|
||||
pdf.Ln(10)
|
||||
|
||||
pdf.SetFont("DejaVu", "B", 11)
|
||||
// Kein Rahmen, Zeilenumbruch nach der Zelle
|
||||
pdf.CellFormat(0, 10, "Krankmeldungen", "", 1, "L", false, 0, "")
|
||||
|
||||
// 2. Fallback: Wenn keine Krankmeldungen vorhanden sind
|
||||
if len(sickdays) == 0 {
|
||||
pdf.SetFont("DejaVu", "", 10)
|
||||
text := "- Keine Einträge vorhanden"
|
||||
pdf.CellFormat(0, 6, text, "", 1, "L", false, 0, "")
|
||||
pdf.Ln(5)
|
||||
return
|
||||
}
|
||||
|
||||
// 3. Liste zeichne
|
||||
pdf.SetFont("DejaVu", "", 10)
|
||||
|
||||
for _, sick := range sickdays {
|
||||
startStr := sick.Start.Format("02.01.2006")
|
||||
endStr := sick.End.Format("02.01.2006")
|
||||
|
||||
// Formatierung: "- 01.01.2023 bis 05.01.2023: 4 Tage"
|
||||
text := fmt.Sprintf("- %s bis %s: %d Tage", startStr, endStr, sick.Days)
|
||||
|
||||
// Zeichnen der Zeile
|
||||
pdf.CellFormat(0, 6, text, "", 1, "L", false, 0, "")
|
||||
}
|
||||
|
||||
// Kleiner Abstand nach der Liste
|
||||
pdf.Ln(5)
|
||||
}
|
||||
|
||||
func formatFloat(f float64) string {
|
||||
p := message.NewPrinter(language.German)
|
||||
str := p.Sprintf("%.2f", f)
|
||||
|
||||
Reference in New Issue
Block a user