summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2023-12-23 10:00:24 +0100
committerpolo <ordipolo@gmx.fr>2023-12-23 10:00:24 +0100
commita4d88fd1913758cc95b395eefcf5e9d730450382 (patch)
treea7ffe3ab2816d7562cc967b5b4ef7c974dd7a0e2 /src/model
parent78439b6a178e238ab8fb73d25567a85df78d6681 (diff)
downloadAppliGestionPHP-a4d88fd1913758cc95b395eefcf5e9d730450382.zip
devis payant, créer devis depuis facture, changement dans getIDsByIdClient(), suppression dépendance paquet latex "ulem", (string) dans setTelephone()
Diffstat (limited to 'src/model')
-rw-r--r--src/model/Clients.php14
-rw-r--r--src/model/DevisFactures.php32
-rw-r--r--src/model/Model.php35
-rw-r--r--src/model/Prestations.php24
-rw-r--r--src/model/StructTablesDB.php2
5 files changed, 68 insertions, 39 deletions
diff --git a/src/model/Clients.php b/src/model/Clients.php
index 524070a..a5cc276 100644
--- a/src/model/Clients.php
+++ b/src/model/Clients.php
@@ -102,17 +102,11 @@ class Clients extends Model
102 $this->ville = (string) $value; 102 $this->ville = (string) $value;
103 return $this; 103 return $this;
104 } 104 }
105 public function setTelephone($value) // chaine parce que zenity renvoie une chaine et parce qu'on garde le 0 au début 105 public function setTelephone($value)
106 { 106 {
107 if(is_numeric($value)) 107 // type string parce que
108 { 108 // zenity renvoie une chaine, on peut ainsi garder le 0 au début et avoir plusieurs numéros (séparés par virgule et espace)
109 $this->telephone = (string) $value; 109 $this->telephone = (string) $value;
110 }
111 else
112 {
113 $this->telephone = '';
114 echo 'debug: le champ "telephone" ne doit comporter que des nombres, aucun numéro ne sera utilisé' . "\n";
115 }
116 return $this; 110 return $this;
117 } 111 }
118 public function setCourriel($value) 112 public function setCourriel($value)
diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php
index 259690b..7c31f13 100644
--- a/src/model/DevisFactures.php
+++ b/src/model/DevisFactures.php
@@ -17,6 +17,7 @@ class DevisFactures extends Model
17 protected $pieces; 17 protected $pieces;
18 protected $total_pieces; 18 protected $total_pieces;
19 protected $deplacement; 19 protected $deplacement;
20 protected $prix_devis;
20 protected $total_HT; 21 protected $total_HT;
21 protected $delai_livraison; 22 protected $delai_livraison;
22 protected $validite_devis; 23 protected $validite_devis;
@@ -26,6 +27,7 @@ class DevisFactures extends Model
26 { 27 {
27 $this->table = $table; // deux tables séparées devis et factures 28 $this->table = $table; // deux tables séparées devis et factures
28 } 29 }
30
29 public function getAllWithWindowFields(): array // différent de Model::getAll() qui retourne get_object_vars($this) 31 public function getAllWithWindowFields(): array // différent de Model::getAll() qui retourne get_object_vars($this)
30 { 32 {
31 $taches = ["Tâches:" => $this->taches]; 33 $taches = ["Tâches:" => $this->taches];
@@ -60,7 +62,8 @@ class DevisFactures extends Model
60 return []; 62 return [];
61 } 63 }
62 } 64 }
63 public function set(string $entry, string $input) 65
66 public function set(string $entry, string $input) // trouve la bonne méthode
64 { 67 {
65 switch($entry) 68 switch($entry)
66 { 69 {
@@ -91,6 +94,9 @@ class DevisFactures extends Model
91 case "Déplacement:": 94 case "Déplacement:":
92 $this->setDeplacement($input); 95 $this->setDeplacement($input);
93 break; 96 break;
97 case "Prix du devis:":
98 $this->setPrixDevis($input);
99 break;
94 case "Total HT:": 100 case "Total HT:":
95 $this->setTotalHT($input); 101 $this->setTotalHT($input);
96 break; 102 break;
@@ -142,11 +148,6 @@ class DevisFactures extends Model
142 $this->cles_licences = $value; 148 $this->cles_licences = $value;
143 return($this); 149 return($this);
144 } 150 }
145 //~ public function setTemps(string $value)
146 //~ {
147 //~ $this->temps = $value;
148 //~ return($this);
149 //~ }
150 public function setTotalMainDOeuvre($value) 151 public function setTotalMainDOeuvre($value)
151 { 152 {
152 $value = str_replace(',', '.', $value); 153 $value = str_replace(',', '.', $value);
@@ -176,6 +177,12 @@ class DevisFactures extends Model
176 $this->total_HT = (float) $value; 177 $this->total_HT = (float) $value;
177 return($this); 178 return($this);
178 } 179 }
180 public function setPrixDevis($value)
181 {
182 $value = str_replace(',', '.', $value);
183 $this->prix_devis = (float) $value;
184 return($this);
185 }
179 public function setDelaiLivraison(string $value) 186 public function setDelaiLivraison(string $value)
180 { 187 {
181 $this->delai_livraison = $value; 188 $this->delai_livraison = $value;
@@ -192,6 +199,19 @@ class DevisFactures extends Model
192 return($this); 199 return($this);
193 } 200 }
194 201
202 // création d'une facture à partir d'un devis
203 public function hydrateReceiptWithQuotation($ReceiptDetails)
204 {
205 $ReceiptDetails->hydrate([
206 'taches' => $this->taches,
207 'total_main_d_oeuvre' => $this->total_main_d_oeuvre,
208 'pieces' => $this->pieces,
209 'total_pieces' => $this->total_pieces,
210 'deplacement' => $this->deplacement,
211 'total_HT' => $this->total_HT
212 ]);
213 }
214
195 //~ public function newRow(array $input) 215 //~ public function newRow(array $input)
196 //~ { 216 //~ {
197 //~ if($this->table === 'devis') // comme la table 'factures' avec deux champs en plus 217 //~ if($this->table === 'devis') // comme la table 'factures' avec deux champs en plus
diff --git a/src/model/Model.php b/src/model/Model.php
index 07826af..d6597f0 100644
--- a/src/model/Model.php
+++ b/src/model/Model.php
@@ -37,6 +37,11 @@ abstract class Model extends DB
37 } 37 }
38 return $this; 38 return $this;
39 } 39 }
40 public function setTable(string $value)
41 {
42 $this->table = $value;
43 return($this);
44 }
40 45
41 public function hydrate(array $data): bool // $data = tableau associatif en entrée: nom_du_champ => valeur 46 public function hydrate(array $data): bool // $data = tableau associatif en entrée: nom_du_champ => valeur
42 { 47 {
@@ -60,6 +65,7 @@ abstract class Model extends DB
60 } 65 }
61 66
62 // cette fonction reçoit des données d'un tableau simple, permettant d'associer des champs de formulaires aux noms différents des champs de la BDD 67 // cette fonction reçoit des données d'un tableau simple, permettant d'associer des champs de formulaires aux noms différents des champs de la BDD
68 // méthode lancée par des objets de type enfants
63 function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta 69 function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta
64 { 70 {
65 //~ $tableSize = count(StructTablesDB::$structureOfTables[$this->getTable()]); // int 71 //~ $tableSize = count(StructTablesDB::$structureOfTables[$this->getTable()]); // int
@@ -84,18 +90,25 @@ abstract class Model extends DB
84 case 'prestations'; // inutilisé 90 case 'prestations'; // inutilisé
85 break; 91 break;
86 case 'devis'; 92 case 'devis';
87 //~ $check = $Presta->hydrate(['mode_paiement' => $data_array[6]]); 93 $check = $this->hydrate(['taches' => $data_array[0], 'total_main_d_oeuvre' => $data_array[1], 'pieces' => $data_array[2], 'total_pieces' => $data_array[3], 'deplacement' => $data_array[4], 'prix_devis' => $data_array[5], 'total_HT' => $data_array[6], 'delai_livraison' => $data_array[7], 'validite_devis' => $data_array[8]]);
88 //~ if($check)
89 //~ {
90 //~ $check = $this->hydrate(['taches' => $data_array[0], 'total_main_d_oeuvre' => $data_array[1], 'pieces' => $data_array[2], 'total_pieces' => $data_array[3], 'deplacement' => $data_array[4], 'total_HT' => $data_array[5], 'delai_livraison' => $data_array[7], 'validite_devis' => $data_array[8], 'signature_devis' => $data_array[9]]);
91 $check = $this->hydrate(['taches' => $data_array[0], 'total_main_d_oeuvre' => $data_array[1], 'pieces' => $data_array[2], 'total_pieces' => $data_array[3], 'deplacement' => $data_array[4], 'total_HT' => $data_array[5], 'delai_livraison' => $data_array[6], 'validite_devis' => $data_array[7]]);
92 //~ }
93 break; 94 break;
94 case 'factures'; 95 case 'factures';
95 $check = $Presta->hydrate(['mode_paiement' => $data_array[10]]); 96 if(count($data_array) === 11)
96 if($check) 97 {
98 $check = $Presta->hydrate(['mode_paiement' => $data_array[10]]);
99 if($check)
100 {
101 $check = $this->hydrate(['taches' => $data_array[0], 'machine' => $data_array[1], 'OS' => $data_array[2], 'donnees' => $data_array[3], 'cles_licences' => $data_array[4], 'total_main_d_oeuvre' => $data_array[5], 'pieces' => $data_array[6], 'total_pieces' => $data_array[7], 'deplacement' => $data_array[8], 'total_HT' => $data_array[9]]);
102 }
103 }
104 elseif(count($data_array) === 5)
97 { 105 {
98 $check = $this->hydrate(['taches' => $data_array[0], 'machine' => $data_array[1], 'OS' => $data_array[2], 'donnees' => $data_array[3], 'cles_licences' => $data_array[4], 'total_main_d_oeuvre' => $data_array[5], 'pieces' => $data_array[6], 'total_pieces' => $data_array[7], 'deplacement' => $data_array[8], 'total_HT' => $data_array[9]]); 106 $check = $this->hydrate(['machine' => $data_array[1], 'OS' => $data_array[2], 'donnees' => $data_array[3], 'cles_licences' => $data_array[4]]);
107 }
108 else
109 {
110 echo "debug: le tableau \$data_array n'a pas la taille attendue.\n";
111 return false;
99 } 112 }
100 break; 113 break;
101 case 'cesu'; 114 case 'cesu';
@@ -106,11 +119,7 @@ abstract class Model extends DB
106 } 119 }
107 break; 120 break;
108 case 'locations'; 121 case 'locations';
109 //~ $check = $Presta->hydrate(['mode_paiement' => $data_array[11]]);
110 //~ if($check)
111 //~ {
112 $check = $this->hydrate(['designation' => $data_array[0], 'modele_description' => $data_array[1], 'valeur' => $data_array[2], 'etat_des_lieux_debut' => $data_array[3], 'etat_des_lieux_fin' => $data_array[4], 'duree_location' => $data_array[5], 'loyer_mensuel' => $data_array[6], 'loyers_payes' => $data_array[7], 'caution' => $data_array[8]]); 122 $check = $this->hydrate(['designation' => $data_array[0], 'modele_description' => $data_array[1], 'valeur' => $data_array[2], 'etat_des_lieux_debut' => $data_array[3], 'etat_des_lieux_fin' => $data_array[4], 'duree_location' => $data_array[5], 'loyer_mensuel' => $data_array[6], 'loyers_payes' => $data_array[7], 'caution' => $data_array[8]]);
113 //~ }
114 break; 123 break;
115 default: // inutilisé 124 default: // inutilisé
116 echo "debug: table inconnue hydrateFromForm()"; 125 echo "debug: table inconnue hydrateFromForm()";
diff --git a/src/model/Prestations.php b/src/model/Prestations.php
index 54ad4b7..8591e83 100644
--- a/src/model/Prestations.php
+++ b/src/model/Prestations.php
@@ -28,13 +28,19 @@ class Prestations extends Model
28 { 28 {
29 return $this->ID_client; 29 return $this->ID_client;
30 } 30 }
31 public function getIDsByIdClient() // obtenir une entrée avec son ID_client 31 public function getIDsByIdClient() // obtenir une entrée avec son ID_client, comportement différent si le type est connu
32 { 32 {
33 $IDs = $this->execQuery('SELECT id FROM ' . $this->table . ' WHERE id_client = ' . $this->ID_client)->fetchAll(); 33 $sql = 'SELECT id FROM ' . $this->table . ' WHERE id_client = ' . $this->ID_client;
34 // changer le tableau de tableaux en tableau simple 34 if($this->type_presta != '')
35 for($i = 0; $i < count($IDs); $i++)
36 { 35 {
37 $IDs[$i] = $IDs[$i]['ID']; 36 $sql .= " AND type_presta = '" . $this->type_presta . "'";
37 }
38 $data = $this->execQuery($sql)->fetchAll(); // tableau de tableaux
39
40 $IDs = []; // si $IDs reste vide, ne pas être de type NULL
41 for($i = 0; $i < count($data); $i++)
42 {
43 $IDs[$i] = $data[$i]['ID']; // tableau simple
38 } 44 }
39 return($IDs); 45 return($IDs);
40 } 46 }
@@ -152,7 +158,7 @@ class Prestations extends Model
152 } 158 }
153} 159}
154 160
155class CodePresta extends Prestations 161//~ class CodePresta extends Prestations
156{ 162//~ {
157 protected $numero_presta; 163 //~ protected $numero_presta;
158} 164//~ }
diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php
index 679adde..48bf8e5 100644
--- a/src/model/StructTablesDB.php
+++ b/src/model/StructTablesDB.php
@@ -11,7 +11,7 @@ class StructTablesDB
11 // les tables devis_factures, cesu et locations sont liées à la table prestations 11 // les tables devis_factures, cesu et locations sont liées à la table prestations
12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'code_client' => 'TEXT', 'adresse' => 'TEXT', 'code_postal' => 'TEXT', 'ville' => 'TEXT', 'telephone' => 'TEXT', 'courriel' => 'TEXT', 'apropos' => 'TEXT', 'type' => 'TEXT DEFAULT prospect'], 12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'code_client' => 'TEXT', 'adresse' => 'TEXT', 'code_postal' => 'TEXT', 'ville' => 'TEXT', 'telephone' => 'TEXT', 'courriel' => 'TEXT', 'apropos' => 'TEXT', 'type' => 'TEXT DEFAULT prospect'],
13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], 13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'],
14 'devis' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL', 'delai_livraison' => 'TEXT', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT DEFAULT non'], 14 'devis' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'prix_devis' => 'REAL', 'total_HT' => 'REAL', 'delai_livraison' => 'TEXT', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT DEFAULT non'],
15 'factures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], 15 'factures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'],
16 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], 16 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'],
17 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'loyers_payes' => 'INTEGER', 'caution' => 'INTEGER'] 17 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'loyers_payes' => 'INTEGER', 'caution' => 'INTEGER']