Beispiel #1
0
def sauvegardeClientmodif(Client1, Client2):
    '''
    Sauvegarde les modifications apportées à un client dans la base de données
    '''
    nom1 = Client1.nom
    prenom1 = Client1.prenom
    nom2 = Client2.nom
    prenom2 = Client2.prenom
    if nom1 != "" and prenom1 != "" and nom2 != "" and prenom2 != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(
                cur, "SELECT id FROM clients WHERE nom = %s AND prenom = %s;",
                (nom1, prenom1))
            id_cli1 = cur.fetchone()
            if id_cli1 != None:
                bdd.executerReq(
                    cur, "UPDATE clients SET nom = %s,prenom=%s \
                    WHERE nom = %s AND prenom = %s;",
                    (nom2, prenom2, nom1, prenom1))
            bdd.validerModifs(conn)
        except Exception:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
    else:
        raise exceptions.ExceptionEntreeVide()
    def MarquerCommandeLivree(id_commande):
        (cur, conn) = bdd.ouvrirConnexion()
        bdd.executerReq(cur, "UPDATE commande SET livree=%s WHERE idc=%s;", (
            True,
            id_commande,
        ))
        bdd.validerModifs(conn)
        bdd.fermerConnexion(cur, conn)


#if __name__ == "__main__":
#com=Commande('2004-10-19 10:23:54','2004-10-25 16:20:00',True,'Dorade 1 Orange 5')
#ch=com.chaine_course
#print(ch)
#liste_course=com.conversion_liste_course(ch)
#date_commande=com.date_de_commande
#print(liste_course)
#ex=com.verification_existence(liste_course,date_commande)
#print(ex)
#qu=com.verification_quantite(liste_course,date_commande)
#print(qu)
#trie=com.trierListeDeCourse(liste_course)
#print(trie)
#poids=com.calculPoids(liste_course)
#print(poids)
#volume=com.calculVolume(liste_course)
#print(volume)
#com.interaction(liste_course)
#print(liste_course)
Beispiel #3
0
def retraitAJour(Client):
    '''
    Retroune la liste des attriubts retiree des commadnes passées par un client
    '''
    nom = Client.nom
    prenom = Client.prenom
    ls = list()
    if nom != "" and prenom != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(
                cur, "SELECT id FROM clients WHERE nom = %s AND prenom = %s;",
                (nom, prenom))
            id_cli = cur.fetchone()
            bdd.executerReq(
                cur,
                "SELECT commandes.retiree FROM commandes,clients,commandes_clients \
            WHERE commandes.numero=commandes_clients.idc\
            AND commandes_clients.idcli=clients.id\
            AND clients.id = %s AND commandes.prete=True;", (id_cli))
            for pay in cur:
                ls.append(pay)
        except DatabaseError:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
            return ls
 def ajoutProduit(self, nom, categorie, quantite):
     #attention, le poids est celui du produit seul.
     conf = False
     if nom != "" and categorie != "" and quantite != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             #on verifie si le produit ajouter existe deja. Si c'est la cas, on mettera a jour les stock.
             #on part du principe que le poids et le volume est unique pour le nom.
             bdd.executerReq(cur, "SELECT * FROM produit WHERE nom = %s ;",
                             (nom, ))
             res1 = cur.fetchall()
             if res1 != []:
                 res = res1[0]
                 conf = True
                 idd = res[0]
                 stockVirt_nouv = int(res[5]) + quantite
                 stockReel_nouv = int(res[6]) + quantite
                 bdd.executerReq(
                     cur,
                     "UPDATE produit SET stock_virtuel=%s, stock_reel=%s WHERE idp=%s;",
                     (
                         stockVirt_nouv,
                         stockReel_nouv,
                         idd,
                     ))
                 bdd.validerModifs(conn)
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
     return conf
