initial facture

This commit is contained in:
robin 2025-02-28 15:08:04 +01:00
commit 229b703a7f

144
facture.typ Normal file
View File

@ -0,0 +1,144 @@
#let language = "english" // Options: "français", "deutsch", "english"
// Dictionnaire des traductions
#let translations = (
français: (
sender: "ÉMETTEUR",
recipient: "DESTINATAIRE",
invoice: "FACTURE",
invoice_number: "Facture :",
date: "Date :",
description: "Description",
amount: "Montant (CHF)",
total: "Total :",
vat_notice: "TVA non applicable - Prestation d'un particulier",
payment_terms: "Cette facture est payable dans les 30 jours suivant sa réception.",
banking_info: "COORDONNÉES BANCAIRES",
bank: "Banque :",
account_holder: "Titulaire :",
),
deutsch: (
sender: "ABSENDER",
recipient: "EMPFÄNGER",
invoice: "RECHNUNG",
invoice_number: "Rechnungs-Nr.:",
date: "Datum:",
description: "Beschreibung",
amount: "Betrag (CHF)",
total: "Gesamtbetrag:",
vat_notice: "MwSt. nicht anwendbar - Dienstleistung einer Privatperson",
payment_terms: "Diese Rechnung ist innerhalb von 30 Tagen nach Erhalt zu bezahlen.",
banking_info: "BANKVERBINDUNG",
bank: "Bank:",
account_holder: "Kontoinhaber:",
),
english: (
sender: "FROM",
recipient: "TO",
invoice: "INVOICE",
invoice_number: "Invoice No.:",
date: "Date:",
description: "Description",
amount: "Amount (CHF)",
total: "Total:",
vat_notice: "VAT not applicable - Service provided by an individual",
payment_terms: "This invoice is payable within 30 days of receipt.",
banking_info: "BANKING DETAILS",
bank: "Bank:",
account_holder: "Account holder:",
),
)
// Sélection du dictionnaire en fonction de la langue
#let t = translations.at(language, default: translations.français)
#set page(
margin: 2cm,
numbering: none,
)
#set text(font: "Arial", size: 11pt)
#grid(
columns: (1fr, 1fr),
row-gutter: 0.5cm,
// Informations de l'émetteur
align(left)[
#text(weight: "bold", size: 14pt)[#t.sender]
#v(0.2cm)
Szymczak Robin //Nom Prénom
#v(0.1cm)
1 rue de l'ale //Adresse
#v(0.1cm)
1003 Lausanne, Suisse
#v(0.1cm)
Tél: +41 77 471 11 34
#v(0.1cm)
Email: robin\@cheapmo.ch
],
// Informations du destinataire
align(right)[
#text(weight: "bold", size: 14pt)[#t.recipient]
#v(0.2cm)
[Nom de l'Association] //nom du destinataire
#v(0.1cm)
[Adresse de l'Association] //adresse
#v(0.1cm)
[Code postal] [Ville], Allemagne
],
)
#v(1cm)
// Titre et informations de la facture
#align(center)[
#text(weight: "bold", size: 18pt)[#t.invoice]
#v(0.3cm)
#t.invoice_number #[NUMÉRO/ANNÉE] - #t.date #[JJ/MM/AAAA]
]
#v(1cm)
// Tableau des prestations
#table(
columns: (auto, 1fr),
inset: 10pt,
align: (left, right),
table.header(
//fill: rgb(245, 245, 245),
[*#t.description*],
[*#t.amount*],
),
[[Description de la prestation ou du service]], [50.00],
[[*#t.total*]], [*50.00 CHF*],
)
#v(1cm)
// Informations complémentaires
#align(left)[
#t.vat_notice
#v(0.3cm)
#t.payment_terms
]
#v(1cm)
// Coordonnées bancaires
#rect(
width: 100%,
inset: 10pt,
fill: rgb(249, 249, 249),
)[
#text(weight: "bold", size: 13pt)[#t.banking_info]
#v(0.2cm)
#t.bank [Nom de votre banque]
#v(0.1cm)
IBAN: [Votre IBAN]
#v(0.1cm)
BIC/SWIFT: [Code BIC/SWIFT]
#v(0.1cm)
#t.account_holder [Votre nom]
]