summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2023-07-22 12:29:47 +0200
committerpolo <ordipolo@gmx.fr>2023-07-22 12:29:47 +0200
commit747674b450d6840ce9bd9aecd765cf31445ef8d3 (patch)
tree46e47fd65c751e1951d9aa8438aea1b8c2d8aece
parent9bdfb5196a2ee1cbfc403702e8d2ef88076d366f (diff)
downloadAppliGestionPHP-747674b450d6840ce9bd9aecd765cf31445ef8d3.zip
navigation entre sections, boucle principale, client ou prospect
-rw-r--r--data/dev.sqlitebin36864 -> 36864 bytes
-rw-r--r--src/Dates.php10
-rw-r--r--src/Latex.php94
-rw-r--r--src/functions.php118
-rwxr-xr-xsrc/main.php130
-rw-r--r--src/model/Clients.php6
-rw-r--r--src/model/Model.php13
-rw-r--r--src/model/StructTablesDB.php2
-rw-r--r--src/model/traits.php2
-rw-r--r--src/sections/1_customer.php48
-rw-r--r--src/sections/2_quotations.php9
-rw-r--r--src/sections/2_service.php (renamed from src/sections/1_new_service.php)118
-rw-r--r--src/sections/3_modify_data.php9
-rw-r--r--src/sections/3_modify_service.php9
-rw-r--r--src/sections/4_get_document.php55
-rw-r--r--src/sections/main_loop.php106
-rw-r--r--src/view/ZenitySetup.php15
17 files changed, 454 insertions, 290 deletions
diff --git a/data/dev.sqlite b/data/dev.sqlite
index 841d187..857931f 100644
--- a/data/dev.sqlite
+++ b/data/dev.sqlite
Binary files differ
diff --git a/src/Dates.php b/src/Dates.php
index eb57ca8..2fe93cb 100644
--- a/src/Dates.php
+++ b/src/Dates.php
@@ -32,24 +32,24 @@ class Dates
32 // getters 32 // getters
33 public function getDate(): string 33 public function getDate(): string
34 { 34 {
35 return($this->date); 35 return $this->date;
36 } 36 }
37 public function getDay(): string 37 public function getDay(): string
38 { 38 {
39 return($this->day); 39 return $this->day;
40 } 40 }
41 public function getMonth(): string 41 public function getMonth(): string
42 { 42 {
43 return($this->month); 43 return $this->month;
44 } 44 }
45 public function getYear(): string 45 public function getYear(): string
46 { 46 {
47 return($this->year); 47 return $this->year;
48 } 48 }
49 49
50 public function getTimestamp(): int 50 public function getTimestamp(): int
51 { 51 {
52 return($this->timestamp); 52 return $this->timestamp;
53 } 53 }
54 54
55 55
diff --git a/src/Latex.php b/src/Latex.php
index 051c48b..547c130 100644
--- a/src/Latex.php
+++ b/src/Latex.php
@@ -12,7 +12,7 @@ abstract class Latex
12 protected $data = []; // données à insérer dans le template 12 protected $data = []; // données à insérer dans le template
13 protected $latex = ''; // latex pur 13 protected $latex = ''; // latex pur
14 14
15 static function makeLatexSubClass(string $type): Object 15 static function makeLatexSubClass(string $type)
16 { 16 {
17 switch($type) 17 switch($type)
18 { 18 {
@@ -27,16 +27,20 @@ abstract class Latex
27 return new EnveloppeRectoLatex($type); 27 return new EnveloppeRectoLatex($type);
28 case 'enveloppe_verso': 28 case 'enveloppe_verso':
29 return new EnveloppeVersoLatex($type); 29 return new EnveloppeVersoLatex($type);
30 // pas de document
31 case 'cesu':
32 return null;
33 case 'non_vendue':
34 return null;
30 35
31 // documents pour la compta 36 // documents pour la compta
32 37
33 // erreur 38 // erreur
34 default: 39 default:
35 echo 'erreur, la sous-classe latex à initialiser n\'existe pas'; 40 echo "erreur, la sous-classe latex à initialiser n'existe pas\n";
36 } 41 }
37 } 42 }
38 43
39 // tester en private?
40 public function __construct(string $type) 44 public function __construct(string $type)
41 { 45 {
42 $this->type = $type; 46 $this->type = $type;
@@ -70,30 +74,28 @@ abstract class Latex
70 { 74 {
71 return $this->pdf_path; 75 return $this->pdf_path;
72 } 76 }
73
74 public function getLatex(): string 77 public function getLatex(): string
75 { 78 {
76 return $this->latex; 79 return $this->latex;
77 } 80 }
78 81
79 // setters 82 // setters
80 public function setFileName(string $file_name) 83 //~ public function setFileName(string $file_name)
81 { 84 //~ {
82 $this->file_name = $file_name; 85 //~ $this->file_name = $file_name;
83 } 86 //~ }
84 public function setLatexPath(string $latex_path) 87 //~ public function setLatexPath(string $latex_path)
85 { 88 //~ {
86 $this->latex_path = $latex_path; 89 //~ $this->latex_path = $latex_path;
87 } 90 //~ }
88 public function setPdfPath(string $pdf_path) 91 //~ public function setPdfPath(string $pdf_path)
89 { 92 //~ {
90 $this->pdf_path = $pdf_path; 93 //~ $this->pdf_path = $pdf_path;
91 } 94 //~ }
92 95
93 public function setData(Object $Object) 96 public function setData(Object $Object)
94 { 97 {
95 $this->data = array_merge($this->data, $Object->getAll()); // nécessite des tableaux associatifs 98 $this->data = array_merge($this->data, $Object->getAll()); // nécessite des tableaux associatifs
96 //return $Object; // pour chainer les méthodes
97 } 99 }
98} 100}
99 101
@@ -101,24 +103,36 @@ abstract class Latex
101abstract class PrestaLatex extends Latex 103abstract class PrestaLatex extends Latex
102{ 104{
103 protected $Date; // sera un type "Dates" 105 protected $Date; // sera un type "Dates"
104 protected $year = '';
105 106
106 //~ public function __construct(string $type) // surcharge Latex::__construct() 107 //~ public function __construct(string $type)
107 //~ { 108 //~ {
108 //~ $this->type = $type; 109 //~ $this->type = $type;
109 //~ $this->Date = new Dates();
110 //~ $this->year = $this->Date->getYear();
111 //~ } 110 //~ }
112 111
113 public function getYear(): string // parce que Dates::getDate() retourne une chaine 112 public function setData(Object $Object): self
114 { 113 {
115 return $this->year; 114 $this->data = array_merge($this->data, $Object->getAll()); // nécessite des tableaux associatifs
115
116 if(get_class($Object) === 'Prestations')
117 {
118 $this->file_name = $Object->getCodePresta() . '.tex';
119 $this->makeDateInstance($Object->getDate()); // paramètre = int
120
121 $this->latex_path = Config::$latex_path . $this->Date->getYear() . '/';
122 $this->pdf_path = Config::$pdf_path . $this->Date->getYear() . '/';
123 }
124
125 return $this; // pour chainer les méthodes
116 } 126 }
117 127
118 public function makeDateInstance(int $date) 128 //~ public function getYear(): string // parce que Dates::getDate() retourne une chaine
129 //~ {
130 //~ return $this->year;
131 //~ }
132
133 protected function makeDateInstance(int $timestamp)
119 { 134 {
120 $this->Date = new Dates($date); 135 $this->Date = new Dates($timestamp);
121 $this->year = $this->Date->getYear();
122 } 136 }
123 137
124 // forme = code-presta.tex 138 // forme = code-presta.tex
@@ -143,23 +157,45 @@ abstract class PrestaLatex extends Latex
143 //return($latex); 157 //return($latex);
144 } 158 }
145} 159}
146
147class DevisLatex extends PrestaLatex // extends Latex 160class DevisLatex extends PrestaLatex // extends Latex
148{} 161{}
149class FactureLatex extends PrestaLatex // extends Latex 162class FactureLatex extends PrestaLatex // extends Latex
150{} 163{}
151class LocationLatex extends PrestaLatex // extends Latex 164class LocationLatex extends PrestaLatex // extends Latex
152{} 165{}
166
153class EnveloppeRectoLatex extends Latex 167class EnveloppeRectoLatex extends Latex
154{ 168{
169 public function __construct(string $type)
170 {
171 $this->type = $type;
172 $this->latex_path = Config::$latex_path . 'enveloppes_recto/';
173 $this->pdf_path = Config::$pdf_path . 'enveloppes_recto/';
174 }
175
176 public function setData(Object $Client) // ici de type Clients
177 {
178 $this->file_name = $Client->getCodeClient() . '.tex';
179 $this->data = array_merge($this->data, $Client->getAll()); // nécessite des tableaux associatifs
180 $this->spacesInPostCode(); // nécessite $this->data
181 }
182
155 // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0 183 // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0
156 public function spacesInPostCode() 184 protected function spacesInPostCode()
157 { 185 {
158 $this->data['code_postal_espaces'] = implode(' \ ', str_split($this->data['code_postal'])); 186 $this->data['code_postal_espaces'] = implode(' \ ', str_split($this->data['code_postal']));
159 } 187 }
160} 188}
161class EnveloppeVersoLatex extends Latex 189class EnveloppeVersoLatex extends Latex
162{} 190{
191 public function __construct(string $type)
192 {
193 $this->type = $type;
194 $this->file_name = 'enveloppe_verso.tex';
195 $this->latex_path = Config::$latex_path;
196 $this->pdf_path = Config::$pdf_path;
197 }
198}
163 199
164 200
165 201
diff --git a/src/functions.php b/src/functions.php
index aaacb36..f78b23d 100644
--- a/src/functions.php
+++ b/src/functions.php
@@ -22,21 +22,45 @@ function windowAppCommand(string $app, string $path = ''): string
22 return $command; 22 return $command;
23} 23}
24 24
25function makeObjectCLient() 25function enterCustomer($Client): bool
26{
27 // fenêtre
28 $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees);
29
30 $input = exec($NouveauClient->get());
31 if($input == '')
32 {
33 echo "debug: annulation lors de l'enregistrement d'un nouveau client\n";
34 return false;
35 }
36 if(!$Client->hydrateFromForm($input))
37 {
38 // messages d'erreur dans hydrateFromForm()
39 return false;
40 }
41 unset($input);
42
43 $Client->create(); // écrire dans la base
44 $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
45
46 return true;
47}
48
49function makeObjectClient()
26{ 50{
27 // fenêtres 51 // fenêtres
28 $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text); 52 //~ $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text);
29 $RechercheClient = new zenityEntry(ZenitySetup::$recherche_client_text); 53 $RechercheClient = new zenityEntry(ZenitySetup::$recherche_client_text);
30 $ResultatsRechercheClient = new ZenityList(ZenitySetup::$resultats_recherche_client_text, []); 54 $ResultatsRechercheClient = new ZenityList(ZenitySetup::$resultats_recherche_client_text, []);
31 $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees); 55 //~ $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees);
32 56
33 $Client = new Clients; 57 $Client = new Clients;
34 58
35 // est ce que le client est déjà dans la base? 59 // est ce que le client est déjà dans la base?
36 $client_inconnu = true; 60 //~ $client_inconnu = true;
37 if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage 61 //~ if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage
38 { 62 //~ {
39 echo "choix: recherche d'une client\n"; 63 //~ echo "choix: recherche d'une client\n";
40 $input = exec($RechercheClient->get()); 64 $input = exec($RechercheClient->get());
41 if($input == '') 65 if($input == '')
42 { 66 {
@@ -45,7 +69,7 @@ function makeObjectCLient()
45 } 69 }
46 70
47 echo "debug: recherche effectuée\n"; 71 echo "debug: recherche effectuée\n";
48 $ResultatsRechercheClient->setListRows(rechercheClient($input, $Client), $Client->getTable()); // recherche silencieuse 72 $ResultatsRechercheClient->setListRows(searchCustomer($input, $Client), $Client->getTable()); // recherche silencieuse
49 73
50 // sélection parmi les résultats 74 // sélection parmi les résultats
51 $input = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients' 75 $input = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients'
@@ -59,31 +83,31 @@ function makeObjectCLient()
59 83
60 echo "debug: client sélectionné\n"; 84 echo "debug: client sélectionné\n";
61 $Client->hydrate($Client->findById($input)); 85 $Client->hydrate($Client->findById($input));
62 $client_inconnu = false; 86 //~ $client_inconnu = false;
63 } 87 //~ }
64 else 88 //~ else
65 { 89 //~ {
66 echo "choix: nouveau client\n"; 90 //~ echo "choix: nouveau client\n";
67 } 91 //~ }
68 92
69 // on n'a pas cherché OU on n'a pas trouvé 93 // on n'a pas cherché OU on n'a pas trouvé
70 if($client_inconnu) 94 //~ if($client_inconnu)
71 { 95 //~ {
72 $input = exec($NouveauClient->get()); 96 //~ $input = exec($NouveauClient->get());
73 if($input == '') 97 //~ if($input == '')
74 { 98 //~ {
75 echo "debug: annulation lors de l'enregistrement d'un nouveau client\n"; 99 //~ echo "debug: annulation lors de l'enregistrement d'un nouveau client\n";
76 return 0; 100 //~ return 0;
77 } 101 //~ }
78 if(!$Client->hydrateFromForm($input)) 102 //~ if(!$Client->hydrateFromForm($input))
79 { 103 //~ {
80 // messages d'erreur dans hydrateFromForm() 104 //~ // messages d'erreur dans hydrateFromForm()
81 return 0; 105 //~ return 0;
82 } 106 //~ }
83 unset($input); 107 //~ unset($input);
84 $Client->create(); 108 //~ $Client->create();
85 $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId() 109 //~ $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
86 } 110 //~ }
87 111
88 return $Client; 112 return $Client;
89} 113}
@@ -93,7 +117,7 @@ function makeObjectCLient()
93// NOTE 3: la variable créée lors d'un "new" est elle-même une référence contenant un identifiant (= le pointeur?) 117// NOTE 3: la variable créée lors d'un "new" est elle-même une référence contenant un identifiant (= le pointeur?)
94// NOTE 4: l'objet est détruit lorsque la dernière référence est supprimée 118// NOTE 4: l'objet est détruit lorsque la dernière référence est supprimée
95 119
96function rechercheClient(string $input, Clients $Client): array 120function searchCustomer(string $input, Clients $Client): array
97{ 121{
98 $input_array = explode(' ', $input); // si plusieurs mot, on les recherche tous l'un après l'autre 122 $input_array = explode(' ', $input); // si plusieurs mot, on les recherche tous l'un après l'autre
99 $result = $Client->findByKeywords($input_array, 'prenom_nom'); // on obtient un tableau à deux dimensions avec les entrées trouvées 123 $result = $Client->findByKeywords($input_array, 'prenom_nom'); // on obtient un tableau à deux dimensions avec les entrées trouvées
@@ -101,6 +125,17 @@ function rechercheClient(string $input, Clients $Client): array
101} 125}
102 126
103 127
128function makeTexAndPdf(Object $Object)
129{
130 if(get_class($Object) !== 'EnveloppeVersoLatex')
131 {
132 makeFolder($Object->getLatexPath());
133 makeFolder($Object->getPdfPath());
134 }
135 makeFile($Object->getLatexPath(), $Object->getFileName(), $Object->getLatex());
136 latexToPdf($Object->getLatexPath(), $Object->getFileName(), $Object->getPdfPath());
137}
138
104//~ function makeLatexAndPdfDocuments(Clients $Client = null, Prestations $Presta = null, $PrestaDetails = null) 139//~ function makeLatexAndPdfDocuments(Clients $Client = null, Prestations $Presta = null, $PrestaDetails = null)
105//~ { 140//~ {
106 //~ $latex = ''; 141 //~ $latex = '';
@@ -166,22 +201,3 @@ function rechercheClient(string $input, Clients $Client): array
166 //~ } 201 //~ }
167 //~ } 202 //~ }
168//~ } 203//~ }
169
170//~ function makeLatex(string $type, array $data = [], Dates $Date = null)
171//~ {
172 //~ $date = '';
173 //~ if($Date != null)
174 //~ {
175 //~ $date = $Date->getDate();
176 //~ $date = preg_replace('#\D#', '/', $date); // date avec des slashs / parce que j'aime bien
177 //~ }
178
179 //~ // on obtient la variable $latex avec ob_get_clean()
180 //~ // le include() ici, c'est du génie ou c'est moche ou les deux?
181 //~ // un nouveau fichier php est inséré à chaque itération
182 //~ include('latex_templates/' . $type . '.php');
183
184 //~ // on retourne le buffer
185 //~ // normallement le code PHP inséré avec include est nettoyé en quittant la fonction
186 //~ return($latex);
187//~ }
diff --git a/src/main.php b/src/main.php
index 7bf8470..a0b973b 100755
--- a/src/main.php
+++ b/src/main.php
@@ -49,132 +49,6 @@ require('view/ZenitySetup.php'); // texte dans les fenêtres ET instanciation (u
49 49
50require('Latex.php'); // générer le code LaTeX 50require('Latex.php'); // générer le code LaTeX
51 51
52require('sections/1_new_service.php');
53require('sections/2_quotations.php');
54require('sections/3_modify_service.php');
55 52
56// boucle principale 53// action !!
57$boucle = true; 54require('sections/main_loop.php');
58$code_retour = 0; // 0 dirige vers le menu principal, 1 vers la section 1, etc
59while($boucle)
60{
61 // niveau 1: menu principal
62 if($code_retour === 0)
63 {
64 $MenuPrincipal = new ZenityList(ZenitySetup::$menu_principal_text, ZenitySetup::$menu_principal_entrees);
65 $choix_niv1 = exec($MenuPrincipal->get());
66 }
67 else
68 {
69 $choix_niv1 = '';
70 }
71
72
73 // -- SECTION 1: Nouvelle prestation --
74 if($choix_niv1 === ZenitySetup::$menu_principal_entrees[0] || $code_retour === 1)
75 {
76 echo("choix: $choix_niv1\n");
77 $code_retour = newService();
78 echo "debug: main.php: hello, code retour " . $code_retour . "\n";
79 }
80
81 // -- SECTION 2: Devis --
82 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $code_retour === 2)
83 {
84 echo("choix: $choix_niv1\n");
85 $code_retour = modifyService();
86 }
87 // -- SECTION 3: Modifier un enregistrement --
88 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $code_retour === 3)
89 {
90 echo("choix: $choix_niv1\n");
91 $code_retour = modifyService();
92 }
93
94 // -- SECTION 4: Consulter/analyser les données --
95 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $code_retour === 4)
96 {
97 echo("choix: $choix_niv1\n");
98 // quel affichage? des tableaux avec zenity? LaTeX? une page web? un autre outil servant à faire des tableaux et graphiques
99 }
100
101 // -- SECTION 5: Imprimer --
102 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $code_retour === 5) // = Imprimer un document
103 {
104 echo("choix: $choix_niv1\n");
105 $MenuDocuments = new ZenityList(ZenitySetup::$menu_documents_text, ZenitySetup::$menu_documents_entrees);
106 $choix_niv2 = exec($MenuDocuments->get());
107 if($choix_niv2 === ZenitySetup::$menu_documents_entrees[0])
108 {
109
110 }
111 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[1]) // = Facture
112 {
113
114 }
115 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[2]) // = Lettre avec adresse
116 {
117
118 }
119 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[3]) // = Livre des recettes
120 {
121
122 }
123 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[4]) // = Registre des achats
124 {
125
126 }
127 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[5]) // = Bilan annuel
128 {
129
130 }
131 else
132 {
133 // retour menu principal
134 }
135 }
136
137 // -- SECTION 6: Supports de communication --
138 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $code_retour === 6) // = Communication
139 {
140 echo("choix: $choix_niv1\n");
141 $MenuCommunication = new ZenityList(ZenitySetup::$menu_communication_text, ZenitySetup::$menu_communication_entrees);
142 $choix_niv2 = exec($MenuCommunication->get());
143 if($choix_niv2 === ZenitySetup::$menu_communication_entrees[0]) // = Flyer (nécessite gimp)
144 {
145 exec(windowAppCommand($image_editor, $flyer));
146 }
147 elseif($choix_niv2 === ZenitySetup::$menu_communication_entrees[1]) // = Carte de visite (nécessite scribus)
148 {
149 exec(windowAppCommand($publishing, $business_card));
150 }
151 elseif($choix_niv2 === ZenitySetup::$menu_communication_entrees[2]) // = Explorateur de fichiers
152 {
153 exec(windowAppCommand($file_explorer, $pub));
154 }
155 else
156 {
157 // retour menu principal
158 }
159 }
160
161 // -- SECTION 7: BDD --
162 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[6] || $code_retour === 7) // = Base de données
163 {
164 echo("choix: $choix_niv1\n");
165 if($sqlitebrowser_enable)
166 {
167 exec(windowAppCommand(Config::$sqlite_gui, Config::$db_path));
168 }
169 else
170 {
171 exec($x_term_command . ' ' . $sqlite_cli . ' ' . Config::$db_path); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite
172 }
173 }
174
175 // arrêt
176 else
177 {
178 $boucle = false;
179 }
180}
diff --git a/src/model/Clients.php b/src/model/Clients.php
index d9dd28d..f36acc1 100644
--- a/src/model/Clients.php
+++ b/src/model/Clients.php
@@ -13,6 +13,7 @@ class Clients extends Model
13 protected $telephone; 13 protected $telephone;
14 protected $courriel; 14 protected $courriel;
15 protected $apropos; 15 protected $apropos;
16 protected $type = 'prospect';
16 17
17 //~ use ModelChildren; 18 //~ use ModelChildren;
18 19
@@ -81,6 +82,11 @@ class Clients extends Model
81 $this->apropos = (string) $value; 82 $this->apropos = (string) $value;
82 return $this; 83 return $this;
83 } 84 }
85 public function setType($value)
86 {
87 $this->type = (string) $value;
88 return $this;
89 }
84 90
85 91
86 public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite 92 public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite
diff --git a/src/model/Model.php b/src/model/Model.php
index 17d1292..3fb3bdf 100644
--- a/src/model/Model.php
+++ b/src/model/Model.php
@@ -43,7 +43,7 @@ abstract class Model extends DB
43 foreach($data as $key => $value) 43 foreach($data as $key => $value)
44 { 44 {
45 // nom du setter 45 // nom du setter
46 // nom_du_champ devient setNomDuChamp 46 // nom_propriete => setPropriete
47 // on sépare les mots par des espaces, ucwords met la première lettre de chaque mot en majuscule, puis on supprime les espaces 47 // on sépare les mots par des espaces, ucwords met la première lettre de chaque mot en majuscule, puis on supprime les espaces
48 $setter_name = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); // ucwords: première lettre de chaque mot en majuscule 48 $setter_name = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); // ucwords: première lettre de chaque mot en majuscule
49 if(method_exists($this, $setter_name)) 49 if(method_exists($this, $setter_name))
@@ -207,7 +207,7 @@ abstract class Model extends DB
207 207
208 208
209 // update UPDATE 209 // update UPDATE
210 public function update(int $id) 210 public function update(int $id) // utiliser plutôt $this->ID ?
211 { 211 {
212 $fields = []; 212 $fields = [];
213 $values = []; 213 $values = [];
@@ -219,13 +219,18 @@ abstract class Model extends DB
219 $values[] = $value; 219 $values[] = $value;
220 } 220 }
221 } 221 }
222 $values[] = $id; 222 $values[] = $id; // cette syntaxe ajoute une valeur au tableau
223 $field_list = implode(', ', $fields); 223 $field_list = implode(', ', $fields);
224 224
225 // UPDATE annonces SET titre = ?, description = ?, actif = ? WHERE id= ? 225 // UPDATE annonces SET titre = ?, description = ?, actif = ? WHERE id = ?
226 return($this->execQuery('UPDATE ' . $this->table . ' SET ' . $field_list . ' WHERE id = ?', $values)); 226 return($this->execQuery('UPDATE ' . $this->table . ' SET ' . $field_list . ' WHERE id = ?', $values));
227 } 227 }
228 228
229 public function updateOneValue(string $field, $value)
230 {
231 return($this->execQuery('UPDATE ' . $this->table . ' SET ' . $field . ' = ? WHERE id = ?', [$value, $this->ID]));
232 }
233
229 234
230 // delete DELETE 235 // delete DELETE
231 protected function delete(int $id) 236 protected function delete(int $id)
diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php
index 75a4383..769d502 100644
--- a/src/model/StructTablesDB.php
+++ b/src/model/StructTablesDB.php
@@ -9,7 +9,7 @@ class StructTablesDB
9 static public $structureOfTables = [ 9 static public $structureOfTables = [
10 // la table prestations est liée à la table clients 10 // la table prestations est liée à la table clients
11 // les tables devis_factures, cesu et locations sont liées à la table prestations 11 // les tables devis_factures, cesu et locations sont liées à la table prestations
12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'code_client' => 'TEXT', 'adresse' => 'TEXT', 'code_postal' => 'TEXT', 'ville' => 'TEXT', 'telephone' => 'TEXT', 'courriel' => 'TEXT', 'apropos' => 'TEXT'], 12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'code_client' => 'TEXT', 'adresse' => 'TEXT', 'code_postal' => 'TEXT', 'ville' => 'TEXT', 'telephone' => 'TEXT', 'courriel' => 'TEXT', 'apropos' => 'TEXT', 'type' => 'TEXT DEFAULT prospect'],
13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], 13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'],
14 'devis' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL', 'delai_livraison' => 'TEXT', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT'], 14 'devis' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL', 'delai_livraison' => 'TEXT', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT'],
15 'factures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], 15 'factures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'],
diff --git a/src/model/traits.php b/src/model/traits.php
index 03121be..88451d9 100644
--- a/src/model/traits.php
+++ b/src/model/traits.php
@@ -1,7 +1,7 @@
1<?php 1<?php
2// src/model/traits.php 2// src/model/traits.php
3// 3//
4// fonctions à utiliser par les enfants de Model 4// fonctions "partagées" par les enfants de Model
5 5
6trait ModelChildren 6trait ModelChildren
7{ 7{
diff --git a/src/sections/1_customer.php b/src/sections/1_customer.php
new file mode 100644
index 0000000..cdec448
--- /dev/null
+++ b/src/sections/1_customer.php
@@ -0,0 +1,48 @@
1<?php
2// src/sections/1_customer.php
3//
4// -- SECTION 1: Fichier clients et propects --
5
6function newCustomer(): array
7{
8 // fenêtres
9 $TypeDeClient = new ZenityList(ZenitySetup::$type_client_text, ZenitySetup::$type_client_entrees);
10 //~ $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees);
11 $FinSection1 = new ZenityList(ZenitySetup::$fin_section_1_text, ZenitySetup::$fin_section_1_entrees);
12
13 // -- partie 1: client ou prospect? --
14 $Client = new Clients;
15 if(exec($TypeDeClient->get()) === 'Client')
16 {
17 $Client->setType('client');
18 }
19 //~ else //
20 //~ {
21 //~ $Client->setType('prospect');
22 //~ }
23
24 // -- partie 2: saisie des infos --
25 if(enterCustomer($Client))
26 {
27 // -- partie 3: on fait quoi maintenant --
28 $choix_niv2 = exec($FinSection1->get());
29 if($choix_niv2 === ZenitySetup::$fin_section_1_entrees[0])
30 {
31 return [2, $Client]; // section 2: newService()
32 }
33 elseif($choix_niv2 === ZenitySetup::$fin_section_1_entrees[1])
34 {
35 return [3, $Client]; // section 3: modifyData()
36 }
37 elseif($choix_niv2 === ZenitySetup::$fin_section_1_entrees[2])
38 {
39 return [1, null]; // relancer section 1: newCustomer()
40 }
41 else
42 {
43 return [0, null]; // menu principal
44 }
45 }
46
47 return [0, null]; // menu principal
48}
diff --git a/src/sections/2_quotations.php b/src/sections/2_quotations.php
deleted file mode 100644
index 76b66fd..0000000
--- a/src/sections/2_quotations.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2// src/sections/2_quotations.php
3//
4// -- SECTION 2: Devis --
5
6function quotation(): int // code de retour, si 2 aller à la section 2, etc
7{
8 return(0); // menu principal
9}
diff --git a/src/sections/1_new_service.php b/src/sections/2_service.php
index 6f5a72c..8109b31 100644
--- a/src/sections/1_new_service.php
+++ b/src/sections/2_service.php
@@ -1,9 +1,9 @@
1<?php 1<?php
2// src/sections/1_new_service.php 2// src/sections/2_service.php
3// 3//
4// -- SECTION 1: Nouvelle prestation -- 4// -- SECTION 2: Prestation et devis --
5 5
6function newService(): int // code de retour, si 0 retour menu principal, si 2 aller à la section 2, etc 6function newService($Client): array // $Client est un Client ou null
7{ 7{
8 // fenêtres 8 // fenêtres
9 $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees); 9 $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees);
@@ -14,14 +14,19 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
14 $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees); 14 $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees);
15 $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text); 15 $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text);
16 $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
17 $QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text); 17 //$QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text);
18 $FinSection2 = new ZenityList(ZenitySetup::$fin_section_2_text, ZenitySetup::$fin_section_2_entrees);
18 19
19 20
20 // -- partie 1: le client -- 21 // -- partie 1: le client --
21 $Client = makeObjectCLient(); 22 if($Client == null || get_class($Client) !== 'Clients')
22 if($Client === 0)
23 { 23 {
24 return 0; // menu principal 24 $Client = makeObjectClient(); // retourne 0 ou un objet "Clients"
25 if($Client == 0)
26 {
27 echo "debug: annulation sélection client\n";
28 return [0, null]; // menu principal
29 }
25 } 30 }
26 31
27 32
@@ -32,7 +37,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
32 if($choix_niv2 === '') 37 if($choix_niv2 === '')
33 { 38 {
34 echo "debug: annulation menu enregistrement\n"; 39 echo "debug: annulation menu enregistrement\n";
35 return 0; // menu principal 40 return [0, null]; // menu principal
36 } 41 }
37 42
38 $Presta = new Prestations($Client->getID()); 43 $Presta = new Prestations($Client->getID());
@@ -43,7 +48,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
43 if($Date->getDate() == '') // on n'a pas cliqué sur "annuler" 48 if($Date->getDate() == '') // on n'a pas cliqué sur "annuler"
44 { 49 {
45 echo "debug: annulation à la saisie d'une date\n"; 50 echo "debug: annulation à la saisie d'une date\n";
46 return 0; // menu principal 51 return [0, null]; // menu principal
47 } 52 }
48 53
49 $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD 54 $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD
@@ -76,7 +81,7 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
76 break; 81 break;
77 default: // inutile normallement, cas déjà géré avant 82 default: // inutile normallement, cas déjà géré avant
78 echo "debug: sortie du menu enregistrement incorrect\n"; 83 echo "debug: sortie du menu enregistrement incorrect\n";
79 return 0; 84 return [0, null];
80 } 85 }
81 86
82 $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre 87 $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre
@@ -86,12 +91,12 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
86 if($input == '') // annulation 91 if($input == '') // annulation
87 { 92 {
88 echo "debug: annulation lors de l'enregistrement des détails de la prestation\n"; 93 echo "debug: annulation lors de l'enregistrement des détails de la prestation\n";
89 return 0; 94 return [0, null];
90 } 95 }
91 elseif(isset($PrestaDetails) && !$PrestaDetails->hydrateFromForm($input, $Presta)) // echec de l'hydratation 96 elseif(isset($PrestaDetails) && !$PrestaDetails->hydrateFromForm($input, $Presta)) // echec de l'hydratation
92 { 97 {
93 echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()? 98 echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()?
94 return 0; 99 return [0, null];
95 } 100 }
96 unset($input); 101 unset($input);
97 } 102 }
@@ -127,6 +132,10 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
127 $PrestaDetails->setID(); // sans paramètre, exécute un $this->db->lastInsertId() 132 $PrestaDetails->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
128 } 133 }
129 134
135 // si encore de type prospect, devient un type client
136 //$Client->setType('client'); // inutile?
137 $Client->updateOneValue('type', 'client'); // modifier le type prospect en client
138
130 139
131 // -- partie 3: LaTeX -- 140 // -- partie 3: LaTeX --
132 141
@@ -141,6 +150,9 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
141 */ 150 */
142 // et pour bien faire ajouter aussi une interface 151 // et pour bien faire ajouter aussi une interface
143 152
153 //~ function makeLatexSubClass(string $type)
154 //~ {}
155
144 // fabrique d'objets (sans connaître les noms des classes) 156 // fabrique d'objets (sans connaître les noms des classes)
145 $EnveloppeRecto = Latex::makeLatexSubClass('enveloppe_recto'); 157 $EnveloppeRecto = Latex::makeLatexSubClass('enveloppe_recto');
146 $EnveloppeVerso = Latex::makeLatexSubClass('enveloppe_verso'); 158 $EnveloppeVerso = Latex::makeLatexSubClass('enveloppe_verso');
@@ -148,39 +160,40 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
148 160
149 // génération du latex 161 // génération du latex
150 $EnveloppeRecto->setData($Client); 162 $EnveloppeRecto->setData($Client);
151 $EnveloppeRecto->setFileName($Client->getCodeClient() . '.tex'); 163 //~ $EnveloppeRecto->setFileName($Client->getCodeClient() . '.tex');
152 $EnveloppeRecto->setLatexPath(Config::$latex_path . 'enveloppes_recto/'); 164 //~ $EnveloppeRecto->setLatexPath(Config::$latex_path . 'enveloppes_recto/');
153 $EnveloppeRecto->setPdfPath(Config::$pdf_path . 'enveloppes_recto/'); 165 //~ $EnveloppeRecto->setPdfPath(Config::$pdf_path . 'enveloppes_recto/');
154 $EnveloppeRecto->spacesInPostCode(); 166 //~ $EnveloppeRecto->spacesInPostCode();
155 $EnveloppeRecto->makeLatex(); 167 $EnveloppeRecto->makeLatex();
156 168
157 $EnveloppeVerso->setFileName('enveloppe_verso.tex'); 169 //~ $EnveloppeVerso->setFileName('enveloppe_verso.tex');
158 $EnveloppeVerso->setLatexPath(Config::$latex_path); 170 //~ $EnveloppeVerso->setLatexPath(Config::$latex_path);
159 $EnveloppeVerso->setPdfPath(Config::$pdf_path); 171 //~ $EnveloppeVerso->setPdfPath(Config::$pdf_path);
160 $EnveloppeVerso->makeLatex(); 172 $EnveloppeVerso->makeLatex();
161 173
162 $DocumentPresta->setData($Client); 174 if($DocumentPresta !== null)
163 $DocumentPresta->setData($Presta); 175 {
164 $DocumentPresta->setData($PrestaDetails); 176 $DocumentPresta->setData($Client)->setData($Presta)->setData($PrestaDetails);
165 $DocumentPresta->makeDateInstance($Presta->getDate()); // paramètre = int 177 //~ $DocumentPresta->setData($Client);
166 $DocumentPresta->setFileName($Presta->getCodePresta() . '.tex'); 178 //~ $DocumentPresta->setData($Presta);
167 $DocumentPresta->setLatexPath(Config::$latex_path . $DocumentPresta->getYear() . '/'); 179 //~ $DocumentPresta->makeDateInstance($Presta->getDate()); // paramètre = int
168 $DocumentPresta->setPdfPath(Config::$pdf_path . $DocumentPresta->getYear() . '/'); 180 //~ $DocumentPresta->setFileName($Presta->getCodePresta() . '.tex');
169 $DocumentPresta->makeLatex(); 181 //~ $DocumentPresta->setLatexPath(Config::$latex_path . $DocumentPresta->getYear() . '/');
182 //~ $DocumentPresta->setPdfPath(Config::$pdf_path . $DocumentPresta->getYear() . '/');
183 //~ $DocumentPresta->setData($PrestaDetails);
184 $DocumentPresta->makeLatex();
185 }
170 186
171 // création des fichiers
172 makeFolder($EnveloppeRecto->getLatexPath());
173 makeFolder($EnveloppeRecto->getPdfPath());
174 makeFile($EnveloppeRecto->getLatexPath(), $EnveloppeRecto->getFileName(), $EnveloppeRecto->getLatex());
175 latexToPdf($EnveloppeRecto->getLatexPath(), $EnveloppeRecto->getFileName(), $EnveloppeRecto->getPdfPath());
176 187
177 makeFile($EnveloppeVerso->getLatexPath(), $EnveloppeVerso->getFileName(), $EnveloppeVerso->getLatex()); 188 // création des fichiers
178 latexToPdf($EnveloppeVerso->getLatexPath(), $EnveloppeVerso->getFileName(), $EnveloppeVerso->getPdfPath()); 189 // paramètre = Objet enfant de Latex
190 makeTexAndPdf($EnveloppeRecto);
191 makeTexAndPdf($EnveloppeVerso);
179 192
180 makeFolder($DocumentPresta->getLatexPath()); 193 if($DocumentPresta !== null)
181 makeFolder($DocumentPresta->getPdfPath()); 194 {
182 makeFile($DocumentPresta->getLatexPath(), $DocumentPresta->getFileName(), $DocumentPresta->getLatex()); 195 makeTexAndPdf($DocumentPresta);
183 latexToPdf($DocumentPresta->getLatexPath(), $DocumentPresta->getFileName(), $DocumentPresta->getPdfPath()); 196 }
184 197
185 198
186 // -- partie 4: récapitulatif -- 199 // -- partie 4: récapitulatif --
@@ -194,16 +207,23 @@ function newService(): int // code de retour, si 0 retour menu principal, si 2 a
194 207
195 208
196 // -- partie 5: on fait quoi maintenant -- 209 // -- partie 5: on fait quoi maintenant --
210 $choix_niv2 = exec($FinSection2->get());
211 if($choix_niv2 === ZenitySetup::$fin_section_2_entrees[0])
212 {
213 return [4, null]; // section 4: getDocument()
214 }
215 elseif($choix_niv2 === ZenitySetup::$fin_section_2_entrees[1])
216 {
217 return [3, null]; // section 3: modifyData()
218 }
219 elseif($choix_niv2 === ZenitySetup::$fin_section_2_entrees[2])
220 {
221 return [2, null]; // relancer section 2: newService()
222 }
223 else
224 {
225 return [0, null]; // menu principal
226 }
197 227
198 // possibilité de modification 228 return [0, null]; // menu principal
199 // zenityQuestion
200 //~ if(exec($QuestionModifierPrestation->get()) == '0')
201 //~ {
202 //~ return 3; // section "Modifier un enregistrement"
203 //~ }
204 //~ else
205 //~ {
206 //~ return 0; // menu principal
207 //~ }
208 return 0; // menu principal
209} 229}
diff --git a/src/sections/3_modify_data.php b/src/sections/3_modify_data.php
new file mode 100644
index 0000000..cc95468
--- /dev/null
+++ b/src/sections/3_modify_data.php
@@ -0,0 +1,9 @@
1<?php
2// src/sections/3_modify_data.php
3//
4// -- SECTION 3: Modifier un client, un prospect, une prestation, un devis --
5
6function modifyData($Objet): array
7{
8 return [0, null]; // menu principal
9}
diff --git a/src/sections/3_modify_service.php b/src/sections/3_modify_service.php
deleted file mode 100644
index 3147969..0000000
--- a/src/sections/3_modify_service.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2// src/sections/3_modify_service.php
3//
4// -- SECTION 3: Modifier une prestation --
5
6function modifyService(): int // code de retour, si 2 aller à la section 2, etc
7{
8 return(0); // menu principal
9}
diff --git a/src/sections/4_get_document.php b/src/sections/4_get_document.php
new file mode 100644
index 0000000..e28e526
--- /dev/null
+++ b/src/sections/4_get_document.php
@@ -0,0 +1,55 @@
1<?php
2// src/sections/4_get_document.php
3//
4// -- SECTION 4: Afficher, imprimer un document --
5
6function getDocument($Objet): array
7{
8 $MenuDocuments = new ZenityList(ZenitySetup::$menu_documents_text, ZenitySetup::$menu_documents_entrees);
9
10 // -- partie 1: type de document --
11
12 $choix_niv2 = exec($MenuDocuments->get());
13 if($choix_niv2 === ZenitySetup::$menu_documents_entrees[0])
14 {
15
16 }
17 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[1]) // = Facture
18 {
19
20 }
21 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[2]) // = Lettre avec adresse
22 {
23
24 }
25 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[3]) // = Livre des recettes
26 {
27
28 }
29 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[4]) // = Registre des achats
30 {
31
32 }
33 elseif($choix_niv2 === ZenitySetup::$menu_documents_entrees[5]) // = Bilan annuel
34 {
35
36 }
37 else
38 {
39 return [0, null]; // menu principal
40 }
41
42
43 // -- partie 2: régénérer les documents latex et pdf --
44
45
46 // -- partie 3: afficher --
47
48
49 // -- partie 4: imprimer --
50
51
52 // -- partie 5: on fait quoi maintenant --
53
54 return [0, null]; // menu principal
55}
diff --git a/src/sections/main_loop.php b/src/sections/main_loop.php
new file mode 100644
index 0000000..7dd1af0
--- /dev/null
+++ b/src/sections/main_loop.php
@@ -0,0 +1,106 @@
1<?php
2// src/sections/main_loop.php
3//
4// -- BOUCLE PRINCIPALE --
5
6require('sections/1_customer.php');
7require('sections/2_service.php');
8require('sections/3_modify_data.php');
9
10$main_loop = true;
11$returned = [0, null]; // [code de retour, éventuelles données]
12
13while($main_loop)
14{
15 // -- MENU PRINCIPAL (niveau 1) --
16 if($returned[0] === 0)
17 {
18 echo("Menu principal\n");
19 $MenuPrincipal = new ZenityList(ZenitySetup::$menu_principal_text, ZenitySetup::$menu_principal_entrees);
20 $choix_niv1 = exec($MenuPrincipal->get());
21 }
22 else
23 {
24 $choix_niv1 = '';
25 }
26
27
28 // -- SECTION 1: Clients et prospects --
29 if($choix_niv1 === ZenitySetup::$menu_principal_entrees[0] || $returned[0] === 1)
30 {
31 echo("choix: ". ZenitySetup::$menu_principal_entrees[0] . "\n");
32 $returned = newCustomer();
33 }
34
35 // -- SECTION 2: Prestations et devis --
36 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $returned[0] === 2)
37 {
38 echo("choix: ". ZenitySetup::$menu_principal_entrees[1] . "\n");
39 $returned = newService($returned[1]); // $returned[1] vaut un type Clients ou null
40 }
41
42 // -- SECTION 3: Modifier un enregistrement --
43 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $returned[0] === 3)
44 {
45 echo("choix: " . ZenitySetup::$menu_principal_entrees[2] . "\n");
46 $returned = modifyData();
47 }
48
49 // -- SECTION 4: Consulter, Imprimer un document --
50 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $returned[0] === 4) // = Imprimer un document
51 {
52 echo("choix: ". ZenitySetup::$menu_principal_entrees[3] . "\n");
53 $returned = getDocument();
54 }
55
56 // -- SECTION 5: Consulter/analyser les données --
57 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $returned[0] === 5)
58 {
59 echo("choix: ". ZenitySetup::$menu_principal_entrees[4] . "\n");
60 // quel affichage? des tableaux avec zenity? LaTeX? une page web? un autre outil servant à faire des tableaux et graphiques
61 }
62
63 // -- SECTION 6: Supports de communication --
64 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $returned[0] === 6) // = Communication
65 {
66 echo("choix: ". ZenitySetup::$menu_principal_entrees[5] . "\n");
67 $MenuCommunication = new ZenityList(ZenitySetup::$menu_communication_text, ZenitySetup::$menu_communication_entrees);
68 $choix_niv2 = exec($MenuCommunication->get());
69 if($choix_niv2 === ZenitySetup::$menu_communication_entrees[0]) // = Flyer (nécessite gimp)
70 {
71 exec(windowAppCommand($image_editor, $flyer));
72 }
73 elseif($choix_niv2 === ZenitySetup::$menu_communication_entrees[1]) // = Carte de visite (nécessite scribus)
74 {
75 exec(windowAppCommand($publishing, $business_card));
76 }
77 elseif($choix_niv2 === ZenitySetup::$menu_communication_entrees[2]) // = Explorateur de fichiers
78 {
79 exec(windowAppCommand($file_explorer, $pub));
80 }
81 else
82 {
83 // retour menu principal
84 }
85 }
86
87 // -- SECTION 7: BDD --
88 elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[6] || $returned[0] === 7) // = Base de données
89 {
90 echo("choix: ". ZenitySetup::$menu_principal_entrees[6] . "\n");
91 if($sqlitebrowser_enable)
92 {
93 exec(windowAppCommand(Config::$sqlite_gui, Config::$db_path));
94 }
95 else
96 {
97 exec($x_term_command . ' ' . $sqlite_cli . ' ' . Config::$db_path); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite
98 }
99 }
100
101 // arrêt
102 else
103 {
104 $main_loop = false;
105 }
106}
diff --git a/src/view/ZenitySetup.php b/src/view/ZenitySetup.php
index b6d83f6..d0b785c 100644
--- a/src/view/ZenitySetup.php
+++ b/src/view/ZenitySetup.php
@@ -8,12 +8,14 @@
8class ZenitySetup 8class 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", "Devis", "Modifier un enregistrement", "Consulter/analyser les données", "Imprimer un document", "Communication", "Base de données"]; 11 static public $menu_principal_entrees = ["Clients et prospects", "Prestations et devis", "Modifier un enregistrement", "Consulter, imprimer un document", "Consulter/analyser les données", "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 $type_client_text = "Client ou prospect?";
14 static public $type_client_entrees = ["Client", "Prospect"];
13 static public $menu_enregistrement_text = "Type d\'enregistrement?"; 15 static public $menu_enregistrement_text = "Type d\'enregistrement?";
14 //static public $menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Location", "Prestation non vendue"]; 16 //static public $menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Location", "Prestation non vendue"];
15 static public $menu_enregistrement_entrees = ["Facture", "CESU", "Location", "Prestation non vendue"]; 17 static public $menu_enregistrement_entrees = ["Facture", "CESU", "Location", "Prestation non vendue"];
16 static public $menu_documents_text = "Imprimer un document LaTeX"; 18 static public $menu_documents_text = "Consulter, imprimer un document LaTeX";
17 static public $menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"]; 19 static public $menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"];
18 static public $menu_communication_text = "Imprimer un support de communication"; 20 static public $menu_communication_text = "Imprimer un support de communication";
19 static public $menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (nécessite scribus)", "Explorateur de fichiers"]; 21 static public $menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (nécessite scribus)", "Explorateur de fichiers"];
@@ -30,5 +32,10 @@ class ZenitySetup
30 static public $commentaire_prestation_text = 'Nouvelle prestation 3/3 - Commentaires'; 32 static public $commentaire_prestation_text = 'Nouvelle prestation 3/3 - Commentaires';
31 static public $recapitulatif_text = "voici toutes les informations enregistrées"; 33 static public $recapitulatif_text = "voici toutes les informations enregistrées";
32 static public $recapitulatif_entrees = []; 34 static public $recapitulatif_entrees = [];
33 static public $question_modification_text = "Prestation enregistrée. Modifier les informations?"; 35 //static public $question_modification_text = "Prestation enregistrée. Modifier les informations?";
36
37 static public $fin_section_1_text = "Client enregistré";
38 static public $fin_section_1_entrees = ["Ajouter une prestation pour ce client", "Modifier les informations", "Enregistrer un autre client", "Menu principal"];
39 static public $fin_section_2_text = "Prestation/devis enregistré(e)";
40 static public $fin_section_2_entrees = ["Afficher le document", "Modifier les informations", "Enregistrer une autre prestation/devis", "Menu principal"];
34} 41}