From 229b703a7fc0223eb3324ae9c530d1d411069a25 Mon Sep 17 00:00:00 2001 From: robin Date: Fri, 28 Feb 2025 15:08:04 +0100 Subject: [PATCH] initial facture --- facture.typ | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 facture.typ diff --git a/facture.typ b/facture.typ new file mode 100644 index 0000000..ed48145 --- /dev/null +++ b/facture.typ @@ -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 N° :", + 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] +] \ No newline at end of file