Beispiel #5
0
 def verification_capacite(self,nom_emplacement,quantite):
     """On verifie que l'emplacement selectionne n'est pas en sur capacite"""
     #on va faire la somme des stock_reel de la zone selectionnee, retourne True si cette somme est inferieur a la capacite de la zone.
     #une zone pourra contenir plusieur categories differentes.
     if nom_emplacement != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             #on selectionne la ou les categories qui sont dans la zone demandee.
             bdd.executerReq(cur, "SELECT categorie FROM emplacement WHERE nom=%s;" , (nom_emplacement,))
             res = cur.fetchone()
             #print(res)
             #on fait la somme des produits qui sont dans cette zone.
             bdd.executerReq(cur, "SELECT SUM(stock_reel) FROM produit WHERE categorie =%s;" , (res[0],))
             summ = cur.fetchone()
             somme_finale = int(summ[0])+quantite
             #print(summ[0])
             #on selectionne la capacite de la zone demandee.
             bdd.executerReq(cur, "SELECT capacite FROM emplacement WHERE nom=%s;" , (nom_emplacement,))
             capa = cur.fetchone()
             #print(capa[0])
             #on test en comparant capa[0] et summ[0]. 
             if somme_finale > int(capa[0]) : 
                 #print("Attention, la capacite de l'emplacement ne peut pas etre depassee. !")
                 return False
             else:
                 #print("On peut encore ajouter des produits dans cet emplacement")
                 return True
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
 def suppressionClient(self, nom, prenom):
     if nom != "" and prenom != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             bdd.executerReq(
                 cur,
                 "SELECT * FROM client WHERE nom = %s AND prenom = %s;", (
                     nom,
                     prenom,
                 ))
             res = cur.fetchone()
             if res != None:
                 bdd.executerReq(
                     cur, "DELETE FROM client WHERE nom=%s AND prenom=%s", (
                         nom,
                         prenom,
                     ))
                 bdd.validerModifs(conn)
                 bdd.fermerConnexion(cur, conn)
                 return True
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
 def nouveauProduit(self, nom, categorie, volume, poids, quantite, frais):
     if nom != "" and categorie != "" and volume != "" and poids != "" and quantite != "" and frais != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             #verification que c'est bien un nouveau produit
             bdd.executerReq(cur, "SELECT * FROM produit WHERE nom = %s ;",
                             (nom, ))
             res = cur.fetchone()
             if res == None:
                 bdd.executerReq(
                     cur,
                     "INSERT INTO produit (nom, categorie, volume, poids, stock_virtuel, stock_reel,frais) \
                     VALUES (%s, %s, %s, %s, %s, %s, %s);", (
                         nom,
                         categorie,
                         volume,
                         poids,
                         quantite,
                         quantite,
                         frais,
                     ))
                 bdd.validerModifs(conn)
                 bdd.fermerConnexion(cur, conn)
                 return True
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
Beispiel #8
0
def historiqueCommande(Client):
    '''
    Retorune la liste des commandes passées par un client
    '''
    nom = Client.nom
    prenom = Client.prenom
    ls = list()
    if nom != "" and prenom != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(
                cur, "SELECT id FROM clients WHERE nom = %s AND prenom = %s;",
                (nom, prenom))
            id_cli = cur.fetchone()
            bdd.executerReq(
                cur,
                "SELECT commandes.numero,commandes.ddc,commandes.ddr FROM commandes,clients,commandes_clients \
            WHERE commandes.numero=commandes_clients.idc\
            AND commandes_clients.idcli=clients.id\
            AND clients.id = %s;", (id_cli))
            for pay in cur:
                for ele in pay:
                    ls.append(str(ele))
        except DatabaseError:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
            return ls
 def historique(nom, prenom):
     # Retourne l'ensemble des commandes d'un client spécifié
     if nom != "" and prenom != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             bdd.executerReq(
                 cur, "SELECT idc FROM client WHERE nom=%s AND prenom=%s ;",
                 (
                     nom,
                     prenom,
                 ))
             lst = []
             res = cur.fetchone()[0]
             if res != None:
                 bdd.executerReq(
                     cur,
                     "SELECT idco FROM lien_client_commande WHERE idcl=%s ;",
                     (res, ))
                 id_co = cur.fetchall()
                 for i in range(0, len(id_co)):
                     bdd.executerReq(
                         cur,
                         "SELECT date_de_commande, date_de_livrasion, en_preparation, prete, livree, idc FROM commande WHERE idc=%s ;",
                         (id_co[i], ))
                     com = cur.fetchall()
                     lst.extend(com)
             else:
                 print("Le client n'existe pas.")
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
             return lst
 def interaction(self, liste_course):
     # Fonction qui propose un produit de substitution au client en cas de rupture de stock
     (cur, conn) = bdd.ouvrirConnexion()
     for i in range(0, len(liste_course) - 1, 2):
         article = liste_course[i]
         nombre = liste_course[i + 1]
         bdd.executerReq(cur,
                         "SELECT stock_virtuel FROM produit WHERE nom=%s;",
                         (article, ))
         res = cur.fetchone()
         if res == (0, ):
             print('On vous propose les produits suivants :')
             bdd.executerReq(cur,
                             "SELECT categorie FROM produit WHERE nom=%s;",
                             (article, ))
             ca = cur.fetchone()
             bdd.executerReq(
                 cur, "SELECT idp , nom FROM produit WHERE categorie=%s;",
                 (ca, ))
             tr = False
             while (tr == False):
                 for row in cur:
                     print(row)
                 nm = input('Entrez idp du produit : ')
                 bdd.executerReq(cur,
                                 "SELECT nom FROM produit WHERE idp=%s;",
                                 (nm, ))
                 fa = cur.fetchone()
                 if fa != None:
                     tr = True
             liste_course[i] = fa[0]
     bdd.fermerConnexion(cur, conn)
