예제 #1
0
def test_catalogue():
    catalog = Catalogue(prix_file="test_data/prix.csv",
                        remises_file="test_data/remises.csv")
    catalog_prix, catalog_remises = catalog.get_dicts()

    print("- Liste des prix:")
    print(catalog_prix)
    print("- Liste des promo:")
    print(catalog_remises)

    print("--- MAJ catalogue ---")
    catalog_prix, catalog_remises = catalog.maj(
        prix_file='test_data/prix2.csv', remises_file='test_data/remises2.csv')

    print("- Liste des prix:")
    print(catalog_prix)
    print("- Liste des promo:")
    print(catalog_remises)
예제 #2
0
class Caisse(object):
    def __init__(self,
                 prix_file="test_data/prix.csv",
                 remises_file="test_data/remises.csv"):

        self.catalog_manager = Catalogue(prix_file, remises_file)
        self.catalog_prix, self.catalog_remises = self.catalog_manager.get_dicts(
        )
        self.tickets = []

    def introduction_ticket(self, ):
        """
            Lecture du contenue du cady.
            La saisie se fait via clavier. 
        """

        print('\n* Début de saisie...')
        print("""
    Veuillez entrer les produits sous la forme:
    NomDuProduit  NombreDeKilo
    et taper fin pour terminer la saisie.
               """)

        end_saisie = False
        total_achat = 0
        i = 1
        ticket = Ticket()

        # Boucler sur l'introduction des articles
        while not end_saisie == True:
            saisie = input(' Article n°{}: '.format(i))

            if 'fin' == saisie.lower():
                # Fin de saisie du ticket
                end_saisie = True

                # Affichage ticket
                print(ticket)

                # Sauvegarde du ticket
                self.tickets.append(ticket)
            else:
                saisie = saisie.split(',')

                try:
                    # Traitement de la saisie
                    produit = saisie[0]
                    quantite = float(saisie[1])
                    prix_u = self.catalog_prix[produit]

                    if produit in self.catalog_remises:
                        remise, justification = self.appliquer_remises(
                            produit, quantite, prix_u)
                        ticket.ajout(produit, quantite, prix_u, remise,
                                     justification)
                    else:
                        ticket.ajout(produit, quantite, prix_u)

                except ValueError:
                    print("[ERREUR]: Quantité mal introduite!!")
                except IndexError:
                    print("[ERREUR]: Saisie erronée!")
                except KeyError:
                    print("[ERREUR]: Produit inconue!")

            i += 1

    def appliquer_remises(self, produit, quantite, prix_u):
        """
            Calcule de la remise sur un produit donné
         
            :type produit: string
            :param produit: nom du produit

            :type quantite: float 
            :param quantite: quantité acheté de produit

            :type prix_u: float 
            :param data: prix unitaire de produit   
        """

        condition, cadeau = self.catalog_remises[produit]
        prix_total = prix_u * quantite
        remise = 0
        justification = ''

        # Calculer nombre de remise appliquable
        remise = (quantite // (cadeau + condition)) * cadeau * prix_u
        reste = quantite % (cadeau + condition) - condition
        remise += reste * prix_u if reste > 0 else 0

        justification = "{} acheté(s), {} offert".format(condition, cadeau)

        return -remise, justification

    def maj(self):
        """
            Mise a jour des donnée de la caisse.
        """

        texts = {
            'prix': "Lien vers fichier des prix (facultatif): ",
            'remises': "Lien vers fichier des remises (facultatif): "
        }
        paths = {}

        for f in ['prix', 'remises']:
            recomencer = True
            while (recomencer):
                paths[f] = input(
                    " Lien vers fichier des {} (facultatif): ".format(f))
                if paths[f] == '' or os.path.isfile(paths[f]) == True:
                    recomencer = False
                else:
                    print("[ERREUR] Chemain erroné!")

        self.catalog_prix, self.catalog_remises = self.catalog_manager.maj(
            paths['prix'], paths['remises'])