diff options
author | polo <ordipolo@gmx.fr> | 2023-06-22 15:22:23 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2023-06-22 15:22:23 +0200 |
commit | 22b941b3526dd3aaf6976eb4ed30aa2ecc30f921 (patch) | |
tree | f345f53c2f4c0ecdeabf9b2d1aac280a4b708a56 | |
parent | ee372629d665ea0b77889e3cc6e9b1738310a68e (diff) | |
download | AppliGestionPHP-22b941b3526dd3aaf6976eb4ed30aa2ecc30f921.zip |
factorisation 1_new_service.php vers functions.php
-rw-r--r-- | README.txt | 2 | ||||
-rw-r--r-- | data/dev.sqlite | bin | 36864 -> 36864 bytes | |||
-rw-r--r-- | src/Config.php | 4 | ||||
-rw-r--r-- | src/Dates.php | 2 | ||||
-rw-r--r-- | src/Latex.php | 2 | ||||
-rw-r--r-- | src/dependances.php | 2 | ||||
-rw-r--r-- | src/functions.php | 172 | ||||
-rwxr-xr-x | src/main.php | 42 | ||||
-rw-r--r-- | src/model/CESU.php | 2 | ||||
-rw-r--r-- | src/model/Clients.php | 2 | ||||
-rw-r--r-- | src/model/DB.php | 2 | ||||
-rw-r--r-- | src/model/DevisFactures.php | 2 | ||||
-rw-r--r-- | src/model/File.php | 7 | ||||
-rw-r--r-- | src/model/Locations.php | 2 | ||||
-rw-r--r-- | src/model/Model.php | 2 | ||||
-rw-r--r-- | src/model/Prestations.php | 2 | ||||
-rw-r--r-- | src/model/StructTablesDB.php | 2 | ||||
-rw-r--r-- | src/model/traits.php | 2 | ||||
-rw-r--r-- | src/sections/1_new_service.php | 153 | ||||
-rw-r--r-- | src/sections/2_quotations.php | 9 | ||||
-rw-r--r-- | src/sections/3_modify_service.php (renamed from src/sections/2_modify_service.php) | 4 | ||||
-rw-r--r-- | src/view/Zenity.php | 2 | ||||
-rw-r--r-- | src/view/ZenitySetup.php | 9 |
23 files changed, 217 insertions, 211 deletions
@@ -3,7 +3,7 @@ Ce programme est destiné à un usage privé et hors-ligne, | |||
3 | il ne nécessite pas de déclaration à la CNIL. | 3 | il ne nécessite pas de déclaration à la CNIL. |
4 | Il ne comporte aucune fonctionnalité réseau, ni aucune sécurité. | 4 | Il ne comporte aucune fonctionnalité réseau, ni aucune sécurité. |
5 | L'utilisateur est responsable des informations enregistrées, | 5 | L'utilisateur est responsable des informations enregistrées, |
6 | lesquelles ne sont destinées sortir de son ordinteur. | 6 | lesquelles ne sont pas destinées sortir de son ordinteur. |
7 | 7 | ||
8 | 8 | ||
9 | OS compatible: | 9 | OS compatible: |
diff --git a/data/dev.sqlite b/data/dev.sqlite index dce37bd..c933839 100644 --- a/data/dev.sqlite +++ b/data/dev.sqlite | |||
Binary files differ | |||
diff --git a/src/Config.php b/src/Config.php index 3e2b204..b4f8e5b 100644 --- a/src/Config.php +++ b/src/Config.php | |||
@@ -49,8 +49,8 @@ class Config | |||
49 | { | 49 | { |
50 | if(self::checkPath($field, $value)) | 50 | if(self::checkPath($field, $value)) |
51 | { | 51 | { |
52 | $value = self::slashAtEndOfPath($value); | 52 | self::$$field = self::slashAtEndOfPath($value); |
53 | self::$$field = $value; | 53 | //self::$$field = $value; |
54 | } | 54 | } |
55 | } | 55 | } |
56 | else // tester le reste? | 56 | else // tester le reste? |
diff --git a/src/Dates.php b/src/Dates.php index ff6e318..eb57ca8 100644 --- a/src/Dates.php +++ b/src/Dates.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/DateTimestamp.php | 2 | // src/DateTimestamp.php |
3 | // | 3 | // |
4 | // attention à strtotime(), php "devine" le format de la date selon qu'elle comporte des slashs / ou des tirets - | 4 | // attention à strtotime(), php "devine" le format de la date selon qu'elle comporte des slashs / ou des tirets - |
5 | // pour php une date avec des slashs / est américaine, mais si on fait comme ça aussi par ici | 5 | // pour php une date avec des slashs / est américaine, mais si on fait comme ça aussi par ici |
diff --git a/src/Latex.php b/src/Latex.php index c3d56af..9ae9435 100644 --- a/src/Latex.php +++ b/src/Latex.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/Latex.php | 2 | // src/Latex.php |
3 | // | 3 | // |
4 | // génération du code LaTeX | 4 | // génération du code LaTeX |
5 | 5 | ||
diff --git a/src/dependances.php b/src/dependances.php index 66ce414..a3dd320 100644 --- a/src/dependances.php +++ b/src/dependances.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/dependances.php | 2 | // src/dependances.php |
3 | // Vérification des dépendances nécessaires au fonctionnement de ce programmes. | 3 | // Vérification des dépendances nécessaires au fonctionnement de ce programmes. |
4 | 4 | ||
5 | // Environnement dans lequel ce programmes a été créé: | 5 | // Environnement dans lequel ce programmes a été créé: |
diff --git a/src/functions.php b/src/functions.php index bd91ddf..0b075b5 100644 --- a/src/functions.php +++ b/src/functions.php | |||
@@ -22,6 +22,72 @@ function windowAppCommand(string $app, string $path = ''): string | |||
22 | return $command; | 22 | return $command; |
23 | } | 23 | } |
24 | 24 | ||
25 | function makeObjectCLient() | ||
26 | { | ||
27 | // fenêtres | ||
28 | $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text); | ||
29 | $RechercheClient = new zenityEntry(ZenitySetup::$recherche_client_text); | ||
30 | $ResultatsRechercheClient = new ZenityList(ZenitySetup::$resultats_recherche_client_text, []); | ||
31 | $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees); | ||
32 | |||
33 | $Client = new Clients; | ||
34 | |||
35 | // est ce que le client est déjà dans la base? | ||
36 | $client_inconnu = true; | ||
37 | if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage | ||
38 | { | ||
39 | echo "choix: recherche d'une client\n"; | ||
40 | $input = exec($RechercheClient->get()); | ||
41 | if($input == '') | ||
42 | { | ||
43 | echo "debug: recherche annulée ou saisie vide\n"; | ||
44 | return 0; | ||
45 | } | ||
46 | |||
47 | echo "debug: recherche effectuée\n"; | ||
48 | $ResultatsRechercheClient->setListRows(rechercheClient($input, $Client), $Client->getTable()); // recherche silencieuse | ||
49 | |||
50 | // sélection parmi les résultats | ||
51 | $input = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients' | ||
52 | $ResultatsRechercheClient->cleanCommand(); | ||
53 | |||
54 | if($input == '') | ||
55 | { | ||
56 | echo "debug: client pas trouvé ou pas sélectionné\n"; | ||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | echo "debug: client sélectionné\n"; | ||
61 | $Client->hydrate($Client->findById($input)); | ||
62 | $client_inconnu = false; | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | echo "choix: nouveau client\n"; | ||
67 | } | ||
68 | |||
69 | // on n'a pas cherché OU on n'a pas trouvé | ||
70 | if($client_inconnu) | ||
71 | { | ||
72 | $input = exec($NouveauClient->get()); | ||
73 | if($input == '') | ||
74 | { | ||
75 | echo "debug: annulation lors de l'enregistrement d'un nouveau client\n"; | ||
76 | return 0; | ||
77 | } | ||
78 | if(!$Client->hydrateFromForm($input)) | ||
79 | { | ||
80 | // messages d'erreur dans hydrateFromForm() | ||
81 | return 0; | ||
82 | } | ||
83 | unset($input); | ||
84 | $Client->create(); | ||
85 | $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId() | ||
86 | } | ||
87 | |||
88 | return $Client; | ||
89 | } | ||
90 | |||
25 | // NOTE 1: en PHP les objets sont passés aux fonctions par référence par défaut, toutefois ce n'est pas entièrement vrai | 91 | // NOTE 1: en PHP les objets sont passés aux fonctions par référence par défaut, toutefois ce n'est pas entièrement vrai |
26 | // NOTE 2: PHP n'a pas de pointeur mais des références, une référence est un alias qui ne contient pas l'objet lui-même | 92 | // NOTE 2: PHP n'a pas de pointeur mais des références, une référence est un alias qui ne contient pas l'objet lui-même |
27 | // NOTE 3: la variable créée lors d'un "new" est elle-même une référence contenant un identifiant (= le pointeur?) | 93 | // NOTE 3: la variable créée lors d'un "new" est elle-même une référence contenant un identifiant (= le pointeur?) |
@@ -30,78 +96,65 @@ function windowAppCommand(string $app, string $path = ''): string | |||
30 | function rechercheClient(string $input, Clients $Client): array | 96 | function rechercheClient(string $input, Clients $Client): array |
31 | { | 97 | { |
32 | $input_array = explode(' ', $input); // si plusieurs mot, on les recherche tous l'un après l'autre | 98 | $input_array = explode(' ', $input); // si plusieurs mot, on les recherche tous l'un après l'autre |
33 | |||
34 | $result = $Client->findByKeywords($input_array, 'prenom_nom'); // on obtient un tableau à deux dimensions avec les entrées trouvées | 99 | $result = $Client->findByKeywords($input_array, 'prenom_nom'); // on obtient un tableau à deux dimensions avec les entrées trouvées |
35 | return($result); | 100 | return($result); |
36 | } | 101 | } |
37 | 102 | ||
38 | function makeFolder(string $path) | 103 | function makeLatexAndPdfDocument(Clients $Client = null, Prestations $Presta = null, $PrestaDetails = null) |
39 | { | ||
40 | if(!file_exists($path)) | ||
41 | { | ||
42 | mkdir($path); | ||
43 | chmod($path, 0755); // droits en octal | ||
44 | } | ||
45 | } | ||
46 | |||
47 | function makeLatexAndPdfDocument($documentType, Clients $Client = null, Prestations $Presta = null, $Details = null) // $Details peut être de type DevisFactures ou Locations | ||
48 | { | 104 | { |
49 | $latex = ''; | 105 | $latex = ''; |
50 | $year = ''; | 106 | $year = ''; |
51 | $data = []; | 107 | $data = []; |
52 | $file_name = $documentType . '.tex'; | ||
53 | $latex_path = Config::$latex_path; | 108 | $latex_path = Config::$latex_path; |
54 | $pdf_path = Config::$pdf_path; | 109 | $pdf_path = Config::$pdf_path; |
55 | 110 | ||
56 | // tableau associatif avec des données des différents objets | 111 | // verso d'une enveloppe |
57 | // note: la propriété 'commentaires' de $Presta écrase celle de $Client (pas grave, les clients n'ont pas besoin d'en avoir connaissance) | 112 | $latex = makeLatex('enveloppe_verso'); // pas de données transmises, elles sont dans la classe Config |
58 | // encore une fois, ce programme est destiné à un usage privé et hors ligne, sans déclaration CNIL | 113 | $file_name = 'enveloppe_verso.tex'; |
114 | makeFiles($latex_path, $pdf_path, $file_name, $latex); | ||
59 | 115 | ||
60 | if($Client == null) // verso d'une enveloppe | 116 | if($Client !== null) |
61 | { | ||
62 | $latex = makeLatex($documentType); // pas de données transmises, elles sont dans la classe Config | ||
63 | $file_name = 'enveloppe_verso'; | ||
64 | } | ||
65 | else | ||
66 | { | 117 | { |
67 | $data = $Client->getAll(); | 118 | $data = $Client->getAll(); |
68 | 119 | ||
69 | if($Presta == null) // recto d'une enveloppe | 120 | // recto d'une enveloppe |
70 | { | 121 | $latex_recto_path = $latex_path . 'enveloppes_recto/'; |
71 | $latex_path .= 'enveloppes_recto/'; | 122 | $pdf_verso_path = $pdf_path . 'enveloppes_recto/'; |
72 | $pdf_path .= 'enveloppes_recto/'; | 123 | $data['code_postal'] = implode(' \ ', str_split($data['code_postal'])); // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0 |
73 | $data['code_postal'] = implode(' \ ', str_split($data['code_postal'])); // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0 | 124 | $latex = makeLatex('enveloppe_recto', $data); // injection des variables |
74 | $latex = makeLatex($documentType, $data); // injection des variables | 125 | $file_name = $Client->getCodeClient() . '.tex'; |
75 | $file_name = $Client->getCodeClient() . '.tex'; | 126 | makeFiles($latex_recto_path, $pdf_verso_path, $file_name, $latex); |
76 | } | 127 | |
77 | else // facture, devis, location | 128 | // facture, devis, location |
129 | if($Presta !== null && $PrestaDetails !== null) | ||
78 | { | 130 | { |
79 | $data = array_merge($data, $Presta->getAll()); | 131 | $type = $Presta->getTypePresta(); |
80 | $Date = new Dates($Presta->getDate()); // entrée = timestamp (doit être un "int"!!) | 132 | $file_name = $type . '.tex'; |
81 | $year = $Date->getYear(); | 133 | if($type === 'facture' || $type === 'devis' || $type === 'location') |
82 | |||
83 | // créer un sous-dossier pour la nouvelle année | ||
84 | $latex_path .= $year . '/'; | ||
85 | $pdf_path .= $year . '/'; | ||
86 | |||
87 | if($Details != null) | ||
88 | { | 134 | { |
89 | $data = array_merge($data, $Details->getAll()); | 135 | $data = array_merge($data, $Presta->getAll()); |
136 | $Date = new Dates($Presta->getDate()); // entrée = timestamp (doit être un "int"!!) | ||
137 | $year = $Date->getYear(); | ||
138 | $latex_year_path = $latex_path . $year . '/'; // un sous-dossier par année | ||
139 | $pdf_year_path = $pdf_path . $year . '/'; | ||
140 | $data = array_merge($data, $PrestaDetails->getAll()); | ||
141 | $latex = makeLatex($type, $data, $Date); // injection des variables | ||
142 | $file_name = $Presta->getCodePresta() . '.tex'; | ||
143 | makeFiles($latex_year_path, $pdf_year_path, $file_name, $latex); | ||
144 | } | ||
145 | elseif($type === 'cesu' || $type === 'non_vendue') | ||
146 | {} // pas de document | ||
147 | else | ||
148 | { | ||
149 | echo "debug: erreur génération latex, type de prestation \n"; | ||
150 | return 0; | ||
90 | } | 151 | } |
91 | |||
92 | $latex = makeLatex($documentType, $data, $Date); // injection des variables | ||
93 | $file_name = $Presta->getCodePresta() . '.tex'; | ||
94 | } | 152 | } |
95 | } | 153 | } |
96 | |||
97 | // création des fichiers | ||
98 | makeFolder($latex_path); | ||
99 | makeFolder($pdf_path); | ||
100 | file_put_contents($latex_path. $file_name, $latex); // écriture du fichier | ||
101 | latexToPdf($latex_path, $file_name, $pdf_path); | ||
102 | } | 154 | } |
103 | 155 | ||
104 | function makeLatex(string $documentType, array $data = [], Dates $Date = null) | 156 | |
157 | function makeLatex(string $type, array $data = [], Dates $Date = null) | ||
105 | { | 158 | { |
106 | $date = ''; | 159 | $date = ''; |
107 | if($Date != null) | 160 | if($Date != null) |
@@ -113,13 +166,30 @@ function makeLatex(string $documentType, array $data = [], Dates $Date = null) | |||
113 | // on obtient la variable $latex avec ob_get_clean() | 166 | // on obtient la variable $latex avec ob_get_clean() |
114 | // le include() ici, c'est du génie ou c'est moche ou les deux? | 167 | // le include() ici, c'est du génie ou c'est moche ou les deux? |
115 | // un nouveau fichier php est inséré à chaque itération | 168 | // un nouveau fichier php est inséré à chaque itération |
116 | include('latex_templates/' . $documentType . '.php'); | 169 | include('latex_templates/' . $type . '.php'); |
117 | 170 | ||
118 | // on retourne le buffer | 171 | // on retourne le buffer |
119 | // normallement le code PHP inséré avec include est nettoyé en quittant la fonction | 172 | // normallement le code PHP inséré avec include est nettoyé en quittant la fonction |
120 | return($latex); | 173 | return($latex); |
121 | } | 174 | } |
122 | 175 | ||
176 | function makeFiles($latex_path, $pdf_path, $file_name, $latex) | ||
177 | { | ||
178 | makeFolder($latex_path); | ||
179 | makeFolder($pdf_path); | ||
180 | file_put_contents($latex_path. $file_name, $latex); // écriture du fichier | ||
181 | latexToPdf($latex_path, $file_name, $pdf_path); | ||
182 | } | ||
183 | |||
184 | function makeFolder(string $path) | ||
185 | { | ||
186 | if(!file_exists($path)) | ||
187 | { | ||
188 | mkdir($path); | ||
189 | chmod($path, 0755); // droits en octal | ||
190 | } | ||
191 | } | ||
192 | |||
123 | // compilation à partir d'un fichier .tex | 193 | // compilation à partir d'un fichier .tex |
124 | function latexToPdf(string $latexPath, string $fileName, string $pdfPath) | 194 | function latexToPdf(string $latexPath, string $fileName, string $pdfPath) |
125 | { | 195 | { |
diff --git a/src/main.php b/src/main.php index 2b2da84..13d77c3 100755 --- a/src/main.php +++ b/src/main.php | |||
@@ -1,13 +1,16 @@ | |||
1 | #!/bin/php | 1 | #!/bin/php |
2 | <?php | 2 | <?php |
3 | // php/main.php | 3 | // src/main.php |
4 | |||
5 | require('functions.php'); | ||
6 | require('model/File.php'); | ||
4 | 7 | ||
5 | // configuration du programme par l'utilisateur | 8 | // configuration du programme par l'utilisateur |
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) | 9 | 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'); | 10 | Config::readFile('../config.ini'); |
11 | makeFolder(Config::$latex_path); | ||
12 | makeFolder(Config::$pdf_path); | ||
9 | Config::hydrate(); | 13 | Config::hydrate(); |
10 | |||
11 | // et à coder peut-être plus tard | 14 | // et à coder peut-être plus tard |
12 | //require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications | 15 | //require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications |
13 | 16 | ||
@@ -20,9 +23,7 @@ Config::$db_path .= Config::$db_name . '.' . Config::$sgbd; | |||
20 | $sqlitebrowser_enable = false; | 23 | $sqlitebrowser_enable = false; |
21 | $sqlite_cli = ''; // commande sqlite ou sqlite3 | 24 | $sqlite_cli = ''; // commande sqlite ou sqlite3 |
22 | $x_term_command = ''; // commande terminal en mode graphique | 25 | $x_term_command = ''; // commande terminal en mode graphique |
23 | |||
24 | require('dependances.php'); // vérification des dépendances | 26 | require('dependances.php'); // vérification des dépendances |
25 | require('functions.php'); | ||
26 | require('Dates.php'); // gère dates et timestamps | 27 | require('Dates.php'); // gère dates et timestamps |
27 | Dates::$date_format = Config::$date_format; // dates européennes ou américaines | 28 | Dates::$date_format = Config::$date_format; // dates européennes ou américaines |
28 | 29 | ||
@@ -43,10 +44,13 @@ require('model/Locations.php'); | |||
43 | 44 | ||
44 | require('view/Zenity.php'); // commande système zenity | 45 | require('view/Zenity.php'); // commande système zenity |
45 | require('view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) | 46 | require('view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) |
46 | require('Latex.php'); // générer le code LaTeX | 47 | |
48 | // factoriser et créer une classe | ||
49 | //require('Latex.php'); // générer le code LaTeX | ||
47 | 50 | ||
48 | require('sections/1_new_service.php'); | 51 | require('sections/1_new_service.php'); |
49 | require('sections/2_modify_service.php'); | 52 | require('sections/2_quotations.php'); |
53 | require('sections/3_modify_service.php'); | ||
50 | 54 | ||
51 | // boucle principale | 55 | // boucle principale |
52 | $boucle = true; | 56 | $boucle = true; |
@@ -73,22 +77,28 @@ while($boucle) | |||
73 | echo "debug: main.php: hello, code retour " . $code_retour . "\n"; | 77 | echo "debug: main.php: hello, code retour " . $code_retour . "\n"; |
74 | } | 78 | } |
75 | 79 | ||
76 | // -- SECTION 2: Modifier un enregistrement -- | 80 | // -- SECTION 2: Devis -- |
77 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $code_retour === 2) | 81 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $code_retour === 2) |
78 | { | 82 | { |
79 | echo("choix: $choix_niv1\n"); | 83 | echo("choix: $choix_niv1\n"); |
80 | $code_retour = modifyService(); | 84 | $code_retour = modifyService(); |
81 | } | 85 | } |
86 | // -- SECTION 3: Modifier un enregistrement -- | ||
87 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $code_retour === 3) | ||
88 | { | ||
89 | echo("choix: $choix_niv1\n"); | ||
90 | $code_retour = modifyService(); | ||
91 | } | ||
82 | 92 | ||
83 | // -- SECTION 3: Consulter/analyser les données -- | 93 | // -- SECTION 4: Consulter/analyser les données -- |
84 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $code_retour === 3) | 94 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $code_retour === 4) |
85 | { | 95 | { |
86 | echo("choix: $choix_niv1\n"); | 96 | echo("choix: $choix_niv1\n"); |
87 | // quel affichage? des tableaux avec zenity? LaTeX? une page web? un autre outil servant à faire des tableaux et graphiques | 97 | // quel affichage? des tableaux avec zenity? LaTeX? une page web? un autre outil servant à faire des tableaux et graphiques |
88 | } | 98 | } |
89 | 99 | ||
90 | // -- SECTION 4: Imprimer -- | 100 | // -- SECTION 5: Imprimer -- |
91 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $code_retour === 4) // = Imprimer un document | 101 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $code_retour === 5) // = Imprimer un document |
92 | { | 102 | { |
93 | echo("choix: $choix_niv1\n"); | 103 | echo("choix: $choix_niv1\n"); |
94 | $MenuDocuments = new ZenityList(ZenitySetup::$menu_documents_text, ZenitySetup::$menu_documents_entrees); | 104 | $MenuDocuments = new ZenityList(ZenitySetup::$menu_documents_text, ZenitySetup::$menu_documents_entrees); |
@@ -123,8 +133,8 @@ while($boucle) | |||
123 | } | 133 | } |
124 | } | 134 | } |
125 | 135 | ||
126 | // -- SECTION 5: Supports de communication -- | 136 | // -- SECTION 6: Supports de communication -- |
127 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $code_retour === 5) // = Communication | 137 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $code_retour === 6) // = Communication |
128 | { | 138 | { |
129 | echo("choix: $choix_niv1\n"); | 139 | echo("choix: $choix_niv1\n"); |
130 | $MenuCommunication = new ZenityList(ZenitySetup::$menu_communication_text, ZenitySetup::$menu_communication_entrees); | 140 | $MenuCommunication = new ZenityList(ZenitySetup::$menu_communication_text, ZenitySetup::$menu_communication_entrees); |
@@ -147,8 +157,8 @@ while($boucle) | |||
147 | } | 157 | } |
148 | } | 158 | } |
149 | 159 | ||
150 | // -- SECTION 6: BDD -- | 160 | // -- SECTION 7: BDD -- |
151 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $code_retour === 6) // = Base de données | 161 | elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[6] || $code_retour === 7) // = Base de données |
152 | { | 162 | { |
153 | echo("choix: $choix_niv1\n"); | 163 | echo("choix: $choix_niv1\n"); |
154 | if($sqlitebrowser_enable) | 164 | if($sqlitebrowser_enable) |
diff --git a/src/model/CESU.php b/src/model/CESU.php index 8771607..dbb4023 100644 --- a/src/model/CESU.php +++ b/src/model/CESU.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/CESU.php | 2 | // src/model/CESU.php |
3 | 3 | ||
4 | class CESU extends Model | 4 | class CESU extends Model |
5 | { | 5 | { |
diff --git a/src/model/Clients.php b/src/model/Clients.php index d841451..8f460c6 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/Clients.php | 2 | // src/model/Clients.php |
3 | 3 | ||
4 | class Clients extends Model | 4 | class Clients extends Model |
5 | { | 5 | { |
diff --git a/src/model/DB.php b/src/model/DB.php index 52d6479..4e54015 100644 --- a/src/model/DB.php +++ b/src/model/DB.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/DB.php | 2 | // src/model/DB.php |
3 | 3 | ||
4 | // cette classe applique le pattern "singleton" | 4 | // cette classe applique le pattern "singleton" |
5 | // but: ne permettre qu'une seule instance de la classe (laquelle sera éventuellement globale) | 5 | // but: ne permettre qu'une seule instance de la classe (laquelle sera éventuellement globale) |
diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php index 92a5443..c9b7d18 100644 --- a/src/model/DevisFactures.php +++ b/src/model/DevisFactures.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/DevisFactures.php | 2 | // src/model/DevisFactures.php |
3 | 3 | ||
4 | class DevisFactures extends Model | 4 | class DevisFactures extends Model |
5 | { | 5 | { |
diff --git a/src/model/File.php b/src/model/File.php new file mode 100644 index 0000000..8bcdead --- /dev/null +++ b/src/model/File.php | |||
@@ -0,0 +1,7 @@ | |||
1 | <?php | ||
2 | // src/model/File.php | ||
3 | // | ||
4 | // manipulations des fichiers | ||
5 | |||
6 | class File | ||
7 | {} | ||
diff --git a/src/model/Locations.php b/src/model/Locations.php index 149c1f1..b669e7c 100644 --- a/src/model/Locations.php +++ b/src/model/Locations.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/Locations.php | 2 | // src/model/Locations.php |
3 | 3 | ||
4 | class Locations extends Model | 4 | class Locations extends Model |
5 | { | 5 | { |
diff --git a/src/model/Model.php b/src/model/Model.php index 0240a9e..40a9fcb 100644 --- a/src/model/Model.php +++ b/src/model/Model.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/Model.php | 2 | // src/model/Model.php |
3 | 3 | ||
4 | abstract class Model extends DB | 4 | abstract class Model extends DB |
5 | { | 5 | { |
diff --git a/src/model/Prestations.php b/src/model/Prestations.php index d246a3d..94dd805 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/Prestations.php | 2 | // src/model/Prestations.php |
3 | 3 | ||
4 | class Prestations extends Model | 4 | class Prestations extends Model |
5 | { | 5 | { |
diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php index b1e3c7a..75a4383 100644 --- a/src/model/StructTablesDB.php +++ b/src/model/StructTablesDB.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/StructTablesDB.php | 2 | // src/model/StructTablesDB.php |
3 | 3 | ||
4 | // structure de données façon C | 4 | // structure de données façon C |
5 | // créer les requêtes avec implode(', ', $DbStructure) | 5 | // créer les requêtes avec implode(', ', $DbStructure) |
diff --git a/src/model/traits.php b/src/model/traits.php index a00032e..03121be 100644 --- a/src/model/traits.php +++ b/src/model/traits.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // model/traits.php | 2 | // src/model/traits.php |
3 | // | 3 | // |
4 | // fonctions à utiliser par les enfants de Model | 4 | // fonctions à utiliser par les enfants de Model |
5 | 5 | ||
diff --git a/src/sections/1_new_service.php b/src/sections/1_new_service.php index ae2d2ef..f9105b7 100644 --- a/src/sections/1_new_service.php +++ b/src/sections/1_new_service.php | |||
@@ -1,15 +1,11 @@ | |||
1 | <?php | 1 | <?php |
2 | // sections/1_new_service.php | 2 | // src/sections/1_new_service.php |
3 | // | 3 | // |
4 | // -- SECTION 1: Nouvelle prestation -- | 4 | // -- SECTION 1: Nouvelle prestation -- |
5 | 5 | ||
6 | function newService(): int // code de retour, si 0 retour menu principal, si 2 aller à la section 2, etc | 6 | function newService(): int // code de retour, si 0 retour menu principal, si 2 aller à la section 2, etc |
7 | { | 7 | { |
8 | // fenêtres | 8 | // fenêtres |
9 | $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text); | ||
10 | $RechercheClient = new zenityEntry(ZenitySetup::$recherche_client_text); | ||
11 | $ResultatsRechercheClient = new ZenityList(ZenitySetup::$resultats_recherche_client_text, []); | ||
12 | $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees); | ||
13 | $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees); | 9 | $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees); |
14 | $Calendrier = new ZenityCalendar(ZenitySetup::$calendar_text); | 10 | $Calendrier = new ZenityCalendar(ZenitySetup::$calendar_text); |
15 | $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_devis_entrees); | 11 | $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_devis_entrees); |
@@ -20,63 +16,12 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
20 | $Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes | 16 | $Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes |
21 | $QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text); | 17 | $QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text); |
22 | 18 | ||
23 | $Client = new Clients; | ||
24 | |||
25 | 19 | ||
26 | // -- partie 1: le client -- | 20 | // -- partie 1: le client -- |
27 | 21 | $Client = makeObjectCLient(); | |
28 | // est ce que le client est déjà dans la base? | 22 | if($Client === 0) |
29 | $client_inconnu = true; | ||
30 | if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage | ||
31 | { | 23 | { |
32 | echo "choix: recherche d'une client\n"; | 24 | return 0; // menu principal |
33 | $input = exec($RechercheClient->get()); | ||
34 | if($input == '') | ||
35 | { | ||
36 | echo "debug: recherche annulée ou saisie vide\n"; | ||
37 | return(0); | ||
38 | } | ||
39 | |||
40 | echo "debug: recherche effectuée\n"; | ||
41 | $ResultatsRechercheClient->setListRows(rechercheClient($input, $Client), $Client->getTable()); // recherche silencieuse | ||
42 | unset($input); | ||
43 | |||
44 | // niveau 4: sélection parmi les résultats | ||
45 | $choix_niv4 = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients' | ||
46 | $ResultatsRechercheClient->cleanCommand(); | ||
47 | |||
48 | if($choix_niv4 == '') | ||
49 | { | ||
50 | echo "debug: client pas trouvé ou pas sélectionné\n"; | ||
51 | return(0); | ||
52 | } | ||
53 | |||
54 | echo "debug: client sélectionné\n"; | ||
55 | $Client->hydrate($Client->findById($choix_niv4)); | ||
56 | $client_inconnu = false; | ||
57 | } | ||
58 | else | ||
59 | { | ||
60 | echo "choix: nouveau client\n"; | ||
61 | } | ||
62 | |||
63 | // on n'a pas cherché OU on n'a pas trouvé | ||
64 | if($client_inconnu) | ||
65 | { | ||
66 | $input = exec($NouveauClient->get()); | ||
67 | if($input == '') | ||
68 | { | ||
69 | echo "debug: annulation lors de l'enregistrement d'un nouveau client\n"; | ||
70 | return(0); | ||
71 | } | ||
72 | if(!$Client->hydrateFromForm($input)) | ||
73 | { | ||
74 | // messages d'erreur dans hydrateFromForm() | ||
75 | return(0); | ||
76 | } | ||
77 | unset($input); | ||
78 | $Client->create(); | ||
79 | $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId() | ||
80 | } | 25 | } |
81 | 26 | ||
82 | 27 | ||
@@ -87,7 +32,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
87 | if($choix_niv2 === '') | 32 | if($choix_niv2 === '') |
88 | { | 33 | { |
89 | echo "debug: annulation menu enregistrement\n"; | 34 | echo "debug: annulation menu enregistrement\n"; |
90 | return(0); // menu principal | 35 | return 0; // menu principal |
91 | } | 36 | } |
92 | 37 | ||
93 | $Presta = new Prestations($Client->getID()); | 38 | $Presta = new Prestations($Client->getID()); |
@@ -98,7 +43,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
98 | if($Date->getDate() == '') // on n'a pas cliqué sur "annuler" | 43 | if($Date->getDate() == '') // on n'a pas cliqué sur "annuler" |
99 | { | 44 | { |
100 | echo "debug: annulation à la saisie d'une date\n"; | 45 | echo "debug: annulation à la saisie d'une date\n"; |
101 | return(0); // menu principal | 46 | return 0; // menu principal |
102 | } | 47 | } |
103 | 48 | ||
104 | $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD | 49 | $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD |
@@ -106,47 +51,47 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
106 | switch($choix_niv2) | 51 | switch($choix_niv2) |
107 | { | 52 | { |
108 | // formulaire - étape 2/3 | 53 | // formulaire - étape 2/3 |
109 | case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" | 54 | //~ case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" |
110 | $Details = new DevisFactures('devis'); | 55 | //~ $PrestaDetails = new DevisFactures('devis'); |
111 | $Presta->setTypePresta('devis'); | 56 | //~ $Presta->setTypePresta('devis'); |
112 | $input = exec($FormulaireDevis->get()); | 57 | //~ $input = exec($FormulaireDevis->get()); |
113 | break; | 58 | //~ break; |
114 | case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" | 59 | case ZenitySetup::$menu_enregistrement_entrees[0]: // "Facture" |
115 | $Details = new DevisFactures('factures'); // 'factures' est le nom de la table, pas le type de presta | 60 | $PrestaDetails = new DevisFactures('factures'); // 'factures' est le nom de la table, pas le type de presta |
116 | $Presta->setTypePresta('facture'); | 61 | $Presta->setTypePresta('facture'); |
117 | $input =exec($FormulaireFacture->get()); | 62 | $input =exec($FormulaireFacture->get()); |
118 | break; | 63 | break; |
119 | case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" | 64 | case ZenitySetup::$menu_enregistrement_entrees[1]: // "CESU" |
120 | $Details = new CESU(); | 65 | $PrestaDetails = new CESU(); |
121 | $Presta->setTypePresta('cesu'); | 66 | $Presta->setTypePresta('cesu'); |
122 | $input = exec($FormulaireCesu->get()); | 67 | $input = exec($FormulaireCesu->get()); |
123 | break; | 68 | break; |
124 | case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" | 69 | case ZenitySetup::$menu_enregistrement_entrees[2]: // "Location" |
125 | $Details = new Locations(); | 70 | $PrestaDetails = new Locations(); |
126 | $Presta->setTypePresta('location'); | 71 | $Presta->setTypePresta('location'); |
127 | $input = exec($FormulaireLocation->get()); | 72 | $input = exec($FormulaireLocation->get()); |
128 | break; | 73 | break; |
129 | case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" | 74 | case ZenitySetup::$menu_enregistrement_entrees[3]: // "Prestation non vendue" |
130 | $Presta->setTypePresta('non_vendue'); | 75 | $Presta->setTypePresta('non_vendue'); |
131 | break; | 76 | break; |
132 | default: // inutile normallement, cas déjà géré avant | 77 | default: // inutile normallement, cas déjà géré avant |
133 | echo "debug: sortie du menu enregistrement incorrect\n"; | 78 | echo "debug: sortie du menu enregistrement incorrect\n"; |
134 | return(0); | 79 | return 0; |
135 | } | 80 | } |
136 | 81 | ||
137 | $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre | 82 | $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre |
138 | 83 | ||
139 | if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[4]) // si presta non vendue, saut étape 3/3 | 84 | if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[3]) // si presta non vendue, saut étape 3/3 |
140 | { | 85 | { |
141 | if($input == '') // annulation | 86 | if($input == '') // annulation |
142 | { | 87 | { |
143 | echo "debug: annulation lors de l'enregistrement des détails de la prestation\n"; | 88 | echo "debug: annulation lors de l'enregistrement des détails de la prestation\n"; |
144 | return(0); | 89 | return 0; |
145 | } | 90 | } |
146 | elseif(isset($Details) && !$Details->hydrateFromForm($input, $Presta)) // echec de l'hydratation | 91 | elseif(isset($PrestaDetails) && !$PrestaDetails->hydrateFromForm($input, $Presta)) // echec de l'hydratation |
147 | { | 92 | { |
148 | echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()? | 93 | echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()? |
149 | return(0); | 94 | return 0; |
150 | } | 95 | } |
151 | unset($input); | 96 | unset($input); |
152 | } | 97 | } |
@@ -167,7 +112,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
167 | //~ if(exec('echo $?') != 1) | 112 | //~ if(exec('echo $?') != 1) |
168 | //~ { | 113 | //~ { |
169 | //~ echo "debug: annulation à la saisie d'un commentaire\n"; | 114 | //~ echo "debug: annulation à la saisie d'un commentaire\n"; |
170 | //~ return(0); | 115 | //~ return 0; |
171 | //~ } | 116 | //~ } |
172 | $Presta->setCommentaires($input); | 117 | $Presta->setCommentaires($input); |
173 | unset($input); | 118 | unset($input); |
@@ -175,53 +120,17 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
175 | $Presta->create(); | 120 | $Presta->create(); |
176 | $Presta->setID(); // sans paramètre, exécute un $this->db->lastInsertId() | 121 | $Presta->setID(); // sans paramètre, exécute un $this->db->lastInsertId() |
177 | 122 | ||
178 | if(isset($Details)) // presta non vendue | 123 | if(isset($PrestaDetails)) // presta non vendue |
179 | { | 124 | { |
180 | $Details->setIDPresta($Presta->getID()); // d'un objet à l'autre | 125 | $PrestaDetails->setIDPresta($Presta->getID()); // d'un objet à l'autre |
181 | $Details->create(); | 126 | $PrestaDetails->create(); |
182 | $Details->setID(); // sans paramètre, exécute un $this->db->lastInsertId() | 127 | $PrestaDetails->setID(); // sans paramètre, exécute un $this->db->lastInsertId() |
183 | } | 128 | } |
184 | 129 | ||
185 | 130 | ||
186 | // -- partie 3: LaTeX -- | 131 | // -- partie 3: LaTeX -- |
187 | 132 | ||
188 | // document de la prestation | 133 | makeLatexAndPdfDocument($Client, $Presta, $PrestaDetails); |
189 | switch($choix_niv2) | ||
190 | { | ||
191 | case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" | ||
192 | $type = 'devis'; | ||
193 | makeLatexAndPdfDocument($type, $Client, $Presta, $Details); | ||
194 | break; | ||
195 | case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" | ||
196 | $type = 'facture'; | ||
197 | makeLatexAndPdfDocument($type, $Client, $Presta, $Details); | ||
198 | break; | ||
199 | case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" | ||
200 | // pas de facture | ||
201 | break; | ||
202 | case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" | ||
203 | $type = 'location'; | ||
204 | makeLatexAndPdfDocument($type, $Client, $Presta, $Details); | ||
205 | break; | ||
206 | case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" | ||
207 | // pas de facture | ||
208 | break; | ||
209 | default: // inutile normallement, cas déjà géré avant | ||
210 | echo "debug: sortie du menu enregistrement incorrect\n"; | ||
211 | return(0); | ||
212 | } | ||
213 | |||
214 | // enveloppe recto | ||
215 | $type = 'enveloppe_recto'; | ||
216 | makeLatexAndPdfDocument($type, $Client); | ||
217 | |||
218 | // le verso ne dépend pas du client mais de l'entreprise, dans la classe Config | ||
219 | if(!file_exists(Config::$pdf_path . 'enveloppe_verso.pdf')) | ||
220 | { | ||
221 | $type = 'enveloppe_verso'; | ||
222 | makeLatexAndPdfDocument($type); | ||
223 | } | ||
224 | |||
225 | 134 | ||
226 | // -- partie 4: récapitulatif -- | 135 | // -- partie 4: récapitulatif -- |
227 | 136 | ||
@@ -237,10 +146,10 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a | |||
237 | // zenityQuestion | 146 | // zenityQuestion |
238 | if(exec($QuestionModifierPrestation->get()) == '0') | 147 | if(exec($QuestionModifierPrestation->get()) == '0') |
239 | { | 148 | { |
240 | return(2); // section 2 | 149 | return 3; // section "Modifier un enregistrement" |
241 | } | 150 | } |
242 | else | 151 | else |
243 | { | 152 | { |
244 | return(0); // menu principal | 153 | return 0; // menu principal |
245 | } | 154 | } |
246 | } | 155 | } |
diff --git a/src/sections/2_quotations.php b/src/sections/2_quotations.php new file mode 100644 index 0000000..76b66fd --- /dev/null +++ b/src/sections/2_quotations.php | |||
@@ -0,0 +1,9 @@ | |||
1 | <?php | ||
2 | // src/sections/2_quotations.php | ||
3 | // | ||
4 | // -- SECTION 2: Devis -- | ||
5 | |||
6 | function quotation(): int // code de retour, si 2 aller à la section 2, etc | ||
7 | { | ||
8 | return(0); // menu principal | ||
9 | } | ||
diff --git a/src/sections/2_modify_service.php b/src/sections/3_modify_service.php index 72e2605..3147969 100644 --- a/src/sections/2_modify_service.php +++ b/src/sections/3_modify_service.php | |||
@@ -1,7 +1,7 @@ | |||
1 | <?php | 1 | <?php |
2 | // sections/2_modify_service.php | 2 | // src/sections/3_modify_service.php |
3 | // | 3 | // |
4 | // -- SECTION 2: Modifier une prestation -- | 4 | // -- SECTION 3: Modifier une prestation -- |
5 | 5 | ||
6 | function modifyService(): int // code de retour, si 2 aller à la section 2, etc | 6 | function modifyService(): int // code de retour, si 2 aller à la section 2, etc |
7 | { | 7 | { |
diff --git a/src/view/Zenity.php b/src/view/Zenity.php index 091a2c0..73c8c3e 100644 --- a/src/view/Zenity.php +++ b/src/view/Zenity.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // php/Zenity.php | 2 | // src/view/Zenity.php |
3 | // | 3 | // |
4 | // générer les commandes qui ouvrent les fenêtres zenity, un objet = une commande | 4 | // générer les commandes qui ouvrent les fenêtres zenity, un objet = une commande |
5 | // s'utilisent comme ceci: exec($Objet->get()); | 5 | // s'utilisent comme ceci: exec($Objet->get()); |
diff --git a/src/view/ZenitySetup.php b/src/view/ZenitySetup.php index cd7e364..b6d83f6 100644 --- a/src/view/ZenitySetup.php +++ b/src/view/ZenitySetup.php | |||
@@ -1,5 +1,5 @@ | |||
1 | <?php | 1 | <?php |
2 | // view/ZenitySetup.php | 2 | // src/view/ZenitySetup.php |
3 | // | 3 | // |
4 | // ces variables sont des paramètres de la commande zenity (--text, --add-entry, --column) | 4 | // ces variables sont des paramètres de la commande zenity (--text, --add-entry, --column) |
5 | // les utiliser à l'instanciation des objets Zenity à la manière de l'exemple suivant: | 5 | // les utiliser à l'instanciation des objets Zenity à la manière de l'exemple suivant: |
@@ -8,11 +8,12 @@ | |||
8 | class ZenitySetup | 8 | class ZenitySetup |
9 | { | 9 | { |
10 | static public $menu_principal_text = "Gestion d'une micro-entreprise"; | 10 | static public $menu_principal_text = "Gestion d'une micro-entreprise"; |
11 | static public $menu_principal_entrees = ["Nouvelle prestation", "Modifier enregistrement", "Consulter/analyser les données", "Imprimer un document", "Communication", "Base de données"]; | 11 | static public $menu_principal_entrees = ["Nouvelle prestation", "Devis", "Modifier un enregistrement", "Consulter/analyser les données", "Imprimer un document", "Communication", "Base de données"]; |
12 | static public $question_nouveau_client_text = "Ce client figure t\'il déjà dans le fichier clients?"; | 12 | static public $question_nouveau_client_text = "Ce client figure t\'il déjà dans le fichier clients?"; |
13 | static public $menu_enregistrement_text = "Type d\'enregistrement?"; | 13 | static public $menu_enregistrement_text = "Type d\'enregistrement?"; |
14 | static public $menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Location", "Prestation non vendue"]; | 14 | //static public $menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Location", "Prestation non vendue"]; |
15 | static public $menu_documents_text = "Création de documents LaTeX"; | 15 | static public $menu_enregistrement_entrees = ["Facture", "CESU", "Location", "Prestation non vendue"]; |
16 | static public $menu_documents_text = "Imprimer un document LaTeX"; | ||
16 | static public $menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"]; | 17 | static public $menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"]; |
17 | static public $menu_communication_text = "Imprimer un support de communication"; | 18 | static public $menu_communication_text = "Imprimer un support de communication"; |
18 | static public $menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (nécessite scribus)", "Explorateur de fichiers"]; | 19 | static public $menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (nécessite scribus)", "Explorateur de fichiers"]; |