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"'); } } }