SuiteConsultance/Templates/email/send_email.html
2025-09-20 13:18:04 +02:00

155 lines
7.4 KiB
HTML

{% extends 'layouts/base.html' %}
{% block title %}Suite Consultance - Envoyer un email{% endblock %}
{% block module_name %}crm{% endblock %}
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h2 text-crm">Envoyer un email à {{ prospect.name }}</h1>
<a href="{{ url_for('prospect_details', prospect_id=prospect.id) }}" class="btn btn-outline-crm">
<i class="fas fa-arrow-left"></i> Retour au prospect
</a>
</div>
<div class="card">
<div class="card-body">
<form method="POST" action="{{ url_for('send_prospect_email', prospect_id=prospect.id) }}">
<div class="row g-3">
<!-- Informations du destinataire -->
<div class="col-12">
<h5 class="border-bottom pb-2 mb-3">Destinataire</h5>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="to_email" class="form-label">Email du destinataire</label>
<input type="email" class="form-control" id="to_email" name="to_email" value="{{ prospect.email }}" required>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="template_id" class="form-label">Template</label>
<select class="form-select" id="template_id" name="template_id">
<option value="">Email personnalisé</option>
{% for template in templates %}
<option value="{{ template.id }}">{{ template.name }}</option>
{% endfor %}
</select>
</div>
</div>
<!-- Contenu de l'email -->
<div class="col-12">
<h5 class="border-bottom pb-2 mb-3 mt-3">Contenu de l'email</h5>
</div>
<div class="col-12">
<div class="mb-3">
<label for="subject" class="form-label">Sujet *</label>
<input type="text" class="form-control" id="subject" name="subject" required>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="body" class="form-label">Contenu *</label>
<textarea class="form-control" id="body" name="body" rows="10" required></textarea>
<small class="text-muted">Vous pouvez utiliser du texte formaté HTML.</small>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="update_status" name="update_status" checked>
<label class="form-check-label" for="update_status">
Mettre à jour le statut du prospect
</label>
</div>
</div>
</div>
<div class="col-md-6" id="status_selection">
<div class="mb-3">
<label for="new_status" class="form-label">Nouveau statut</label>
<select class="form-select" id="new_status" name="new_status">
<option value="Contacté" {% if prospect.status == 'Contacté' %}selected{% endif %}>Contacté</option>
<option value="Qualifié" {% if prospect.status == 'Qualifié' %}selected{% endif %}>Qualifié</option>
<option value="Proposition" {% if prospect.status == 'Proposition' %}selected{% endif %}>Proposition</option>
<option value="Non intéressé" {% if prospect.status == 'Non intéressé' %}selected{% endif %}>Non intéressé</option>
</select>
</div>
</div>
<div class="col-12 mt-3">
<button type="submit" class="btn btn-primary">
<i class="fas fa-paper-plane"></i> Envoyer l'email
</button>
<a href="{{ url_for('prospect_details', prospect_id=prospect.id) }}" class="btn btn-outline-secondary">
Annuler
</a>
</div>
</div>
</form>
</div>
</div>
{% endblock %}
{% block extra_js %}
<script>
document.addEventListener('DOMContentLoaded', function() {
const templateSelect = document.getElementById('template_id');
const subjectInput = document.getElementById('subject');
const bodyInput = document.getElementById('body');
const updateStatusCheckbox = document.getElementById('update_status');
const statusSelection = document.getElementById('status_selection');
// Gestion du choix de template
templateSelect.addEventListener('change', function() {
const templateId = this.value;
if (templateId) {
// Charger le contenu du template
fetch(`/api/email_template/${templateId}`)
.then(response => response.json())
.then(data => {
if (data.success) {
const template = data.template;
// Remplacer les variables dans le sujet et le contenu
let subject = template.subject;
let content = template.content;
// Variables de remplacement
const replacements = {
'name': '{{ prospect.name }}',
'company': '{{ prospect.company }}',
'email': '{{ prospect.email }}',
'phone': '{{ prospect.phone }}'
};
// Appliquer les remplacements
for (const [key, value] of Object.entries(replacements)) {
// Escape $ character for Jinja by using string concatenation instead of template literals
const placeholder = "{{" + key + "}}";
subject = subject.replace(new RegExp(placeholder, 'g'), value);
content = content.replace(new RegExp(placeholder, 'g'), value);
}
subjectInput.value = subject;
bodyInput.value = content;
}
});
}
});
// Afficher/masquer le sélecteur de statut
updateStatusCheckbox.addEventListener('change', function() {
statusSelection.style.display = this.checked ? 'block' : 'none';
});
// Initialiser l'affichage du sélecteur de statut
statusSelection.style.display = updateStatusCheckbox.checked ? 'block' : 'none';
});
</script>
{% endblock %}