diff options
| author | polo <ordipolo@gmx.fr> | 2022-11-27 16:26:54 +0100 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2022-11-27 16:26:54 +0100 |
| commit | 537599eab12656e8d1ec40b085b687714483f4fc (patch) | |
| tree | 11d9c76c58a130761ba5517a85ec48eff1312e29 | |
| parent | a2fdd37ffb5a3cc80b6fedb332024057553148f8 (diff) | |
| download | AppliGestionPHP-537599eab12656e8d1ec40b085b687714483f4fc.tar.gz AppliGestionPHP-537599eab12656e8d1ec40b085b687714483f4fc.tar.bz2 AppliGestionPHP-537599eab12656e8d1ec40b085b687714483f4fc.zip | |
réorganisation
| -rw-r--r-- | config.php | 57 | ||||
| -rw-r--r-- | data/ordipolo.sqlite | bin | 0 -> 28672 bytes | |||
| -rwxr-xr-x | index.php | 190 | ||||
| -rwxr-xr-x | php/main.php | 193 |
4 files changed, 240 insertions, 200 deletions
| @@ -6,14 +6,32 @@ | |||
| 6 | 6 | ||
| 7 | $business_name = 'ORDIPOLO'; | 7 | $business_name = 'ORDIPOLO'; |
| 8 | 8 | ||
| 9 | // $receipts = '~/ORDIPOLO/Applis_PHP/LaTeX/'; | 9 | // $db_name = "ordipolo"; |
| 10 | $db_name = "ordipolo"; | ||
| 11 | |||
| 12 | // défaut = racine de l'appli = dossier parent de celui du code source | ||
| 13 | // $db_place = '../'; | ||
| 14 | $db_place = '../data/'; | ||
| 15 | |||
| 16 | |||
| 17 | // $receipts = 'LaTeX/'; | ||
| 10 | $receipts = 'LaTeX/'; | 18 | $receipts = 'LaTeX/'; |
| 19 | $receiptsStorageLaTeX = '~ORDIPOLO/factures/LaTeX/'; | ||
| 20 | $receiptsStoragePDF = '~ORDIPOLO/factures/PDF/'; | ||
| 11 | 21 | ||
| 12 | // $quotations = '~/ORDIPOLO/Applis_PHP/LaTeX/'; | 22 | // $quotations = 'LaTeX/'; |
| 13 | $quotations = 'LaTeX/'; | 23 | $quotations = 'LaTeX/'; |
| 24 | $quotationsStorageLaTeX = '~ORDIPOLO/devis/LaTeX/'; | ||
| 25 | $quotationsStoragePDF = '~ORDIPOLO/devis/PDF/'; | ||
| 26 | |||
| 27 | // $envelopes = 'LaTeX/'; | ||
| 28 | $envelopes = 'LaTeX/'; | ||
| 29 | $envelopesStorageLaTeX = '~ORDIPOLO/enveloppes/LaTeX/'; | ||
| 30 | $envelopesStoragePDF = '~ORDIPOLO/enveloppes/PDF/'; | ||
| 14 | 31 | ||
| 15 | // $pub = "~/ORDIPOLO/PUB/"; | 32 | |
| 16 | $pub = "pub/"; | 33 | // $pub = "~/ORDIPOLO/PUB/"; // dossier extérieur au choix |
| 34 | $pub = "../pub/"; // dossier pub inclu dans l'appli | ||
| 17 | 35 | ||
| 18 | // $flyer = "flyer.xcf"; | 36 | // $flyer = "flyer.xcf"; |
| 19 | $flyer = "flyer.xcf"; | 37 | $flyer = "flyer.xcf"; |
| @@ -21,24 +39,29 @@ $flyer = "flyer.xcf"; | |||
| 21 | // $business_card = "carte.sla"; | 39 | // $business_card = "carte.sla"; |
| 22 | $business_card = "carte.sla"; | 40 | $business_card = "carte.sla"; |
| 23 | 41 | ||
| 24 | // $envelopes = '~/ORDIPOLO/Applis_PHP/LaTeX/'; | ||
| 25 | $envelopes = 'LaTeX/'; | ||
| 26 | |||
| 27 | // $db_name = "ordipolo"; | ||
| 28 | $db_name = "ordipolo"; | ||
| 29 | |||
| 30 | // $db_place = '~/ORDIPOLO/Appli_PHP/'; | ||
| 31 | $db_place = ''; | ||
| 32 | |||
| 33 | // $image_editor = 'gimp'; | 42 | // $image_editor = 'gimp'; |
| 34 | $image_editor = 'gimp'; | 43 | $image_editor = 'gimp'; |
| 35 | 44 | ||
| 36 | // $publishing = 'scribus'; | 45 | // $publishing = 'scribus'; |
| 37 | $publishing = 'scribus'; | 46 | $publishing = 'scribus'; |
| 38 | 47 | ||
| 39 | // $x_terminal = 'xterm'; | 48 | |
| 40 | //$x_terminal = 'xterm'; | 49 | //$x_terminal = 'xterm'; |
| 41 | // les terminaux disponibles sont: xterm... | 50 | // -- état actuel du programme -- |
| 51 | // les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé) | ||
| 52 | // ajouter à l'accaz: i3-sensible-terminal (pour i3), lxterminal-qt (pour LXQT, et donc lubuntu) | ||
| 53 | // le choix est automatique en prenant le 1er terminal disponible, ceux-ci sont testés un par un dans l'ordre de la liste ci-dessus | ||
| 54 | |||
| 55 | |||
| 56 | //~ $SGBD = 'sqlite'; | ||
| 57 | //~ $dsn = ''; | ||
| 58 | //~ if($SGBD == 'sqlite') | ||
| 59 | //~ { | ||
| 60 | //~ $dsn = 'sqlite:' . $db_name . '.sqlite'; | ||
| 61 | //~ } | ||
| 62 | //~ // pour la portabilité, ce serait pas mal de fournir le binaire de sqlite (dossier lib) | ||
| 63 | //~ $sqliteBin = '../lib/sqlite_linux'; | ||
| 64 | //~ $sqliteBin = '../lib/sqlite_win.exe'; | ||
| 65 | |||
| 42 | 66 | ||
| 43 | // vérification des variables | 67 | // vérification des variables dans ../php/config_check.php |
| 44 | // dans config_check.php | ||
diff --git a/data/ordipolo.sqlite b/data/ordipolo.sqlite new file mode 100644 index 0000000..6138c54 --- /dev/null +++ b/data/ordipolo.sqlite | |||
| Binary files differ | |||
| @@ -2,189 +2,13 @@ | |||
| 2 | <?php | 2 | <?php |
| 3 | // index.php | 3 | // index.php |
| 4 | 4 | ||
| 5 | // configuration du programme par l'utilisateur | 5 | // le programme peut être lancé sans distinction par le lanceur, par un ./index.php ou par un ./main.php |
| 6 | require('config.php'); // fichier de l'utilisateur | 6 | chdir('php'); // idée de merde? |
| 7 | //require('config_check.php'); // contrôle de config.php | 7 | require('main.php'); |
| 8 | 8 | ||
| 9 | // variables diverses, certaines utilisent les variables de config.php | ||
| 10 | $exec_mode = 'gui'; // les versions pure console (CLI) et serveur web (CGI) de ce programme ne sont pas prévues pour l'instant | ||
| 11 | $file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quand suivi d'un chemin en paramètre | ||
| 12 | $flyer = $pub . $flyer; | ||
| 13 | $business_card = $pub . $business_card; | ||
| 14 | $db_place .= $db_name . '.sqlite'; | ||
| 15 | $sqlitebrowser_enable = false; | ||
| 16 | $sqlite_cli = ''; // commande sqlite ou sqlite3 | ||
| 17 | $x_term_command = ''; // commande terminal en mode graphique | ||
| 18 | 9 | ||
| 19 | require('php/dependances.php'); // vérification des dépendances | 10 | // possibilité de renommer ce fichier AppliGestionPHP.sh et d'adapter le contenu, et d'ajouter un AppliGestionPHP.exe |
| 20 | require('php/functions.php'); | ||
| 21 | 11 | ||
| 22 | require('php/ConnectionDatabase.php'); // class DB extends PDO, connexion à la base et création de la base et des tables si elles n'existent pas déjà | 12 | // contenu de AppliGestionPHP.sh |
| 23 | require('php/Model.php'); // class Model extends DB, requêtes SQL | 13 | //~ #!/bin/sh |
| 24 | Connection::$dsn = 'sqlite:' . $db_name . '.sqlite'; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); | 14 | //~ php php/main.php |
| 25 | $Database = new Model(); // connexion et méthodes pour manipuler la base de données | ||
| 26 | |||
| 27 | require('php/ZenityClasses.php'); // méthodes pour créer les commandes | ||
| 28 | require('php/zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) | ||
| 29 | |||
| 30 | // require('php/latex.php'); | ||
| 31 | // require('php/compileLatex.php'); | ||
| 32 | |||
| 33 | // boucle principale | ||
| 34 | $boucle = true; | ||
| 35 | while($boucle) | ||
| 36 | { | ||
| 37 | // menu principal | ||
| 38 | $choix_niv1 = exec($MenuPrincipal->get()); | ||
| 39 | |||
| 40 | // enregistrement | ||
| 41 | if($choix_niv1 == 'Nouvelle prestation') | ||
| 42 | { | ||
| 43 | // est ce que le client est déjà dans la base? | ||
| 44 | if(exec($QuestionNouveauClient->get()) == 0) // $? = 0 signifie oui | ||
| 45 | { | ||
| 46 | // saisie du nom du client et recherche | ||
| 47 | $client_saisie = exec($RechercheClient->get()); | ||
| 48 | |||
| 49 | // sélection parmi les résultats | ||
| 50 | $ResultatsRechercheClient->set_entries(recherche_client($client_saisie)); | ||
| 51 | $choix_niv2 = exec($ResultatsRechercheClient->get()); | ||
| 52 | if($choix_niv2 != '') | ||
| 53 | { | ||
| 54 | echo "client trouvé\n"; | ||
| 55 | } | ||
| 56 | else // chaîne vide | ||
| 57 | { | ||
| 58 | echo "client pas trouvé\n"; | ||
| 59 | exec($NouveauClient->get()); | ||
| 60 | |||
| 61 | // enregistrement dans la BDD | ||
| 62 | |||
| 63 | } | ||
| 64 | |||
| 65 | // récupération des infos dans la BDD | ||
| 66 | |||
| 67 | } | ||
| 68 | else | ||
| 69 | { | ||
| 70 | echo "nouveau client\n"; | ||
| 71 | exec($NouveauClient->get()); | ||
| 72 | |||
| 73 | // enregistrement dans la BDD | ||
| 74 | |||
| 75 | } | ||
| 76 | |||
| 77 | // infos sur la prestation | ||
| 78 | $choix_niv2 = exec($MenuEnregistrement->get()); | ||
| 79 | $continuer = true; | ||
| 80 | if($choix_niv2 == "Devis") | ||
| 81 | { | ||
| 82 | $type = 'DEVIS'; | ||
| 83 | } | ||
| 84 | elseif($choix_niv2 == "Facture") | ||
| 85 | { | ||
| 86 | $type = 'FACTURE'; | ||
| 87 | } | ||
| 88 | elseif($choix_niv2 == "CESU") | ||
| 89 | { | ||
| 90 | $type = 'CESU'; | ||
| 91 | } | ||
| 92 | elseif($choix_niv2 == "Pas de prestation") | ||
| 93 | { | ||
| 94 | $type = ''; | ||
| 95 | } | ||
| 96 | else | ||
| 97 | { | ||
| 98 | $continuer = false; // retour menu principal | ||
| 99 | } | ||
| 100 | |||
| 101 | if($continuer) | ||
| 102 | { | ||
| 103 | exec($Calendrier->get()); | ||
| 104 | exec($FormulairePrestation->get()); | ||
| 105 | // enregistrement date et prestation en BDD | ||
| 106 | exec($CommentairePrestation->get()); | ||
| 107 | // enregistrement commentaire en BDD | ||
| 108 | } | ||
| 109 | } | ||
| 110 | |||
| 111 | elseif($choix_niv1 == 'Fichier clients') | ||
| 112 | { | ||
| 113 | // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? | ||
| 114 | } | ||
| 115 | |||
| 116 | // documents à imprimer | ||
| 117 | elseif($choix_niv1 == 'Créer/imprimer un document') | ||
| 118 | { | ||
| 119 | $choix_niv2 = exec($MenuDocuments->get()); | ||
| 120 | if($choix_niv2 == 'Devis') | ||
| 121 | { | ||
| 122 | |||
| 123 | } | ||
| 124 | elseif($choix_niv2 == 'Facture') | ||
| 125 | { | ||
| 126 | |||
| 127 | } | ||
| 128 | elseif($choix_niv2 == 'Lettre avec adresse') | ||
| 129 | { | ||
| 130 | |||
| 131 | } | ||
| 132 | elseif($choix_niv2 == 'Livre des recettes') | ||
| 133 | { | ||
| 134 | |||
| 135 | } | ||
| 136 | elseif($choix_niv2 == "Registre des achats") | ||
| 137 | { | ||
| 138 | |||
| 139 | } | ||
| 140 | elseif($choix_niv2 == "Bilan annuel") | ||
| 141 | { | ||
| 142 | |||
| 143 | } | ||
| 144 | else | ||
| 145 | { | ||
| 146 | // retour menu principal | ||
| 147 | } | ||
| 148 | } | ||
| 149 | |||
| 150 | // Supports de communication | ||
| 151 | elseif($choix_niv1 == 'Communication') | ||
| 152 | { | ||
| 153 | $choix_niv2 = exec($MenuCommunication->get()); | ||
| 154 | if($choix_niv2 == 'Flyer (nécessite gimp)') | ||
| 155 | { | ||
| 156 | exec(window_app_command('gimp', $flyer)); | ||
| 157 | } | ||
| 158 | elseif($choix_niv2 == 'Carte de visite (nécessite scribus)') | ||
| 159 | { | ||
| 160 | exec(window_app_command('scribus', $business_card)); | ||
| 161 | } | ||
| 162 | elseif($choix_niv2 == 'Explorateur de fichiers') | ||
| 163 | { | ||
| 164 | exec(window_app_command($file_explorer, $pub)); | ||
| 165 | } | ||
| 166 | else | ||
| 167 | { | ||
| 168 | // retour menu principal | ||
| 169 | } | ||
| 170 | } | ||
| 171 | |||
| 172 | // BDD | ||
| 173 | elseif($choix_niv1 == 'Base de données') | ||
| 174 | { | ||
| 175 | if($sqlitebrowser_enable) | ||
| 176 | { | ||
| 177 | exec(window_app_command('sqlitebrowser', $db_place)); | ||
| 178 | } | ||
| 179 | else | ||
| 180 | { | ||
| 181 | exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite | ||
| 182 | } | ||
| 183 | } | ||
| 184 | else | ||
| 185 | { | ||
| 186 | $boucle = false; // byebye | ||
| 187 | } | ||
| 188 | } | ||
| 189 | |||
| 190 | // sauvegarder la base de données | ||
diff --git a/php/main.php b/php/main.php new file mode 100755 index 0000000..934f718 --- /dev/null +++ b/php/main.php | |||
| @@ -0,0 +1,193 @@ | |||
| 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 | var_dump($db_place); | ||
| 17 | $sqlitebrowser_enable = false; | ||
| 18 | $sqlite_cli = ''; // commande sqlite ou sqlite3 | ||
| 19 | $x_term_command = ''; // commande terminal en mode graphique | ||
| 20 | |||
| 21 | require('dependances.php'); // vérification des dépendances | ||
| 22 | require('functions.php'); | ||
| 23 | |||
| 24 | require('ConnectionDatabase.php'); // class DB extends PDO, connexion à la base et création de la base et des tables si elles n'existent pas déjà | ||
| 25 | require('Model.php'); // class Model extends DB, requêtes SQL | ||
| 26 | Connection::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); | ||
| 27 | $Database = new Model(); // connexion et méthodes pour manipuler la base de données | ||
| 28 | |||
| 29 | require('ZenityClasses.php'); // méthodes pour créer les commandes | ||
| 30 | require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) | ||
| 31 | |||
| 32 | // require('php/latex.php'); | ||
| 33 | // require('php/compileLatex.php'); | ||
| 34 | |||
| 35 | |||
| 36 | // boucle principale | ||
| 37 | $boucle = true; | ||
| 38 | while($boucle) | ||
| 39 | { | ||
| 40 | // menu principal | ||
| 41 | $choix_niv1 = exec($MenuPrincipal->get()); | ||
| 42 | |||
| 43 | // enregistrement | ||
| 44 | if($choix_niv1 == 'Nouvelle prestation') | ||
| 45 | { | ||
| 46 | // est ce que le client est déjà dans la base? | ||
| 47 | if(exec($QuestionNouveauClient->get()) == 0) // $? = 0 signifie oui | ||
| 48 | { | ||
| 49 | // saisie du nom du client et recherche | ||
| 50 | $client_saisie = exec($RechercheClient->get()); | ||
| 51 | |||
| 52 | // sélection parmi les résultats | ||
| 53 | $ResultatsRechercheClient->set_entries(recherche_client($client_saisie)); | ||
| 54 | $choix_niv2 = exec($ResultatsRechercheClient->get()); | ||
| 55 | if($choix_niv2 != '') | ||
| 56 | { | ||
| 57 | echo "client trouvé\n"; | ||
| 58 | } | ||
| 59 | else // chaîne vide | ||
| 60 | { | ||
| 61 | echo "client pas trouvé\n"; | ||
| 62 | exec($NouveauClient->get()); | ||
| 63 | |||
| 64 | // enregistrement dans la BDD | ||
| 65 | |||
| 66 | } | ||
| 67 | |||
| 68 | // récupération des infos dans la BDD | ||
| 69 | |||
| 70 | } | ||
| 71 | else | ||
| 72 | { | ||
| 73 | echo "nouveau client\n"; | ||
| 74 | exec($NouveauClient->get()); | ||
| 75 | |||
| 76 | // enregistrement dans la BDD | ||
| 77 | |||
| 78 | } | ||
| 79 | |||
| 80 | // infos sur la prestation | ||
| 81 | $choix_niv2 = exec($MenuEnregistrement->get()); | ||
| 82 | $continuer = true; | ||
| 83 | if($choix_niv2 == "Devis") | ||
| 84 | { | ||
| 85 | $type = 'DEVIS'; | ||
| 86 | } | ||
| 87 | elseif($choix_niv2 == "Facture") | ||
| 88 | { | ||
| 89 | $type = 'FACTURE'; | ||
| 90 | } | ||
| 91 | elseif($choix_niv2 == "CESU") | ||
| 92 | { | ||
| 93 | $type = 'CESU'; | ||
| 94 | } | ||
| 95 | elseif($choix_niv2 == "Pas de prestation") | ||
| 96 | { | ||
| 97 | $type = ''; | ||
| 98 | } | ||
| 99 | else | ||
| 100 | { | ||
| 101 | $continuer = false; // retour menu principal | ||
| 102 | } | ||
| 103 | |||
| 104 | if($continuer) | ||
| 105 | { | ||
| 106 | exec($Calendrier->get()); | ||
| 107 | exec($FormulairePrestation->get()); | ||
| 108 | // enregistrement date et prestation en BDD | ||
| 109 | exec($CommentairePrestation->get()); | ||
| 110 | // enregistrement commentaire en BDD | ||
| 111 | } | ||
| 112 | } | ||
| 113 | |||
| 114 | elseif($choix_niv1 == 'Fichier clients') | ||
| 115 | { | ||
| 116 | // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? | ||
| 117 | } | ||
| 118 | |||
| 119 | // documents à imprimer | ||
| 120 | elseif($choix_niv1 == 'Créer/imprimer un document') | ||
| 121 | { | ||
| 122 | $choix_niv2 = exec($MenuDocuments->get()); | ||
| 123 | if($choix_niv2 == 'Devis') | ||
| 124 | { | ||
| 125 | |||
| 126 | } | ||
| 127 | elseif($choix_niv2 == 'Facture') | ||
| 128 | { | ||
| 129 | |||
| 130 | } | ||
| 131 | elseif($choix_niv2 == 'Lettre avec adresse') | ||
| 132 | { | ||
| 133 | |||
| 134 | } | ||
| 135 | elseif($choix_niv2 == 'Livre des recettes') | ||
| 136 | { | ||
| 137 | |||
| 138 | } | ||
| 139 | elseif($choix_niv2 == "Registre des achats") | ||
| 140 | { | ||
| 141 | |||
| 142 | } | ||
| 143 | elseif($choix_niv2 == "Bilan annuel") | ||
| 144 | { | ||
| 145 | |||
| 146 | } | ||
| 147 | else | ||
| 148 | { | ||
| 149 | // retour menu principal | ||
| 150 | } | ||
| 151 | } | ||
| 152 | |||
| 153 | // Supports de communication | ||
| 154 | elseif($choix_niv1 == 'Communication') | ||
| 155 | { | ||
| 156 | $choix_niv2 = exec($MenuCommunication->get()); | ||
| 157 | if($choix_niv2 == 'Flyer (nécessite gimp)') | ||
| 158 | { | ||
| 159 | exec(window_app_command('gimp', $flyer)); | ||
| 160 | } | ||
| 161 | elseif($choix_niv2 == 'Carte de visite (nécessite scribus)') | ||
| 162 | { | ||
| 163 | exec(window_app_command('scribus', $business_card)); | ||
| 164 | } | ||
| 165 | elseif($choix_niv2 == 'Explorateur de fichiers') | ||
| 166 | { | ||
| 167 | exec(window_app_command($file_explorer, $pub)); | ||
| 168 | } | ||
| 169 | else | ||
| 170 | { | ||
| 171 | // retour menu principal | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | // BDD | ||
| 176 | elseif($choix_niv1 == 'Base de données') | ||
| 177 | { | ||
| 178 | if($sqlitebrowser_enable) | ||
| 179 | { | ||
| 180 | exec(window_app_command('sqlitebrowser', $db_place)); | ||
| 181 | } | ||
| 182 | else | ||
| 183 | { | ||
| 184 | exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite | ||
| 185 | } | ||
| 186 | } | ||
| 187 | else | ||
| 188 | { | ||
| 189 | $boucle = false; // byebye | ||
| 190 | } | ||
| 191 | } | ||
| 192 | |||
| 193 | // sauvegarder la base de données | ||
