59 lines
1010 B
Typst
59 lines
1010 B
Typst
#let table-header(..headers) = {
|
|
table.header(
|
|
..headers.pos().map(h => strong(text(fill: white, h)))
|
|
)
|
|
}
|
|
|
|
#set table(
|
|
stroke: black,
|
|
inset: .5em,
|
|
align: center,
|
|
)
|
|
|
|
#let abrechnung(meta, days) = {
|
|
set page(paper: "a4")
|
|
|
|
[= Abrechnung Arbeitszeit -- #meta.employee-name]
|
|
|
|
[Zeitraum: #meta.Zeitraum
|
|
|
|
Arbeitszeit: #user.Arbeitszeit
|
|
|
|
Überstunden: #user.Überstunden
|
|
]
|
|
|
|
table(
|
|
columns: (1fr, 1fr, 1fr, 1fr, 1fr, 1fr, 1.25fr),
|
|
fill: (x, y) =>
|
|
if y == 0 { gray },
|
|
align: center,
|
|
table-header(
|
|
[Datum], [Kommen], [Gehen], [Arbeitsart], [Stunden], [Pause], [Überstunden]
|
|
),
|
|
.. for day in days {
|
|
(
|
|
[#day.Date],
|
|
table.cell(colspan: 3, inset: 0em)[
|
|
#table(
|
|
columns: (1fr, 1fr, 1fr),
|
|
gutter: 0em,
|
|
stroke: black,
|
|
.. for Zeit in day.Zeiten {
|
|
(
|
|
[#Zeit.Kommen],
|
|
[#Zeit.Gehen],
|
|
[#Zeit.Art],
|
|
)
|
|
},
|
|
)
|
|
],
|
|
[#day.Arbeitszeit],
|
|
[#day.Pause],
|
|
[#day.Überstunden],
|
|
|
|
)
|
|
|
|
}
|
|
)
|
|
}
|