Beispiel #11
0
def verifComCli(Client, Commande):
    '''
    Verifie qu'une commande a bien était passées par Client
    '''
    nom = Client.nom
    prenom = Client.prenom
    numero = Commande.numero
    pk = None
    if nom != "" and prenom != "" and numero != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(
                cur, "SELECT id FROM clients WHERE nom = %s AND prenom = %s;",
                (nom, prenom))
            id_cli = cur.fetchone()
            bdd.executerReq(
                cur,
                "SELECT idc,idcli FROM commandes_clients WHERE idc=%s AND idcli=%s;",
                (numero, id_cli))
            pk = cur.fetchone()
        except DatabaseError:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
            return pk != None
 def AssocierCommandeClient(nom, prenom, id_commande):
     conf = [False, False]
     (cur, conn) = bdd.ouvrirConnexion()
     bdd.executerReq(cur,
                     "SELECT idc FROM client WHERE nom=%s AND prenom=%s ;",
                     (
                         nom,
                         prenom,
                     ))
     client = cur.fetchone()
     bdd.executerReq(cur, "SELECT * FROM commande WHERE idc=%s ;",
                     (id_commande, ))
     tout = cur.fetchone()
     if tout != None:
         conf[0] = True
         if client != None:
             conf[1] = True
             id_client = client[0]
             bdd.executerReq(
                 cur,
                 "UPDATE lien_client_commande SET idcl=%s WHERE idco=%s ;",
                 (
                     id_client,
                     id_commande,
                 ))
             bdd.validerModifs(conn)
     bdd.fermerConnexion(cur, conn)
     return conf
 def modificationClient(self, nom_ancien, prenom_ancien, nom_nouv,
                        prenom_nouv, adresse_nouv, accord_sub_nouv,
                        telephone_nouv, adresse_mail_nouv):
     if nom_ancien != "" and prenom_ancien !="" and nom_nouv != "" and prenom_nouv !="" and adresse_nouv != "" \
     and accord_sub_nouv !="" and telephone_nouv !="" and adresse_mail_nouv !="" :
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             #on verifie l'existence du client qui doit être modifie.
             bdd.executerReq(
                 cur,
                 "SELECT idc FROM client WHERE nom = %s AND prenom = %s;", (
                     nom_ancien,
                     prenom_ancien,
                 ))
             res = cur.fetchone()
             if res != None:
                 idd = res[0]
                 bdd.executerReq(cur, " UPDATE client SET nom=%s, prenom=%s, adresse=%s, accord_sub=%s, telephone=%s, adresse_mail=%s WHERE idc= %s ;", \
                                 (nom_nouv, prenom_nouv, adresse_nouv, accord_sub_nouv, telephone_nouv, adresse_mail_nouv, idd, ))
                 bdd.validerModifs(conn)
                 bdd.fermerConnexion(cur, conn)
                 return True
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
 def MarquerCommandePrete(id_commande):
     (cur, conn) = bdd.ouvrirConnexion()
     bdd.executerReq(cur, "UPDATE commande SET prete=%s WHERE idc=%s;", (
         True,
         id_commande,
     ))
     bdd.validerModifs(conn)
     bdd.fermerConnexion(cur, conn)
 def selection_chaine_course(self, id_commande):
     # Cette fonction a un rôle uniquement dans l'interaction avec la base de donnée
     (cur, conn) = bdd.ouvrirConnexion()
     bdd.executerReq(cur,
                     "SELECT chaine_de_course FROM commande WHERE idc=%s;",
                     (id_commande, ))
     chaine_course = cur.fetchone()[0]
     bdd.fermerConnexion(cur, conn)
     return chaine_course
 def AfficherCommande():
     (cur, conn) = bdd.ouvrirConnexion()
     bdd.executerReq(
         cur,
         "SELECT date_de_commande, date_de_livrasion, en_preparation, prete, livree FROM commande;"
     )
     coco = cur.fetchall()
     bdd.fermerConnexion(cur, conn)
     return coco
