From eda2e96c17d8d22cfc2615698efa5c757dbfb0a5 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 5 Dec 2022 04:18:15 +0100 Subject: class Dates + templates latex + bugs --- php/Connection.php | 18 ++++-- php/DateTimestamp.php | 50 --------------- php/Dates.php | 105 ++++++++++++++++++++++++++++++++ php/Latex.php | 4 +- php/latex_templates/devis.php | 84 +++++++++++++++++++++++++ php/latex_templates/enveloppe_recto.php | 26 ++++++++ php/latex_templates/enveloppe_verso.php | 18 ++++++ php/latex_templates/facture.php | 85 ++++++++++++++++++++++++++ php/latex_templates/location.php | 49 +++++++++++++++ php/main.php | 5 +- 10 files changed, 385 insertions(+), 59 deletions(-) delete mode 100644 php/DateTimestamp.php create mode 100644 php/Dates.php create mode 100644 php/latex_templates/devis.php create mode 100644 php/latex_templates/enveloppe_recto.php create mode 100644 php/latex_templates/enveloppe_verso.php create mode 100644 php/latex_templates/facture.php create mode 100644 php/latex_templates/location.php diff --git a/php/Connection.php b/php/Connection.php index bdc7aa9..e944f69 100644 --- a/php/Connection.php +++ b/php/Connection.php @@ -1,16 +1,26 @@ timestamp (int) - private function get_timestamp(): int - { - if(self::$date_format === 'EU') - { - // change jj/mm/aaaa en jj-mm-aaaa - $this->date = preg_replace('#/#', '-', $this->date); - } - elseif(self::$date_format === 'US') - { - // change mm-dd.yyyy en mm/dd/yyyy - $this->date = preg_replace('#[-\.]#', '/', $this->date); - } - else - { - echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); - die(); // brutal - } - return(strtotime($this->date)); - // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu - // avec des /, php considère que la date est américaine - // avec des - ou des ., php considère que la date est européenne - } - - // timestamp (int) -> date jj-mm-aaaa (string) - private function get_date(): string - { - if(self::$date_format === 'EU') - { - return(date("j-m-Y", $this->date)); - } - elseif(self::$date_format === 'US') - { - return(date("m/d/Y", $this->date)); - } - else - { - echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); - die(); // brutal - } - } -} diff --git a/php/Dates.php b/php/Dates.php new file mode 100644 index 0000000..264166f --- /dev/null +++ b/php/Dates.php @@ -0,0 +1,105 @@ + dates avant 1970 + static public $date_format = 'EU'; // dates européennes jj-mm-aaaa (EU) ou américaines mm/dd/yyyy (US) + + + public function __construct($entry) + { + if(gettype($entry) === 'string') // une date est attendue + { + $this->setDate($entry); + } + elseif(gettype($entry) === 'integer') + { + $this->setTimestamp($entry); + } + } + + + public function setDate(string $entry) + { + $entry = $this->dashOrSlash($entry); // pour strtotime() + + $splitedDate = preg_split('#\D#', $entry); // \D = tout sauf chiffre + + if(self::$date_format === 'EU') + { + $tmp = $splitedDate[0]; + $splitedDate[0] = $splitedDate[1]; + $splitedDate[1] = $tmp; + } + + if(checkdate($splitedDate[0], $splitedDate[1], $splitedDate[2])) + { + $this->date = $entry; + $this->timestamp = strtotime($entry); // date (string) -> timestamp (int) + // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu + // avec des /, php considère que la date est américaine + // avec des - ou des ., php considère que la date est européenne + } + else + { + echo("Date incorrecte, le format de la date dans le fichier config.php est " . self::$date_format . ".\nLes choix possibles sont EU pour Europe et US pour États-Unis."); + die(); + } + } + + public function setTimestamp(int $entry) + { + $this->timestamp = $entry; + $this->date = $this->timestamp_to_date($entry); // timestamp (int) -> date (string) + } + + + public function getDate(): string + { + return($this->date); + } + + public function getTimestamp(): int + { + return($this->timestamp); + } + + + private function dashOrSlash(string $date): string + { + if(self::$date_format === 'EU') + { + // change jj/mm/aaaa en jj-mm-aaaa + return(preg_replace('#\D#', '-', $date)); // \D = tout sauf chiffre + } + elseif(self::$date_format === 'US') + { + // change mm-dd.yyyy en mm/dd/yyyy + return(preg_replace('#\D#', '/', $date)); + } + else + { + echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); + die(); // brutal + } + } + + private function timestamp_to_date(int $timestamp): string + { + if(self::$date_format === 'EU') + { + return(date("j-m-Y", $timestamp)); + } + elseif(self::$date_format === 'US') + { + return(date("m/d/Y", $timestamp)); + } + else + { + echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); + die(); // brutal + } + } +} diff --git a/php/Latex.php b/php/Latex.php index e8ed763..c3d56af 100644 --- a/php/Latex.php +++ b/php/Latex.php @@ -26,7 +26,7 @@ abstract class Latex abstract class PrestaLatex extends Latex { - public function __construct(string $quoi, , string $codePresta) + public function __construct(string $quoi, string $codePresta) { nameTheFile($quoi, $codePresta); } @@ -55,7 +55,7 @@ class EnveloppeVersoLatex extends PrestaLatex abstract class ComptaLatex extends Latex { - public function __construct(string $quoi, , string $annee, int $numeroMois = 0) + public function __construct(string $quoi, string $annee, int $numeroMois = 0) { nameTheFile($quoi, $annee, $numeroMois); } diff --git a/php/latex_templates/devis.php b/php/latex_templates/devis.php new file mode 100644 index 0000000..7df98e8 --- /dev/null +++ b/php/latex_templates/devis.php @@ -0,0 +1,84 @@ + +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +\usepackage{tabularx} % dimensions des tableaux automatique +\usepackage{tikz} % le rectangle + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + \begin{center} + \large\textbf{DEVIS} + \end{center} + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date du devis : \textcolor{vert}{}\\ + Adresse : \textcolor{vert}{} & + Delai de livraison : \textcolor{vert}{}\\ + \end{tabularx}\\\\ + + PRESTATION\\ + + \textcolor{vert}{} + + Total main d'oeuvre : \textcolor{vert}{}\\ + + PIÈCES\\ + + \textcolor{vert}{} + + Total pièces : \textcolor{vert}{}\\ + + TOTAL\\ + + Déplacement : \textcolor{vert}{} + + Total HT : \textcolor{vert}{} + + \textit{(TVA non applicable, article 293B du code général des impôts)} + + Référence du devis : \textcolor{vert}{}\\ + + Devis reçu avant l'exécution des travaux, signature du client :\\ + \begin{tikzpicture} + \draw (0,0) rectangle (4,2); + \end{tikzpicture}\\ + + \small{}NOTA BENE\\ + + Si le délai de livraison n’est pas précisé, c’est naturellement le délai légal de 30 jours qui est appliqué. Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat. +\end{document} + +\documentclass[]{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage{graphicx} % insertions d'images +\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry} +\pagestyle{empty} + +\begin{document} + \setlength{\parindent}{0cm} + \includegraphics{ordipolo.png}\\ + \large\textbf{Dépannage informatique - Assistance à domicile} + + \setlength{\parindent}{7,9cm} + \begin{minipage}[b][5,8cm]{12cm} + \LARGE{M. Truc\\3, rue Machin\\\\\\} + \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER} + \end{minipage} +\end{document} + +\documentclass[]{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry} +\pagestyle{empty} + +\begin{document} + \setlength{\parindent}{0cm} + \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} +\end{document} + +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +\usepackage{tabularx} % dimensions des tableaux automatique + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + \begin{center} + \large\textbf{FACTURE} + \end{center} + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date : \textcolor{vert}{}\\ + \end{tabularx}\\ + Adresse : \textcolor{vert}{}\\ + + PRESTATION\\ + + \textcolor{vert}{} + + Modèle de l'ordinateur : \textcolor{vert}{} + + Système d'exploitation : \textcolor{vert}{} + + Données à conserver : \textcolor{vert}{} + + Clé d'activation : \textcolor{vert}{}\\ + + Total main d'oeuvre : \textcolor{vert}{}\\ + + PIÈCES\\ + + \textcolor{vert}{} + + Total pièces : \textcolor{vert}{}\\ + + TOTAL\\ + + Déplacement : \textcolor{vert}{} + + Total HT : \textcolor{vert}{} + + \textit{(TVA non applicable, article 293B du code général des impôts)} + + Référence de la facture : \textcolor{vert}{}\\ + + \small{}NOTA BENE\\ + + Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat. +\end{document} + +\documentclass{report} + +\usepackage[french]{babel} +\usepackage{lmodern} % police latin modern +\usepackage[utf8]{inputenc} % encodage d'entrée (document) +\usepackage[T1]{fontenc} % encodage de sortie (rendu) +\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges +\usepackage{graphicx} % insertions d'images +\usepackage{textcomp} % pour N° +\usepackage{xcolor} % texte en couleur +%\usepackage{wrapfig} % placer texte et image côte-à-côte +\usepackage{tabularx} % dimensions des tableaux automatique + +\begin{document} + \setlength{\parindent}{0cm} % supprimer les alinéas + \large{} + \pagestyle{empty} % en-tête et pied de page vides + \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert + + \begin{center} + \includegraphics{ordipolo.png}\\ + \Large\textbf{Dépannage informatique - Assistance à domicile} + \end{center} + + 2 A rue de l'île de Man, 29000 Quimper + + SIRET : 814 320 610 00011 + + \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} + Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr + \end{tabularx} + + Plus d'infos sur le site web: https\string://ordipolo.fr\\ + % \string supprime l'espace devant les : + + CLIENT\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & + Date : \textcolor{vert}{}\\ + \end{tabularx}\\ + Adresse : \textcolor{vert}{}\\ + +\end{document} +create_tables(); -$Database->date = new DateTimestamp; require('Zenity.php'); // commande système zenity require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) -- cgit v1.2.3