summaryrefslogtreecommitdiff
path: root/src/sections/1_new_service.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/sections/1_new_service.php')
-rw-r--r--src/sections/1_new_service.php354
1 files changed, 156 insertions, 198 deletions
diff --git a/src/sections/1_new_service.php b/src/sections/1_new_service.php
index 172402a..aaf441a 100644
--- a/src/sections/1_new_service.php
+++ b/src/sections/1_new_service.php
@@ -3,7 +3,7 @@
3// 3//
4// -- SECTION 1: Nouvelle prestation -- 4// -- SECTION 1: Nouvelle prestation --
5 5
6function newService() 6function newService(): int // code de retour, si 0 retour menu principal, si 2 aller à la section 2, etc
7{ 7{
8 // fenêtres 8 // fenêtres
9 $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text); 9 $QuestionNouveauClient = new ZenityQuestion(ZenitySetup::$question_nouveau_client_text);
@@ -12,230 +12,188 @@ function newService()
12 $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees); 12 $NouveauClient = new ZenityForms(ZenitySetup::$nouveau_client_text, ZenitySetup::$nouveau_client_entrees);
13 $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees); 13 $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees);
14 $Calendrier = new ZenityCalendar(ZenitySetup::$calendar_text); 14 $Calendrier = new ZenityCalendar(ZenitySetup::$calendar_text);
15 $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire_text, array_merge(ZenitySetup::$formulaire_devis_entrees, ZenitySetup::$formulaire_facture_entrees)); 15 $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire_text, array_merge(ZenitySetup::$formulaire_facture_entrees, ZenitySetup::$formulaire_devis_entrees));
16 $FormulaireFacture = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_facture_entrees); 16 $FormulaireFacture = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_facture_entrees);
17 $FormulaireCesu = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_cesu_entrees); 17 $FormulaireCesu = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_cesu_entrees);
18 $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees); 18 $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees);
19 $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text); 19 $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text);
20 $Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes
21 $QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text);
20 22
21 $Client = new Clients; // modèle de la table 'clients' 23 $Client = new Clients;
22 24
23 $continuer = false; 25
24 // niveau 2: est ce que le client est déjà dans la base? 26 // -- partie 1: le client --
27
28 // est ce que le client est déjà dans la base?
29 $client_inconnu = true;
25 if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage 30 if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage
26 { 31 {
27 echo "debug: recherche souhaitée\n"; 32 echo "debug: recherche souhaitée\n";
28 33 $input = exec($RechercheClient->get());
29 // niveau 3: saisie du nom du client 34 if($input == '')
30 $nom_client = exec($RechercheClient->get());
31 if($nom_client !== '')
32 { 35 {
33 echo "debug: recherche effectuée\n"; 36 echo "debug: recherche annulée ou saisie vide\n";
34 $ResultatsRechercheClient->setListRows(rechercheClient($nom_client, $Client), $Client->getTable()); // recherche silencieuse 37 return(0);
35 unset($nom_client);
36
37 // niveau 4: sélection parmi les résultats
38 $choix_niv4 = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients'
39 $ResultatsRechercheClient->cleanCommand();
40
41 if($choix_niv4 !== '')
42 {
43 echo "debug: client sélectionné\n";
44 $Client->hydrate($Client->findById($choix_niv4));
45 $continuer = true;
46 }
47 else
48 {
49 echo "debug: client pas trouvé ou pas sélectionné\n";
50 }
51 } 38 }
52 else 39
40 echo "debug: recherche effectuée\n";
41 $ResultatsRechercheClient->setListRows(rechercheClient($input, $Client), $Client->getTable()); // recherche silencieuse
42 unset($input);
43
44 // niveau 4: sélection parmi les résultats
45 $choix_niv4 = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients'
46 $ResultatsRechercheClient->cleanCommand();
47
48 if($choix_niv4 == '')
53 { 49 {
54 echo "debug: recherche annulée ou saisie vide\n"; 50 echo "debug: client pas trouvé ou pas sélectionné\n";
51 return(0);
55 } 52 }
53
54 echo "debug: client sélectionné\n";
55 $Client->hydrate($Client->findById($choix_niv4));
56 $client_inconnu = false;
56 } 57 }
57 else 58 else
58 { 59 {
59 echo "debug: nouveau client\n"; 60 echo "debug: nouveau client\n";
60 } 61 }
61 62
62 // niveau 2: on n'a pas cherché OU on n'a pas trouvé 63 // on n'a pas cherché OU on n'a pas trouvé
63 if(!$continuer) 64 if($client_inconnu)
64 { 65 {
65 $data_string = exec($NouveauClient->get()); 66 $input = exec($NouveauClient->get());
66 //~ $data_array = explode('|', $data_string); 67 if($input == '')
67 //~ if(controlFormInput($data_array))
68 //~ {
69 //~ $Client->newRow($data_array); // écriture dans la BDD
70 //~ $continuer = true;
71 //~ }
72
73 if($data_string !== '')
74 { 68 {
75 $data_array = explode('|', $data_string); 69 echo "debug: annulation lors de l'enregistrement d'un nouveau client\n";
76 $data_string = ''; // nettoyage 70 return(0);
77
78 if(count($data_array) === count(StructTablesDB::$structureOfTables[$Client->getTable()]) - 1)
79 {
80 if($data_array[0] != "") // le champ "prenom_nom" ne doit pas être vide
81 {
82 $Client->newRow($data_array); // écriture dans la BDD
83 $continuer = true;
84 }
85 else
86 {
87 echo "debug: données insuffisantes, le nom du client doit au minimum être renseigné\n";
88 $continuer = false;
89 }
90 }
91 else
92 {
93 echo "debug: le nombre d'informations à enregistrer du nombre de champs à renseigner dans la table\n";
94 $continuer = false;
95 }
96 } 71 }
97 else 72 if(!$Client->hydrateFromForm($input))
98 { 73 {
99 echo "debug: annulation lors du formulaire\n"; 74 // messages d'erreur dans hydrateFromForm()
100 $continuer = false; 75 return(0);
101 } 76 }
77 unset($input);
78 $Client->create();
79 $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
102 } 80 }
103 81
82
83 // -- partie 2: la prestation --
84
104 // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation 85 // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation
105 if($continuer) 86 $choix_niv2 = exec($MenuEnregistrement->get());
87 if($choix_niv2 === '')
106 { 88 {
107 $choix_niv2 = exec($MenuEnregistrement->get()); 89 echo "debug: annulation menu enregistrement\n";
108 $continuer = false; 90 return(0); // menu principal
109 $Presta = new Prestations($Client->getID()); 91 }
110 92
111 switch($choix_niv2) 93 $Presta = new Prestations($Client->getID());
112 { 94
113 case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" 95 // détail de la prestation
114 $DetailsPresta = new DevisFactures($Client->getID()); 96 // calendrier - étape 1/3
115 $Presta->setTypePresta('devis'); 97 $Date = new Dates(exec($Calendrier->get())); // exec() renvoie soit une chaîne soit un false
116 $continuer = true; 98 if($Date->getDate() == '') // on n'a pas cliqué sur "annuler"
117 break; 99 {
118 case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" 100 echo "debug: annulation à la saisie d'une date\n";
119 $DetailsPresta = new DevisFactures($Client->getID()); 101 return(0); // menu principal
120 $Presta->setTypePresta('facture'); 102 }
121 $continuer = true; 103
122 break; 104 $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD
123 case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" 105 $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre
124 $DetailsPresta = new CESU($Client->getID()); 106
125 $Presta->setTypePresta('cesu'); 107 switch($choix_niv2)
126 $continuer = true; 108 {
127 break; 109 // formulaire - étape 2/3
128 case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" 110 case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis"
129 $DetailsPresta = new Locations($Client->getID()); 111 $Details = new DevisFactures($Client->getID(), 'devis');
130 $Presta->setTypePresta('location'); 112 $Presta->setTypePresta('devis');
131 $continuer = true; 113 $input = exec($FormulaireDevis->get());
132 break; 114 break;
133 case ZenitySetup::$menu_enregistrement_entrees[4]: // "non_vendue" 115 case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture"
134 // objet $Presta uniquement 116 $Details = new DevisFactures($Client->getID(), 'factures'); // 'factures' est le nom de la table, pas le type de presta
135 $Presta->setTypePresta('non_vendue'); 117 $Presta->setTypePresta('facture');
136 $continuer = true; 118 $input =exec($FormulaireFacture->get());
137 break; 119 break;
138 default: 120 case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU"
139 $continuer = false; // annulation, retour menu principal 121 $Details = new CESU($Client->getID());
140 } 122 $Presta->setTypePresta('cesu');
141 123 $input = exec($FormulaireCesu->get());
142 if($continuer) 124 break;
143 { 125 case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location"
144 // niveau 3: détail de la prestation 126 $Details = new Locations($Client->getID());
145 // noter que exec() renvoie toujours une chaîne, sauf en cas d'erreur où il renvoie un "false" 127 $Presta->setTypePresta('location');
146 $Date = new Dates(exec($Calendrier->get())); 128 $input = exec($FormulaireLocation->get());
147 if($Date->getDate() !== '') // on n'a pas cliqué sur "annuler" 129 break;
148 { 130 case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue"
149 $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD 131 $Presta->setTypePresta('non_vendue');
150 $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre 132 break;
151 133 default: // inutile normallement, cas déjà géré plus haut
152 // on continue si le formulaire précédent a été rempli 134 echo "debug: sortie du menu enregistrement incorrect\n";
153 switch($choix_niv2) 135 return(0);
154 { 136 }
155 case $Presta->getType = 'devis'; 137
156 $data_string = exec($FormulaireDevis->get()); 138 if($input == '')
157 break; 139 {
158 case $Presta->getType = 'facture'; 140 echo "debug: annulation lors de l'enregistrement des détails de la prestation\n";
159 $data_string = exec($FormulaireFacture->get()); // tester si c'est vide ou clic sur 'Annuler' 141 return(0);
160 break; 142 }
161 case $Presta->getType = 'cesu'; 143 elseif(isset($Details) && !$Details->hydrateFromForm($input, $Presta))
162 $data_string = exec($FormulaireCesu->get()); 144 {
163 break; 145 // messages d'erreur dans hydrateFromForm()
164 case $Presta->getType = 'location'; 146 return(0);
165 $data_string = exec($FormulaireLocation->get()); 147 }
166 break; 148 unset($input);
167 case $data_string->getType = 'non_vendue'; 149
168 // ne rien faire 150 // commentaire - étape 3/3
169 break; 151 $input = exec($CommentairePrestation->get());
170 default: 152 //~ if($input == '')
171 $continuer = false; // annulation, retour menu principal 153 //~ {
172 } 154 //~ echo "debug: annulation à la saisie d'un commentaire\n";
173 155 //~ return(0);
174 if($continuer) 156 //~ }
175 { 157 $Presta->setCommentaires($input);
176 // dans $Presta 158 unset($input);
177 $comment = exec($CommentairePrestation->get()); 159
178 if(!empty($comment)) 160 $Presta->create();
179 { 161 $Presta->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
180 $Presta->setCommentaires($comment); 162
181 } 163 $Details->setIDPresta($Presta->getID()); // d'un objet à l'autre
182 else 164 $Details->create();
183 { 165 $Details->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
184 $continuer = false; // annulation, retour menu principal 166
185 } 167
186 } 168 // -- partie 3: LaTeX --
187 } 169
188 $Presta->create(); 170 // création fichiers LaTeX et PDF
189 $Presta->setIDPresta(); // sans paramètre pour récupérer le dernier ID inséré 171 //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php
190 172 //~ $file_name = 'devis.tex';
191 if($data_string !== '') 173 //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location'
192 { 174 //~ $latex = getLatexFromTemplate($template);
193 $data_array = explode('|', $data_string); 175 //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier
194 176 //~ $pdf_path = '../data/pdf/';
195 if(count($data_array) === count(StructTablesDB::$structureOfTables[$DetailsPresta->getTable()]) - 1) 177 //~ latexToPdf($latex_path, $file_name, $pdf_path);
196 { 178
197 if($data_array[0] != "") // le champ "prenom_nom" ne doit pas être vide 179
198 { 180 // -- partie 4: récapitulatif --
199 $DetailsPresta->newRow($data_array); // INSUFFISANT 181
200 $continuer = true; 182 // tableau récaptilatif
201 } 183 // ZenityList
202 else 184
203 { 185 // imprimer?
204 echo "debug: données insuffisantes, le nom du client doit au minimum être renseigné\n"; 186 //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"');
205 $continuer = false; 187 //~ $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"');
206 } 188
207 } 189 // possibilité de modification
208 else 190 // zenityQuestion
209 { 191 if(exec($QuestionModifierPrestation->get()) == '0')
210 echo "debug: le nombre d'informations à enregistrer du nombre de champs à renseigner dans la table\n"; 192 {
211 $continuer = false; 193 return(2); // section 2
212 } 194 }
213 } 195 else
214 else 196 {
215 { 197 return(0); // menu principal
216 echo "debug: annulation lors du formulaire\n";
217 $continuer = false;
218 }
219 $DetailsPresta->setIDPresta($Presta->getIDPresta()); // d'un objet à l'autre
220 $DetailsPresta->create();
221
222
223 // tableau récaptilatif, possibilité de modification
224 //ZenityList
225
226
227 // création fichiers LaTeX et PDF
228 //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php
229 //~ $file_name = 'devis.tex';
230 //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location'
231 //~ $latex = getLatexFromTemplate($template);
232 //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier
233 //~ $pdf_path = '../data/pdf/';
234 //~ latexToPdf($latex_path, $file_name, $pdf_path);
235
236 // imprimer?
237 //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"');
238 //~ $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"');
239 }
240 } 198 }
241} 199}