Beispiel #17
0
 def determinerEmplacement(self,categorie):
     (cur, conn) = bdd.ouvrirConnexion()
     try:
         bdd.executerReq(cur, "SELECT nom FROM emplacement WHERE categorie=%s;" , (categorie,))
         res = cur.fetchone()[0]
     except Exception:
         raise
     finally:
         bdd.fermerConnexion(cur, conn)
     return res
 def authentification(login, motDePasse):
     (cur, conn) = bdd.ouvrirConnexion()
     bdd.executerReq(cur, "SELECT mdp FROM employe WHERE login = %s ;",
                     (login, ))
     resR = cur.fetchone()
     if resR == None:
         raise exceptions.ExceptionAuthentification("Utilisateur inconnu")
     else:
         if resR[0] != crypt(motDePasse, resR[0]):
             raise exceptions.ExceptionAuthentification("MDP incorrect")
     bdd.fermerConnexion(cur, conn)
 def calculPoids(self, liste_course):
     (cur, conn) = bdd.ouvrirConnexion()
     poids_commande = 0
     for i in range(0, len(liste_course) - 1, 2):
         article = liste_course[i]
         bdd.executerReq(cur, "SELECT poids FROM produit WHERE nom=%s;",
                         (article, ))
         res = cur.fetchone()
         poids_commande = poids_commande + res[0]
     bdd.fermerConnexion(cur, conn)
     print('La commande a un poids de ' + str(poids_commande) + ' grammes.')
     return poids_commande
