diff options
author | polo <ordipolo@gmx.fr> | 2022-12-14 12:55:46 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2022-12-14 12:55:46 +0100 |
commit | ff14091476a35de16a9ea3208501040cfae93a06 (patch) | |
tree | 89ebd00ad68fbb97aac71ef8a2972748f82dee0d /src/main.php | |
parent | a45a3e0345890b9df3c5fa7c82966a64491eca02 (diff) | |
download | AppliGestionPHP-ff14091476a35de16a9ea3208501040cfae93a06.zip |
MODEL + reorganisation
Diffstat (limited to 'src/main.php')
-rwxr-xr-x | src/main.php | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/src/main.php b/src/main.php new file mode 100755 index 0000000..e890744 --- /dev/null +++ b/src/main.php | |||
@@ -0,0 +1,239 @@ | |||
1 | #!/bin/php | ||
2 | <?php | ||
3 | // php/main.php | ||
4 | |||
5 | // 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_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications | ||
8 | //require('config_check.php'); // contrôle de config.php | ||
9 | |||
10 | // variables diverses, certaines utilisent les variables de config.php | ||
11 | $exec_mode = 'gui'; // les versions pure console (CLI) et serveur web (CGI) de ce programme ne sont pas prévues pour l'instant | ||
12 | $file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quand suivi d'un chemin en paramètre | ||
13 | $flyer = $pub . $flyer; | ||
14 | $business_card = $pub . $business_card; | ||
15 | $db_place .= $db_name . '.sqlite'; | ||
16 | $sqlitebrowser_enable = false; | ||
17 | $sqlite_cli = ''; // commande sqlite ou sqlite3 | ||
18 | $x_term_command = ''; // commande terminal en mode graphique | ||
19 | |||
20 | require('dependances.php'); // vérification des dépendances | ||
21 | require('functions.php'); | ||
22 | require('Dates.php'); // gère dates et timestamps | ||
23 | Dates::$date_format = $date_format; // dates européennes ou américaines | ||
24 | |||
25 | require('model/DB.php'); // connexion en héritant de PDO | ||
26 | DB::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); | ||
27 | |||
28 | require('model/Model.php'); // class Model extends DB, requêtes SQL | ||
29 | require('model/StructTablesDB.php'); | ||
30 | Model::createTables(); | ||
31 | |||
32 | require('model/Clients.php'); | ||
33 | require('model/Prestations.php'); | ||
34 | require('model/DevisFactures.php'); | ||
35 | require('model/CESU.php'); | ||
36 | require('model/Locations.php'); | ||
37 | |||
38 | // instancier et supprimer à chaque fois quand nécessaire | ||
39 | $Client = new Clients(); | ||
40 | $Client->setPrenom_nom('Jean Némar')->setAdresse('10, rue des douves')->setCode_client('464653476')->setCommentaires('un peu chiant'); | ||
41 | $Client->create(); | ||
42 | |||
43 | // même chose avec un tableau en entrée au lieu d'écrire toutes les méthodes | ||
44 | $input = ['prenom_nom' => 'Eva Casquer', 'adresse' => "2, place d'Écosse", 'code_client' => '958465875', 'commentaires' => 'bonne vache à lait']; | ||
45 | $Client->hydrate($input); | ||
46 | $Client->create(); | ||
47 | |||
48 | $input = ['prenom_nom' => 'Eva Paparla', 'commentaires' => 'grosse nunuche']; | ||
49 | $Client->hydrate($input); | ||
50 | $Client->update(2); | ||
51 | |||
52 | $Client->delete(3); | ||
53 | |||
54 | //$Date = new Dates; | ||
55 | |||
56 | |||
57 | require('view/Zenity.php'); // commande système zenity | ||
58 | require('view/zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) | ||
59 | require('Latex.php'); // générer le code LaTeX | ||
60 | |||
61 | // injection de variables dans le document | ||
62 | // problème à régler: et si je veux faire une deuxième facture? | ||
63 | //~ include('latex_templates/devis.php'); | ||
64 | //~ include('latex_templates/facture.php'); | ||
65 | //~ include('latex_templates/enveloppe_recto.php'); | ||
66 | //~ include('latex_templates/enveloppe_verso.php'); | ||
67 | //~ include('latex_templates/location.php'); | ||
68 | |||
69 | |||
70 | // boucle principale | ||
71 | $boucle = true; | ||
72 | while($boucle) | ||
73 | { | ||
74 | // menu principal | ||
75 | $choix_niv1 = exec($MenuPrincipal->get()); | ||
76 | |||
77 | // enregistrement | ||
78 | if($choix_niv1 === $menu_principal_entrees[0]) // = Nouvelle prestation | ||
79 | { | ||
80 | // est ce que le client est déjà dans la base? | ||
81 | if(exec($QuestionNouveauClient->get()) === 0) // $? = 0 signifie oui | ||
82 | { | ||
83 | // saisie du nom du client et recherche | ||
84 | $client_saisie = exec($RechercheClient->get()); | ||
85 | |||
86 | // sélection parmi les résultats | ||
87 | $ResultatsRechercheClient->setEntries(recherche_client($client_saisie)); | ||
88 | $choix_niv2 = exec($ResultatsRechercheClient->get()); | ||
89 | if($choix_niv2 !== '') | ||
90 | { | ||
91 | echo "client trouvé\n"; | ||
92 | } | ||
93 | else // chaîne vide | ||
94 | { | ||
95 | echo "client pas trouvé\n"; | ||
96 | exec($NouveauClient->get()); | ||
97 | |||
98 | // enregistrement dans la BDD | ||
99 | |||
100 | } | ||
101 | |||
102 | // récupération des infos dans la BDD | ||
103 | |||
104 | } | ||
105 | else | ||
106 | { | ||
107 | echo "nouveau client\n"; | ||
108 | exec($NouveauClient->get()); | ||
109 | |||
110 | // enregistrement dans la BDD | ||
111 | |||
112 | } | ||
113 | |||
114 | // choix type comptable: devis, facture, cesu | ||
115 | $choix_niv2 = exec($MenuEnregistrement->get()); | ||
116 | $continuer = true; | ||
117 | if($choix_niv2 === $menu_enregistrement_entrees[0]) | ||
118 | { | ||
119 | // | ||
120 | } | ||
121 | elseif($choix_niv2 === $menu_enregistrement_entrees[1]) | ||
122 | { | ||
123 | // | ||
124 | } | ||
125 | elseif($choix_niv2 === $menu_enregistrement_entrees[2]) | ||
126 | { | ||
127 | // | ||
128 | } | ||
129 | elseif($choix_niv2 === $menu_enregistrement_entrees[3]) | ||
130 | { | ||
131 | // | ||
132 | } | ||
133 | else | ||
134 | { | ||
135 | $continuer = false; // retour menu principal | ||
136 | } | ||
137 | |||
138 | // détail de la prestation | ||
139 | if($continuer) | ||
140 | { | ||
141 | exec($Calendrier->get()); | ||
142 | exec($FormulairePrestation->get()); | ||
143 | // enregistrement date et prestation en BDD | ||
144 | exec($CommentairePrestation->get()); | ||
145 | // enregistrement commentaire en BDD | ||
146 | // vérification? | ||
147 | |||
148 | // tableau récaptilatif et demande de confirmation des informations | ||
149 | // création fichiers LaTeX et PDF | ||
150 | |||
151 | // imprimer? | ||
152 | //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"'); | ||
153 | //~ $imprimer_enveloppe = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer l\'adresse sur une enveloppe? (insérer une enveloppe DL sans fenêtre dans l\'imprimante"'); | ||
154 | } | ||
155 | } | ||
156 | |||
157 | elseif($choix_niv1 === $menu_principal_entrees[1]) // = Modifier un enregistrement | ||
158 | {} | ||
159 | |||
160 | elseif($choix_niv1 === $menu_principal_entrees[2]) // = Fichier clients | ||
161 | { | ||
162 | // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? | ||
163 | } | ||
164 | |||
165 | // documents à imprimer | ||
166 | elseif($choix_niv1 === $menu_principal_entrees[3]) // = Créer/imprimer un document | ||
167 | { | ||
168 | $choix_niv2 = exec($MenuDocuments->get()); | ||
169 | if($choix_niv2 === $menu_documents_entrees[0]) | ||
170 | { | ||
171 | |||
172 | } | ||
173 | elseif($choix_niv2 === $menu_documents_entrees[1]) // = Facture | ||
174 | { | ||
175 | |||
176 | } | ||
177 | elseif($choix_niv2 === $menu_documents_entrees[2]) // = Lettre avec adresse | ||
178 | { | ||
179 | |||
180 | } | ||
181 | elseif($choix_niv2 === $menu_documents_entrees[3]) // = Livre des recettes | ||
182 | { | ||
183 | |||
184 | } | ||
185 | elseif($choix_niv2 === $menu_documents_entrees[4]) // = Registre des achats | ||
186 | { | ||
187 | |||
188 | } | ||
189 | elseif($choix_niv2 === $menu_documents_entrees[5]) // = Bilan annuel | ||
190 | { | ||
191 | |||
192 | } | ||
193 | else | ||
194 | { | ||
195 | // retour menu principal | ||
196 | } | ||
197 | } | ||
198 | |||
199 | // Supports de communication | ||
200 | elseif($choix_niv1 === $menu_principal_entrees[4]) // = Communication | ||
201 | { | ||
202 | $choix_niv2 = exec($MenuCommunication->get()); | ||
203 | if($choix_niv2 === $menu_communication_entrees[0]) // = Flyer (nécessite gimp) | ||
204 | { | ||
205 | exec(window_app_command($image_editor, $flyer)); | ||
206 | } | ||
207 | elseif($choix_niv2 === $menu_communication_entrees[1]) // = Carte de visite (nécessite scribus) | ||
208 | { | ||
209 | exec(window_app_command($publishing, $business_card)); | ||
210 | } | ||
211 | elseif($choix_niv2 === $menu_communication_entrees[2]) // = Explorateur de fichiers | ||
212 | { | ||
213 | exec(window_app_command($file_explorer, $pub)); | ||
214 | } | ||
215 | else | ||
216 | { | ||
217 | // retour menu principal | ||
218 | } | ||
219 | } | ||
220 | |||
221 | // BDD | ||
222 | elseif($choix_niv1 === $menu_principal_entrees[5]) // = Base de données | ||
223 | { | ||
224 | if($sqlitebrowser_enable) | ||
225 | { | ||
226 | exec(window_app_command($sqlite_gui, $db_place)); | ||
227 | } | ||
228 | else | ||
229 | { | ||
230 | exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite | ||
231 | } | ||
232 | } | ||
233 | |||
234 | // arrêt | ||
235 | else | ||
236 | { | ||
237 | $boucle = false; | ||
238 | } | ||
239 | } | ||