diff options
author | polo <ordipolo@gmx.fr> | 2023-01-16 03:33:06 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2023-01-16 03:33:06 +0100 |
commit | 209c0b93c529356a094d7133a717e8f6ee6d90c6 (patch) | |
tree | b8dac8968501fe4e0bba8dc98b80d0eb43770ecb /src | |
parent | 945af9fda5146405ab9903d4d268bcb2fe95da25 (diff) | |
download | AppliGestionPHP-209c0b93c529356a094d7133a717e8f6ee6d90c6.zip |
Config & config.ini, data folder, partie latex bientôt finie
Diffstat (limited to 'src')
-rw-r--r-- | src/Config.php | 131 | ||||
-rw-r--r-- | src/functions.php | 19 | ||||
-rw-r--r-- | src/latex_templates/devis.php | 93 | ||||
-rw-r--r-- | src/latex_templates/enveloppe_recto.php | 28 | ||||
-rw-r--r-- | src/latex_templates/enveloppe_verso.php | 20 | ||||
-rw-r--r-- | src/latex_templates/facture.php | 92 | ||||
-rw-r--r-- | src/latex_templates/location.php | 86 | ||||
-rwxr-xr-x | src/main.php | 23 | ||||
-rw-r--r-- | src/sections/1_new_service.php | 53 |
9 files changed, 206 insertions, 339 deletions
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 @@ | |||
1 | <?php | ||
2 | // src/Config.php | ||
3 | |||
4 | class Config | ||
5 | { | ||
6 | // valeurs par défaut au cas où | ||
7 | static public $business_name = 'ORDIPOLO'; | ||
8 | static public $db_name = "ordipolo"; | ||
9 | static public $db_path = '../data/'; | ||
10 | static public $latex_path = '../data/latex/'; | ||
11 | static public $pdf_path = '../data/pdf/'; | ||
12 | static public $pub_path = "../pub/"; | ||
13 | static public $flyer = "flyer.xcf"; | ||
14 | static public $business_card = "carte.sla"; | ||
15 | static public $image_editor = 'gimp'; | ||
16 | static public $publishing = 'scribus'; | ||
17 | static public $sgbd = 'sqlite'; | ||
18 | static public $sqlite_gui = 'sqlitebrowser'; // ne pas utiliser si le sgbd n'est pas sqlite | ||
19 | static public $date_format = 'euro'; | ||
20 | |||
21 | // pour que Config crée le dsn: Data Source Name (à mettre dans une autre classe!) | ||
22 | //~ static public $dsn = ''; | ||
23 | |||
24 | // ça pourrait être bien de founir sqlite avec l'application pour supprimer une dépendance | ||
25 | //~ static public $sqliteBin = '../lib/sqlite_linux'; | ||
26 | //~ static public $sqliteBin = '../lib/sqlite_win.exe'; | ||
27 | |||
28 | static private $raw_data; | ||
29 | |||
30 | static public function readFile($file_path) | ||
31 | { | ||
32 | self::$raw_data = parse_ini_file($file_path); | ||
33 | } | ||
34 | |||
35 | static private function fieldIsPath($field): bool | ||
36 | { | ||
37 | if($field === 'db_path' || $field === 'latex_path' || $field === 'pdf_path' || $field === 'pub_path') | ||
38 | { | ||
39 | return true; | ||
40 | } | ||
41 | else | ||
42 | { | ||
43 | return false; | ||
44 | } | ||
45 | } | ||
46 | |||
47 | static private function checkPath($field, $value): bool | ||
48 | { | ||
49 | if(!file_exists($value)) | ||
50 | { | ||
51 | echo "debug: le fichier config.ini comporte une erreur, le dossier " . $value . " renseigné pour le champ " . $field . " n'existe pas,\nla valeur par défaut: " . self::$$field . " sera utilisé\n"; | ||
52 | return false; | ||
53 | } | ||
54 | if(!is_writable($value)) | ||
55 | { | ||
56 | if($value == self::$$field) | ||
57 | { | ||
58 | echo "debug: le dossier " . $value . " n'est pas autorisé en écriture\n"; | ||
59 | } | ||
60 | else | ||
61 | { | ||
62 | echo "debug: le dossier " . $value . " renseigné pour le champ " . $field . " dans le fichier config.ini n'est pas autorisé en écriture,\nla valeur par défaut: " . self::$$field . " sera utilisée\n"; | ||
63 | } | ||
64 | return false; | ||
65 | } | ||
66 | return true; | ||
67 | } | ||
68 | |||
69 | static public function slashAtEndOfPath($path): string | ||
70 | { | ||
71 | if(!str_ends_with($path, '/')) | ||
72 | { | ||
73 | return($path . '/'); | ||
74 | } | ||
75 | else | ||
76 | { | ||
77 | return $path; | ||
78 | } | ||
79 | } | ||
80 | |||
81 | static public function hydrate() | ||
82 | { | ||
83 | foreach(self::$raw_data as $field => $value) | ||
84 | { | ||
85 | if(isset(self::$$field)) // vérification du nom du champ | ||
86 | { | ||
87 | // vérification du contenu | ||
88 | if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path | ||
89 | { | ||
90 | if(self::checkPath($field, $value)) | ||
91 | { | ||
92 | $value = self::slashAtEndOfPath($value); | ||
93 | self::$$field = $value; | ||
94 | } | ||
95 | } | ||
96 | else // tester le reste? | ||
97 | { | ||
98 | self::$$field = $value; | ||
99 | } | ||
100 | // else: la valeur par défaut est conservée | ||
101 | } | ||
102 | else | ||
103 | { | ||
104 | 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"; | ||
105 | } | ||
106 | } | ||
107 | } | ||
108 | |||
109 | // à faire plus tard | ||
110 | // transformer les chemins pour qu'ils soient relatif au dossier 'src' où s'exécute le programme | ||
111 | static private function adjustRelativePath($input) | ||
112 | { | ||
113 | // chemin windows? | ||
114 | |||
115 | // chemin relatif ou absolu (par le 1er caractère) | ||
116 | |||
117 | // obtenir l'emplacement du dossier de l'utilisateur '~' | ||
118 | $userHomePlace = exec(''); | ||
119 | |||
120 | // obtenir l'emplacement du dossier 'src' | ||
121 | $appExecPlace = getcwd(); | ||
122 | } | ||
123 | |||
124 | //~ static public function makeDsn() | ||
125 | //~ { | ||
126 | //~ if($this->sgbd === 'sqlite') | ||
127 | //~ { | ||
128 | //~ $this->dsn = 'sqlite:' . $this->db_name . '.sqlite'; | ||
129 | //~ } | ||
130 | //~ } | ||
131 | } | ||
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 | |||
35 | return($result); | 35 | return($result); |
36 | } | 36 | } |
37 | 37 | ||
38 | function getLatexFromTemplate(string $template) | 38 | function makeFolder(string $path) |
39 | { | ||
40 | if(!file_exists($path)) | ||
41 | { | ||
42 | mkdir($path); | ||
43 | chmod($path, 0755); | ||
44 | } | ||
45 | } | ||
46 | |||
47 | function makeLatexAndPdfDocument($file_name, $template, Clients $Client, Prestations $Presta = null, $Details = null) // $Details peut être de type DevisFactures ou Locations | ||
48 | { | ||
49 | //~ $data = ; // tableau associatif avec des données des différents objets | ||
50 | $latex = getLatexFromTemplate($template, $data); | ||
51 | file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier | ||
52 | latexToPdf($latex_path, $file_name, $pdf_path); | ||
53 | } | ||
54 | |||
55 | function getLatexFromTemplate(string $template, $data) | ||
39 | { | 56 | { |
40 | // variables à injecter | 57 | // variables à injecter |
41 | $nom_client = "M. Duchmol"; | 58 | $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 @@ | |||
1 | <?php | ||
2 | // latex_templates/devis.php | ||
3 | |||
4 | ob_start(); | ||
5 | ?> | ||
6 | \documentclass{report} | ||
7 | |||
8 | \usepackage[french]{babel} | ||
9 | \usepackage{lmodern} % police latin modern | ||
10 | \usepackage[utf8]{inputenc} % encodage d'entrée (document) | ||
11 | \usepackage[T1]{fontenc} % encodage de sortie (rendu) | ||
12 | \usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges | ||
13 | \usepackage{graphicx} % insertions d'images | ||
14 | \usepackage{textcomp} % pour N° | ||
15 | \usepackage{xcolor} % texte en couleur | ||
16 | \usepackage{tabularx} % dimensions des tableaux automatique | ||
17 | \usepackage{tikz} % le rectangle | ||
18 | |||
19 | \begin{document} | ||
20 | \setlength{\parindent}{0cm} % supprimer les alinéas | ||
21 | \large{} | ||
22 | \pagestyle{empty} % en-tête et pied de page vides | ||
23 | \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert | ||
24 | |||
25 | \begin{center} | ||
26 | \includegraphics{../ordipolo.png}\\ | ||
27 | \Large\textbf{Dépannage informatique - Assistance à domicile} | ||
28 | \end{center} | ||
29 | |||
30 | 2 A rue de l'île de Man, 29000 Quimper | ||
31 | |||
32 | SIRET : 814 320 610 00011 | ||
33 | |||
34 | \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} | ||
35 | Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr | ||
36 | \end{tabularx} | ||
37 | |||
38 | Plus d'infos sur le site web: https\string://ordipolo.fr\\ | ||
39 | % \string supprime l'espace devant les : | ||
40 | |||
41 | \begin{center} | ||
42 | \large\textbf{DEVIS} | ||
43 | \end{center} | ||
44 | |||
45 | CLIENT\\ | ||
46 | |||
47 | \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} | ||
48 | Mme, M : \textcolor{vert}{<?= $nom_client ?>} & | ||
49 | Date du devis : \textcolor{vert}{}\\ | ||
50 | Adresse : \textcolor{vert}{} & | ||
51 | Delai de livraison : \textcolor{vert}{}\\ | ||
52 | \end{tabularx}\\\\ | ||
53 | |||
54 | PRESTATION\\ | ||
55 | |||
56 | \textcolor{vert}{} | ||
57 | |||
58 | Total main d'oeuvre : \textcolor{vert}{}\\ | ||
59 | |||
60 | PIÈCES\\ | ||
61 | |||
62 | \textcolor{vert}{} | ||
63 | |||
64 | Total pièces : \textcolor{vert}{}\\ | ||
65 | |||
66 | TOTAL\\ | ||
67 | |||
68 | Déplacement : \textcolor{vert}{} | ||
69 | |||
70 | Total HT : \textcolor{vert}{} | ||
71 | |||
72 | \textit{(TVA non applicable, article 293B du code général des impôts)} | ||
73 | |||
74 | Référence du devis : \textcolor{vert}{}\\ | ||
75 | |||
76 | Devis reçu avant l'exécution des travaux, signature du client :\\ | ||
77 | \begin{tikzpicture} | ||
78 | \draw (0,0) rectangle (4,2); | ||
79 | \end{tikzpicture}\\ | ||
80 | |||
81 | \normalsize{}NOTA BENE\\ | ||
82 | |||
83 | Si le délai de livraison n'est pas spécifié, un délai d'un mois est appliqué. | ||
84 | |||
85 | Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. | ||
86 | Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. | ||
87 | |||
88 | 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. | ||
89 | |||
90 | Les prestations d'Ordipolo sont régies par le code du commerce. | ||
91 | \end{document} | ||
92 | <?php | ||
93 | $latex = ob_get_clean(); | ||
diff --git a/src/latex_templates/enveloppe_recto.php b/src/latex_templates/enveloppe_recto.php deleted file mode 100644 index 99d65a1..0000000 --- a/src/latex_templates/enveloppe_recto.php +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | <?php | ||
2 | // latex_templates/enveloppe_recto.php | ||
3 | |||
4 | ob_start(); | ||
5 | ?> | ||
6 | \documentclass[]{report} | ||
7 | |||
8 | \usepackage[french]{babel} | ||
9 | \usepackage{lmodern} % police latin modern | ||
10 | \usepackage[utf8]{inputenc} % encodage d'entrée (document) | ||
11 | \usepackage[T1]{fontenc} % encodage de sortie (rendu) | ||
12 | \usepackage{graphicx} % insertions d'images | ||
13 | \usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry} | ||
14 | \pagestyle{empty} | ||
15 | |||
16 | \begin{document} | ||
17 | \setlength{\parindent}{0cm} | ||
18 | \includegraphics{../ordipolo.png}\\ | ||
19 | \large\textbf{Dépannage informatique - Assistance à domicile} | ||
20 | |||
21 | \setlength{\parindent}{7,9cm} | ||
22 | \begin{minipage}[b][5,8cm]{12cm} | ||
23 | \LARGE{M. Truc\\3, rue Machin\\\\\\} | ||
24 | \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER} | ||
25 | \end{minipage} | ||
26 | \end{document} | ||
27 | <?php | ||
28 | $latex = ob_get_clean(); | ||
diff --git a/src/latex_templates/enveloppe_verso.php b/src/latex_templates/enveloppe_verso.php deleted file mode 100644 index ae2e716..0000000 --- a/src/latex_templates/enveloppe_verso.php +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | <?php | ||
2 | // latex_templates/enveloppe_verso.php | ||
3 | |||
4 | ob_start(); | ||
5 | ?> | ||
6 | \documentclass[]{report} | ||
7 | |||
8 | \usepackage[french]{babel} | ||
9 | \usepackage{lmodern} % police latin modern | ||
10 | \usepackage[utf8]{inputenc} % encodage d'entrée (document) | ||
11 | \usepackage[T1]{fontenc} % encodage de sortie (rendu) | ||
12 | \usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry} | ||
13 | \pagestyle{empty} | ||
14 | |||
15 | \begin{document} | ||
16 | \setlength{\parindent}{0cm} | ||
17 | \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} | ||
18 | \end{document} | ||
19 | <?php | ||
20 | $latex = ob_get_clean(); | ||
diff --git a/src/latex_templates/facture.php b/src/latex_templates/facture.php deleted file mode 100644 index 5d62b91..0000000 --- a/src/latex_templates/facture.php +++ /dev/null | |||
@@ -1,92 +0,0 @@ | |||
1 | <?php | ||
2 | // latex_templates/facture.php | ||
3 | |||
4 | ob_start(); | ||
5 | ?> | ||
6 | \documentclass{report} | ||
7 | |||
8 | \usepackage[french]{babel} | ||
9 | \usepackage{lmodern} % police latin modern | ||
10 | \usepackage[utf8]{inputenc} % encodage d'entrée (document) | ||
11 | \usepackage[T1]{fontenc} % encodage de sortie (rendu) | ||
12 | \usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges | ||
13 | \usepackage{graphicx} % insertions d'images | ||
14 | \usepackage{textcomp} % pour N° | ||
15 | \usepackage{xcolor} % texte en couleur | ||
16 | \usepackage{tabularx} % dimensions des tableaux automatique | ||
17 | |||
18 | \begin{document} | ||
19 | \setlength{\parindent}{0cm} % supprimer les alinéas | ||
20 | \large{} | ||
21 | \pagestyle{empty} % en-tête et pied de page vides | ||
22 | \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert | ||
23 | |||
24 | \begin{center} | ||
25 | \includegraphics{../ordipolo.png}\\ | ||
26 | \Large\textbf{Dépannage informatique - Assistance à domicile} | ||
27 | \end{center} | ||
28 | |||
29 | 2 A rue de l'île de Man, 29000 Quimper | ||
30 | |||
31 | SIRET : 814 320 610 00011 | ||
32 | |||
33 | \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} | ||
34 | Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr | ||
35 | \end{tabularx} | ||
36 | |||
37 | Plus d'infos sur le site web: https\string://ordipolo.fr\\ | ||
38 | % \string supprime l'espace devant les : | ||
39 | |||
40 | \begin{center} | ||
41 | \large\textbf{FACTURE} | ||
42 | \end{center} | ||
43 | |||
44 | CLIENT\\ | ||
45 | |||
46 | \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} | ||
47 | Mme, M : \textcolor{vert}{} & | ||
48 | Date : \textcolor{vert}{}\\ | ||
49 | \end{tabularx}\\ | ||
50 | Adresse : \textcolor{vert}{}\\ | ||
51 | |||
52 | PRESTATION\\ | ||
53 | |||
54 | \textcolor{vert}{} | ||
55 | |||
56 | Modèle de l'ordinateur : \textcolor{vert}{} | ||
57 | |||
58 | Système d'exploitation : \textcolor{vert}{} | ||
59 | |||
60 | Données à conserver : \textcolor{vert}{} | ||
61 | |||
62 | Clé d'activation : \textcolor{vert}{}\\ | ||
63 | |||
64 | Total main d'oeuvre : \textcolor{vert}{}\\ | ||
65 | |||
66 | PIÈCES\\ | ||
67 | |||
68 | \textcolor{vert}{} | ||
69 | |||
70 | Total pièces : \textcolor{vert}{}\\ | ||
71 | |||
72 | TOTAL\\ | ||
73 | |||
74 | Déplacement : \textcolor{vert}{} | ||
75 | |||
76 | Total HT : \textcolor{vert}{} | ||
77 | |||
78 | \textit{(TVA non applicable, article 293B du code général des impôts)} | ||
79 | |||
80 | Référence de la facture : \textcolor{vert}{}\\ | ||
81 | |||
82 | \small{}NOTA BENE\\ | ||
83 | |||
84 | Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. | ||
85 | Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. | ||
86 | |||
87 | 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. | ||
88 | |||
89 | Les prestations d'Ordipolo sont régies par le code du commerce. | ||
90 | \end{document} | ||
91 | <?php | ||
92 | $latex = ob_get_clean(); | ||
diff --git a/src/latex_templates/location.php b/src/latex_templates/location.php deleted file mode 100644 index dbffd0e..0000000 --- a/src/latex_templates/location.php +++ /dev/null | |||
@@ -1,86 +0,0 @@ | |||
1 | <?php | ||
2 | // latex_templates/location.php | ||
3 | |||
4 | ob_start(); | ||
5 | ?> | ||
6 | \documentclass{report} | ||
7 | |||
8 | \usepackage[french]{babel} | ||
9 | \usepackage{lmodern} % police latin modern | ||
10 | \usepackage[utf8]{inputenc} % encodage d'entrée (document) | ||
11 | \usepackage[T1]{fontenc} % encodage de sortie (rendu) | ||
12 | \usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges | ||
13 | \usepackage{graphicx} % insertions d'images | ||
14 | \usepackage{textcomp} % pour N° | ||
15 | \usepackage{xcolor} % texte en couleur | ||
16 | %\usepackage{wrapfig} % placer texte et image côte-à-côte | ||
17 | \usepackage{tabularx} % dimensions des tableaux automatique | ||
18 | |||
19 | \begin{document} | ||
20 | \setlength{\parindent}{0cm} % supprimer les alinéas | ||
21 | \large{} | ||
22 | \pagestyle{empty} % en-tête et pied de page vides | ||
23 | \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert | ||
24 | |||
25 | \begin{center} | ||
26 | \includegraphics{../ordipolo.png}\\ | ||
27 | \Large\textbf{Dépannage informatique - Assistance à domicile} | ||
28 | \end{center} | ||
29 | |||
30 | 2 A rue de l'île de Man, 29000 Quimper | ||
31 | |||
32 | SIRET : 814 320 610 00011 | ||
33 | |||
34 | \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} | ||
35 | Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr | ||
36 | \end{tabularx} | ||
37 | |||
38 | Plus d'infos sur le site web: https\string://ordipolo.fr\\ | ||
39 | % \string supprime l'espace devant les : | ||
40 | |||
41 | \begin{center} | ||
42 | \large\textbf{CONTRAT DE LOCATION} | ||
43 | \end{center} | ||
44 | |||
45 | PROPRIÉTAIRE\\ | ||
46 | |||
47 | Mme, M : \textcolor{vert}{Paul Jusot}\\ | ||
48 | Adresse : \textcolor{vert}{2A, rue de l'île de Man, 29000 Quimper}\\ | ||
49 | |||
50 | LOCATAIRE\\ | ||
51 | |||
52 | \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} | ||
53 | Mme, M : \textcolor{vert}{} & tel : \textcolor{vert}{}\\ | ||
54 | Adresse : \textcolor{vert}{} & courriel : \textcolor{vert}{} | ||
55 | \end{tabularx}\\\\ | ||
56 | |||
57 | BIEN LOUÉ\\ | ||
58 | |||
59 | Désignation : \textcolor{vert}{}\\ | ||
60 | Modèle, description : \textcolor{vert}{}\\ | ||
61 | |||
62 | État des lieux initial : \textcolor{vert}{}\\\\ | ||
63 | |||
64 | État des lieux final : \textcolor{vert}{}\\\\ | ||
65 | |||
66 | CLAUSES\\ | ||
67 | |||
68 | Durée du prêt : \textcolor{vert}{}\\ | ||
69 | Loyer mensuel : \textcolor{vert}{}\\ | ||
70 | |||
71 | |||
72 | \textbf{Le bénéficiaire de cette location s’engage à prendre soin du bien désigné et à en faire un usage strictement personnel.}\\ | ||
73 | |||
74 | \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} | ||
75 | Fait en deux exemplaires à : \textcolor{vert}{} & le : \textcolor{vert}{} \\ | ||
76 | \end{tabularx}\\ | ||
77 | |||
78 | \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} | ||
79 | Le bénéficiaire du prêt : \textcolor{vert}{} & | ||
80 | Le loueur : \textcolor{vert}{}\\ | ||
81 | \end{tabularx}\\ | ||
82 | \normalsize(précéder la signature de la mention « lu et approuvé ») | ||
83 | |||
84 | \end{document} | ||
85 | <?php | ||
86 | $latex = ob_get_clean(); | ||
diff --git a/src/main.php b/src/main.php index 0a8ae09..ee0888e 100755 --- a/src/main.php +++ b/src/main.php | |||
@@ -3,18 +3,20 @@ | |||
3 | // php/main.php | 3 | // php/main.php |
4 | 4 | ||
5 | // configuration du programme par l'utilisateur | 5 | // configuration du programme par l'utilisateur |
6 | require('../config.php'); // fichier de l'utilisateur: à déplacer peut-être dans un dossier config | 6 | //~ require('../config.php'); // fichier de l'utilisateur: à déplacer peut-être dans un dossier config |
7 | require('Config.php'); // classe structure de données, lit config.php et préviens les erreurs (par exemple les / aux chemins manquants) | ||
8 | Config::readFile('../config.ini'); | ||
9 | Config::hydrate(); | ||
7 | 10 | ||
8 | // à coder peut-être plus tard | 11 | // et à coder peut-être plus tard |
9 | //require('config_check.php'); // contrôle de config.php, on ajoutera des / aux chemins quand ils manquent | ||
10 | //require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications | 12 | //require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications |
11 | 13 | ||
12 | // variables diverses, certaines utilisent les variables de config.php | 14 | // variables diverses, certaines utilisent les variables de config.php |
13 | $exec_mode = 'gui'; // les versions pure console (CLI) et serveur web (CGI) de ce programme ne sont pas prévues pour l'instant | 15 | $exec_mode = 'gui'; // les versions pure console (CLI) et serveur web (CGI) de ce programme ne sont pas prévues pour l'instant |
14 | $file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quand suivi d'un chemin en paramètre | 16 | $file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quand suivi d'un chemin en paramètre |
15 | $flyer = $pub . $flyer; | 17 | $flyer = Config::$pub_path . Config::$flyer; |
16 | $business_card = $pub . $business_card; | 18 | $business_card = Config::$pub_path . Config::$business_card; |
17 | $db_place .= $db_name . '.sqlite'; | 19 | Config::$db_path .= Config::$db_name . '.' . Config::$sgbd; |
18 | $sqlitebrowser_enable = false; | 20 | $sqlitebrowser_enable = false; |
19 | $sqlite_cli = ''; // commande sqlite ou sqlite3 | 21 | $sqlite_cli = ''; // commande sqlite ou sqlite3 |
20 | $x_term_command = ''; // commande terminal en mode graphique | 22 | $x_term_command = ''; // commande terminal en mode graphique |
@@ -22,10 +24,11 @@ $x_term_command = ''; // commande terminal en mode graphique | |||
22 | require('dependances.php'); // vérification des dépendances | 24 | require('dependances.php'); // vérification des dépendances |
23 | require('functions.php'); | 25 | require('functions.php'); |
24 | require('Dates.php'); // gère dates et timestamps | 26 | require('Dates.php'); // gère dates et timestamps |
25 | Dates::$date_format = $date_format; // dates européennes ou américaines | 27 | Dates::$date_format = Config::$date_format; // dates européennes ou américaines |
26 | 28 | ||
27 | require('model/DB.php'); // connexion en héritant de PDO | 29 | require('model/DB.php'); // connexion en héritant de PDO |
28 | DB::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); | 30 | // création du DSN à mettre ailleurs (dans Model?) |
31 | DB::$dsn = 'sqlite:' . Config::$db_path; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); | ||
29 | 32 | ||
30 | require('model/Model.php'); // class Model extends DB, requêtes SQL | 33 | require('model/Model.php'); // class Model extends DB, requêtes SQL |
31 | require('model/StructTablesDB.php'); | 34 | require('model/StructTablesDB.php'); |
@@ -150,11 +153,11 @@ while($boucle) | |||
150 | echo("choix: $choix_niv1\n"); | 153 | echo("choix: $choix_niv1\n"); |
151 | if($sqlitebrowser_enable) | 154 | if($sqlitebrowser_enable) |
152 | { | 155 | { |
153 | exec(windowAppCommand($sqlite_gui, $db_place)); | 156 | exec(windowAppCommand(Config::$sqlite_gui, Config::$db_path)); |
154 | } | 157 | } |
155 | else | 158 | else |
156 | { | 159 | { |
157 | exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite | 160 | exec($x_term_command . ' ' . $sqlite_cli . ' ' . Config::$db_path); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite |
158 | } | 161 | } |
159 | } | 162 | } |
160 | 163 | ||
diff --git a/src/sections/1_new_service.php b/src/sections/1_new_service.php index aaf441a..656b45f 100644 --- a/src/sections/1_new_service.php +++ b/src/sections/1_new_service.php | |||
@@ -130,7 +130,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
130 | case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" | 130 | case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" |
131 | $Presta->setTypePresta('non_vendue'); | 131 | $Presta->setTypePresta('non_vendue'); |
132 | break; | 132 | break; |
133 | default: // inutile normallement, cas déjà géré plus haut | 133 | default: // inutile normallement, cas déjà géré avant |
134 | echo "debug: sortie du menu enregistrement incorrect\n"; | 134 | echo "debug: sortie du menu enregistrement incorrect\n"; |
135 | return(0); | 135 | return(0); |
136 | } | 136 | } |
@@ -167,14 +167,49 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
167 | 167 | ||
168 | // -- partie 3: LaTeX -- | 168 | // -- partie 3: LaTeX -- |
169 | 169 | ||
170 | // création fichiers LaTeX et PDF | 170 | // créer le chemin et un sous-dossier avec l'année en cours |
171 | //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php | 171 | $latex_year_folder = Config::$latex_path . date('Y') . '/'; |
172 | //~ $file_name = 'devis.tex'; | 172 | makeFolder($latex_year_folder); |
173 | //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location' | 173 | |
174 | //~ $latex = getLatexFromTemplate($template); | 174 | $pdf_year_folder = Config::$pdf_path . date('Y') . '/'; |
175 | //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier | 175 | makeFolder($pdf_year_folder); |
176 | //~ $pdf_path = '../data/pdf/'; | 176 | |
177 | //~ latexToPdf($latex_path, $file_name, $pdf_path); | 177 | // document de la prestation |
178 | switch($choix_niv2) | ||
179 | { | ||
180 | case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" | ||
181 | $file_name = 'devis.tex'; | ||
182 | $template = 'devis'; | ||
183 | makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); | ||
184 | break; | ||
185 | case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" | ||
186 | $file_name = 'facture.tex'; | ||
187 | $template = 'facture'; | ||
188 | makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); | ||
189 | break; | ||
190 | case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" | ||
191 | // pas de facture | ||
192 | break; | ||
193 | case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" | ||
194 | $file_name = 'location.tex'; | ||
195 | $template = 'location'; | ||
196 | makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); | ||
197 | break; | ||
198 | case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" | ||
199 | // pas de facture | ||
200 | break; | ||
201 | default: // inutile normallement, cas déjà géré avant | ||
202 | echo "debug: sortie du menu enregistrement incorrect\n"; | ||
203 | return(0); | ||
204 | } | ||
205 | |||
206 | // enveloppe | ||
207 | $file_name = 'enveloppe_recto.tex'; | ||
208 | $template = 'enveloppe_recto'; | ||
209 | makeLatexAndPdfDocument($file_name, $template, $Client); | ||
210 | $file_name = 'enveloppe_verso.tex'; | ||
211 | $template = 'enveloppe_verso'; | ||
212 | makeLatexAndPdfDocument($file_name, $template, $Client); | ||
178 | 213 | ||
179 | 214 | ||
180 | // -- partie 4: récapitulatif -- | 215 | // -- partie 4: récapitulatif -- |