first commit

This commit is contained in:
mrtoine 2025-09-20 13:18:04 +02:00
commit e6c52820cd
227 changed files with 16156 additions and 0 deletions

172
Templates/index.html Normal file
View file

@ -0,0 +1,172 @@
{% extends 'layouts/base.html' %}
{% block title %}Suite Consultance - Accueil{% endblock %}
{% block content %}
<div class="jumbotron bg-light p-5 rounded">
<h1 class="display-4">Bienvenue sur Suite Consultance</h1>
<p class="lead">Solution complète pour la gestion de client et de prospects</p>
<hr class="my-4">
<p>Gérer des clients, créer des propositions commerciales et générer des devis en quelques clics.</p>
<div class="row mt-5">
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<div class="card-body text-center">
<i class="fas fa-users fa-3x text-primary mb-3"></i>
<h3 class="card-title">CRM</h3>
<p class="card-text">Gérer mes clients et prospects efficacement.</p>
<a href="{{ url_for('crm') }}" class="btn btn-primary">Accéder au CRM</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<div class="card-body text-center">
<i class="fas fa-file-contract fa-3x text-primary mb-3"></i>
<h3 class="card-title">Propositions</h3>
<p class="card-text">Créer des propositions commerciales personnalisées.</p>
<a href="{{ url_for('propositions') }}" class="btn btn-primary">Gérer les propositions</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
<div class="card-body text-center">
<i class="fas fa-file-invoice-dollar fa-3x text-primary mb-3"></i>
<h3 class="card-title">Devis</h3>
<p class="card-text">Générer et suivre mes devis clients.</p>
<a href="{{ url_for('devis') }}" class="btn btn-primary">Gérer les devis</a>
</div>
</div>
</div>
</div>
<div class="text-center mt-4">
<a href="{{ url_for('generate_test_data') }}" class="btn btn-outline-secondary">
<i class="fas fa-vial"></i> Générer des données de test
</a>
</div>
</div> <div class="row mt-5">
<div class="col-md-6">
<div class="card">
<div class="card-header bg-primary text-white">
<h5 class="card-title mb-0">Dernières activités</h5>
</div>
<div class="card-body">
<ul class="list-group list-group-flush">
{% if recent_documents %}
{% for doc in recent_documents %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<div>
<i class="fas {% if doc.type == 'Proposition' %}fa-file-contract{% else %}fa-file-invoice-dollar{% endif %} me-2"></i>
{{ doc.type }} pour {{ doc.client }}
</div>
<span class="badge bg-primary rounded-pill">{{ doc.date|datetime('%d/%m/%Y') }}</span>
</li>
{% endfor %}
{% else %}
<li class="list-group-item d-flex justify-content-between align-items-center">
Aucune activité récente
</li>
{% endif %}
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header bg-primary text-white">
<h5 class="card-title mb-0">Statistiques</h5>
</div>
<div class="card-body">
<div class="row text-center mb-4">
<div class="col-3">
<h3 class="fw-bold text-primary">{{ clients_count }}</h3>
<p>Clients</p>
</div>
<div class="col-3">
<h3 class="fw-bold text-primary">{{ prospects_count }}</h3>
<p>Prospects</p>
</div>
<div class="col-3">
<h3 class="fw-bold text-primary">{{ propositions_count }}</h3>
<p>Propositions</p>
</div>
<div class="col-3">
<h3 class="fw-bold text-primary">{{ devis_count }}</h3>
<p>Devis</p>
</div>
</div>
{% if prospect_status %}
<h6 class="border-bottom pb-2 mb-3">Statuts des prospects</h6>
<div class="row">
{% for status, count in prospect_status.items() %}
<div class="col-md-4 mb-2 text-center">
<span class="badge bg-{{ status|lower == 'nouveau' and 'primary' or (status|lower == 'contacté' and 'info' or (status|lower == 'qualifié' and 'success' or (status|lower == 'proposition' and 'warning' or 'secondary'))) }} mb-2">{{ status }}</span>
<h5>{{ count }}</h5>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="col-md-12">
<div class="card">
<div class="card-header bg-primary text-white">
<h5 class="card-title mb-0">Prospects récents</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Nom</th>
<th>Entreprise</th>
<th>Email</th>
<th>Statut</th>
<th>Dernier contact</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% if recent_prospects %}
{% for prospect in recent_prospects %}
<tr>
<td>{{ prospect.name }}</td>
<td>{{ prospect.company }}</td>
<td>{{ prospect.email }}</td>
<td>
<span class="badge bg-{{ prospect.status|lower == 'nouveau' and 'primary' or (prospect.status|lower == 'contacté' and 'info' or (prospect.status|lower == 'qualifié' and 'success' or (prospect.status|lower == 'proposition' and 'warning' or 'secondary'))) }}">
{{ prospect.status }}
</span>
</td>
<td>{{ prospect.last_contact|datetime('%d/%m/%Y') if prospect.last_contact else 'N/A' }}</td>
<td>
<a href="{{ url_for('prospect_details', prospect_id=prospect.id) }}" class="btn btn-sm btn-info" title="Détails">
<i class="fas fa-eye"></i>
</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="6" class="text-center">Aucun prospect récent</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock %}