{% extends "/pro/base2.html.twig" %}
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" type="text/css" href="/assets/lib/slick-1.8.1/slick.css" />
<link rel="stylesheet" type="text/css" href="/assets/lib/slick-1.8.1/slick-theme.css" />
<link rel="stylesheet" href="/assets/css/pro/tarif.css">
<style>
.anual-price{
font-size: 35px;
}
.last-btn {
position: absolute;
bottom: -10px;
left: 0;
right: 0;
}
span.red-barre {
font-size: 25px;
position: relative;
}
span.red-barre:before {
content: "";
width: 100%;
height: 2px;
background: #f54848ad;
position: absolute;
top: 50%;
}
.card img {margin: 0 auto; }
a.btn{font-size: 20px; padding: 5px 20px; max-width: 160px; margin: 10px auto 0;}
.card {
text-align: center;
padding: 30px 0px 0;
border-radius: 10px;
height: 100%;
margin-top: 30px;
background: linear-gradient(180deg, rgb(255 255 255) 0%, rgba(208,250,241,1) 100%);
}
.titre-card {font-weight: 600; font-size: 20px;}
a.underlined {font-weight: 600; font-size: 18px; padding: 0 0 10px;}
.card-prix {
background: #F2FDFF;
padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
height: 280px;
padding: 30px;
position: relative;
}
.prix{ display : block !important ; color:var(--couleur-bleu-principale);font-weight: 600;font-size:40px; line-height:1 margin:0;}
.prix sub{ font-size:20px;}
.tarif{ display: flex; align-items: center; column-gap: 20px; margin-top: 20px; flex-wrap: wrap;}
.prixafter {font-size: 25px; margin-top: 5px;}
.puce_tab{ font-weight:600; margin-bottom:25px}
.prixafterMini {font-size: 16px; background: #F2FDFF; margin: 0; padding:0 5px; }
.prixafterMini sub {font-size: 10px; }
.timePrx{font-size:15px;}
@media only screen and (max-width: 1199px){
.pricing-list {
flex-direction: column;
}
.info-price {
grid-template-columns: 57% 45%;
}
span.no-engagement {
margin-left: 44px;
}
.prix sub {
font-size: 14px;
}
.info-price label {
text-align: left;
}
}
</style>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript" src="/assets/lib/slick-1.8.1/slick.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
const radioButtons = document.querySelectorAll('input[type="radio"][name="duration-1"]');
const nbAudioprothMonthInput = document.getElementById("nbAudioprothMonth");
const priceCol1 = document.getElementById("priceCol1");
const subtitlePriceCol1 = document.getElementById("subtitlePriceCol1");
const subtitleNextPriceCol1 = document.getElementById("subtitleNextPriceCol1");
const baseMonthlyPrice = 75;
const baseMonthlyPriceNoDiscount = 89;
const additionalPrice = 19.90;
let selectionData = [];
function updateCardContent(option) {
const selectedLabel = document.querySelector(`label[for="${option}"]`);
if (option === 'centre') {
selectedLabel.style.borderTopRightRadius = '0px';
selectedLabel.style.borderBottomRightRadius = '0px';
document.getElementById("subtitlePriceCol1").textContent = "facturés une fois par an (900€/an)";
document.getElementById("subtitleNextPriceCol1").textContent = "pendant 12 mois puis 1000€/an";
document.getElementById("subtitlePriceColSwitch").textContent = "par centre supplémentaire, facturé une fois par an.";
document.getElementById("nbCentreAudio").textContent = "Nombre de centre(s) en plus";
document.getElementById("textTitleCol2").textContent = "Gérez plusieurs centres auditifs";
document.getElementById("textContentCol2").textContent = "Si vous êtes un audioprothésiste travaillant dans plusieurs lieux, My Audio vous aide à organiser votre agenda pour chaque centre, afin de gérer facilement vos rendez-vous dans tous vos lieux d’exercice.";
} else if (option === 'audio') {
selectedLabel.style.borderTopLeftRadius = '0px';
selectedLabel.style.borderBottomLeftRadius = '0px';
selectedLabel.style.borderTopRightRadius = '50em';
selectedLabel.style.borderBottomRightRadius = '50em';
document.getElementById("subtitlePriceCol1").textContent = "facturés une fois par an (900€/an)";
document.getElementById("subtitleNextPriceCol1").textContent = "pendant 12 mois puis 1000€/an";
document.getElementById("subtitlePriceColSwitch").textContent = "par audioprothésiste supplémentaire, facturé une fois par an.";
document.getElementById("nbCentreAudio").textContent = "Nombre d'audio en plus";
document.getElementById("textTitleCol2").textContent = "Gérez plusieurs audio dans un centre";
document.getElementById("textContentCol2").textContent = "Si vous dirigez un centre auditif avec plusieurs audioprothésistes, My Audios crée des agendas spécifiques pour chacun, simplifiant la gestion des rendez-vous.";
}
}
/* const inputField = document.getElementById("nbAudioprothMonth");
const switchOption = document.querySelector(".switch-container");
switchOption.addEventListener("click", function() {
inputField.value = 0;
});*/
function handleRadioClick(option) {
updateCardContent(option);
updateSelectionData();
}
radioButtons.forEach(radio => {
radio.addEventListener("change", function(event) {
handleRadioClick(event.target.value);
});
});
const selectedRadio = document.querySelector('input[type="radio"][name="duration-1"]:checked');
if (selectedRadio) {
handleRadioClick(selectedRadio.value);
}
function updatePrices() {
const nbAudioprothMonth = parseInt(nbAudioprothMonthInput.value, 10) || 0;
let monthlyPrice = baseMonthlyPrice + (nbAudioprothMonth * additionalPrice);
let monthlyPriceNoDiscount = baseMonthlyPriceNoDiscount + (nbAudioprothMonth * additionalPrice);
let annualPrice = (monthlyPrice * 12).toFixed(2);
let annualNextPrice = (monthlyPrice * 12 + 100).toFixed(2);
priceCol1.textContent = monthlyPrice.toFixed(2);
subtitlePriceCol1.textContent = `facturés une fois par an (${annualPrice}€/an)`;
subtitleNextPriceCol1.textContent = `pendant 12 mois puis ${annualNextPrice}€/an`;
updateSelectionData();
}
function updateSelectionData() {
const selectedType = document.querySelector('input[type="radio"][name="duration-1"]:checked').value;
const nbAudioprothMonth = parseInt(nbAudioprothMonthInput.value, 10) || 0;
const monthlyPrice = parseFloat(priceCol1.textContent);
const monthlyPriceNoDiscount = baseMonthlyPriceNoDiscount + (nbAudioprothMonth * additionalPrice);
const monthlyPriceNoDiscountNextYear = baseMonthlyPriceNoDiscount + (nbAudioprothMonth * additionalPrice) + 10;
const annualPrice = (monthlyPrice * 12).toFixed(2);
const annualPriceNoDiscount = (monthlyPriceNoDiscount * 12).toFixed(2);
const isAnnual = document.querySelector(".switch-option.selected").getAttribute("data-option") === "annual";
const option = document.querySelector('input[type="radio"][id="centre"]');
if (isAnnual) {
const anuelAdditional = nbAudioprothMonth * 238.8;
const annualMonthlyPrice = baseMonthlyPrice + (nbAudioprothMonth * additionalPrice);
const annualTotalPrice = (annualMonthlyPrice * 12).toFixed(2);
const annualNextTotalPrice = (annualMonthlyPrice * 12 + 100).toFixed(2);
priceCol1.textContent = annualMonthlyPrice.toFixed(2);
subtitlePriceCol1.textContent = `facturés une fois par an (${annualTotalPrice}€/an)`;
subtitleNextPriceCol1.textContent = `pendant 12 mois puis ${annualNextTotalPrice}€/an`;
if (option && option.checked) {
document.getElementById("subtitlePriceColSwitch").innerHTML = `par centre supplémentaire,<br>facturés une fois par an (${anuelAdditional.toFixed(1)}€/an)`;
} else {
document.getElementById("subtitlePriceColSwitch").innerHTML = `par audioprothésiste supplémentaire,<br>facturés une fois par an (${anuelAdditional.toFixed(1)}€/an)`;
}
const currentSelection = {
type: selectedType,
pricePerMonth: monthlyPrice.toFixed(2),
annualPrice: annualPrice,
quantity: nbAudioprothMonth,
recurring: isAnnual ? "annual" : "monthly",
isCda: false
};
selectionData = [currentSelection];
console.log(selectionData);
} else {
subtitleNextPriceCol1.textContent = `pendant 12 mois puis ${monthlyPriceNoDiscountNextYear.toFixed(2)}€/mois`;
priceCol1.textContent = monthlyPriceNoDiscount.toFixed(2);
document.getElementById("subtitlePriceCol1").textContent = "facturé mensuellement, sans engagement.";
if (option && option.checked) {
document.getElementById("subtitlePriceColSwitch").innerHTML = "par centre supplémentaire,<br>facturé mensuellement, sans engagement.";
} else {
document.getElementById("subtitlePriceColSwitch").innerHTML = "par audioprothésiste supplémentaire,<br>facturé mensuellement, sans engagement.";
}
const currentSelection = {
type: selectedType,
pricePerMonth: monthlyPriceNoDiscount.toFixed(2),
annualPrice: annualPriceNoDiscount,
quantity: nbAudioprothMonth,
recurring: isAnnual ? "annual" : "monthly",
isCda: false
};
selectionData = [currentSelection];
console.log(selectionData);
}
}
document.querySelector(".button-plusMonth").addEventListener("click", function() {
nbAudioprothMonthInput.stepUp();
updatePrices();
});
document.querySelector(".button-minusMonth").addEventListener("click", function() {
nbAudioprothMonthInput.stepDown();
updatePrices();
});
nbAudioprothMonthInput.addEventListener("input", updatePrices);
// updatePrices();
function redirectToInscription() {
console.log(selectionData);
if (selectionData && selectionData[0].type && selectionData[0].pricePerMonth && selectionData[0].quantity >= 0) {
const data = {
type: selectionData[0].type,
price: selectionData[0].pricePerMonth,
annualPrice: Math.round(parseFloat(selectionData[0].pricePerMonth) * 12),
quantity: selectionData[0].quantity,
recurring: selectionData[0].recurring,
isCda: selectionData[0].isCda
};
fetch('/pro/handle-inscription', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
},
body: JSON.stringify(data),
})
.then(response => {
if (!response.ok) {
throw new Error('Échec de la requête : ' + response.statusText);
}
return response.json();
})
.then(data => {
console.log('Réponse du serveur:', data);
if (data.redirect_url) {
window.location.href = data.redirect_url;
} else {
console.error('Aucune URL de redirection reçue.');
}
})
.catch(error => {
console.error('Erreur réseau ou serveur :', error);
});
} else {
console.error("Les données de sélection sont invalides ou incomplètes.");
console.log(selectionData);
}
}
const btn = document.getElementById('btnInscription');
const btn2 = document.getElementById('btnInscription2');
if (btn || btn2) {
btn.addEventListener("click", function() {
console.log("Button clicked");
redirectToInscription();
});
btn2.addEventListener("click", function() {
console.log("Button clicked");
redirectToInscription();
});
} else {
console.log("Button not found");
}
const switchContainer = document.querySelector(".switch-container");
const options = document.querySelectorAll(".switch-option");
const slider = document.createElement("div");
slider.classList.add("switch-slider");
switchContainer.appendChild(slider);
slider.style.width = '100%'
console.log("Slider ajouté au DOM :", slider);
const initialSelected = document.querySelector(".switch-option.selected");
const initialIndex = Array.from(options).indexOf(initialSelected);
slider.style.transform = `translateX(${initialIndex * 100}%)`;
console.log("Position initiale du slider :", slider.style.transform);
options.forEach((option, index) => {
option.addEventListener("click", () => {
options.forEach(opt => opt.classList.remove("selected"));
option.classList.add("selected");
slider.style.transform = `translateX(${index * 100}%)`;
console.log("Position mise à jour :", slider.style.transform);
updateSelectionData();
});
});
});
</script>
{% endblock %}
{% block body %}
{{ parent() }}
{% endblock %}
{% block content %}
{{ parent() }}
<div class="first-page-cda">
<section class="section-title">
<div class="container-parent">
<div class="container-left">
<h3>Solution rentabilisée</h3>
<h1>dès la 1ère vente</h1>
<p>Générez des ventes et automatisez la croissance de vos centres</p>
</div>
<div class="container-right">
<button class="btn btn-jaune-inverse" id="btnInscription">Je m'inscris maintenant</button>
</div>
</div>
</section>
<section class="recurring">
<div class="d-flex justify-content-center">
<div class="switch-container">
<div class="switch-option selected" data-option="annual">
<span>Paiement annuel</span><br>
<span class="best-value">-15%</span>
</div>
<!--<div class="switch-option" data-option="monthly">
<span>Paiement mensuel</span>
</div>-->
</div>
</div>
</section>
<section class="section-tarif">
<div class="card-tarif">
<div class="container-header">
<h4><b>Licence My Audio</b></h4>
<h4>1 audio + 1 centre <b>inclu</b></h4>
</div>
<div class="container-card-content">
<div class="container-middle">
<div class="container-card-img">
<img class="logo logopro" src="/assets/img/storage/pagesimages/calendar-pro.png" alt="My Audio calendar">
</div>
<div class="container-price-top">
<p class="price">
<span class="price" id="priceCol1">75</span>
<span class="currency">EUR HT / mois</span>
</p>
</div>
<div class="container-price-bottom">
<p id="subtitlePriceCol1">facturés une fois par an (900€/an)</p>
</div>
<div class="container-price-bottom">
<p id="subtitleNextPriceCol1">pendant 12 mois puis 1000€/an</p>
</div>
</div>
<div class="container-price">
<div class="container-remise-content">
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-calendar.png" alt="picto d'un calendrier">
<p>Prise de RDV en ligne</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-action.png" alt="Picto d'une action avec un doigt">
<p>Agenda en ligne</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-alarm.png" alt="Picto d'une cloche">
<p>SMS/Email de rappel rappels RDV</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-two.png" alt="Picto du chiffre Deux">
<p>Objectif 2 RDV/mois</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-share.png" alt="Picto de partage de fichiers">
<p>Partage de documents patients/audio</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-sync.png" alt="Picto partage de documents">
<p>Synchronisation Agenda</p>
<img class="logo-picto-remise" src="/assets/img/pro/picto-cosium.png" style="width: 100px;" alt="Picto partage de documents">
</div>
</div>
</div>
</div>
</div>
<div class="spacer-plus">
<img class="logo-picto-remise" src="/assets/img/pro/picto-plus.png" alt="picto d'un calendrier">
</div>
<div class="card-tarif">
<div class="container-header">
<h4>Ajoutez + d’audio ou de centre</h4>
</div>
<div class="pricing-switcher">
<p class="fieldset">
<input type="radio" name="duration-1" value="centre" id="centre" checked>
<label for="centre">multi-centre</label>
<input type="radio" name="duration-1" value="audio" id="audio">
<label for="audio">multi-audio</label>
<span class="switch"></span>
</p>
</div>
<div class="container-card-content">
<div>
<div class="container-card-img">
<img class="logo logopro" src="/assets/img/pro/multi-centre-audio.png" alt="My Audio calendar">
</div>
<div class="container-price-top">
<p class="price">
<span class="price" id="priceCol2">19,90</span>
<span class="currency">EUR HT / mois</span>
</p>
</div>
<div class="container-price-bottom">
<p id="subtitlePriceColSwitch">par centre supplémentaire, facturé une fois par an.</p>
</div>
<div class="info-price">
<label id="nbCentreAudio">Nombre de centre(s) </label>
<div class="input-group">
<input type="button" value="-" class="button-minusMonth" data-field="nbAudioprothMonth">
<input type="number" class="quantity-fieldMonth" min="0" id="nbAudioprothMonth" name="nbAudioprothMonth"
value="0" />
<input type="button" value="+" class="button-plusMonth" data-field="nbAudioprothMonth">
</div>
</div>
</div>
<div class="container-price">
<div class="container-remise-content" style="gap: 0px;">
<div class="row-arg">
<p class="text-green" id="textTitleCol2">Gérez plusieurs centres auditifs</p>
</div>
<div class="row-arg">
<p id="textContentCol2">Si vous êtes un audioprothésiste travaillant dans plusieurs lieux, My Audio vous aide à organiser votre agenda pour chaque centre, afin de gérer facilement vos rendez-vous dans tous vos lieux d’exercice.</p>
</div>
</div>
</div>
</div>
</div>
<div class="spacer-plus">
<img class="logo-picto-remise" src="/assets/img/pro/picto-plus.png" alt="picto d'un calendrier">
</div>
<div class="card-tarif">
<div class="container-header">
<h4>Commission fixe par vente</h4>
</div>
<div class="container-card-content">
<div>
<div class="first-text">
<p>Commission fixe, que vous vendiez un ou plusieurs appareils grâce aux rendez-vous générés par My Audio.</p>
</div>
<div class="container-card-img">
<img class="logo logopro" src="/assets/img/pro/commission.png" style="width: 300px!important;" alt="My Audio calendar">
</div>
</div>
<div class="container-price">
<div class="container-price-top">
<p class="price">
<span class="price">300</span>
<span class="currency">EUR HT / vente</span>
</p>
</div>
<div class="container-price-bottom">
<button class="btn btn-jaune-inverse" id="btnInscription2">Je m'inscris maintenant</button>
</div>
<div class="container-remise-content">
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-calendar.png" alt="picto d'un calendrier">
<p>0 EUR par rendez-vous</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-sync.png" alt="Picto partage de documents">
<p>Acquisition patients à la performance</p>
</div>
<div class="row-arg">
<img class="logo-picto-remise" src="/assets/img/pro/picto-target.png" alt="Picto partage de documents">
<p>Efforts Marketing déployés en local</p>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
{% endblock %}
{% block modals %}
{% endblock %}