get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage { echo "debug: recherche souhaitée\n"; $input = exec($RechercheClient->get()); if($input == '') { echo "debug: recherche annulée ou saisie vide\n"; return(0); } echo "debug: recherche effectuée\n"; $ResultatsRechercheClient->setListRows(rechercheClient($input, $Client), $Client->getTable()); // recherche silencieuse unset($input); // 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 pas trouvé ou pas sélectionné\n"; return(0); } echo "debug: client sélectionné\n"; $Client->hydrate($Client->findById($choix_niv4)); $client_inconnu = false; } else { echo "debug: nouveau client\n"; } // on n'a pas cherché OU on n'a pas trouvé if($client_inconnu) { $input = exec($NouveauClient->get()); if($input == '') { echo "debug: annulation lors de l'enregistrement d'un nouveau client\n"; return(0); } if(!$Client->hydrateFromForm($input)) { // messages d'erreur dans hydrateFromForm() return(0); } unset($input); $Client->create(); $Client->setID(); // sans paramètre, exécute un $this->db->lastInsertId() } // -- partie 2: la prestation -- // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation $choix_niv2 = exec($MenuEnregistrement->get()); if($choix_niv2 === '') { echo "debug: annulation menu enregistrement\n"; return(0); // menu principal } $Presta = new Prestations($Client->getID()); // détail de la prestation // calendrier - étape 1/3 $Date = new Dates(exec($Calendrier->get())); // exec() renvoie soit une chaîne soit un false if($Date->getDate() == '') // on n'a pas cliqué sur "annuler" { echo "debug: annulation à la saisie d'une date\n"; return(0); // menu principal } $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre switch($choix_niv2) { // formulaire - étape 2/3 case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" $Details = new DevisFactures($Client->getID(), 'devis'); $Presta->setTypePresta('devis'); $input = exec($FormulaireDevis->get()); break; case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" $Details = new DevisFactures($Client->getID(), 'factures'); // 'factures' est le nom de la table, pas le type de presta $Presta->setTypePresta('facture'); $input =exec($FormulaireFacture->get()); break; case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" $Details = new CESU($Client->getID()); $Presta->setTypePresta('cesu'); $input = exec($FormulaireCesu->get()); break; case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" $Details = new Locations($Client->getID()); $Presta->setTypePresta('location'); $input = exec($FormulaireLocation->get()); break; case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" $Presta->setTypePresta('non_vendue'); break; default: // inutile normallement, cas déjà géré avant echo "debug: sortie du menu enregistrement incorrect\n"; return(0); } if($input == '') { echo "debug: annulation lors de l'enregistrement des détails de la prestation\n"; return(0); } elseif(isset($Details) && !$Details->hydrateFromForm($input, $Presta)) { // messages d'erreur dans hydrateFromForm() return(0); } unset($input); // commentaire - étape 3/3 $input = exec($CommentairePrestation->get()); //~ if($input == '') //~ { //~ echo "debug: annulation à la saisie d'un commentaire\n"; //~ return(0); //~ } $Presta->setCommentaires($input); unset($input); $Presta->create(); $Presta->setID(); // sans paramètre, exécute un $this->db->lastInsertId() $Details->setIDPresta($Presta->getID()); // d'un objet à l'autre $Details->create(); $Details->setID(); // sans paramètre, exécute un $this->db->lastInsertId() // -- partie 3: LaTeX -- // créer le chemin et un sous-dossier avec l'année en cours $latex_year_folder = Config::$latex_path . date('Y') . '/'; makeFolder($latex_year_folder); $pdf_year_folder = Config::$pdf_path . date('Y') . '/'; makeFolder($pdf_year_folder); // document de la prestation switch($choix_niv2) { case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" $file_name = 'devis.tex'; $template = 'devis'; makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); break; case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" $file_name = 'facture.tex'; $template = 'facture'; makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); break; case ZenitySetup::$menu_enregistrement_entrees[2]: // "CESU" // pas de facture break; case ZenitySetup::$menu_enregistrement_entrees[3]: // "Location" $file_name = 'location.tex'; $template = 'location'; makeLatexAndPdfDocument($file_name, $template, $Client, $Presta, $Details); break; case ZenitySetup::$menu_enregistrement_entrees[4]: // "Prestation non vendue" // pas de facture break; default: // inutile normallement, cas déjà géré avant echo "debug: sortie du menu enregistrement incorrect\n"; return(0); } // enveloppe $file_name = 'enveloppe_recto.tex'; $template = 'enveloppe_recto'; makeLatexAndPdfDocument($file_name, $template, $Client); $file_name = 'enveloppe_verso.tex'; $template = 'enveloppe_verso'; makeLatexAndPdfDocument($file_name, $template, $Client); // -- partie 4: récapitulatif -- // tableau récaptilatif // ZenityList // 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"'); // possibilité de modification // zenityQuestion if(exec($QuestionModifierPrestation->get()) == '0') { return(2); // section 2 } else { return(0); // menu principal } }