From 209c0b93c529356a094d7133a717e8f6ee6d90c6 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 16 Jan 2023 03:33:06 +0100 Subject: =?UTF-8?q?Config=20&=20config.ini,=20data=20folder,=20partie=20la?= =?UTF-8?q?tex=20bient=C3=B4t=20finie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Config.php | 131 ++++++++++++++++++++++++++++++++ src/functions.php | 19 ++++- src/latex_templates/devis.php | 93 ----------------------- src/latex_templates/enveloppe_recto.php | 28 ------- src/latex_templates/enveloppe_verso.php | 20 ----- src/latex_templates/facture.php | 92 ---------------------- src/latex_templates/location.php | 86 --------------------- src/main.php | 23 +++--- src/sections/1_new_service.php | 53 ++++++++++--- 9 files changed, 206 insertions(+), 339 deletions(-) create mode 100644 src/Config.php delete mode 100644 src/latex_templates/devis.php delete mode 100644 src/latex_templates/enveloppe_recto.php delete mode 100644 src/latex_templates/enveloppe_verso.php delete mode 100644 src/latex_templates/facture.php delete mode 100644 src/latex_templates/location.php (limited to 'src') diff --git a/src/Config.php b/src/Config.php new file mode 100644 index 0000000..396b588 --- /dev/null +++ b/src/Config.php @@ -0,0 +1,131 @@ + $value) + { + if(isset(self::$$field)) // vérification du nom du champ + { + // vérification du contenu + if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path + { + if(self::checkPath($field, $value)) + { + $value = self::slashAtEndOfPath($value); + self::$$field = $value; + } + } + else // tester le reste? + { + self::$$field = $value; + } + // else: la valeur par défaut est conservée + } + else + { + echo "debug: le fichier config.ini comporte une erreur, le champ: " . $field . " est incorrect,\nl'information contenue sur cette ligne ne sera pas utilisée\n"; + } + } + } + + // à faire plus tard + // transformer les chemins pour qu'ils soient relatif au dossier 'src' où s'exécute le programme + static private function adjustRelativePath($input) + { + // chemin windows? + + // chemin relatif ou absolu (par le 1er caractère) + + // obtenir l'emplacement du dossier de l'utilisateur '~' + $userHomePlace = exec(''); + + // obtenir l'emplacement du dossier 'src' + $appExecPlace = getcwd(); + } + + //~ static public function makeDsn() + //~ { + //~ if($this->sgbd === 'sqlite') + //~ { + //~ $this->dsn = 'sqlite:' . $this->db_name . '.sqlite'; + //~ } + //~ } +} diff --git a/src/functions.php b/src/functions.php index 0ec280f..b8779e8 100644 --- a/src/functions.php +++ b/src/functions.php @@ -35,7 +35,24 @@ function rechercheClient(string $input, Clients $Client): array return($result); } -function getLatexFromTemplate(string $template) +function makeFolder(string $path) +{ + if(!file_exists($path)) + { + mkdir($path); + chmod($path, 0755); + } +} + +function makeLatexAndPdfDocument($file_name, $template, Clients $Client, Prestations $Presta = null, $Details = null) // $Details peut être de type DevisFactures ou Locations +{ + //~ $data = ; // tableau associatif avec des données des différents objets + $latex = getLatexFromTemplate($template, $data); + file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier + latexToPdf($latex_path, $file_name, $pdf_path); +} + +function getLatexFromTemplate(string $template, $data) { // variables à injecter $nom_client = "M. Duchmol"; diff --git a/src/latex_templates/devis.php b/src/latex_templates/devis.php deleted file mode 100644 index 8f5e640..0000000 --- a/src/latex_templates/devis.php +++ /dev/null @@ -1,93 +0,0 @@ - -\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}\\ - - \normalsize{}NOTA BENE\\ - - Si le délai de livraison n'est pas spécifié, un délai d'un mois est appliqué. - - Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. - Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. - - La réparation inclut l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine et le 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. - - Les prestations d'Ordipolo sont régies par le code du commerce. -\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\\ - - Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. - Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. - - La réparation inclut l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine et le 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. - - Les prestations d'Ordipolo sont régies par le code du commerce. -\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 : - - \begin{center} - \large\textbf{CONTRAT DE LOCATION} - \end{center} - - PROPRIÉTAIRE\\ - - Mme, M : \textcolor{vert}{Paul Jusot}\\ - Adresse : \textcolor{vert}{2A, rue de l'île de Man, 29000 Quimper}\\ - - LOCATAIRE\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & tel : \textcolor{vert}{}\\ - Adresse : \textcolor{vert}{} & courriel : \textcolor{vert}{} - \end{tabularx}\\\\ - - BIEN LOUÉ\\ - - Désignation : \textcolor{vert}{}\\ - Modèle, description : \textcolor{vert}{}\\ - - État des lieux initial : \textcolor{vert}{}\\\\ - - État des lieux final : \textcolor{vert}{}\\\\ - - CLAUSES\\ - - Durée du prêt : \textcolor{vert}{}\\ - Loyer mensuel : \textcolor{vert}{}\\ - - - \textbf{Le bénéficiaire de cette location s’engage à prendre soin du bien désigné et à en faire un usage strictement personnel.}\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Fait en deux exemplaires à : \textcolor{vert}{} & le : \textcolor{vert}{} \\ - \end{tabularx}\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Le bénéficiaire du prêt : \textcolor{vert}{} & - Le loueur : \textcolor{vert}{}\\ - \end{tabularx}\\ - \normalsize(précéder la signature de la mention « lu et approuvé ») - -\end{document} -setTypePresta('non_vendue'); break; - default: // inutile normallement, cas déjà géré plus haut + default: // inutile normallement, cas déjà géré avant echo "debug: sortie du menu enregistrement incorrect\n"; return(0); } @@ -167,14 +167,49 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a // -- partie 3: LaTeX -- - // création fichiers LaTeX et PDF - //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php - //~ $file_name = 'devis.tex'; - //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location' - //~ $latex = getLatexFromTemplate($template); - //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier - //~ $pdf_path = '../data/pdf/'; - //~ latexToPdf($latex_path, $file_name, $pdf_path); + // créer le chemin et un sous-dossier avec l'année en cours + $latex_year_folder = Config::$latex_path . date('Y') . '/'; + makeFolder($latex_year_folder); + + $pdf_year_folder = Config::$pdf_path . date('Y') . '/'; + makeFolder($pdf_year_folder); + + // document de la prestation + switch($choix_niv2) + { + case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" + $file_name = 'devis.tex'; + $template = 'devis'; + makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); + break; + case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" + $file_name = 'facture.tex'; + $template = 'facture'; + makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); + break; + case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" + // pas de facture + break; + case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" + $file_name = 'location.tex'; + $template = 'location'; + makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); + break; + case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" + // pas de facture + break; + default: // inutile normallement, cas déjà géré avant + echo "debug: sortie du menu enregistrement incorrect\n"; + return(0); + } + + // enveloppe + $file_name = 'enveloppe_recto.tex'; + $template = 'enveloppe_recto'; + makeLatexAndPdfDocument($file_name, $template, $Client); + $file_name = 'enveloppe_verso.tex'; + $template = 'enveloppe_verso'; + makeLatexAndPdfDocument($file_name, $template, $Client); // -- partie 4: récapitulatif -- -- cgit v1.2.3