From 6f4cc3afffde36a13618458ffda72e6104624f36 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 30 Aug 2023 12:20:39 +0200 Subject: =?UTF-8?q?section=20client=20=C3=A0=20part,=20section=20modif=20e?= =?UTF-8?q?n=20cours,=20bug=20dans=20Dates,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sections/1_customer.php | 25 +++--- src/sections/2_service.php | 62 ++++++++++----- src/sections/3_modify_data.php | 170 +++++++++++++++++++++++++++++++++++++++- src/sections/4_get_document.php | 2 +- src/sections/main_loop.php | 30 +++---- 5 files changed, 244 insertions(+), 45 deletions(-) (limited to 'src/sections') diff --git a/src/sections/1_customer.php b/src/sections/1_customer.php index cdec448..ca20d08 100644 --- a/src/sections/1_customer.php +++ b/src/sections/1_customer.php @@ -12,29 +12,36 @@ function newCustomer(): array // -- partie 1: client ou prospect? -- $Client = new Clients; - if(exec($TypeDeClient->get()) === 'Client') + $choix_niv2 = exec($TypeDeClient->get()); + if($choix_niv2 === ZenitySetup::$type_client_entrees[0]) { + echo "choix: " . $choix_niv2 . "\n"; $Client->setType('client'); } - //~ else // - //~ { - //~ $Client->setType('prospect'); - //~ } + elseif($choix_niv2 === ZenitySetup::$type_client_entrees[1]) + { + echo "choix: " . $choix_niv2 . "\n"; + $Client->setType('prospect'); + } + else + { + return [0, null]; // menu principal + } // -- partie 2: saisie des infos -- if(enterCustomer($Client)) { // -- partie 3: on fait quoi maintenant -- - $choix_niv2 = exec($FinSection1->get()); - if($choix_niv2 === ZenitySetup::$fin_section_1_entrees[0]) + $choix_niv3 = exec($FinSection1->get()); + if($choix_niv3 === ZenitySetup::$fin_section_1_entrees[0]) { return [2, $Client]; // section 2: newService() } - elseif($choix_niv2 === ZenitySetup::$fin_section_1_entrees[1]) + elseif($choix_niv3 === ZenitySetup::$fin_section_1_entrees[1]) { return [3, $Client]; // section 3: modifyData() } - elseif($choix_niv2 === ZenitySetup::$fin_section_1_entrees[2]) + elseif($choix_niv3 === ZenitySetup::$fin_section_1_entrees[2]) { return [1, null]; // relancer section 1: newCustomer() } diff --git a/src/sections/2_service.php b/src/sections/2_service.php index 8109b31..2680db6 100644 --- a/src/sections/2_service.php +++ b/src/sections/2_service.php @@ -13,7 +13,7 @@ function newService($Client): array // $Client est un Client ou null $FormulaireCesu = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_cesu_entrees); $FormulaireLocation = new ZenityForms(ZenitySetup::$formulaire_text, ZenitySetup::$formulaire_location_entrees); $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation_text); - $Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes + //$Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes //$QuestionModifierPrestation = new ZenityQuestion(ZenitySetup::$question_modification_text); $FinSection2 = new ZenityList(ZenitySetup::$fin_section_2_text, ZenitySetup::$fin_section_2_entrees); @@ -32,7 +32,7 @@ function newService($Client): array // $Client est un Client ou null // -- partie 2: la prestation -- - // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou pas de prestation + // niveau 2: type comptable d'enregistrement: devis, facture, cesu, location ou prestation non vendue $choix_niv2 = exec($MenuEnregistrement->get()); if($choix_niv2 === '') { @@ -40,9 +40,6 @@ function newService($Client): array // $Client est un Client ou null return [0, null]; // 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" @@ -51,32 +48,56 @@ function newService($Client): array // $Client est un Client ou null return [0, null]; // menu principal } + $Presta = new Prestations($Client->getID()); $Presta->setDate($Date->getTimestamp()); // un entier pour la BDD + // formulaire - étape 2/3 switch($choix_niv2) { - // formulaire - étape 2/3 - //~ case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" - //~ $PrestaDetails = new DevisFactures('devis'); - //~ $Presta->setTypePresta('devis'); - //~ $input = exec($FormulaireDevis->get()); - //~ break; - case ZenitySetup::$menu_enregistrement_entrees[0]: // "Facture" - $PrestaDetails = new DevisFactures('factures'); // 'factures' est le nom de la table, pas le type de presta + // comparaison retour de $MenuEnregistrement->get() avec les noms des entrées du même menu + case ZenitySetup::$menu_enregistrement_entrees[0]: // "Devis" + $PrestaDetails = new DevisFactures('devis'); + $Presta->setTypePresta('devis'); + $input = exec($FormulaireDevis->get()); + break; + case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" + $PrestaDetails = new DevisFactures('factures'); $Presta->setTypePresta('facture'); $input =exec($FormulaireFacture->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[1]: // "CESU" + + //~ case ZenitySetup::$menu_enregistrement_entrees[2]: // "Facture à partir d'un devis" + //~ $PrestaDetails = new DevisFactures('facture'); + //~ $Presta->setTypePresta('facture'); + // 1 choix d'un devis + //makeObjectService(); // liste les devis existants pour ce client + // + // 2 hydratation + // + // 3 préremplissage du formulaire + //$FormulaireFacture->set($Data) + // + // et plus loin: + // 4 édition de la facture + //$input = exec($FormulaireFacture->get()); + // + // 5 hydratation avec les changements + // + //echo $FormulaireFacture->get() . "\n"; + //~ $input = exec($FormulaireFacture->get()); + //~ break; + + case ZenitySetup::$menu_enregistrement_entrees[3]: // "CESU" $PrestaDetails = new CESU(); $Presta->setTypePresta('cesu'); $input = exec($FormulaireCesu->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[2]: // "Location" + case ZenitySetup::$menu_enregistrement_entrees[4]: // "Location" $PrestaDetails = new Locations(); $Presta->setTypePresta('location'); $input = exec($FormulaireLocation->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[3]: // "Prestation non vendue" + case ZenitySetup::$menu_enregistrement_entrees[5]: // "Prestation non vendue" $Presta->setTypePresta('non_vendue'); break; default: // inutile normallement, cas déjà géré avant @@ -86,7 +107,8 @@ function newService($Client): array // $Client est un Client ou null $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre - if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[3]) // si presta non vendue, saut étape 3/3 + // hydratation ou saut étape 3/3 si presta non vendu + if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[5]) { if($input == '') // annulation { @@ -154,9 +176,9 @@ function newService($Client): array // $Client est un Client ou null //~ {} // fabrique d'objets (sans connaître les noms des classes) - $EnveloppeRecto = Latex::makeLatexSubClass('enveloppe_recto'); - $EnveloppeVerso = Latex::makeLatexSubClass('enveloppe_verso'); - $DocumentPresta = Latex::makeLatexSubClass($Presta->getTypePresta()); // $type = facture, devis, location + $EnveloppeRecto = Latex::makeInstance('enveloppe_recto'); + $EnveloppeVerso = Latex::makeInstance('enveloppe_verso'); + $DocumentPresta = Latex::makeInstance($Presta->getTypePresta()); // $type = facture, devis, location // génération du latex $EnveloppeRecto->setData($Client); diff --git a/src/sections/3_modify_data.php b/src/sections/3_modify_data.php index cc95468..e16a58f 100644 --- a/src/sections/3_modify_data.php +++ b/src/sections/3_modify_data.php @@ -3,7 +3,175 @@ // // -- SECTION 3: Modifier un client, un prospect, une prestation, un devis -- -function modifyData($Objet): array +function modifyData($Client): array { + // -- partie 1: rechercher un client -- + if($Client == null || get_class($Client) !== 'Clients') // étape sautable + { + $Client = makeObjectClient(); // = 0 ou type "Clients" + if(!is_object($Client) || !get_class($Client) == 'Clients') + { + echo "debug: annulation sélection client\n"; + return [0, null]; // menu principal + } + } + + + // -- partie 2: modifier un client -- + + // fenêtre $ModificationClient + $ModificationClientMenu = new ZenityList(ZenitySetup::$modification_client['text'], []); + $entrees = []; + $i = 0; + $client_data = $Client->getAllWithWindowFields(); + //var_dump($client_data); + foreach($client_data as $key => $value) + { + $entrees[$i][] = $key; + $entrees[$i][] = $value; + $i++; + } + $entrees[$i][] = ZenitySetup::$modification_client['service']; + $entrees[$i][] = ''; + $i++; + $entrees[$i][] = ZenitySetup::$modification_client['return']; + $entrees[$i][] = ''; + $ModificationClientMenu->setListRows($entrees, 2, 2.5); + + // modifier une valeur + $choix_niv2 = exec($ModificationClientMenu->get()); + if($choix_niv2 === ZenitySetup::$modification_client['service']) // ne pas modifier le client mais une prestation + { + echo "choix: modifier une prestation\n"; + // on passe à la suite + } + elseif($choix_niv2 === ZenitySetup::$modification_client['return']) // annuler + { + echo "choix: retour au menu principal\n"; + return [0, null]; // menu principal + } + elseif($choix_niv2 === "Client ou Prospect?") // modifier le client + { + echo "choix: modifier" . $choix_niv2 . "\n"; + $TypeDeClient = new ZenityList(ZenitySetup::$type_client_text, ZenitySetup::$type_client_entrees); + $input = exec($TypeDeClient->get()); + if($input === ZenitySetup::$type_client_entrees[0]) + { + echo "choix: " . $input . "\n"; + $Client->setType('client'); + } + elseif($input === ZenitySetup::$type_client_entrees[1]) + { + echo "choix: " . $input . "\n"; + $Client->setType('prospect'); + } + else + { + echo "choix: annulation\n"; + } + $Client->update(); + return [3, $Client]; // menu précédent + } + elseif(is_string($choix_niv2) && $choix_niv2 != '') // modifier le client + { + echo "choix: modifier" . $choix_niv2 . "\n"; + $ModificationClient = new ZenityEntry($choix_niv2); + $input = exec($ModificationClient->get()); + if(is_string($input) && $input != '') + { + $Client->getSetterAndSet($choix_niv2, $input); + $Client->update(); + + // mettre à jour les documents + + } + else + { + echo "choix: annulation\n"; + } + return [3, $Client]; // menu précédent + } + else // annuler + { + echo "annulation: retour au menu principal\n"; + return [0, null]; // menu principal + } + + + // -- partie 3: rechercher une prestation -- + $Presta = getServices($Client); // = 0 ou type "Prestations" + if(!is_object($Presta) || !get_class($Presta) == 'Prestations') + { + echo "debug: annulation sélection client\n"; + return [3, $Client]; // menu précédent + } + + + // -- partie 4: modifier une prestation -- + + // fenêtre $ModificationPresta + $ModificationPrestaMenu = new ZenityList(ZenitySetup::$modification_presta['text'], []); + $entrees = []; + $i = 0; + + $presta_data = $Presta->getAllWithWindowFields(); + var_dump($presta_data); + foreach($presta_data as $key => $value) + { + $entrees[$i][] = $key; + $entrees[$i][] = $value; + $i++; + } + + // infos des sous-tables 'facture', 'devis', etc + switch($Presta->getTypePresta()) + { + case 'facture': + $PrestaDetails = new DevisFactures('factures'); + break; + + case 'devis': + $PrestaDetails = new DevisFactures('devis'); + break; + case 'cesu': + $PrestaDetails = new CESU(); + break; + case 'location': + $PrestaDetails = new Locations(); + break; + } + if(isset($PrestaDetails)) + { + $PrestaDetails->setIDPresta($Presta->getID()); + $PrestaDetails->hydrate($PrestaDetails->getDetailsByIdPresta()); + $presta_data = $PrestaDetails->getAllWithWindowFields(); + var_dump($presta_data); + foreach($presta_data as $key => $value) + { + $entrees[$i][] = $key; + $entrees[$i][] = $value; + $i++; + } + } + + if($Presta->getTypePresta() === 'devis') + { + $entrees[$i][] = ZenitySetup::$modification_presta['devis_facture']; // option changer le devis en facture + $entrees[$i][] = ''; + $i++; + } + $entrees[$i][] = ZenitySetup::$modification_presta['service']; + $entrees[$i][] = ''; + $i++; + $entrees[$i][] = ZenitySetup::$modification_presta['return']; + $entrees[$i][] = ''; + $ModificationPrestaMenu->setListRows($entrees, 2, 2.5); + + // modifier une valeur + $choix_niv3 = exec($ModificationPrestaMenu->get()); + var_dump($choix_niv3); + + // si changement de type de prestation autre que de devis à facture, ça devient compliqué! + return [0, null]; // menu principal } diff --git a/src/sections/4_get_document.php b/src/sections/4_get_document.php index e28e526..baad117 100644 --- a/src/sections/4_get_document.php +++ b/src/sections/4_get_document.php @@ -3,7 +3,7 @@ // // -- SECTION 4: Afficher, imprimer un document -- -function getDocument($Objet): array +function getOrPrintDocument(): array { $MenuDocuments = new ZenityList(ZenitySetup::$menu_documents_text, ZenitySetup::$menu_documents_entrees); diff --git a/src/sections/main_loop.php b/src/sections/main_loop.php index 7dd1af0..f68c251 100644 --- a/src/sections/main_loop.php +++ b/src/sections/main_loop.php @@ -6,14 +6,15 @@ require('sections/1_customer.php'); require('sections/2_service.php'); require('sections/3_modify_data.php'); +require('sections/4_get_document.php'); $main_loop = true; -$returned = [0, null]; // [code de retour, éventuelles données] +$section = [0, null]; // [code de retour, éventuelles données] while($main_loop) { // -- MENU PRINCIPAL (niveau 1) -- - if($returned[0] === 0) + if($section[0] === 0) { echo("Menu principal\n"); $MenuPrincipal = new ZenityList(ZenitySetup::$menu_principal_text, ZenitySetup::$menu_principal_entrees); @@ -24,44 +25,45 @@ while($main_loop) $choix_niv1 = ''; } - + // comparaison du retour de $MenuPrincipal->get() avec les noms des entrées du même menu + // -- SECTION 1: Clients et prospects -- - if($choix_niv1 === ZenitySetup::$menu_principal_entrees[0] || $returned[0] === 1) + if($choix_niv1 === ZenitySetup::$menu_principal_entrees[0] || $section[0] === 1) { echo("choix: ". ZenitySetup::$menu_principal_entrees[0] . "\n"); - $returned = newCustomer(); + $section = newCustomer(); } // -- SECTION 2: Prestations et devis -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $returned[0] === 2) + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[1] || $section[0] === 2) { echo("choix: ". ZenitySetup::$menu_principal_entrees[1] . "\n"); - $returned = newService($returned[1]); // $returned[1] vaut un type Clients ou null + $section = newService($section[1]); // $section[1] vaut un type Clients ou null } // -- SECTION 3: Modifier un enregistrement -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $returned[0] === 3) + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[2] || $section[0] === 3) { echo("choix: " . ZenitySetup::$menu_principal_entrees[2] . "\n"); - $returned = modifyData(); + $section = modifyData($section[1]); // $section[1] vaut un type Clients ou null } // -- SECTION 4: Consulter, Imprimer un document -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $returned[0] === 4) // = Imprimer un document + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[3] || $section[0] === 4) // = Imprimer un document { echo("choix: ". ZenitySetup::$menu_principal_entrees[3] . "\n"); - $returned = getDocument(); + $section = getOrPrintDocument(); } // -- SECTION 5: Consulter/analyser les données -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $returned[0] === 5) + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[4] || $section[0] === 5) { echo("choix: ". ZenitySetup::$menu_principal_entrees[4] . "\n"); // quel affichage? des tableaux avec zenity? LaTeX? une page web? un autre outil servant à faire des tableaux et graphiques } // -- SECTION 6: Supports de communication -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $returned[0] === 6) // = Communication + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[5] || $section[0] === 6) // = Communication { echo("choix: ". ZenitySetup::$menu_principal_entrees[5] . "\n"); $MenuCommunication = new ZenityList(ZenitySetup::$menu_communication_text, ZenitySetup::$menu_communication_entrees); @@ -85,7 +87,7 @@ while($main_loop) } // -- SECTION 7: BDD -- - elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[6] || $returned[0] === 7) // = Base de données + elseif($choix_niv1 === ZenitySetup::$menu_principal_entrees[6] || $section[0] === 7) // = Base de données { echo("choix: ". ZenitySetup::$menu_principal_entrees[6] . "\n"); if($sqlitebrowser_enable) -- cgit v1.2.3