Beispiel #20
0
def supprCommande(Commande):
    '''
    Supprime si elle existe une commande de la base de données
    '''
    numero = Commande.numero
    cur, conn = bdd.ouvrirConnexion()
    id_Com = numero
    if id_Com != None:
        bdd.executerReq(
            cur, "DELETE FROM commandes WHERE numero=%d;" % (int(id_Com[0])))
        bdd.validerModifs(conn)
    bdd.fermerConnexion(cur, conn)
 def calculVolume(self, liste_course):
     (cur, conn) = bdd.ouvrirConnexion()
     volume_commande = 1
     for i in range(0, len(liste_course) - 1, 2):
         article = liste_course[i]
         bdd.executerReq(cur, "SELECT volume FROM produit WHERE nom=%s;",
                         (article, ))
         res = cur.fetchone()
         volume_commande = volume_commande + res[0]
     bdd.fermerConnexion(cur, conn)
     print('La commande fait ' + str(volume_commande) + ' litres.')
     return volume_commande
 def enleverProduit(self, nom, quantite):
     conf = [False, False, False]
     if nom != "":
         (cur, conn) = bdd.ouvrirConnexion()
         try:
             #on verifie si le produit que l'on souhaite supprimer existe.
             bdd.executerReq(cur, "SELECT * FROM produit WHERE nom = %s; ",
                             (nom, ))
             res = cur.fetchone()
             if res != None:
                 conf[0] = True
                 if quantite == 0:
                     conf[1] = True
                     bdd.executerReq(
                         cur, "DELETE FROM produit WHERE nom = %s; ",
                         (nom, ))
                     bdd.validerModifs(conn)
                 else:
                     idp = res[0]
                     stockVirt_nouv = res[5] - quantite
                     #print(res[5])
                     #print(stockVirt_nouv)
                     stockReel_nouv = res[6] - quantite
                     #on s'assure de ne pas supprimer trop de produits
                     if stockVirt_nouv > 0 and stockReel_nouv > 0:
                         conf[2] = True
                         req1 = (
                             "UPDATE produit SET stock_virtuel=%s, stock_reel=%s WHERE idp=%s;"
                             % (
                                 stockVirt_nouv,
                                 stockReel_nouv,
                                 idp,
                             ))
                         bdd.executerReq(cur, req1)
                         bdd.validerModifs(conn)
                         print("suppression du produit reussie")
                     else:
                         print(
                             "impossible d'enlever autant de produit, diminuez la quantite!"
                         )
             else:
                 print(
                     "suppression impossible, assurez-vous de l'existence de ce produit"
                 )
         except Exception:
             raise
         finally:
             bdd.fermerConnexion(cur, conn)
     else:
         raise exceptions.ExceptionEntreeVide()
     return conf
Beispiel #23
0
def remplirCommandes_Clients(commande, idcli):
    '''
    Remplir la table de liens commandes_clients à partir d'un objet commande
    '''
    (cur, conn) = bdd.ouvrirConnexion()
    idc = commande.numero
    try:
        bdd.executerReq(
            cur, "INSERT INTO commandes_clients (idc,idcli) VALUES (%s,%s);",
            (idc, idcli))
        bdd.validerModifs(conn)
    except DatabaseError:
        raise
    finally:
        bdd.fermerConnexion(cur, conn)
