From 46591fffb0226b0fa87e68248b06182389825f80 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 27 May 2024 21:34:05 +0200 Subject: =?UTF-8?q?typeToClient()=20modifie=20$Client=20et=20ne=20touche?= =?UTF-8?q?=20la=20base=20que=20si=20n=C3=A9cessaire,=20nettoyage=20divers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/dev.sqlite | Bin 36864 -> 0 bytes src/files.php | 2 +- src/main.php | 1 + src/main_loop.php | 1 + src/model/Clients.php | 12 ++++++++++++ src/model/Model.php | 37 ++++++++++++++++++------------------- src/sections/2_service.php | 25 ++++++------------------- src/sections/5_view_data.php | 9 +++++++++ "\303\240 faire.txt" | 36 ++++++++++++++++++++++++++++++++++++ 9 files changed, 84 insertions(+), 39 deletions(-) delete mode 100644 data/dev.sqlite create mode 100644 src/sections/5_view_data.php create mode 100644 "\303\240 faire.txt" diff --git a/data/dev.sqlite b/data/dev.sqlite deleted file mode 100644 index 98f7b57..0000000 Binary files a/data/dev.sqlite and /dev/null differ diff --git a/src/files.php b/src/files.php index d8fcba7..e78cfba 100644 --- a/src/files.php +++ b/src/files.php @@ -51,7 +51,7 @@ function latexToPdf(string $latex_path, string $file_name, string $pdf_path) unlink($pdf_path . $basename . '.log'); } -function makeTexAndPdf(Object $Object) +function makeTexAndPdf(Object $Object) // paramètre = enfant de Latex { if(get_class($Object) !== 'EnveloppeVersoLatex') { diff --git a/src/main.php b/src/main.php index c5b1950..95e5627 100755 --- a/src/main.php +++ b/src/main.php @@ -53,4 +53,5 @@ require('sections/1_customer.php'); require('sections/2_service.php'); require('sections/3_modify_data.php'); require('sections/4_get_document.php'); +require('sections/5_view_data.php'); require('main_loop.php'); // action !! diff --git a/src/main_loop.php b/src/main_loop.php index 23f6235..64eeccf 100644 --- a/src/main_loop.php +++ b/src/main_loop.php @@ -55,6 +55,7 @@ while($main_loop) { 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 = viewData(); } // -- SECTION 6: Supports de communication -- diff --git a/src/model/Clients.php b/src/model/Clients.php index a5cc276..0f70eb6 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php @@ -124,6 +124,18 @@ class Clients extends Model $this->type = (string) $value; return $this; } + public function typeToClient(): bool + { + if($this->type != 'client') + { + $this->type = 'client'; + return true; + } + else + { + return false; + } + } public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite diff --git a/src/model/Model.php b/src/model/Model.php index 6c799c3..1fdab7d 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -5,13 +5,9 @@ abstract class Model extends DB { protected $db; // instance de PDO protected $table; // <= enfant - //static protected $tableStructure; - //~ public function __construct() // à surcharger - //~ { - //~ $this->table = strtolower(__CLASS__); - //~ echo "TABLE = " . $this->table . "\n"; - //~ } + //~ protected function __construct() // pour appel avec parent::__construct() + //~ {} // getters public function getTable(): string @@ -281,25 +277,28 @@ abstract class Model extends DB } - // fonction appelée une seule fois au lancement du programme - // le tableau nécessaire n'est pas copié en mémoire à l'instanciation (pas de fuite de mémoire), mais uniquement à l'appel de cette fonction statique, à la fin de la fonction la mémoire est libérée - // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe static public function createTables() { - foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) + static $first_time = true; + + if($first_time) // fonction normallement appelée qu'une seule fois { - //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable - $fields_and_types = []; - $query = 'CREATE TABLE IF NOT EXISTS ' . $tableName . ' ('; - foreach($oneTable as $key => $value) + foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) { - $fields_and_types[] = $key . ' ' . $value; + $query = 'CREATE TABLE IF NOT EXISTS ' . $tableName . ' ('; + foreach($oneTable as $key => $value) + { + $query .= $key . ' ' . $value . ', '; + } + $query .= 'PRIMARY KEY(ID AUTOINCREMENT));'; + parent::getInstance()->exec($query); } - $query .= implode(', ', $fields_and_types); // implode() convertit un tableau en une chaîne avec un séparateur entre chaque élément - $query .= ', PRIMARY KEY(ID AUTOINCREMENT));'; - //echo($query . "\n\n"); - parent::getInstance()->exec($query); // merci singleton! + $first_time = false; + } + else + { + echo "Model::createTables() a déjà été appelée et ne fera rien.\n"; } } } diff --git a/src/sections/2_service.php b/src/sections/2_service.php index 9683ef9..28fba3f 100644 --- a/src/sections/2_service.php +++ b/src/sections/2_service.php @@ -159,27 +159,15 @@ function newService($Client): array // $Client est un Client ou null } // si encore de type prospect, devient un type client - //$Client->setType('client'); // inutile? - $Client->updateOneValue('type', 'client'); // modifier le type prospect en client + if($Client->typeToClient()) // utile si $Client est renvoyé dans le "return" + { + $Client->updateOneValue('type', 'client'); // base synchronisée + } // -- partie 3: LaTeX -- - //makeLatexAndPdfDocuments($Client, $Presta, $PrestaDetails); - // factoriser tout ça - /* plusieurs parties: - * - une fonction ou on crée et manipule les objets (une classe par type de document) - * - manipulation des données - * - chemins et noms de fichiers - * - insertion des variables - * - écriture du fichier (+ dossier si nécessaire) - */ - // et pour bien faire ajouter aussi une interface - - //~ function makeLatexSubClass(string $type) - //~ {} - - // fabrique d'objets (sans connaître les noms des classes) + // fabrique d'objets enfants de Latex (sans connaître les noms des classes) $EnveloppeRecto = Latex::makeInstance('enveloppe_recto'); $EnveloppeVerso = Latex::makeInstance('enveloppe_verso'); $DocumentPresta = Latex::makeInstance($Presta->getTypePresta()); // retourne objet ou null @@ -194,9 +182,7 @@ function newService($Client): array // $Client est un Client ou null $DocumentPresta->makeLatex(); } - // création des fichiers - // paramètre = Objet enfant de Latex makeTexAndPdf($EnveloppeRecto); makeTexAndPdf($EnveloppeVerso); @@ -217,6 +203,7 @@ function newService($Client): array // $Client est un Client ou null // ? modifications avec le menu de la section 3 obtenu avec makeModifyCustomerWindow() + // -- partie 5: on fait quoi maintenant -- $choix_niv2 = exec($FinSection2->get()); if($choix_niv2 === ZenitySetup::$fin_section_2['entrees'][0]) // afficher le document diff --git a/src/sections/5_view_data.php b/src/sections/5_view_data.php new file mode 100644 index 0000000..e38fb90 --- /dev/null +++ b/src/sections/5_view_data.php @@ -0,0 +1,9 @@ + + +modifier location, compter à la journée et non au mois + +taille des fenêtres zenity (avec gtk4) + +une classe CodePresta? + +pouvoir faire plusieurs modification d'une presta sans devoir la retrouver à chaque fois + +possibilité d'imprimer une facture vierge avec juste les coordonnées d'un client pour remplir sur-place + + +SECTION consulter, imprimer les données: + +Livre des recettes / CA +assemblage : date + code facture + client + type de presta + montant prestation (on ne compte pas les débours) + mode de paiement +1 livre par mois => total + +Registre des achats +assemblage : date + référence + fournisseur + ce que c’est + montant + mode de paiement +1 livre par mois => total + +Bilan annuel +Recettes – achats et débours -- cgit v1.2.3