2026-04-03 18:57:39 +02:00
|
|
|
#import "utils.typ": format-eur
|
2026-04-01 10:44:46 +02:00
|
|
|
|
|
|
|
|
#let data_file = sys.inputs.at("data_path", default: "none")
|
|
|
|
|
|
|
|
|
|
#let data = if data_file != "none" { json(data_file) } else {
|
|
|
|
|
(
|
|
|
|
|
"ordineId": "3df6bd0d-2d2d-4687-b4b9-87f2aecc297c",
|
|
|
|
|
"date": "1 gennaio 2026",
|
|
|
|
|
"datetime": "14:55",
|
|
|
|
|
"nominativo": "Di Grigoli Angelo Damiano",
|
|
|
|
|
"codicefiscale": "DGRNLD97C13B602Z",
|
|
|
|
|
"indirizzo": "Via Aldo Fantina 15, PIEVE DEL GRAPPA (TV) 31017",
|
|
|
|
|
"nazione": "Italia",
|
|
|
|
|
"items": (
|
|
|
|
|
(
|
|
|
|
|
"title": "Acconto Cerco Transitorio",
|
|
|
|
|
"desc": none,
|
|
|
|
|
"discount": none,
|
|
|
|
|
"amount": 3500,
|
|
|
|
|
"strike": false,
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
"title": "Saldo Cerco Affitto Transitorio (6 mesi)",
|
|
|
|
|
"desc": "Pagamento differito, non è dovuto in questo momento",
|
|
|
|
|
"discount": none,
|
|
|
|
|
"amount": 37500,
|
|
|
|
|
"strike": true,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
"total": 3500,
|
|
|
|
|
"vat": 770,
|
|
|
|
|
"method": "Carta di credito",
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#set page(
|
|
|
|
|
paper: "a4",
|
|
|
|
|
margin: (x: 1cm, y: 1cm),
|
|
|
|
|
footer: [
|
|
|
|
|
#set align(center)
|
|
|
|
|
#set text(size: 9pt, fill: luma(100))
|
|
|
|
|
Arcenia Srl.| P.IVA 00924740244 | Tel. +39 0424529869 | Email: arca\@infoalloggi.it
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
#set text(font: "Inter 18pt", size: 10pt)
|
|
|
|
|
|
|
|
|
|
// --- Header ---
|
|
|
|
|
#grid(
|
|
|
|
|
columns: (1fr, auto),
|
|
|
|
|
[
|
|
|
|
|
#text(size: 14pt, weight: "bold", fill: rgb("1a202c"))[Arcenia S.r.l.] \
|
|
|
|
|
Via Beata Giovanna 1 \
|
|
|
|
|
Bassano del Grappa (VI) 36061 \
|
|
|
|
|
Italia
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
#image("/public/favicon/favicon.png", width: 80pt)
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
#v(2.5em)
|
|
|
|
|
|
|
|
|
|
// --- Title ---
|
|
|
|
|
#align(center)[
|
|
|
|
|
#text(size: 16pt, weight: "bold", fill: rgb("1a202c"))[Ricevuta di cortesia]
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
#v(2em)
|
|
|
|
|
|
|
|
|
|
#grid(
|
|
|
|
|
columns: (1fr, auto),
|
|
|
|
|
[
|
|
|
|
|
#text(fill: luma(120), size: 9pt)[ID Ordine] \
|
|
|
|
|
#data.ordineId
|
|
|
|
|
],
|
|
|
|
|
align(right)[
|
|
|
|
|
#text(fill: luma(120), size: 9pt)[Data] \
|
2026-04-03 18:57:39 +02:00
|
|
|
#text(size: 12pt)[#data.date] \
|
2026-04-01 10:44:46 +02:00
|
|
|
#data.datetime
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
#v(0.5em)
|
|
|
|
|
#line(length: 100%, stroke: 0.5pt + luma(200))
|
|
|
|
|
#v(1em)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#text(weight: "bold")[Intestatario:] \
|
|
|
|
|
#v(0.2em)
|
|
|
|
|
#data.nominativo \
|
|
|
|
|
#data.codicefiscale \
|
|
|
|
|
#data.indirizzo \
|
|
|
|
|
#data.nazione
|
|
|
|
|
#v(2.5em)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#table(
|
|
|
|
|
columns: (1fr, auto, auto),
|
|
|
|
|
stroke: none,
|
|
|
|
|
align: (left, right, right),
|
|
|
|
|
inset: (x: 5pt, y: 10pt),
|
|
|
|
|
|
|
|
|
|
// Header row
|
|
|
|
|
[*Oggetto*], [*Sconto applicato*], [*Importo*],
|
|
|
|
|
table.hline(stroke: 0.5pt + luma(200)),
|
|
|
|
|
|
|
|
|
|
..data
|
|
|
|
|
.items
|
|
|
|
|
.map(item => {
|
|
|
|
|
(
|
|
|
|
|
item.title + if item.desc != none { "\n" + text(size: 9pt, fill: luma(100))[#item.desc] } else { "" },
|
2026-04-03 18:57:39 +02:00
|
|
|
if item.at("discount", default: none) != none {
|
|
|
|
|
if item.discount > 0 {
|
|
|
|
|
[#item.discount %]
|
|
|
|
|
}
|
|
|
|
|
} else [],
|
2026-04-01 10:44:46 +02:00
|
|
|
if item.at("strike", default: false) {
|
2026-04-03 18:57:39 +02:00
|
|
|
strike(stroke: 1pt + luma(100))[#text(fill: luma(100))[#format-eur(item.amount)]]
|
2026-04-01 10:44:46 +02:00
|
|
|
} else {
|
2026-04-03 18:57:39 +02:00
|
|
|
[#format-eur(item.amount)]
|
2026-04-01 10:44:46 +02:00
|
|
|
},
|
|
|
|
|
table.hline(stroke: 0.5pt + luma(200)),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
.flatten(),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// --- Totals ---
|
|
|
|
|
#v(0.5em)
|
|
|
|
|
#align(right)[
|
|
|
|
|
#grid(
|
|
|
|
|
columns: (1fr, auto),
|
|
|
|
|
align: (right, right),
|
|
|
|
|
gutter: 1.5em,
|
2026-04-03 18:57:39 +02:00
|
|
|
[*Totale:*], [*#format-eur(data.total)*],
|
|
|
|
|
[#text(fill: luma(100))[di cui IVA (22%):]], [#text(fill: luma(100))[#format-eur(data.vat)]],
|
2026-04-01 10:44:46 +02:00
|
|
|
)
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
#v(2em)
|
|
|
|
|
#line(length: 100%, stroke: 0.5pt + luma(200))
|
|
|
|
|
#v(0.5em)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#grid(
|
|
|
|
|
columns: (1fr, auto),
|
|
|
|
|
[
|
|
|
|
|
#text(weight: "bold")[Metodo di pagamento] \
|
|
|
|
|
#v(0.2em)
|
|
|
|
|
#data.method
|
|
|
|
|
],
|
|
|
|
|
align(right)[
|
|
|
|
|
#text(weight: "bold")[Status pagamento] \
|
|
|
|
|
#v(0.2em)
|
|
|
|
|
// Custom hex color for the success text
|
|
|
|
|
#text(fill: rgb("00A650"), weight: "bold")[Pagato]
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
#v(0.5em)
|
|
|
|
|
#line(length: 100%, stroke: 0.5pt + luma(200))
|
|
|
|
|
#v(1em)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#text(weight: "bold")[Note] \
|
|
|
|
|
#v(0.2em)
|
|
|
|
|
#text(size: 9pt, fill: rgb("4a5568"))[
|
|
|
|
|
La presente non costituisce ricevuta o fattura fiscale ai sensi dell'Art.21, DPR 633/72.\
|
|
|
|
|
Seguirà fattura elettronica direttamente al tuo indirizzo di posta.
|
|
|
|
|
]
|