From 1894fc377e6b938ea34df9980567a1634ec6ef48 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 28 Dec 2022 05:19:55 +0100 Subject: =?UTF-8?q?r=C3=A9organisation=20+=20bient=C3=B4t=20finie=20la=20s?= =?UTF-8?q?ection=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sections/1_new_service.php | 241 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 src/sections/1_new_service.php (limited to 'src/sections') diff --git a/src/sections/1_new_service.php b/src/sections/1_new_service.php new file mode 100644 index 0000000..172402a --- /dev/null +++ b/src/sections/1_new_service.php @@ -0,0 +1,241 @@ +get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage + { + echo "debug: recherche souhaitée\n"; + + // niveau 3: saisie du nom du client + $nom_client = exec($RechercheClient->get()); + if($nom_client !== '') + { + echo "debug: recherche effectuée\n"; + $ResultatsRechercheClient->setListRows(rechercheClient($nom_client, $Client), $Client->getTable()); // recherche silencieuse + unset($nom_client); + + // niveau 4: sélection parmi les résultats + $choix_niv4 = exec($ResultatsRechercheClient->get()); // renvoie l'ID de la table 'clients' + $ResultatsRechercheClient->cleanCommand(); + + if($choix_niv4 !== '') + { + echo "debug: client sélectionné\n"; + $Client->hydrate($Client->findById($choix_niv4)); + $continuer = true; + } + else + { + echo "debug: client pas trouvé ou pas sélectionné\n"; + } + } + else + { + echo "debug: recherche annulée ou saisie vide\n"; + } + } + else + { + echo "debug: nouveau client\n"; + } + + // niveau 2: on n'a pas cherché OU on n'a pas trouvé + if(!$continuer) + { + $data_string = exec($NouveauClient->get()); + //~ $data_array = explode('|', $data_string); + //~ if(controlFormInput($data_array)) + //~ { + //~ $Client->newRow($data_array); // écriture dans la BDD + //~ $continuer = true; + //~ } + + if($data_string !== '') + { + $data_array = explode('|', $data_string); + $data_string = ''; // nettoyage + + if(count($data_array) === count(StructTablesDB::$structureOfTables[$Client->getTable()]) - 1) + { + if($data_array[0] != "") // le champ "prenom_nom" ne doit pas être vide + { + $Client->newRow($data_array); // écriture dans la BDD + $continuer = true; + } + else + { + echo "debug: données insuffisantes, le nom du client doit au minimum être renseigné\n"; + $continuer = false; + } + } + else + { + echo "debug: le nombre d'informations à enregistrer du nombre de champs à renseigner dans la table\n"; + $continuer = false; + } + } + else + { + echo "debug: annulation lors du formulaire\n"; + $continuer = false; + } + } + + // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation + if($continuer) + { + $choix_niv2 = exec($MenuEnregistrement->get()); + $continuer = false; + $Presta = new Prestations($Client->getID()); + + switch($choix_niv2) + { + case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" + $DetailsPresta = new DevisFactures($Client->getID()); + $Presta->setTypePresta('devis'); + $continuer = true; + break; + case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" + $DetailsPresta = new DevisFactures($Client->getID()); + $Presta->setTypePresta('facture'); + $continuer = true; + break; + case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" + $DetailsPresta = new CESU($Client->getID()); + $Presta->setTypePresta('cesu'); + $continuer = true; + break; + case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" + $DetailsPresta = new Locations($Client->getID()); + $Presta->setTypePresta('location'); + $continuer = true; + break; + case ZenitySetup::$menu_enregistrement_entrees[4]: // "non_vendue" + // objet $Presta uniquement + $Presta->setTypePresta('non_vendue'); + $continuer = true; + break; + default: + $continuer = false; // annulation, retour menu principal + } + + if($continuer) + { + // niveau 3: détail de la prestation + // noter que exec() renvoie toujours une chaîne, sauf en cas d'erreur où il renvoie un "false" + $Date = new Dates(exec($Calendrier->get())); + if($Date->getDate() !== '') // on n'a pas cliqué sur "annuler" + { + $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD + $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre + + // on continue si le formulaire précédent a été rempli + switch($choix_niv2) + { + case $Presta->getType = 'devis'; + $data_string = exec($FormulaireDevis->get()); + break; + case $Presta->getType = 'facture'; + $data_string = exec($FormulaireFacture->get()); // tester si c'est vide ou clic sur 'Annuler' + break; + case $Presta->getType = 'cesu'; + $data_string = exec($FormulaireCesu->get()); + break; + case $Presta->getType = 'location'; + $data_string = exec($FormulaireLocation->get()); + break; + case $data_string->getType = 'non_vendue'; + // ne rien faire + break; + default: + $continuer = false; // annulation, retour menu principal + } + + if($continuer) + { + // dans $Presta + $comment = exec($CommentairePrestation->get()); + if(!empty($comment)) + { + $Presta->setCommentaires($comment); + } + else + { + $continuer = false; // annulation, retour menu principal + } + } + } + $Presta->create(); + $Presta->setIDPresta(); // sans paramètre pour récupérer le dernier ID inséré + + if($data_string !== '') + { + $data_array = explode('|', $data_string); + + if(count($data_array) === count(StructTablesDB::$structureOfTables[$DetailsPresta->getTable()]) - 1) + { + if($data_array[0] != "") // le champ "prenom_nom" ne doit pas être vide + { + $DetailsPresta->newRow($data_array); // INSUFFISANT + $continuer = true; + } + else + { + echo "debug: données insuffisantes, le nom du client doit au minimum être renseigné\n"; + $continuer = false; + } + } + else + { + echo "debug: le nombre d'informations à enregistrer du nombre de champs à renseigner dans la table\n"; + $continuer = false; + } + } + else + { + echo "debug: annulation lors du formulaire\n"; + $continuer = false; + } + $DetailsPresta->setIDPresta($Presta->getIDPresta()); // d'un objet à l'autre + $DetailsPresta->create(); + + + // tableau récaptilatif, possibilité de modification + //ZenityList + + + // création fichiers LaTeX et PDF + //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php + //~ $file_name = 'devis.tex'; + //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location' + //~ $latex = getLatexFromTemplate($template); + //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier + //~ $pdf_path = '../data/pdf/'; + //~ latexToPdf($latex_path, $file_name, $pdf_path); + + // imprimer? + //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"'); + //~ $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"'); + } + } +} -- cgit v1.2.3