first commit
This commit is contained in:
commit
e6c52820cd
227 changed files with 16156 additions and 0 deletions
88
modules/devis/app.py
Normal file
88
modules/devis/app.py
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
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.")
|
||||
0
modules/devis/fields.py
Normal file
0
modules/devis/fields.py
Normal file
Loading…
Add table
Add a link
Reference in a new issue