summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2022-11-27 16:26:54 +0100
committerpolo <ordipolo@gmx.fr>2022-11-27 16:26:54 +0100
commit537599eab12656e8d1ec40b085b687714483f4fc (patch)
tree11d9c76c58a130761ba5517a85ec48eff1312e29
parenta2fdd37ffb5a3cc80b6fedb332024057553148f8 (diff)
downloadAppliGestionPHP-537599eab12656e8d1ec40b085b687714483f4fc.zip
réorganisation
-rw-r--r--config.php57
-rw-r--r--data/ordipolo.sqlitebin0 -> 28672 bytes
-rwxr-xr-xindex.php190
-rwxr-xr-xphp/main.php193
4 files changed, 240 insertions, 200 deletions
diff --git a/config.php b/config.php
index c34309d..754a887 100644
--- a/config.php
+++ b/config.php
@@ -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
diff --git a/index.php b/index.php
index 7bcb87c..dbcf0e2 100755
--- a/index.php
+++ b/index.php
@@ -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
6require('config.php'); // fichier de l'utilisateur 6chdir('php'); // ie de merde?
7//require('config_check.php'); // contrôle de config.php 7require('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
19require('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
20require('php/functions.php');
21 11
22require('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
23require('php/Model.php'); // class Model extends DB, requêtes SQL 13//~ #!/bin/sh
24Connection::$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
27require('php/ZenityClasses.php'); // méthodes pour créer les commandes
28require('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;
35while($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
6require('../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';
16var_dump($db_place);
17$sqlitebrowser_enable = false;
18$sqlite_cli = ''; // commande sqlite ou sqlite3
19$x_term_command = ''; // commande terminal en mode graphique
20
21require('dependances.php'); // vérification des dépendances
22require('functions.php');
23
24require('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à
25require('Model.php'); // class Model extends DB, requêtes SQL
26Connection::$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
29require('ZenityClasses.php'); // méthodes pour créer les commandes
30require('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;
38while($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