diff options
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 | } | ||