Beispiel #24
0
def supprClient(Client):
    '''
    Supprime un client dans la base de données
    '''
    nom = Client.nom
    prenom = Client.prenom
    cur, conn = bdd.ouvrirConnexion()
    bdd.executerReq(cur, "SELECT id FROM clients WHERE nom=%s AND prenom=%s;",
                    (nom, prenom))
    id_Cli = cur.fetchone()
    if id_Cli != None:
        bdd.executerReq(
            cur, "DELETE FROM clients WHERE id=%d;" % (int(id_Cli[0]), ))
        bdd.validerModifs(conn)
    bdd.fermerConnexion(cur, conn)
 def retirerProduit(self, liste_course):
     (cur, conn) = bdd.ouvrirConnexion()
     for i in range(0, len(liste_course) - 1, 2):
         article = liste_course[i]
         bdd.executerReq(cur,
                         "SELECT stock_reel FROM produit WHERE nom=%s;",
                         (article, ))
         quantite_nouv = int(cur.fetchone()[0]) - int(liste_course[i + 1])
         bdd.executerReq(cur,
                         "UPDATE produit SET stock_reel=%s WHERE nom=%s;", (
                             quantite_nouv,
                             article,
                         ))
         bdd.validerModifs(conn)
     bdd.fermerConnexion(cur, conn)
 def trierListeDeCourse(self, liste_course):
     # Cette fonction permet de trier une liste de course en fonction des zones et place les produits frais en dernier
     (cur, conn) = bdd.ouvrirConnexion()
     fruit = ['Allez à la zone fruit-légume', '']
     viande = [
         'Allez à la zone viande-poisson',
         '(Stocker les produits au rayon frais)'
     ]
     laitier = [
         'Allez à la zone laitier-fromage',
         '(Stocker les produits au rayon frais)'
     ]
     drink = ['Allez à la zone boisson', '']
     pain = ['Allez à la zone épicerie-pâtisserie', '']
     quantite = 0
     for i in range(0, len(liste_course) - 1, 2):
         article = liste_course[i]
         quantite = liste_course[i + 1]
         bdd.executerReq(cur, "SELECT categorie FROM produit WHERE nom=%s;",
                         (article, ))
         res = cur.fetchone()
         if res != None:
             if res[0] == 'laitier_fromage':
                 laitier.append(article)
                 laitier.append(quantite)
             elif res[0] == 'viande_poisson':
                 viande.append(article)
                 viande.append(quantite)
             elif res[0] == 'fruit_legume':
                 fruit.append(article)
                 fruit.append(quantite)
             elif res[0] == 'boisson':
                 drink.append(article)
                 drink.append(quantite)
             elif res[0] == 'epicerie_patisserie':
                 pain.append(article)
                 pain.append(quantite)
         else:
             print("Le produit %s n'est pas vendu par le magasin" %
                   (article, ))
     bdd.fermerConnexion(cur, conn)
     liste_triee = []
     liste_triee.extend(pain)
     liste_triee.extend(fruit)
     liste_triee.extend(drink)
     liste_triee.extend(viande)
     liste_triee.extend(laitier)
     return liste_triee
Beispiel #27
0
def visCli():
    '''
    Affiche dans le terminal la liste des clients présents dans la base de données
    '''
    (cur, conn) = bdd.ouvrirConnexion()
    try:
        bdd.executerReq(cur, "SELECT * FROM clients;")
        for cli in cur:
            for i in range(0, len(cli)):
                print(cli[i])
            print('---------')
        bdd.validerModifs(conn)
    except DatabaseError:
        raise
    finally:
        bdd.fermerConnexion(cur, conn)
def listeCom():
    '''
    Retourne la liste des commandes présentes dans la base de données
    '''
    (cur, conn) = bdd.ouvrirConnexion()
    lst = list()
    try:
        bdd.executerReq(cur, "SELECT * FROM commandes;")
        for cli in cur:
            for i in range(0, len(cli)):
                lst.append(cli[i])
        bdd.validerModifs(conn)
    except DatabaseError:
        raise
    finally:
        bdd.fermerConnexion(cur, conn)
    return lst
def sauvegardeClient(nom, prenom):
    '''
    Sauvegarde un client dans la base de donnees à l'aide du nom et du prenom du client
    '''
    if nom != "" and prenom != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(
                cur, "INSERT INTO clients (nom, prenom)\
             VALUES (%s, %s);", (nom, prenom))
            bdd.validerModifs(conn)
        except Exception:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
    else:
        raise exceptions.ExceptionEntreeVide()
Beispiel #30
0
def commandeNb(ddr):
    '''
    Retouren le nombre de commande ayant la même date de retrait que Commande
    '''
    ls = list()
    if ddr != "":
        (cur, conn) = bdd.ouvrirConnexion()
        try:
            bdd.executerReq(cur, "SELECT numero FROM commandes WHERE ddr=%s;",
                            (ddr))
            for pay in cur:
                ls.append(pay)
        except DatabaseError:
            raise
        finally:
            bdd.fermerConnexion(cur, conn)
            return len(ls)