Projet e-stock  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 
94  return false;
95 }
96 
104 {
105  if(nomArticle.isEmpty())
106  return false;
107 
108  QString requeteBDD;
109 
110  if(numCasier == 0)
111  {
112  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 + "'";
113  }
114  else
115  {
116  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 + "'";
117  }
118 
119  QStringList donnees; // un seul casier pour cet article
120  bdd->recuperer(requeteBDD, donnees);
121 
122  #ifdef DEBUG_ARTICLE
123  qDebug() << Q_FUNC_INFO << donnees;
124  #endif
125 
126  if(donnees.size() > 0)
127  {
128  this->idStock = donnees.at(TABLE_ARTICLE_ID_STOCK);
129  this->idArticle = donnees.at(TABLE_ARTICLE_ID_ARTICLE);
130  this->nomArticle = donnees.at(TABLE_ARTICLE_NOM_ARTICLE);
131  this->idType = donnees.at(TABLE_ARTICLE_ID_TYPE);
132  this->nomType = donnees.at(TABLE_ARTICLE_NOM_TYPE);
133  this->idComptage = donnees.at(TABLE_ARTICLE_ID_COMPTAGE);
134  this->nomComptage = donnees.at(TABLE_ARTICLE_NOM_COMPTAGE);
135  this->codeBarre = donnees.at(TABLE_ARTICLE_CODE_BARRE);
136  this->designation = donnees.at(TABLE_ARTICLE_DESIGNATION);
137  this->quantite = donnees.at(TABLE_ARTICLE_QUANTITE);
138  this->disponible = donnees.at(TABLE_ARTICLE_DISPONIBLE);
139  this->poidsArticle = donnees.at(TABLE_ARTICLE_POIDS);
140  this->tare = donnees.at(TABLE_ARTICLE_TARE);
141  this->idUnite = donnees.at(TABLE_ARTICLE_ID_UNITE);
142  this->nomUnite = donnees.at(TABLE_ARTICLE_NOM_UNITE);
143  this->numeroCasier = donnees.at(TABLE_ARTICLE_NUMERO_CASIER);
144  return true;
145  }
146 
147  return false;
148 }
149 
157 {
158  if(numeroCasier.isEmpty())
159  return false;
160 
161  QString requeteBDD;
162 
163  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 + "'";
164 
165  QStringList donnees;
166  bdd->recuperer(requeteBDD, donnees);
167 
168  #ifdef DEBUG_ARTICLE
169  qDebug() << Q_FUNC_INFO << donnees;
170  #endif
171 
172  if(donnees.size() > 0)
173  {
174  this->idStock = donnees.at(TABLE_ARTICLE_ID_STOCK);
175  this->idArticle = donnees.at(TABLE_ARTICLE_ID_ARTICLE);
176  this->nomArticle = donnees.at(TABLE_ARTICLE_NOM_ARTICLE);
177  this->idType = donnees.at(TABLE_ARTICLE_ID_TYPE);
178  this->nomType = donnees.at(TABLE_ARTICLE_NOM_TYPE);
179  this->idComptage = donnees.at(TABLE_ARTICLE_ID_COMPTAGE);
180  this->nomComptage = donnees.at(TABLE_ARTICLE_NOM_COMPTAGE);
181  this->codeBarre = donnees.at(TABLE_ARTICLE_CODE_BARRE);
182  this->designation = donnees.at(TABLE_ARTICLE_DESIGNATION);
183  this->quantite = donnees.at(TABLE_ARTICLE_QUANTITE);
184  this->disponible = donnees.at(TABLE_ARTICLE_DISPONIBLE);
185  this->poidsArticle = donnees.at(TABLE_ARTICLE_POIDS);
186  this->tare = donnees.at(TABLE_ARTICLE_TARE);
187  this->idUnite = donnees.at(TABLE_ARTICLE_ID_UNITE);
188  this->nomUnite = donnees.at(TABLE_ARTICLE_NOM_UNITE);
189  this->numeroCasier = donnees.at(TABLE_ARTICLE_NUMERO_CASIER);
190  return true;
191  }
192 
193  return false;
194 }
195 
203 {
204  QString requete = "SELECT COUNT(Stock.idArticle) FROM Stock INNER JOIN Article ON Stock.idArticle = Article.idArticle WHERE Article.idArticle = '" + idArticle + "'";
205 
206  QString donnees;
207  bdd->recuperer(requete, donnees);
208 
209  return donnees.toUInt();
210 }
211 
219 {
220  QString requete = "SELECT COUNT(Stock.idArticle) FROM Stock INNER JOIN Article ON Stock.idArticle = Article.idArticle WHERE Article.Nom = '" + nomArticle + "'";
221 
222  QString donnees;
223  bdd->recuperer(requete, donnees);
224 
225  return donnees.toUInt();
226 }
227 
235 {
236  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 + "'";
237 
238  QVector<QString> donnees;
239  bdd->recuperer(requete, donnees);
240 
241  return donnees;
242 }
243 
251 {
252  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 + "'";
253 
254  QVector<QString> donnees;
255  bdd->recuperer(requete, donnees);
256 
257  return donnees;
258 }
259 
267 {
268  switch(champ)
269  {
271  return this->idStock;
272  break;
274  return this->idArticle;
275  break;
277  return this->nomArticle;
278  break;
280  return this->idType;
281  break;
283  return this->nomType;
284  break;
286  return this->idComptage;
287  break;
289  return this->nomComptage;
290  break;
292  return this->codeBarre;
293  break;
295  return this->designation;
296  break;
298  return this->quantite;
299  break;
301  return this->disponible;
302  break;
303  case TABLE_ARTICLE_POIDS:
304  return this->poidsArticle;
305  break;
306  case TABLE_ARTICLE_TARE:
307  return this->tare;
308  break;
310  return this->idUnite;
311  break;
313  return this->nomUnite;
314  break;
316  return this->numeroCasier;
317  break;
318  default:
319  qDebug() << Q_FUNC_INFO << champ << "champ inconnu";
320  }
321  return QString("");
322 }
323 
330 {
331  if(idArticle.isEmpty())
332  return;
333  if(this->quantite != quantite)
334  {
335  #ifdef DEBUG_ARTICLE
336  qDebug() << Q_FUNC_INFO << "quantite" << quantite;
337  #endif
338  this->quantite = quantite;
339  QString requete = "UPDATE Stock SET Disponible =" + quantite + " WHERE idArticle =" + idArticle + ";";
340  bdd->executer(requete);
341  }
342 }
Déclaration de la classe Article.
QString nomComptage
nomComptage de l&#39;article récupéré
Definition: Article.h:89
Definition: Article.h:35
QString quantite
quantite de l&#39;article récupéré
Definition: Article.h:92
QString tare
tare du numéro de casier de l&#39;article récupéré
Definition: Article.h:95
bool executer(QString requete)
exécute une requête SQL de type UPDATE, INSERT et DELETE
Definition: Bdd.cpp:146
Definition: Article.h:45
QString idArticle
idArticle de l&#39;article récupéré
Definition: Article.h:84
Definition: Article.h:46
QString idUnite
idUnite de l&#39;article récupéré
Definition: Article.h:96
Definition: Article.h:41
void mettreAJourQuantite(QString quantite)
Définition de la méthode mettreAJourQuantite.
Definition: Article.cpp:329
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:87
Definition: Article.h:31
QString nomUnite
nomUnite de l&#39;article récupéré
Definition: Article.h:97
QString idComptage
idComptage de l&#39;article récupéré
Definition: Article.h:88
Definition: Article.h:34
Definition: Article.h:40
static unsigned int recupererNombreCasiersPourIdArticle(QString idArticle)
Définition de la méthode recupererNombreCasiersPourIdArticle.
Definition: Article.cpp:202
Definition: Article.h:36
Definition: Article.h:37
Definition: Article.h:39
QString poidsArticle
poidsArticle de l&#39;article récupéré
Definition: Article.h:94
QString designation
designation de l&#39;article récupéré
Definition: Article.h:91
QString get(ChampArticle champ)
Définition de la méthode get.
Definition: Article.cpp:266
QString disponible
disponibilité de l&#39;article récupéré
Definition: Article.h:93
static QVector< QString > recupererNumeroCasierPourIdArticle(QString idArticle)
Définition de la méthode recupererNumeroCasierPourIdArticle.
Definition: Article.cpp:234
QString codeBarre
codeBarre de l&#39;article récupéré
Definition: Article.h:90
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:103
QString nomArticle
nomArticle de l&#39;article récupéré
Definition: Article.h:85
Definition: Article.h:38
Definition: Article.h:43
ChampArticle
Définit les différents champs pour une requête d&#39;un article dans le stock.
Definition: Article.h:29
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
La classe QObject est la classe de base de tous les objets Qt. Elle permet à ces objets Qt de dispose...
Definition: Article.h:42
QString numeroCasier
numeroCasier de l&#39;article récupéré
Definition: Article.h:98
static QVector< QString > recupererNumeroCasierPourNomArticle(QString nomArticle)
Définition de la méthode recupererNumeroCasierPourNomArticle.
Definition: Article.cpp:250
static unsigned int recupererNombreCasiersPourNomArticle(QString nomArticle)
Définition de la méthode recupererNombreCasiersPourNomArticle.
Definition: Article.cpp:218
static Bdd * bdd
association d&#39;un objet Bdd (accès à la base de données)
Definition: Article.h:82
Definition: Article.h:44
~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:32
bool recupererDonneesArticleParNumeroCasier(QString numeroCasier)
Définition de la méthode recupererDonneesArticleParNumeroCasier.
Definition: Article.cpp:156
static Bdd * getInstance()
Définition méthode getInstance()
Definition: Bdd.cpp:53
Definition: Article.h:33
QString idType
idType de l&#39;article récupéré
Definition: Article.h:86
QString idStock
idStock de l&#39;article récupéré
Definition: Article.h:83