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.php209
1 files changed, 0 insertions, 209 deletions
diff --git a/src/sections/1_new_service.php b/src/sections/1_new_service.php
deleted file mode 100644
index 6f5a72c..0000000
--- a/src/sections/1_new_service.php
+++ /dev/null
@@ -1,209 +0,0 @@
1<?php
2// src/sections/1_new_service.php
3//
4// -- SECTION 1: Nouvelle prestation --
5
6function newService(): int // code de retour, si 0 retour menu principal, si 2 aller à la section 2, etc
7{
8 // fenêtres
9 $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees);
10 $Calendrier = new ZenityCalendar(ZenitySetup::$calendar_text);
11 $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_devis_entrees);
12 $FormulaireFacture = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_facture_entrees);
13 $FormulaireCesu = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_cesu_entrees);
14 $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees);
15 $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text);
16 $Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes
17 $QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text);
18
19
20 // -- partie 1: le client --
21 $Client = makeObjectCLient();
22 if($Client === 0)
23 {
24 return 0; // menu principal
25 }
26
27
28 // -- partie 2: la prestation --
29
30 // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation
31 $choix_niv2 = exec($MenuEnregistrement->get());
32 if($choix_niv2 === '')
33 {
34 echo "debug: annulation menu enregistrement\n";
35 return 0; // menu principal
36 }
37
38 $Presta = new Prestations($Client->getID());
39
40 // détail de la prestation
41 // calendrier - étape 1/3
42 $Date = new Dates(exec($Calendrier->get())); // exec() renvoie soit une chaîne soit un false
43 if($Date->getDate() == '') // on n'a pas cliqué sur "annuler"
44 {
45 echo "debug: annulation à la saisie d'une date\n";
46 return 0; // menu principal
47 }
48
49 $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD
50
51 switch($choix_niv2)
52 {
53 // formulaire - étape 2/3
54 //~ case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis"
55 //~ $PrestaDetails = new DevisFactures('devis');
56 //~ $Presta->setTypePresta('devis');
57 //~ $input = exec($FormulaireDevis->get());
58 //~ break;
59 case ZenitySetup::$menu_enregistrement_entrees[0]: // "Facture"
60 $PrestaDetails = new DevisFactures('factures'); // 'factures' est le nom de la table, pas le type de presta
61 $Presta->setTypePresta('facture');
62 $input =exec($FormulaireFacture->get());
63 break;
64 case ZenitySetup::$menu_enregistrement_entrees[1]: // "CESU"
65 $PrestaDetails = new CESU();
66 $Presta->setTypePresta('cesu');
67 $input = exec($FormulaireCesu->get());
68 break;
69 case ZenitySetup::$menu_enregistrement_entrees[2]: // "Location"
70 $PrestaDetails = new Locations();
71 $Presta->setTypePresta('location');
72 $input = exec($FormulaireLocation->get());
73 break;
74 case ZenitySetup::$menu_enregistrement_entrees[3]: // "Prestation non vendue"
75 $Presta->setTypePresta('non_vendue');
76 break;
77 default: // inutile normallement, cas déjà géré avant
78 echo "debug: sortie du menu enregistrement incorrect\n";
79 return 0;
80 }
81
82 $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre
83
84 if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[3]) // si presta non vendue, saut étape 3/3
85 {
86 if($input == '') // annulation
87 {
88 echo "debug: annulation lors de l'enregistrement des détails de la prestation\n";
89 return 0;
90 }
91 elseif(isset($PrestaDetails) && !$PrestaDetails->hydrateFromForm($input, $Presta)) // echec de l'hydratation
92 {
93 echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()?
94 return 0;
95 }
96 unset($input);
97 }
98
99 // commentaire - étape 3/3
100 $input = exec($CommentairePrestation->get());
101 if($input == '')
102 {
103 echo "debug: pas de commentaire saisi\n";
104 // on n'interrompt pas le script et on enregistre dans tous les cas (annulatation, chaîne vide)
105 }
106 // Cliquer sur annuler (ou appuyer sur échap) revient dont à valider avec une chaîne vide et enregistrer la prestation
107 // la commande 'echo $?' ($? est le code de sortie de la commande précédente) renvoit 1 si on annule avec la touche échap ()
108 // elle renvoit 0 si la fenêtre est fermée correctement, qu'on valide une chaîne vide ou qu'on clique sur Annuler (on ne peut pas savoir)
109 // malheureusement, si les deux commandes sont liées par un '&&' et qu'on annule la saisie, la 2è commande n'est pas exécutée
110 // solution partielle si echo $? ne renvoit rien, c'est qu'echo n'a pas été exécuté parce qu'on a appuyé sur échap (ou que le programme)
111 // 2>&1 semble inutile, pas de sortie d'erreur de zenity --entry
112 //~ if(exec('echo $?') != 1)
113 //~ {
114 //~ echo "debug: annulation à la saisie d'un commentaire\n";
115 //~ return 0;
116 //~ }
117 $Presta->setCommentaires($input);
118 unset($input);
119
120 $Presta->create();
121 $Presta->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
122
123 if(isset($PrestaDetails)) // presta non vendue
124 {
125 $PrestaDetails->setIDPresta($Presta->getID()); // d'un objet à l'autre
126 $PrestaDetails->create();
127 $PrestaDetails->setID(); // sans paramètre, exécute un $this->db->lastInsertId()
128 }
129
130
131 // -- partie 3: LaTeX --
132
133 //makeLatexAndPdfDocuments($Client, $Presta, $PrestaDetails);
134 // factoriser tout ça
135 /* plusieurs parties:
136 * - une fonction ou on crée et manipule les objets (une classe par type de document)
137 * - manipulation des données
138 * - chemins et noms de fichiers
139 * - insertion des variables
140 * - écriture du fichier (+ dossier si nécessaire)
141 */
142 // et pour bien faire ajouter aussi une interface
143
144 // fabrique d'objets (sans connaître les noms des classes)
145 $EnveloppeRecto = Latex::makeLatexSubClass('enveloppe_recto');
146 $EnveloppeVerso = Latex::makeLatexSubClass('enveloppe_verso');
147 $DocumentPresta = Latex::makeLatexSubClass($Presta->getTypePresta()); // $type = facture, devis, location
148
149 // génération du latex
150 $EnveloppeRecto->setData($Client);
151 $EnveloppeRecto->setFileName($Client->getCodeClient() . '.tex');
152 $EnveloppeRecto->setLatexPath(Config::$latex_path . 'enveloppes_recto/');
153 $EnveloppeRecto->setPdfPath(Config::$pdf_path . 'enveloppes_recto/');
154 $EnveloppeRecto->spacesInPostCode();
155 $EnveloppeRecto->makeLatex();
156
157 $EnveloppeVerso->setFileName('enveloppe_verso.tex');
158 $EnveloppeVerso->setLatexPath(Config::$latex_path);
159 $EnveloppeVerso->setPdfPath(Config::$pdf_path);
160 $EnveloppeVerso->makeLatex();
161
162 $DocumentPresta->setData($Client);
163 $DocumentPresta->setData($Presta);
164 $DocumentPresta->setData($PrestaDetails);
165 $DocumentPresta->makeDateInstance($Presta->getDate()); // paramètre = int
166 $DocumentPresta->setFileName($Presta->getCodePresta() . '.tex');
167 $DocumentPresta->setLatexPath(Config::$latex_path . $DocumentPresta->getYear() . '/');
168 $DocumentPresta->setPdfPath(Config::$pdf_path . $DocumentPresta->getYear() . '/');
169 $DocumentPresta->makeLatex();
170
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
177 makeFile($EnveloppeVerso->getLatexPath(), $EnveloppeVerso->getFileName(), $EnveloppeVerso->getLatex());
178 latexToPdf($EnveloppeVerso->getLatexPath(), $EnveloppeVerso->getFileName(), $EnveloppeVerso->getPdfPath());
179
180 makeFolder($DocumentPresta->getLatexPath());
181 makeFolder($DocumentPresta->getPdfPath());
182 makeFile($DocumentPresta->getLatexPath(), $DocumentPresta->getFileName(), $DocumentPresta->getLatex());
183 latexToPdf($DocumentPresta->getLatexPath(), $DocumentPresta->getFileName(), $DocumentPresta->getPdfPath());
184
185
186 // -- partie 4: récapitulatif --
187
188 // tableau récaptilatif
189 // ZenityList
190
191 // imprimer?
192 //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"');
193 //~ $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"');
194
195
196 // -- partie 5: on fait quoi maintenant --
197
198 // possibilité de modification
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}