Projet e-stok  0.2
BTS SNIR LaSalle Avignon 2020
Article.cpp
Aller à la documentation de ce fichier.
1 #include "Article.h"
2 #include "Bdd.h"
3 #include <QtMath>
4 
17 Bdd* Article::bdd = Bdd::getInstance();
18 
24 Article::Article(QObject *parent) : QObject(parent)
25 {
26  #ifdef DEBUG_ARTICLE
27  qDebug() << Q_FUNC_INFO;
28  #endif
29  //bdd = Bdd::getInstance();
30 }
31 
37 {
38  //Bdd::detruireInstance();
39  #ifdef DEBUG_ARTICLE
40  qDebug() << Q_FUNC_INFO;
41  #endif
42 }
43 
50 bool Article::recupererDonneesArticle(QString idArticle, int numCasier)
51 {
52  if(idArticle.isEmpty())
53  return false;
54 
55  QString requeteBDD;
56 
57  if(numCasier == 0)
58  {
59  requeteBDD = "SELECT Stock.idStock, Article.idArticle, Article.Nom AS Article, Type.idType, Type.nom AS Type, Comptage.idComptage, Comptage.Nom AS Comptage, Article.Code, Article.Designation, Stock.Quantite, Stock.Disponible, Article.Poids, Stock.Tare, Unite.idUnite, Unite.Nom, Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.idArticle = '" + idArticle + "'";
60  }
61  else
62  {
63  requeteBDD = "SELECT Stock.idStock, Article.idArticle, Article.Nom AS Article, Type.idType, Type.nom AS Type, Comptage.idComptage, Comptage.Nom AS Comptage, Article.Code, Article.Designation, Stock.Quantite, Stock.Disponible, Article.Poids, Stock.Tare, Unite.idUnite, Unite.Nom, Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.idArticle = '" + idArticle + "' AND Stock.numeroCasier = '" + numCasier + "'";
64  }
65 
66  QStringList donnees; // un seul casier pour cet article
67  bdd->recuperer(requeteBDD, donnees);
68 
69  #ifdef DEBUG_ARTICLE
70  qDebug() << Q_FUNC_INFO << donnees;
71  #endif
72 
73  if(donnees.size() > 0)
74  {
75  this->idStock = donnees.at(TABLE_ARTICLE_ID_STOCK);
76  this->idArticle = donnees.at(TABLE_ARTICLE_ID_ARTICLE);
77  this->nomArticle = donnees.at(TABLE_ARTICLE_NOM_ARTICLE);
78  this->idType = donnees.at(TABLE_ARTICLE_ID_TYPE);
79  this->nomType = donnees.at(TABLE_ARTICLE_NOM_TYPE);
80  this->idComptage = donnees.at(TABLE_ARTICLE_ID_COMPTAGE);
81  this->nomComptage = donnees.at(TABLE_ARTICLE_NOM_COMPTAGE);
82  this->codeBarre = donnees.at(TABLE_ARTICLE_CODE_BARRE);
83  this->designation = donnees.at(TABLE_ARTICLE_DESIGNATION);
84  this->quantite = donnees.at(TABLE_ARTICLE_QUANTITE);
85  this->disponible = donnees.at(TABLE_ARTICLE_DISPONIBLE);
86  this->poidsArticle = donnees.at(TABLE_ARTICLE_POIDS);
87  this->tare = donnees.at(TABLE_ARTICLE_TARE);
88  this->idUnite = donnees.at(TABLE_ARTICLE_ID_UNITE);
89  this->nomUnite = donnees.at(TABLE_ARTICLE_NOM_UNITE);
90  this->numeroCasier = donnees.at(TABLE_ARTICLE_NUMERO_CASIER);
91  return true;
92  }
93  return false;
94 }
95 
103 {
104  if(nomArticle.isEmpty())
105  return false;
106 
107  QString requeteBDD;
108 
109  if(numCasier == 0)
110  {
111  requeteBDD = "SELECT Stock.idStock, Article.idArticle, Article.Nom AS Article, Type.idType, Type.nom AS Type, Comptage.idComptage, Comptage.Nom AS Comptage, Article.Code, Article.Designation, Stock.Quantite, Stock.Disponible, Article.Poids, Stock.Tare, Unite.idUnite, Unite.Nom, Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.Nom = '" + nomArticle + "'";
112  }
113  else
114  {
115  requeteBDD = "SELECT Stock.idStock, Article.idArticle, Article.Nom AS Article, Type.idType, Type.nom AS Type, Comptage.idComptage, Comptage.Nom AS Comptage, Article.Code, Article.Designation, Stock.Quantite, Stock.Disponible, Article.Poids, Stock.Tare, Unite.idUnite, Unite.Nom, Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.Nom = '" + nomArticle + "' AND Stock.numeroCasier = '" + numCasier + "'";
116  }
117 
118  QStringList donnees; // un seul casier pour cet article
119  bdd->recuperer(requeteBDD, donnees);
120 
121  #ifdef DEBUG_ARTICLE
122  qDebug() << Q_FUNC_INFO << donnees;
123  #endif
124 
125  if(donnees.size() > 0)
126  {
127  this->idStock = donnees.at(TABLE_ARTICLE_ID_STOCK);
128  this->idArticle = donnees.at(TABLE_ARTICLE_ID_ARTICLE);
129  this->nomArticle = donnees.at(TABLE_ARTICLE_NOM_ARTICLE);
130  this->idType = donnees.at(TABLE_ARTICLE_ID_TYPE);
131  this->nomType = donnees.at(TABLE_ARTICLE_NOM_TYPE);
132  this->idComptage = donnees.at(TABLE_ARTICLE_ID_COMPTAGE);
133  this->nomComptage = donnees.at(TABLE_ARTICLE_NOM_COMPTAGE);
134  this->codeBarre = donnees.at(TABLE_ARTICLE_CODE_BARRE);
135  this->designation = donnees.at(TABLE_ARTICLE_DESIGNATION);
136  this->quantite = donnees.at(TABLE_ARTICLE_QUANTITE);
137  this->disponible = donnees.at(TABLE_ARTICLE_DISPONIBLE);
138  this->poidsArticle = donnees.at(TABLE_ARTICLE_POIDS);
139  this->tare = donnees.at(TABLE_ARTICLE_TARE);
140  this->idUnite = donnees.at(TABLE_ARTICLE_ID_UNITE);
141  this->nomUnite = donnees.at(TABLE_ARTICLE_NOM_UNITE);
142  this->numeroCasier = donnees.at(TABLE_ARTICLE_NUMERO_CASIER);
143  return true;
144  }
145 
146  return false;
147 }
148 
156 {
157  if(numeroCasier.isEmpty())
158  return false;
159 
160  QString requeteBDD;
161 
162  requeteBDD = "SELECT Stock.idStock, Article.idArticle, Article.Nom AS Article, Type.idType, Type.nom AS Type, Comptage.idComptage, Comptage.Nom AS Comptage, Article.Code, Article.Designation, Stock.Quantite, Stock.Disponible, Article.Poids, Stock.Tare, Unite.idUnite, Unite.Nom, Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Stock.numeroCasier = '" + numeroCasier + "'";
163 
164  QStringList donnees;
165  bdd->recuperer(requeteBDD, donnees);
166 
167  #ifdef DEBUG_ARTICLE
168  qDebug() << Q_FUNC_INFO << donnees;
169  #endif
170 
171  if(donnees.size() > 0)
172  {
173  this->idStock = donnees.at(TABLE_ARTICLE_ID_STOCK);
174  this->idArticle = donnees.at(TABLE_ARTICLE_ID_ARTICLE);
175  this->nomArticle = donnees.at(TABLE_ARTICLE_NOM_ARTICLE);
176  this->idType = donnees.at(TABLE_ARTICLE_ID_TYPE);
177  this->nomType = donnees.at(TABLE_ARTICLE_NOM_TYPE);
178  this->idComptage = donnees.at(TABLE_ARTICLE_ID_COMPTAGE);
179  this->nomComptage = donnees.at(TABLE_ARTICLE_NOM_COMPTAGE);
180  this->codeBarre = donnees.at(TABLE_ARTICLE_CODE_BARRE);
181  this->designation = donnees.at(TABLE_ARTICLE_DESIGNATION);
182  this->quantite = donnees.at(TABLE_ARTICLE_QUANTITE);
183  this->disponible = donnees.at(TABLE_ARTICLE_DISPONIBLE);
184  this->poidsArticle = donnees.at(TABLE_ARTICLE_POIDS);
185  this->tare = donnees.at(TABLE_ARTICLE_TARE);
186  this->idUnite = donnees.at(TABLE_ARTICLE_ID_UNITE);
187  this->nomUnite = donnees.at(TABLE_ARTICLE_NOM_UNITE);
188  this->numeroCasier = donnees.at(TABLE_ARTICLE_NUMERO_CASIER);
189  return true;
190  }
191 
192  return false;
193 }
194 
202 {
203  QString requete = "SELECT COUNT(Stock.idArticle) FROM Stock INNER JOIN Article ON Stock.idArticle = Article.idArticle WHERE Article.idArticle = '" + idArticle + "'";
204 
205  QString donnees;
206  bdd->recuperer(requete, donnees);
207 
208  return donnees.toUInt();
209 }
210 
218 {
219  QString requete = "SELECT COUNT(Stock.idArticle) FROM Stock INNER JOIN Article ON Stock.idArticle = Article.idArticle WHERE Article.Nom = '" + nomArticle + "'";
220 
221  QString donnees;
222  bdd->recuperer(requete, donnees);
223 
224  return donnees.toUInt();
225 }
226 
234 {
235  QString requete = "SELECT Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.idArticle = '" + idArticle + "'";
236 
237  QVector<QString> donnees;
238  bdd->recuperer(requete, donnees);
239 
240  return donnees;
241 }
242 
250 {
251  QString requete = "SELECT Stock.numeroCasier FROM Stock INNER JOIN Article ON Article.idArticle=Stock.idArticle INNER JOIN Type ON Type.idType=Article.idType INNER JOIN Comptage ON Comptage.idComptage=Stock.idComptage INNER JOIN Unite ON Unite.idUnite=Stock.idUnite WHERE Article.Nom = '" + nomArticle + "'";
252 
253  QVector<QString> donnees;
254  bdd->recuperer(requete, donnees);
255 
256  return donnees;
257 }
258 
266 {
267  switch(champ)
268  {
270  return this->idStock;
271  break;
273  return this->idArticle;
274  break;
276  return this->nomArticle;
277  break;
279  return this->idType;
280  break;
282  return this->nomType;
283  break;
285  return this->idComptage;
286  break;
288  return this->nomComptage;
289  break;
291  return this->codeBarre;
292  break;
294  return this->designation;
295  break;
297  return this->quantite;
298  break;
300  return this->disponible;
301  break;
302  case TABLE_ARTICLE_POIDS:
303  return this->poidsArticle;
304  break;
305  case TABLE_ARTICLE_TARE:
306  return this->tare;
307  break;
309  return this->idUnite;
310  break;
312  return this->nomUnite;
313  break;
315  return this->numeroCasier;
316  break;
317  default:
318  qDebug() << Q_FUNC_INFO << champ << "champ inconnu";
319  }
320  return QString("");
321 }
322 
329 {
330  if(idArticle.isEmpty())
331  return;
332  if(this->quantite != quantite)
333  {
334  #ifdef DEBUG_ARTICLE
335  qDebug() << Q_FUNC_INFO << "quantite" << quantite;
336  #endif
337  this->quantite = quantite;
338  QString requete = "UPDATE Stock SET Disponible =" + quantite + " WHERE idArticle =" + idArticle + ";";
339  bdd->executer(requete);
340  }
341 }
Déclaration de la classe Article.
QString nomComptage
nomComptage de l&#39;article récupéré
Definition: Article.h:88
Definition: Article.h:34
QString quantite
quantite de l&#39;article récupéré
Definition: Article.h:91
QString tare
tare du numéro de casier de l&#39;article récupéré
Definition: Article.h:94
bool executer(QString requete)
exécute une requête SQL de type UPDATE, INSERT et DELETE
Definition: Bdd.cpp:146
Definition: Article.h:44
QString idArticle
idArticle de l&#39;article récupéré
Definition: Article.h:83
Definition: Article.h:45
QString idUnite
idUnite de l&#39;article récupéré
Definition: Article.h:95
Definition: Article.h:40
void mettreAJourQuantite(QString quantite)
Définition de la méthode mettreAJourQuantite.
Definition: Article.cpp:328
Article(QObject *parent=nullptr)
Définition du constructeur de la classe Article.
Definition: Article.cpp:24
QString nomType
nomType de l&#39;article récupéré
Definition: Article.h:86
Definition: Article.h:30
QString nomUnite
nomUnite de l&#39;article récupéré
Definition: Article.h:96
QString idComptage
idComptage de l&#39;article récupéré
Definition: Article.h:87
Definition: Article.h:33
Definition: Article.h:39
static unsigned int recupererNombreCasiersPourIdArticle(QString idArticle)
Définition de la méthode recupererNombreCasiersPourIdArticle.
Definition: Article.cpp:201
Definition: Article.h:35
Definition: Article.h:36
Definition: Article.h:38
QString poidsArticle
poidsArticle de l&#39;article récupéré
Definition: Article.h:93
QString designation
designation de l&#39;article récupéré
Definition: Article.h:90
QString get(ChampArticle champ)
Définition de la méthode get.
Definition: Article.cpp:265
QString disponible
disponibilité de l&#39;article récupéré
Definition: Article.h:92
static QVector< QString > recupererNumeroCasierPourIdArticle(QString idArticle)
Définition de la méthode recupererNumeroCasierPourIdArticle.
Definition: Article.cpp:233
QString codeBarre
codeBarre de l&#39;article récupéré
Definition: Article.h:89
bool recupererDonneesArticle(QString idArticle, int numCasier=0)
Récupère les données d&#39;un article de l&#39;armoire dans la base de données par son idArticle.
Definition: Article.cpp:50
Déclaration de la classe Bdd.
bool recupererDonneesArticleParNom(QString nomArticle, int numCasier=0)
Récupère les données d&#39;un article de l&#39;armoire dans la base de données par son nomArticle.
Definition: Article.cpp:102
QString nomArticle
nomArticle de l&#39;article récupéré
Definition: Article.h:84
Definition: Article.h:37
Definition: Article.h:42
ChampArticle
Définit les différents champs pour une requête d&#39;un article dans le stock.
Definition: Article.h:28
bool recuperer(QString requete, QString &donnees)
exécute une requête SQL de type SELECT et récupère un champ d&#39;un seul enregistrement ...
Definition: Bdd.cpp:187
Definition: Article.h:41
QString numeroCasier
numeroCasier de l&#39;article récupéré
Definition: Article.h:97
static QVector< QString > recupererNumeroCasierPourNomArticle(QString nomArticle)
Définition de la méthode recupererNumeroCasierPourNomArticle.
Definition: Article.cpp:249
static unsigned int recupererNombreCasiersPourNomArticle(QString nomArticle)
Définition de la méthode recupererNombreCasiersPourNomArticle.
Definition: Article.cpp:217
static Bdd * bdd
association d&#39;un objet Bdd (accès à la base de données)
Definition: Article.h:81
Definition: Article.h:43
~Article()
Définition de la méthode ~Article.
Definition: Article.cpp:36
Déclaration de la classe utilisant la base de données.
Definition: Bdd.h:42
Definition: Article.h:31
bool recupererDonneesArticleParNumeroCasier(QString numeroCasier)
Définition de la méthode recupererDonneesArticleParNumeroCasier.
Definition: Article.cpp:155
static Bdd * getInstance()
Définition méthode getInstance()
Definition: Bdd.cpp:53
Definition: Article.h:32
QString idType
idType de l&#39;article récupéré
Definition: Article.h:85
QString idStock
idStock de l&#39;article récupéré
Definition: Article.h:82