From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sections/2_service.php | 103 +++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 55 deletions(-) (limited to 'src/sections/2_service.php') diff --git a/src/sections/2_service.php b/src/sections/2_service.php index 3dd620d..e25d677 100644 --- a/src/sections/2_service.php +++ b/src/sections/2_service.php @@ -3,26 +3,33 @@ // // -- SECTION 2: Prestation et devis -- +use Doctrine\ORM\EntityManager; + function newService($Client): array // $Client est un Client ou null { + // fenêtres recherche d'un client + $RechercheClient = new zenityEntry(ZenitySetup::$recherche_client['text']); + $ResultatsRechercheClient = new ZenityList(ZenitySetup::$resultats_recherche_client['text'], []); + // fenêtres - $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement_text, ZenitySetup::$menu_enregistrement_entrees); + $MenuEnregistrement = new ZenityList(ZenitySetup::$menu_enregistrement['text'], ZenitySetup::$menu_enregistrement['entrees']); $Calendrier = new ZenityCalendar(ZenitySetup::$calendar['section2']); $FormulaireDevis = new ZenityForms(ZenitySetup::$formulaire['text'], ZenitySetup::$formulaire['devis_entrees']); $FormulaireFacture = new ZenityForms(ZenitySetup::$formulaire['text'], ZenitySetup::$formulaire['facture_entrees']); $FormulaireFactureReduit = new ZenityForms(ZenitySetup::$formulaire['text'], ZenitySetup::$formulaire['facture_entrees_reduit']); $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); + $CommentairePrestation = new ZenityEntry(ZenitySetup::$commentaire_prestation['text']); //$Recapitulatif = new ZenityList(ZenitySetup::$recapitulatif_text, ZenitySetup::$recapitulatif_entrees); // tableau à multiples colonnes $FinSection2 = new ZenityList(ZenitySetup::$fin_section_2['text'], ZenitySetup::$fin_section_2['entrees']); // -- partie 1: le client -- - if($Client == null || get_class($Client) !== 'Clients') + if($Client == null || get_class($Client) !== 'Client') { - $Client = makeObjectClient(); // retourne 0 ou un objet "Clients" - if($Client == 0) + $Client = Client::getObject($RechercheClient, $ResultatsRechercheClient); // retourne un Client ou 0 + //$ResultatsRechercheClient->cleanCommand(); // inutile parce qu'on ne boucle pas dans cette fonction + if($Client === 0) { echo "debug: annulation sélection client\n"; return [0, null]; // menu principal @@ -48,49 +55,50 @@ 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 + $Presta = new Prestation($Client); + //var_dump($Client);die; + //$Presta->setDate($Date->getTimestamp()); + $Presta->setDate($Date); // envoi d'un objet, la BDD gardera le timestamp // formulaire - étape 2/3 switch($choix_niv2) { // 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'); + case ZenitySetup::$menu_enregistrement['entrees'][0]: // "Devis" + $PrestaDetails = new Devis($Presta); $Presta->setTypePresta('devis'); $answers = exec($FormulaireDevis->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[1]: // "Facture" - $PrestaDetails = new DevisFactures('factures'); // attention! type "facture" mais table "factures" + case ZenitySetup::$menu_enregistrement['entrees'][1]: // "Facture" + $PrestaDetails = new Facture($Presta); $Presta->setTypePresta('facture'); $answers = exec($FormulaireFacture->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[2]: // "Facture à partir d'un devis" + case ZenitySetup::$menu_enregistrement['entrees'][2]: // "Facture à partir d'un devis" // recherche du devis - $Quotation = getServices($Client, 'devis'); // rechercher un devis, type 'devis' spécifié pour $Presta->getIdsByIdClient() - if(!is_object($Quotation) || get_class($Quotation) != 'Prestations' || $Quotation->getTypePresta() != 'devis') + $Quotation = Prestation::getServices($Client, 'devis'); // rechercher un devis, type 'devis' spécifié + if(!is_object($Quotation) || get_class($Quotation) != 'Prestation' || $Quotation->getTypePresta() != 'devis') { echo "debug: annulation sélection client\n"; return [2, $Client]; // menu précédent } - $QuotationDetails = new DevisFactures('devis'); - // facture: objet vide et formulaire - $PrestaDetails = new DevisFactures('factures'); + $QuotationDetails = Devis::getQuotation($Quotation); + $PrestaDetails = new Facture($Presta); + $PrestaDetails->hydrateWithQuotation($QuotationDetails); // du devis à la facture $Presta->setTypePresta('facture'); $answers = exec($FormulaireFactureReduit->get()); - //var_dump($answers); break; - case ZenitySetup::$menu_enregistrement_entrees[3]: // "CESU" - $PrestaDetails = new CESU(); + case ZenitySetup::$menu_enregistrement['entrees'][3]: // "CESU" + $PrestaDetails = new CESU($Presta); $Presta->setTypePresta('cesu'); $answers = exec($FormulaireCesu->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[4]: // "Location" - $PrestaDetails = new Locations(); + case ZenitySetup::$menu_enregistrement['entrees'][4]: // "Location" + $PrestaDetails = new Location($Presta); $Presta->setTypePresta('location'); $answers = exec($FormulaireLocation->get()); break; - case ZenitySetup::$menu_enregistrement_entrees[5]: // "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 @@ -98,7 +106,9 @@ function newService($Client): array // $Client est un Client ou null return [0, null]; } - $Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre + //$Presta->makeCodePresta($Date, $Client->getCodeClient()); // d'un objet à l'autre + //$Presta->makeCodePresta($Client->getCodeClient()); // d'un objet à l'autre + $Presta->setCodePresta(1); // d'un objet à l'autre // commentaire - étape 3/3 $comment = exec($CommentairePrestation->get()); @@ -120,48 +130,27 @@ function newService($Client): array // $Client est un Client ou null //~ } $Presta->setCommentaires($comment); - // hydratation d'une facture à partir d'un devis - if($choix_niv2 === ZenitySetup::$menu_enregistrement_entrees[2]) // cas: facture à partir d'un devis - { - // devis retrouvé ($Quotation est déjà hydraté) - $QuotationDetails->setIdPresta($Quotation->getId()); - $QuotationDetails->hydrate($QuotationDetails->getDetailsByIdPresta()); - - // facture avec le devis - $QuotationDetails->hydrateReceiptWithQuotation($PrestaDetails); - } - // hydratation avec la saisie du formulaire - if($choix_niv2 != ZenitySetup::$menu_enregistrement_entrees[5]) // cas: tous les cas sauf presta non vendue + if($choix_niv2 != ZenitySetup::$menu_enregistrement['entrees'][5]) // cas: tous les cas sauf presta non vendue { + //var_dump($answers); + $Client->typeToClient(); if($answers == '') // annulation { echo "debug: annulation lors de l'enregistrement des détails de la prestation\n"; return [0, null]; } - elseif(isset($PrestaDetails) && !$PrestaDetails->hydrateFromForm($answers, $Presta)) // echec de l'hydratation - { - echo "debug: erreur de hydrateFromForm()\n"; // messages d'erreur à mettre ici ou dans hydrateFromForm()? - return [0, null]; - } - } - - // mise à jour base de données - $Presta->create(); - $Presta->setId(); // sans paramètre, exécute un $this->db->lastInsertId() - - if(isset($PrestaDetails)) // presta vendue - { - $PrestaDetails->setIdPresta($Presta->getId()); // d'un objet à l'autre - $PrestaDetails->create(); - $PrestaDetails->setId(); // sans paramètre, exécute un $this->db->lastInsertId() + $PrestaDetails->hydrate($answers); + + // déléguer la synchronisation (flush) avec la BDD à une classe "Manager" } // si encore de type prospect, devient un type client - if($Client->typeToClient()) // utile si $Client est renvoyé dans le "return" + // déjà fait ailleurs je crois! + /*if($Client->typeToClient()) // utile si $Client est renvoyé dans le "return" { $Client->updateOneValue('type', 'client'); // base synchronisée - } + }*/ // -- partie 3: LaTeX -- @@ -213,7 +202,11 @@ function newService($Client): array // $Client est un Client ou null { return [3, $Client]; // section 3: modifyData() } - elseif($choix_niv2 === ZenitySetup::$fin_section_2['entrees'][2]) // enregistrer une autre prestation + elseif($choix_niv2 === ZenitySetup::$fin_section_2['entrees'][2]) // enregistrer une autre prestation (même client) + { + return [2, $Client]; // relancer section 2: newService() + } + elseif($choix_niv2 === ZenitySetup::$fin_section_2['entrees'][3]) // enregistrer une autre prestation (autre client) { return [2, null]; // relancer section 2: newService() } -- cgit v1.2.3