dbb = $dbb; } function getFrequentations($date=null){ $query = $this->dbb->query("SELECT t.`Numéro`, t.Nom, t.SeuilFMI as max, (SUM(f.CompteurEntree) - SUM(f.CompteurSortie)) AS Instantanee, SUM(f.CompteurEntree) AS journalier FROM FMICompteur f INNER JOIN `TypeAccès` t ON f.NumTypeAcces=t.`Numéro` WHERE t.`Utilisé`=-1 AND t.AffichageFMI=-1 GROUP BY t.`Numéro`"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getAllTypeAcces($date = null){ $query = $this->dbb->query("SELECT t.`Numéro`, t.Nom FROM `TypeAccès` t WHERE t.`Utilisé`=-1"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCaseAutorisee($list_cartes_acces_autorisees,$date = null){ $query = $this->dbb->prepare("SELECT h.HeurePassage AS Heure, c.Nom AS 'Accès', a.Nom AS Article, (SELECT concat(Abonné.Nom,' ',Abonné.Prénom) AS NomAbonné FROM VenteAbonné INNER JOIN Abonné ON VenteAbonné.NuméroAbonné = Abonné.Numéro WHERE VenteAbonné.NuméroCarte = h.NuméroBadge ORDER BY VenteAbonné.DateVente DESC, VenteAbonné.Heure DESC, VenteAbonné.Identificateur DESC LIMIT 1) AS Abonné, 'OK' AS Message, '' AS Description FROM HistoriquePassage h INNER JOIN Article a ON h.`NuméroArticle` = a.`Numéro` INNER JOIN `CarteAccès` c ON h.`NuméroCarteAccès` = c.`Numéro` WHERE h.Sens = 0 AND h.DatePassage = :date AND h.NuméroBadge > 0 AND c.`NuméroTypeAccès` IN (".implode(",",$list_cartes_acces_autorisees).") ORDER BY h.HeurePassage DESC LIMIT 20"); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCaseRefusee($list_cartes_acces_autorisees,$date = null) { $query = $this->dbb->prepare("SELECT TIME(t.DateHeure) AS Heure, t.Acces AS 'Accès', a.Nom as Article, (SELECT concat(Abonné.Nom,' ',Abonné.Prénom) AS NomAbonné FROM VenteAbonné INNER JOIN Abonné ON VenteAbonné.NuméroAbonné = Abonné.Numéro WHERE VenteAbonné.NuméroCarte = t.NumeroBadge ORDER BY VenteAbonné.DateVente DESC, VenteAbonné.Heure DESC, VenteAbonné.Identificateur DESC LIMIT 1) AS Abonné, t.Message as Message, T.Description as Description FROM TestBadge t INNER JOIN Article a ON t.article = a.`Numéro` INNER JOIN `CarteAccès` c ON t.AdresseIP=c.`AdresseIPCarteAccès` WHERE t.Sens = 'e' AND DATE(t.DateHeure) =:date AND t.NumeroBadge > 0 AND t.CodeOK=0 AND c.`NuméroTypeAccès` IN (".implode(",",$list_cartes_acces_autorisees).") ORDER BY t.DateHeure DESC LIMIT 20"); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCasesAutoriseeEtRefusee($list_cartes_acces_autorisees,$date = null) { $query = $this->dbb->prepare(" (SELECT h.HeurePassage AS Heure, c.Nom AS 'Accès', a.Nom AS Article, (SELECT concat(Abonné.Nom,' ',Abonné.Prénom) AS NomAbonné FROM VenteAbonné INNER JOIN Abonné ON VenteAbonné.NuméroAbonné = Abonné.Numéro WHERE VenteAbonné.NuméroCarte = h.NuméroBadge ORDER BY VenteAbonné.DateVente DESC, VenteAbonné.Heure DESC, VenteAbonné.Identificateur DESC LIMIT 1) AS Abonné, 'OK' AS Message, '' AS Description FROM HistoriquePassage h INNER JOIN Article a ON h.`NuméroArticle` = a.`Numéro` INNER JOIN `CarteAccès` c ON h.`NuméroCarteAccès` = c.`Numéro` WHERE h.Sens = 0 AND h.DatePassage = :date AND h.NuméroBadge > 0 AND c.`NuméroTypeAccès` IN (".implode(",",$list_cartes_acces_autorisees).") ORDER BY h.HeurePassage DESC LIMIT 20) UNION (SELECT TIME(t.DateHeure) as Heure, t.Acces as 'Accès', a.Nom as Article, (SELECT concat(Abonné.Nom,' ',Abonné.Prénom) AS NomAbonné FROM VenteAbonné INNER JOIN Abonné ON VenteAbonné.NuméroAbonné = Abonné.Numéro WHERE VenteAbonné.NuméroCarte = t.NumeroBadge ORDER BY VenteAbonné.DateVente DESC, VenteAbonné.Heure DESC, VenteAbonné.Identificateur DESC LIMIT 1) AS Abonné, t.Message as Message, T.Description as Description FROM TestBadge t INNER JOIN Article a ON t.article = a.`Numéro` INNER JOIN `CarteAccès` c ON t.AdresseIP=c.`AdresseIPCarteAccès` WHERE t.Sens = 'e' AND DATE(t.DateHeure) = :date AND t.NumeroBadge > 0 AND t.CodeOK=0 AND c.`NuméroTypeAccès` IN (".implode(",",$list_cartes_acces_autorisees).") ORDER BY t.DateHeure DESC LIMIT 20) ORDER BY Heure DESC"); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } // Requête pour la liste des points de vente function getListPointsDeVente(){ $query = $this->dbb->query("SELECT p.`Numéro`, p.Nom, p.Type, p.image_caisse FROM PosteCaisse p WHERE p.`Utilisé`=-1"); return $query->fetchAll(PDO::FETCH_ASSOC); // Cette requête permet de connaître les caisses « manuel », « automatique », « pda » } // Pour savoir s’il y a une caisse « web », il faut faire la requête suivante : function verifierArticleWeb(){ $query = $this->dbb->query("SELECT COUNT(*) as total_web FROM Article a WHERE a.WebVenteAutorise=-1 OR a.WebRechargementAutorise=-1"); return $query->fetch(); // Si la valeur est >0 alors il y a une caisse web, et elle a le numéro « 99 ». } // Requête pour connaître la somme des ventes pour les caisses « manuel », « automatique », « pda »: function getSommeVentesCaisse($num_caisse, $date=null) { $query = $this->dbb->prepare("SELECT SUM(d.Valeur1 + d.Valeur2 + d.Valeur3 + d.Valeur4) AS Total FROM DetailsEncaissement d WHERE d.`NuméroPosteCaisse`=:num_caisse AND d.DATE=:date"); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->bindValue(":num_caisse", $num_caisse, PDO::PARAM_INT); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); } // Requête pour connaître la somme des ventes pour la caisse « web » : function getSommeVentesWeb($date=null) { $query = $this->dbb->prepare("SELECT SUM(c.TotalTTC) AS Total FROM WebCommande c WHERE c.Reglement='P' AND date(c.DateHeureCreation)= :date"); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); } // Détails d’une caisse « manuel », « automatique », « pda »: function getDetailsVentesCaisse($num_caisse,$date=null) { $query = $this->dbb->prepare("SELECT d.`NuméroArticle` AS Numéro, d.NomArticle AS Nom, d.PrixTTCArticle AS Prix, SUM(d.`QuantitéArticleEnregistrée`) AS Qté, (d.PrixTTCArticle * SUM(d.`QuantitéArticleEnregistrée`)) AS Total FROM DetailsVente d WHERE d.`NuméroPosteCaisse`=:num_caisse AND d.DATE=:date GROUP BY d.`NuméroArticle`, d.PrixTTCArticle ORDER BY d.`NuméroArticle`, d.PrixTTCArticle "); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->bindValue(":num_caisse", $num_caisse, PDO::PARAM_INT); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } // Détail de la caisse web : function getDetailsVenteCaisseWeb($date=null) { $query = $this->dbb->prepare("SELECT d.NumArticle AS Numéro, d.NomArticle AS Nom, d.PrixTTCUnitaire AS Prix, SUM(d.Quantite) AS Qté, (d.PrixTTCUnitaire * SUM(d.Quantite)) AS Total FROM WebDetailsCommande d INNER JOIN WebCommande c ON d.IDCommande=c.ID WHERE c.Reglement='P' AND date(c.DateHeureCreation)= :date GROUP BY d.NumArticle, d.PrixTTCUnitaire ORDER BY d.NumArticle, d.PrixTTCUnitaire "); $query->bindValue(":date", $date, PDO::PARAM_STR); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } // Monitoring : //Pour lister les caisses prendre le même principe que vu ci-dessus. Ne pas inclure la caisse « web ». // Pour les accès, la requete est la suivante : function getListeAccesMonitoring(){ $query = $this->dbb->query("SELECT c.`Numéro`, c.Nom, c.image_carte_acces FROM `CarteAccès` c WHERE c.`Utilisé`=-1"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getInfoSupervisionCarte($numero) { $query = $this->dbb->prepare("SELECT * FROM Supervision s INNER JOIN `CarteAccès` c ON s.AdresseIP=c.`AdresseIPCarteAccès` WHERE c.`Numéro`=:numero ORDER BY s.DateHeure DESC LIMIT 1"); $query->bindValue(":numero", $numero, PDO::PARAM_INT); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); // X est le numéro de la table CarteAccès. //S’il y a un enregistrement et que «le champ « code » est différent de 0 alors on passe la case en jaune et uand on clique dessus, afficher une pop-up avec les champs : //« DateHeure » : « Nom » - « Description » } function MettreAJourImageTypeAcces($numero_type_acces,$nom_image) { $query = $this->dbb->prepare("update carteaccès set image_carte_acces=:image where Numéro=:numero_type_acces"); $query->execute(array(":image"=>$nom_image,":numero_type_acces"=>$numero_type_acces)); $count = $query->rowCount(); $errors = $query->errorInfo(); return ["count"=>$count,"error"=>$errors]; } /** * Mettre à jour l'image de la caisse */ function MettreAJourImageCaisse($numero,$nom_image) { $query = $this->dbb->prepare("update postecaisse set image_caisse=:image where Numéro=:numero_caisse"); $query->execute(array(":image"=>$nom_image,":numero_caisse"=>$numero)); $count = $query->rowCount(); $errors = $query->errorInfo(); return ["count"=>$count,"error"=>$errors]; } /** * Mettre à jour l'image de l'appareil */ function MettreAJourImageAppareil($numero,$nom_image) { $query = $this->dbb->prepare("update carteaccès set image_carte_acces=:image where Numéro=:numero_carte_acces"); $query->execute(array(":image"=>$nom_image,":numero_carte_acces"=>$numero)); $count = $query->rowCount(); $errors = $query->errorInfo(); return ["count"=>$count,"error"=>$errors]; } }