def main(): print("=== Générateur de devis ===\n") # Importation des modules nécessaires from core.form import Form from core.generator import Generator from core.data import Data import os # On demande d'abord si le client existe déjà client_name = input("Entrez le nom du client : ") client_name = client_name.replace(" ", "_").lower() # Normaliser le nom du client client_data_path = f"Data/clients/{client_name}.json" if os.path.exists(client_data_path): print(f"Le client {client_name} existe déjà. Chargement des données...") data_manager = Data(client_data_path) client_data = data_manager.load_data() else: print(f"Le client {client_name} n'existe pas. Création d'un nouveau client...") #On charge le module proposition pour créer un nouveau client from modules.proposition.app import main as generate_proposal generate_proposal() data_manager = Data(client_data_path) client_data = data_manager.load_data() print(f"Le client {client_name} a été créé avec succès.") # On génère le devis via les données du client en servant du template "devis" du dossier Templates if client_data: print("\n=== Création du devis ===") # Charger le modèle de devis from core.generator import Generator template_path = "Templates/devis.json" # Préparer les champs pour le formulaire fields = [ {"name": "numero", "label": "Numéro du devis", "type": "text"}, ] # Collecter les données via le formulaire form = Form(fields) form.ask() form_data = form.get_data() # Préparer les données du client pour le modèle client_data_formatted = { "client_name": client_data.get("client_name", ""), "client_email": client_data.get("email", ""), "client_phone": client_data.get("telephone", ""), "client_adress": client_data.get("adresse", "") } # Récupérer les fonctionnalités du client features = client_data.get("features", []) if not isinstance(features, list): print("Erreur : Les fonctionnalités du client ne sont pas correctement formatées. Elles seront ignorées.") features = [] # Ajouter les services avec tarifs pour chaque fonctionnalité services = [] for feature in features: if isinstance(feature, dict): # Vérifier que 'feature' est un dictionnaire description = feature.get("description", "") prix_unitaire = float(input(f"Entrez le tarif pour la fonctionnalité '{description}' : ")) services.append({"description": description, "prix_unitaire": prix_unitaire}) else: print(f"Erreur : La fonctionnalité '{feature}' n'est pas valide et sera ignorée.") # Ajouter les données spécifiques au devis devis_content = { "numero": form_data["numero"], "date": "11/05/2025", "client": client_data_formatted, # Transmettre les données formatées du client "services": services, "total": sum(service["prix_unitaire"] for service in services) } # Générer le devis output_path = f"devis" try: generator = Generator(devis_content, template_path) generator.generate_facture(output_path) print("\n✅ Devis généré avec succès.") print(f"Le devis a été enregistré dans le dossier '{output_path}'.") except Exception as e: print(f"\n❌ Une erreur est survenue lors de la génération du devis : {e}") else: print("\n❌ Impossible de générer le devis car les données du client n'ont pas été chargées.")