3873 lines
176 KiB
JavaScript
3873 lines
176 KiB
JavaScript
console.log(cd_js);
|
|
|
|
var duree_range = [];
|
|
var Timer;
|
|
var form_sliders = [];
|
|
var authorized_value = ['pat', 'fin_neuve', 'fin_occ_m3a', 'fin_occ_p3a', 'ph', 'am', 'frais_notaire', 'but_immo', 'mobil_carav', 'regroup_cred'];
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
|
|
//reprende les credits de $houseCreditTypes
|
|
var houseCreditTypes = ['purchasehouse', 'construction', 'regrouping_immo', 'refinancing', 'purchaseabroad', 'achat_maison_de_rapport', 'credit_pont', 'independants_et_entreprises_en_difficultes', 'regroupement_de_credit__rachats_de_credits', 'mobilhome', 'financement_frais_de_notaire', 'fonds_roulement_independants', 'but_immo_hypo'];
|
|
|
|
var patCreditTypes = ['pat', 'regrouping','fin_neuve', 'fin_occ_m3a', 'fin_occ_p3a', 'mobil_carav','but_immo','reno_energie'];
|
|
|
|
|
|
var map_values = {
|
|
'purchasehouse': 'am',
|
|
'construction': 'am',
|
|
'regrouping_immo': 'am',
|
|
'regrouping': 'regroup_cred',
|
|
'refinancing': 'am',
|
|
'purchaseabroad': 'am',
|
|
'achat_maison_de_rapport': 'amr',
|
|
'credit_pont': 'cdp',
|
|
'independants_et_entreprises_en_difficultes': 'cied',
|
|
'regroupement_de_credit__rachats_de_credits': 'am',
|
|
'mobilhome': 'mobil_carav',
|
|
'financement_frais_de_notaire': 'frais_notaire',
|
|
'fonds_roulement_independants' : 'cied',
|
|
'reno_energie' : 'but_immo',
|
|
'but_immo_hypo' : 'am'
|
|
};
|
|
|
|
//Crédit travaux / Rénovation / Energie
|
|
form_sliders['but_immo'] = { capital_selected: 20000, capital_max: 90000, capital_step: 100, capital_min: 2500, duree_min: 24, duree_max: 180, durees: [24, 30, 36, 42, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit travaux / Rénovation / Energie', description: cd_js.groups.credit_travaux__renovation__energie.exemple_et_infos };
|
|
//Financement véhicule NEUF
|
|
form_sliders['fin_neuve'] = { capital_selected: 20000, capital_max: 100000, capital_step: 500, capital_min: 5000, duree_min: 24, duree_max: 84, durees: [24, 30, 36, 42, 48, 60, 72, 84], pivot_value: 0, sub_pivot_value: 5000, title: 'Financement véhicule NEUF', description: cd_js.groups.financement_vehicule_neuf.exemple_et_infos };
|
|
// Financement véhicule d'occasion PLUS de 3 ans
|
|
form_sliders['fin_occ_p3a'] = { capital_selected: 20000, capital_max: 100000, capital_step: 500, capital_min: 5000, duree_min: 24, duree_max: 60, durees: [24, 30, 36, 42, 48, 60], pivot_value: 0, sub_pivot_value: 5000, title: 'Financement véhicule d\'occasion PLUS de 3 ans', description: cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans.exemple_et_infos };
|
|
// Financement véhicule d'occasion MOINS de 3 ans
|
|
form_sliders['fin_occ_m3a'] = { capital_selected: 20000, capital_max: 100000, capital_step: 500, capital_min: 5000, duree_min: 24, duree_max: 84, durees: [24, 30, 36, 42, 48, 60, 72, 84], pivot_value: 0, sub_pivot_value: 5000, title: 'Financement véhicule d\'occasion MOINS de 3 ans', description: cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans.exemple_et_infos };
|
|
// Financement véhicule d'occasion MOINS de 3 ans
|
|
form_sliders['mobil_carav'] = { capital_selected: 20000, capital_max: 100000, capital_step: 500, capital_min: 10000, duree_min: 24, duree_max: 144, durees: [24, 30, 36, 42, 48, 60, 72, 84, 96, 108, 120, 144], pivot_value: 75000, sub_pivot_value: 0, title: 'Financement mobilhome et caravane', description: cd_js.groups.financement_mobilhome_et_caravane_de_moins_de_3_ans.exemple_et_infos };
|
|
// Financement frais de notaire
|
|
form_sliders['frais_notaire'] = { capital_selected: 20000, capital_max: 50000, capital_step: 500, capital_min: 10000, duree_min: 60, duree_max: 120, durees: [60, 72, 84, 96, 108, 120], pivot_value: 0, sub_pivot_value: 0, title: 'Financement frais de notaire', description: cd_js.groups.financement_frais_de_notaire.exemple_et_infos };
|
|
// Prêt personnel : tous motifs, achats divers
|
|
form_sliders['pat'] = { capital_selected: 10000, capital_max: 200000, capital_min: 1500, capital_step: 250, duree_min: 24, duree_max: 240, durees: [24, 30, 36, 42, 48, 60, 72, 84, 96, 108, 120, 144, 180, 240], pivot_value: 75000, sub_pivot_value: 0, title: 'Prêt personnel / Tous motifs / Achats divers', description: cd_js.groups.pret_personnel__tous_motifs__achats_divers.exemple_et_infos };
|
|
// Crédit hypothécaire social (achat maison, construction)
|
|
form_sliders['ph'] = { capital_selected: 100000, capital_max: 1000000, capital_min: 25000, capital_step: 250, duree_min: 10, duree_max: 30, durees: [5, 10, 15, 20, 25, 30], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit hypothécaire', description: cd_js.groups.credit_hypothecaire_social.exemple_et_infos };
|
|
// Crédit hypothécaire classique (achat maison, construction, refinancement, regroupement, travaux, achat à l'étranger)
|
|
form_sliders['am'] = { capital_selected: 100000, capital_max: 1000000, capital_min: 25000, capital_step: 250, duree_min: 10, duree_max: 30, durees: [10, 15, 20, 25, 30], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit hypothécaire classique (achat maison, construction, refinancement, regroupement, travaux, achat à l\'étranger)', description: cd_js.groups.credit_hypothecaire_classique.exemple_et_infos };
|
|
// Crédit achat maison rapport
|
|
form_sliders['amr'] = { capital_selected: 100000, capital_max: 1000000, capital_min: 25000, capital_step: 250, duree_min: 10, duree_max: 30, durees: [10, 15, 20, 25, 30], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit hypothécaire maison rapport', description: cd_js.groups.achat_maison_de_rapport.exemple_et_infos };
|
|
// Crédit pont
|
|
form_sliders['cdp'] = { capital_selected: 100000, capital_max: 1000000, capital_min: 25000, capital_step: 250, duree_min: 1, duree_max: 24, durees: [6,12,18,24], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit pont', description: cd_js.groups.credit_pont.exemple_et_infos };
|
|
// Crédit Indépendants et entreprises en difficultés
|
|
form_sliders['cied'] = { capital_selected: 100000, capital_max: 1000000, capital_min: 25000, capital_step: 250, duree_min: 10, duree_max: 30, durees: [10, 15, 20, 25, 30], pivot_value: 0, sub_pivot_value: 0, title: 'Crédit Indépendants et entreprises en difficultés', description: cd_js.groups.independants_et_entreprises_en_difficultes.exemple_et_infos };
|
|
// Regroupement de crédit / rachat de crédit
|
|
form_sliders['regroup_cred'] = { capital_selected: 20000, capital_max: 200000, capital_step: 500, capital_min: 5000, duree_min: 24, duree_max: 144, durees: [24, 30, 36, 42, 48, 60, 72, 84, 96, 108, 120, 144], pivot_value: 75000, sub_pivot_value: 0, title: 'Regroupement de crédit / rachat de crédit', description: cd_js.groups.regroupement_de_credit__rachats_de_credits.exemple_et_infos };
|
|
|
|
|
|
// Intialize the stimulator on page load
|
|
jQuery(function($) {
|
|
if ($("#form_wizard").length) {
|
|
// onchange_loan_type();
|
|
onchange_type_de_credit();
|
|
} else if ($(".load_simulator").length) {
|
|
//Initialize capital slider
|
|
onchange_loan_type();
|
|
}
|
|
});
|
|
|
|
|
|
// Function to calculate Prêt personnel / Tous motifs / Achats divers
|
|
function calculate_pat(selected_capital, selected_duration='') {
|
|
|
|
let annual_rate, min_duration, max_duration, duree_in_range = true, display_observation_pat = false,
|
|
add_message = '';
|
|
|
|
min_duration = 24;
|
|
|
|
/* console.log('selected_duration', selected_duration);
|
|
console.log('selected_capital', selected_capital); */
|
|
|
|
|
|
if (1500 <= parseInt(selected_capital) && parseInt(selected_capital) <= 2500) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._1500_a_2500;
|
|
max_duration = 24;
|
|
} else if ((2500 < parseInt(selected_capital) && parseInt(selected_capital) <= 3700)) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._2501_a_3700;
|
|
max_duration = 30;
|
|
} else if ((3700 < parseInt(selected_capital) && parseInt(selected_capital) <= 5000)) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._3701_a_5000;
|
|
max_duration = 30;
|
|
} else if ((5000 < parseInt(selected_capital) && parseInt(selected_capital) <= 5600)) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._5001_a_5600;
|
|
max_duration = 36;
|
|
} else if ((5600 < parseInt(selected_capital) && parseInt(selected_capital) <= 7500)) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._5601_a_7500;
|
|
max_duration = 42;
|
|
} else if ((7500 < parseInt(selected_capital) && parseInt(selected_capital) <= 10000)) {
|
|
max_duration = 48;
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {
|
|
//
|
|
} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
|
|
if (selected_duration == 48) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._7501_a_10000_48_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._7501_a_10000_24_a_42_mois;
|
|
}
|
|
} else if ((10000 < parseInt(selected_capital) && parseInt(selected_capital) <= 15000)) {
|
|
|
|
if (selected_duration < 48) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._10001_a_15000_24_a_42_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers._10001_a_15000_48_a_60_mois;
|
|
}
|
|
max_duration = 60;
|
|
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 20000)) {
|
|
if (24 <= parseInt(selected_duration) && parseInt(selected_duration) <= 42) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_15001_24_a_42_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_15001_48_a_84_mois;
|
|
}
|
|
max_duration = 84;
|
|
} else if((20000 < parseInt(selected_capital) && parseInt(selected_capital) <= 75001)) {
|
|
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_20001_a_75000;
|
|
|
|
max_duration = 120;
|
|
} else if((75001 <= parseInt(selected_capital))) {
|
|
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_75000;
|
|
|
|
display_observation_pat = true;
|
|
|
|
max_duration = 240;
|
|
selected_duration = 240;
|
|
}
|
|
|
|
|
|
/* else if ((20000 < parseInt(selected_capital) && parseInt(selected_capital) <= 29999)) {
|
|
if (24 <= parseInt(selected_duration) && parseInt(selected_duration) < 48) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_20001_24_a_42_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_20001_48_a_120_mois;
|
|
}
|
|
max_duration = 120;
|
|
} else if (parseInt(selected_capital) > 29999) {
|
|
max_duration = 120;
|
|
if (24 <= parseInt(selected_duration) && parseInt(selected_duration) < 48) {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_30001_24_a_42_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.pret_personnel__tous_motifs__achats_divers.a_partir_de_30001_48_a_120_mois;
|
|
}
|
|
} */
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {
|
|
|
|
} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
|
|
}
|
|
|
|
// Function to calculate Crédit hypothécaire
|
|
function calculate_ph(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
|
|
min_duration = 5;
|
|
max_duration = 30;
|
|
annual_rate = cd_js.groups.credit_hypothecaire_social.de_10_a_30_ans;
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
selected_duration = selected_duration * 12;
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
// Function to calculate Crédit hypothécaire
|
|
function calculate_am(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
|
|
for (var i = 10; i <= 30; i++) {
|
|
if (parseInt(selected_duration) == i) {
|
|
selector = 'credit_hypothecaire_classique.des_' + i + '_ans';
|
|
|
|
/* console.log(cd_js.groups.credit_hypothecaire_classique['des_' + i + '_ans']); */
|
|
|
|
annual_rate = cd_js.groups.credit_hypothecaire_classique['des_' + i + '_ans']
|
|
}
|
|
}
|
|
min_duration = 10;
|
|
max_duration = 30;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
selected_duration = selected_duration * 12;
|
|
|
|
/* console.log([min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]); */
|
|
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
//function to calculate credit with one type of rate between 10 to 30 years
|
|
function calculate_mono_rate_bt_10_30(selected_loan_type, selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration, add_message;
|
|
var duree_in_range = true;
|
|
|
|
min_duration = 10;
|
|
max_duration = 30;
|
|
|
|
/* console.log('calculate_mono_rate_bt_10_30 - Type reçu:', selected_loan_type); */
|
|
|
|
// Fonction pour trouver le taux dans cd_js.groups
|
|
function findRate(type) {
|
|
if (cd_js.groups[type] && cd_js.groups[type].de_10_a_30_ans) {
|
|
return cd_js.groups[type].de_10_a_30_ans;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Essayer différentes variations du type pour trouver le taux
|
|
var possible_types = [
|
|
selected_loan_type, // Type original
|
|
map_values[selected_loan_type], // Type mappé
|
|
selected_loan_type.toLowerCase(), // Type en minuscules
|
|
selected_loan_type.replace(/_/g, ''), // Type sans underscore
|
|
selected_loan_type.replace(/^credit_/, '') // Type sans préfixe 'credit_'
|
|
];
|
|
|
|
// Filtrer les types undefined et null
|
|
possible_types = possible_types.filter(type => type);
|
|
|
|
// Essayer chaque type possible
|
|
for (var type of possible_types) {
|
|
var rate = findRate(type);
|
|
if (rate !== null) {
|
|
annual_rate = rate;
|
|
/* console.log('calculate_mono_rate_bt_10_30 - Taux trouvé pour le type:', type, annual_rate); */
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Si aucun taux n'est trouvé
|
|
if (annual_rate === undefined) {
|
|
console.error('Type de crédit non trouvé:', {
|
|
selected_loan_type,
|
|
possible_types,
|
|
available_groups: Object.keys(cd_js.groups)
|
|
});
|
|
return [min_duration, max_duration, selected_duration * 12, false, 0, 'Type de crédit non disponible'];
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {
|
|
/* console.log('calculate_mono_rate_bt_10_30 - Durée dans la plage'); */
|
|
} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
/* console.log('calculate_mono_rate_bt_10_30 - Durée ajustée à:', selected_duration); */
|
|
}
|
|
|
|
selected_duration = selected_duration * 12;
|
|
/* console.log('calculate_mono_rate_bt_10_30 - Sortie:', { min_duration, max_duration, selected_duration, duree_in_range, annual_rate }); */
|
|
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message];
|
|
}
|
|
|
|
// Function to calculate Financement véhicule NEUF
|
|
function calculate_fin_neuve(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration, add_message;
|
|
var duree_in_range = true;
|
|
min_duration = 24;
|
|
if (2500 == parseInt(selected_capital)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._2500_24_mois;
|
|
max_duration = 24;
|
|
} else if ((2500 < parseInt(selected_capital) && parseInt(selected_capital) <= 3700)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._2501_a_3700_24_a_30_mois;
|
|
max_duration = 30;
|
|
} else if ((3700 < parseInt(selected_capital) && parseInt(selected_capital) <= 5600)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._3701_a_5600_24_a_36_mois;
|
|
max_duration = 36;
|
|
} else if ((5600 < parseInt(selected_capital) && parseInt(selected_capital) <= 7500)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._5601_a_7500_24_a_42_mois;
|
|
max_duration = 42;
|
|
} else if ((7500 < parseInt(selected_capital) && parseInt(selected_capital) <= 10000)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._7501_a_10000_24_a_48_mois;
|
|
max_duration = 48;
|
|
} else if ((10000 < parseInt(selected_capital) && parseInt(selected_capital) <= 15000)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf.a_partir_de_10001_24_a_60_mois;
|
|
max_duration = 60;
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 100000)) {
|
|
max_duration = 84;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 72) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf.a_partir_de_15001_24_a_60_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf.a_partir_de_15001_72_a_84_mois;
|
|
}
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
// Function to calculate prêt auto occasion - de 3 ans
|
|
function calculate_pao_m_3(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
|
|
min_duration = 24;
|
|
if (2500 == parseInt(selected_capital)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans._2500_24_mois;
|
|
max_duration = 24;
|
|
} else if ((2500 < parseInt(selected_capital) && parseInt(selected_capital) <= 3700)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans._2501_a_3700_24_a_30_mois;
|
|
max_duration = 30;
|
|
} else if ((3700 < parseInt(selected_capital) && parseInt(selected_capital) <= 5600)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_neuf._3701_a_5600_24_a_36_mois;
|
|
max_duration = 36;
|
|
} else if ((5600 < parseInt(selected_capital) && parseInt(selected_capital) <= 7500)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans._5601_a_7500_24_a_42_mois;
|
|
max_duration = 42;
|
|
} else if ((7500 < parseInt(selected_capital) && parseInt(selected_capital) <= 10000)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans._7501_a_10000_24_a_48_mois;
|
|
max_duration = 48;
|
|
} else if ((10000 < parseInt(selected_capital) && parseInt(selected_capital) <= 15000)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans.a_partir_de_10001_24_a_60_mois;
|
|
max_duration = 60;
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 100000)) {
|
|
max_duration = 84;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 60) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans.a_partir_de_15001_24_a_60_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_moins_de_3_ans.a_partir_de_15001_72_a_84_mois;
|
|
}
|
|
}
|
|
if (!(min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
// Function to calculate prêt auto occasion + de 3 ans
|
|
function calculate_pao_p_3(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
|
|
min_duration = 24;
|
|
if (parseInt(selected_capital) <= 2500) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._2500_24_mois;
|
|
max_duration = 24;
|
|
} else if ((2500 < parseInt(selected_capital) && parseInt(selected_capital) <= 3700)) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._2501_a_3700_24_a_30_mois;
|
|
max_duration = 30;
|
|
} else if ((3700 < parseInt(selected_capital) && parseInt(selected_capital) <= 5000)) {
|
|
max_duration = 36;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration == 36) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._3701_a_5000_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._3701_a_5000_24_a_30_mois;
|
|
}
|
|
} else if ((5000 < parseInt(selected_capital) && parseInt(selected_capital) <= 5600)) {
|
|
max_duration = 36;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration == 36) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._5001_a_5600_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._5001_a_5600_24_a_30_mois;
|
|
}
|
|
} else if ((5600 < parseInt(selected_capital) && parseInt(selected_capital) <= 7500)) {
|
|
max_duration = 42;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration == 36) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._5601_a_7500_36_mois;
|
|
} else if (selected_duration == 42) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._5601_a_7500_42_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._5601_a_7500_24_a_30_mois;
|
|
}
|
|
} else if ((7500 < parseInt(selected_capital) && parseInt(selected_capital) <= 10000)) {
|
|
max_duration = 48;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._7501_a_10000_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._7501_a_10000_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans._7501_a_10000_42_a_48_mois;
|
|
}
|
|
} else if ((10000 < parseInt(selected_capital) && parseInt(selected_capital) <= 100000)) {
|
|
max_duration = 60;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans.a_partir_de_10001_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans.a_partir_de_10001_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.financement_vehicule_doccasion_plus_de_3_ans.a_partir_de_10001_42_a_48_mois;
|
|
}
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
/* console.log('dureeee', selected_duration); */
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
// function to calculate mobilhome
|
|
function calculate_mobilhome(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
min_duration = 24;
|
|
|
|
if(selected_capital <= 10000){
|
|
annual_rate = cd_js.groups.financement_mobilhome_et_caravane_de_moins_de_3_ans.max_10000;
|
|
max_duration = 48;
|
|
} else if(selected_capital > 10000 && selected_capital <= 15000){
|
|
annual_rate = cd_js.groups.financement_mobilhome_et_caravane_de_moins_de_3_ans.de_10001_a_15000;
|
|
max_duration = 60;
|
|
} else if(selected_capital > 15000 && selected_capital <= 37000){
|
|
annual_rate = cd_js.groups.financement_mobilhome_et_caravane_de_moins_de_3_ans.de_15001_a_37000;
|
|
max_duration = 120;
|
|
} else if(selected_capital > 37000 && selected_capital <= 100000){
|
|
annual_rate = cd_js.groups.financement_mobilhome_et_caravane_de_moins_de_3_ans.de_37001_a_10000;
|
|
max_duration = 144;
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message];
|
|
|
|
}
|
|
|
|
//function to calculate regroupement de credit
|
|
function calculate_regroupement_de_credit(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
min_duration = 24;
|
|
|
|
if(selected_capital >= 5000 && selected_capital <= 5600){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_5000_a_5600;
|
|
max_duration = 36;
|
|
} else if(selected_capital > 5600 && selected_capital <= 7500){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_5601_a_7500;
|
|
max_duration = 42;
|
|
} else if(selected_capital > 7500 && selected_capital <= 10000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_7501_a_10000;
|
|
max_duration = 48;
|
|
} else if(selected_capital > 10000 && selected_capital <= 15000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_10001_a_15000;
|
|
max_duration = 60;
|
|
} else if(selected_capital > 15000 && selected_capital <= 20000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_15001_a_20000;
|
|
max_duration = 84;
|
|
} else if(selected_capital > 20000 && selected_capital <= 60000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_20001_a_60000;
|
|
max_duration = 120;
|
|
} else if(selected_capital > 60000 && selected_capital <= 75000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_60001_a_75000;
|
|
max_duration = 120;
|
|
} else if(selected_capital > 75000 && selected_capital <= 100000){
|
|
annual_rate = cd_js.groups.regroupement_de_credit__rachats_de_credits.de_75001_a_100000;
|
|
max_duration = 144;
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message];
|
|
}
|
|
|
|
// Function to calculate Financement frais de notaire
|
|
function calculate_frais_notaire(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
min_duration = 60;
|
|
|
|
if ((10001 <= parseInt(selected_capital) && parseInt(selected_capital) <= 15000)) {
|
|
annual_rate = cd_js.groups.financement_frais_de_notaire.de_10000_a_15000;
|
|
max_duration = 60;
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 20000)) {
|
|
annual_rate = cd_js.groups.financement_frais_de_notaire.de_15000_a_20000;
|
|
max_duration = 84;
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 50000)) {
|
|
annual_rate = cd_js.groups.financement_frais_de_notaire.de_20000_a_50000;
|
|
max_duration = 120;
|
|
}
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
// Function to calculate travaux / Rénovation / Energie
|
|
function calculate_but_immo(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration;
|
|
var duree_in_range = true;
|
|
var add_message = '';
|
|
min_duration = 24;
|
|
if (2500 == parseInt(selected_capital)) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._2500_24_mois;
|
|
max_duration = 24;
|
|
} else if ((2500 < parseInt(selected_capital) && parseInt(selected_capital) <= 3700)) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._2501_a_3700_24_a_30_mois;
|
|
max_duration = 30;
|
|
} else if ((3700 < parseInt(selected_capital) && parseInt(selected_capital) <= 5600)) {
|
|
max_duration = 36;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration == 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._3701_a_5600_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._3701_a_5600_24_a_30_mois;
|
|
}
|
|
} else if ((5600 < parseInt(selected_capital) && parseInt(selected_capital) <= 7500)) {
|
|
max_duration = 42;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration == 42) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._5601_a_7500_42_mois;
|
|
} else if (selected_duration == 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._3701_a_5600_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._5601_a_7500_24_a_30_mois;
|
|
}
|
|
} else if ((7500 < parseInt(selected_capital) && parseInt(selected_capital) <= 10000)) {
|
|
max_duration = 48;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._7501_a_10000_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._7501_a_10000_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._7501_a_10000_42_a_48_mois;
|
|
}
|
|
} else if ((10000 < parseInt(selected_capital) && parseInt(selected_capital) <= 15000)) {
|
|
max_duration = 60;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._10001_a_15000_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._10001_a_15000_36_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._10001_a_15000_42_a_60_mois;
|
|
}
|
|
} else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 20000)) {
|
|
max_duration = 84;
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_15001_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._a_partir_de_15001_36_mois;
|
|
} else if (selected_duration < 72) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie._a_partir_de_15001_42_a_60_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_15001_72_a_84_mois;
|
|
}
|
|
} else if ((20000) < parseInt(selected_capital)) {
|
|
max_duration = 120;
|
|
|
|
if(37001 <= parseInt(selected_capital)) {
|
|
max_duration = 180;
|
|
}
|
|
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
if (selected_duration < 36) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_24_a_30_mois;
|
|
} else if (selected_duration < 42) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_36_mois;
|
|
} else if (selected_duration < 72) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_42_a_60_mois;
|
|
} else if (selected_duration < 96) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_72_a_84_mois;
|
|
} else if (selected_duration > 120) {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_120_a_180_mois;
|
|
} else {
|
|
annual_rate = cd_js.groups.credit_travaux__renovation__energie.a_partir_de_20001_96_a_120_mois;
|
|
}
|
|
}
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]
|
|
}
|
|
|
|
// Function to calculate crédit pont
|
|
function calculate_cdp(selected_capital, selected_duration) {
|
|
var annual_rate, min_duration, max_duration, add_message;
|
|
var duree_in_range = true;
|
|
|
|
min_duration = 1; // En mois
|
|
max_duration = 24; // En mois
|
|
|
|
// Récupération du taux pour le crédit pont avec le nouveau sélecteur
|
|
annual_rate = cd_js.groups.credit_pont.de_1_a_24_mois;
|
|
|
|
|
|
// Vérification si la durée est dans la plage
|
|
if ((min_duration <= parseInt(selected_duration) && parseInt(selected_duration) <= max_duration)) {} else {
|
|
duree_in_range = false;
|
|
selected_duration = max_duration;
|
|
}
|
|
/* console.log('selected_duration', selected_duration); */
|
|
|
|
|
|
// Pas besoin de convertir la durée en mois car elle est déjà en mois
|
|
return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message];
|
|
}
|
|
|
|
//Function to calculate mensulate for all forms
|
|
function calculate_mensualite() {
|
|
console.log('🧮 CALCULATE_MENSUALITE - Fonction appelée');
|
|
var selected_duration, selected_capital;
|
|
selected_duration = jQuery('#selected_months').val();
|
|
selected_capital = jQuery('#selected_capital').val();
|
|
var results, stimulator_value, min_duration, max_duration, duree_in_range, annual_rate, add_messages, loan_type, sub_loan_radio_type;
|
|
loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '',
|
|
sub_auto_radio_type = jQuery('.sub_auto_loan_type:checked').length ? jQuery('.sub_auto_loan_type:checked').val() : '';
|
|
|
|
|
|
/* console.log('selected_capital++', selected_capital);
|
|
console.log('selected_duration++', selected_duration); */
|
|
|
|
/* if (sub_loan_radio_type != '')
|
|
loan_type = loan_radio_type; */
|
|
|
|
if (sub_loan_radio_type != '' && authorized_value.includes(sub_loan_radio_type)) {
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
if (sub_auto_radio_type != '')
|
|
loan_type = sub_auto_radio_type;
|
|
|
|
/* console.log(selected_capital);
|
|
console.log(JSON.stringify(selected_duration)); */
|
|
|
|
|
|
switch (loan_type) {
|
|
case 'pat':
|
|
results = calculate_pat(selected_capital, selected_duration);
|
|
break;
|
|
case 'fin_neuve':
|
|
results = calculate_fin_neuve(selected_capital, selected_duration);
|
|
break;
|
|
case 'fin_occ_m3a':
|
|
results = calculate_pao_m_3(selected_capital, selected_duration);
|
|
break;
|
|
case 'fin_occ_p3a':
|
|
results = calculate_pao_p_3(selected_capital, selected_duration);
|
|
break;
|
|
case 'ph':
|
|
results = calculate_ph(selected_capital, selected_duration);
|
|
break;
|
|
case 'am':
|
|
results = calculate_am(selected_capital, selected_duration);
|
|
break;
|
|
case 'frais_notaire':
|
|
results = calculate_frais_notaire(selected_capital, selected_duration);
|
|
break;
|
|
case 'but_immo':
|
|
results = calculate_but_immo(selected_capital, selected_duration);
|
|
break;
|
|
case 'cdp':
|
|
results = calculate_cdp(selected_capital, selected_duration);
|
|
break;
|
|
case 'amr':
|
|
case 'cied':
|
|
results = calculate_mono_rate_bt_10_30(sub_loan_radio_type, selected_capital, selected_duration);
|
|
break;
|
|
case 'mobil_carav':
|
|
results = calculate_mobilhome(selected_capital, selected_duration);
|
|
break;
|
|
case 'regroup_cred':
|
|
results = calculate_regroupement_de_credit(selected_capital, selected_duration);
|
|
break;
|
|
}
|
|
/* console.log(loan_type); */
|
|
/* console.log('results', results); */
|
|
|
|
min_duration = results[0];
|
|
max_duration = results[1];
|
|
selected_duration = results[2];
|
|
duree_in_range = results[3];
|
|
annual_rate = parseFloat(results[4]);
|
|
add_messages = results[5];
|
|
|
|
function calc_mens(mnt, dur, taeg) {
|
|
// Pour le crédit pont, on ne calcule que les intérêts mensuels
|
|
if (loan_type === 'cdp') {
|
|
var t100 = taeg / 100;
|
|
// Calcul des intérêts mensuels uniquement : (capital * taux_annuel) / 12
|
|
var mens = (mnt * t100) / 12;
|
|
return Math.floor(mens * 100) / 100;
|
|
}
|
|
|
|
// Pour les autres types de crédit, calcul normal
|
|
var dur12 = dur / 12;
|
|
var t100 = taeg / 100;
|
|
var t101 = 1 + t100;
|
|
var d12 = 1 / 12;
|
|
var buf1 = Math.pow(t101, d12);
|
|
var buf2 = Math.pow(1 / t101, dur12);
|
|
var mens = (mnt * (buf1 - 1)) / (1 - buf2),
|
|
ag = (mens * dur) - mnt;
|
|
var tauxc = (ag * 100) / (mnt * dur);
|
|
|
|
/* console.log(dur); */
|
|
|
|
if (loan_type == 'am') {
|
|
/* console.log(dur + ' : ' + buf2); */
|
|
}
|
|
|
|
return Math.floor(mens * 100) / 100;
|
|
}
|
|
|
|
function get_credit_infos(selected_capital, duration) {
|
|
|
|
let rtr_array = {};
|
|
|
|
switch (loan_type) {
|
|
case 'pat':
|
|
results_info = calculate_pat(selected_capital, duration);
|
|
break;
|
|
case 'fin_neuve':
|
|
results_info = calculate_fin_neuve(selected_capital, duration);
|
|
break;
|
|
case 'fin_occ_m3a':
|
|
results_info = calculate_pao_m_3(selected_capital, duration);
|
|
break;
|
|
case 'fin_occ_p3a':
|
|
results_info = calculate_pao_p_3(selected_capital, duration);
|
|
break;
|
|
case 'ph':
|
|
results_info = calculate_ph(selected_capital, duration);
|
|
break;
|
|
case 'am':
|
|
results_info = calculate_am(selected_capital, duration);
|
|
break;
|
|
case 'frais_notaire':
|
|
results_info = calculate_frais_notaire(selected_capital, duration);
|
|
break;
|
|
case 'but_immo':
|
|
results_info = calculate_but_immo(selected_capital, duration);
|
|
break;
|
|
case 'cdp':
|
|
results_info = calculate_cdp(selected_capital, duration);
|
|
break;
|
|
case 'amr':
|
|
case 'cied':
|
|
results_info = calculate_mono_rate_bt_10_30(sub_loan_radio_type, selected_capital, duration);
|
|
break;
|
|
case 'mobil_carav':
|
|
results_info = calculate_mobilhome(selected_capital, duration);
|
|
break;
|
|
case 'regroup_cred':
|
|
results_info = calculate_regroupement_de_credit(selected_capital, duration);
|
|
break;
|
|
}
|
|
|
|
rtr_array['min_duration'] = results_info[0];
|
|
rtr_array['max_duration'] = results_info[1];
|
|
rtr_array['annual_rate'] = parseFloat(results_info[4]);
|
|
|
|
return parseFloat(rtr_array['annual_rate']);
|
|
}
|
|
|
|
function calc_mens_all(mnt) {
|
|
let mens_array = {},
|
|
duree = form_sliders[loan_type]['durees'];
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
var global_annual_rate,
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
min_duration = form_sliders[loan_type]['duree_min'];
|
|
max_duration = form_sliders[loan_type]['duree_max'];
|
|
|
|
// Correction : initialiser le taux global pour tous les types en années
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
global_annual_rate = get_credit_infos(mnt, duree[0]); // On prend le premier taux comme référence
|
|
}
|
|
|
|
for (i = 0; i < duree.length; i++) {
|
|
if (duree[i] >= min_duration && duree[i] <= max_duration) {
|
|
var duree_in_month = duree[i];
|
|
|
|
if (!loan_type_in_years.includes(loan_type)) {
|
|
global_annual_rate = get_credit_infos(mnt, duree[i]);
|
|
}
|
|
|
|
if(loan_type_in_years.includes(loan_type)) {
|
|
duree_in_month = duree_in_month * 12;
|
|
}
|
|
|
|
/* console.log('mt', mnt);
|
|
console.log('duree_in_month', duree_in_month);
|
|
console.log('global_annual_rate', global_annual_rate); */
|
|
|
|
mens_array[duree[i]] = calc_mens(mnt, duree_in_month, global_annual_rate);
|
|
}
|
|
}
|
|
|
|
/* console.log('mens_array', mens_array); */
|
|
|
|
return mens_array;
|
|
}
|
|
|
|
|
|
stimulator_value = calc_mens(selected_capital, selected_duration, annual_rate);
|
|
//Adjust the month duration selector to minimum or maximum allowed amount
|
|
stimulator_value = stimulator_value.toFixed(2);
|
|
|
|
/* console.log(stimulator_value); */
|
|
|
|
/* console.log(selected_capital);
|
|
console.log(selected_duration);
|
|
console.log(annual_rate); */
|
|
|
|
let simulateur_all_mensualite = calc_mens_all(selected_capital);
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
var selected_duration_fortmated = selected_duration / 12;
|
|
/* if(loan_type == 'ph' || loan_type == 'am')
|
|
var selected_duration_fortmated = selected_duration / 12;
|
|
else
|
|
var selected_duration_fortmated = selected_duration; */
|
|
|
|
|
|
var duree_suffix = " ans";
|
|
jQuery('label[for="selected_months"]').html('Durée choisie (nombre d\'années)');
|
|
|
|
} else {
|
|
var selected_duration_fortmated = selected_duration;
|
|
var duree_suffix = " mois";
|
|
jQuery('label[for="selected_months"]').html('Durée choisie (nombre de mensualités)');
|
|
}
|
|
|
|
if (jQuery(".mini-stimulator").length) {} else {
|
|
/* console.log('selected_duration_fortmated', selected_duration_fortmated); */
|
|
change_duree(min_duration, max_duration, selected_duration_fortmated);
|
|
}
|
|
|
|
let duree_value = jQuery('.limit-warning').length ? '--' : selected_duration_fortmated + duree_suffix;
|
|
|
|
/* console.log('duree_value_bis', selected_capital); */
|
|
|
|
jQuery('.montant_value').html(number_format(selected_capital, 0, ',', '.'));
|
|
jQuery('.duree_value').html(duree_value);
|
|
jQuery('.montant_total_value').html(number_format(stimulator_value, 2, ',', '.'));
|
|
jQuery('.cout_total_value').html(number_format((stimulator_value * selected_duration), 2, ',', '.'));
|
|
jQuery('.taux_debiteur_fixe_value').html(annual_rate.toFixed(2) + ' %');
|
|
/* jQuery('#taeg_value_2').html(annual_rate.toFixed(2) + '%'); */
|
|
|
|
// Calcul du taux débiteur en fonction du type de crédit
|
|
let tauxDebiteur = annual_rate;
|
|
if (houseCreditTypes.includes(sub_loan_radio_type)) {
|
|
tauxDebiteur = annual_rate + (annual_rate * 0.11);
|
|
}
|
|
jQuery('.taeg_value').html(tauxDebiteur.toFixed(2) + ' %');
|
|
|
|
/* jQuery('#additional_messages').html(add_messages); */
|
|
|
|
if (jQuery('#loan_type').length) {
|
|
jQuery('#loan_type').val(loan_type);
|
|
}
|
|
|
|
if (jQuery('#hidden_montant_total_value').length) {
|
|
jQuery('#hidden_montant_total_value').val(number_format(stimulator_value, 2, ',', '.'));
|
|
}
|
|
|
|
if (jQuery('#hidden_cout_total_value').length) {
|
|
jQuery('#hidden_cout_total_value').val(number_format((stimulator_value * selected_duration), 2, ',', '.'));
|
|
}
|
|
|
|
if (jQuery('#hidden_taeg_value').length) {
|
|
jQuery('#hidden_taeg_value').val(annual_rate.toFixed(2) + '%');
|
|
}
|
|
|
|
if (jQuery('#estateloantype').length) {
|
|
jQuery('#estateloantype').val(sub_loan_radio_type);
|
|
}
|
|
|
|
/**print all mensualite for the different period */
|
|
for (property in simulateur_all_mensualite) {
|
|
|
|
/* class_name = loan_type == 'am' ? property + '_ans' : 'mens_' + property; */
|
|
class_name = loan_type_in_years.includes(loan_type) ? property + '_ans' : 'mens_' + property;
|
|
|
|
jQuery('.date-range-buttons .' + class_name).text(simulateur_all_mensualite[property] + ' €');
|
|
}
|
|
}
|
|
|
|
//Create an onchange event for Type de prêt
|
|
jQuery(document).on('change', '#loan_type, .loan_type, .sub_loan_type', function() {
|
|
/* console.log('change'); */
|
|
|
|
onchange_loan_type();
|
|
});
|
|
|
|
jQuery(document).on('change', '.sub_auto_loan_type', function(e) {
|
|
/* console.log('sub-change'); */
|
|
onchange_loan_type();
|
|
});
|
|
|
|
/* jQuery('.loan_type').change(function() {
|
|
onchange_loan_type();
|
|
}); */
|
|
|
|
jQuery('#credit-direct-accordion').accordion({
|
|
collapsible: true,
|
|
active: false,
|
|
heightStyle: "content"
|
|
});
|
|
|
|
jQuery("#credit-direct-accordion .ui-accordion-header").click(function() {
|
|
jQuery(this)
|
|
.children("i")
|
|
.toggleClass("fa-plus-circle fa-minus-circle");
|
|
|
|
jQuery(".ui-accordion-header")
|
|
.not(jQuery(this))
|
|
.children("i")
|
|
.removeClass("fa-minus-circle");
|
|
jQuery(".ui-accordion-header")
|
|
.not(jQuery(this))
|
|
.children("i")
|
|
.addClass("fa-plus-circle");
|
|
});
|
|
|
|
// Function to perform when loan is changed
|
|
function onchange_loan_type(type = 'select') {
|
|
|
|
var form_data = [];
|
|
var form_desc = [];
|
|
var selected = jQuery('#loan_type').val(),
|
|
loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '',
|
|
sub_auto_radio_type = jQuery('.sub_auto_loan_type:checked').length ? jQuery('.sub_auto_loan_type:checked').val() : '',
|
|
input_label = '',
|
|
sub_input_label;
|
|
|
|
/* console.log('Initial loan_type:', loan_type);
|
|
console.log('Initial selected:', selected); */
|
|
|
|
// Mise à jour du type sélectionné en fonction des boutons radio
|
|
if (loan_radio_type !== '') {
|
|
selected = loan_radio_type;
|
|
loan_type = loan_radio_type;
|
|
}
|
|
|
|
// Mise à jour du type sélectionné en fonction des sous-types
|
|
if (sub_loan_radio_type !== '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type]) {
|
|
selected = map_values[sub_loan_radio_type];
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Réinitialisation du capital à la valeur par défaut lors d'un changement de type de crédit
|
|
if (jQuery('#selected_capital').length) {
|
|
var default_capital = form_sliders[loan_type] ? form_sliders[loan_type].capital_selected : null;
|
|
if (default_capital !== null) {
|
|
jQuery('#selected_capital').val(default_capital);
|
|
}
|
|
}
|
|
|
|
var sel_duree = jQuery('#selected_months').val(),
|
|
selected_capital = jQuery('#selected_capital').val();
|
|
|
|
/* console.log('Final loan_type:', loan_type);
|
|
console.log('Final selected:', selected); */
|
|
|
|
// Mise à jour des classes actives
|
|
jQuery('.sub_loan_type, .sub_auto_loan_type').parent('.form_check').find('.form-check-label').removeClass('active');
|
|
if (jQuery('.sub_loan_type:checked').parent('.form_check').find('.form-check-label').length) {
|
|
input_label = jQuery('.sub_loan_type:checked, .sub_auto_loan_type:checked').parent('.form_check').find('.form-check-label');
|
|
if (!input_label.hasClass('active')) {
|
|
input_label.addClass('active');
|
|
}
|
|
}
|
|
|
|
// Calcul des résultats en fonction du type de crédit
|
|
var results;
|
|
switch(loan_type) {
|
|
case 'pat':
|
|
results = calculate_pat(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_neuve':
|
|
results = calculate_fin_neuve(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_occ_m3a':
|
|
results = calculate_pao_m_3(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_occ_p3a':
|
|
results = calculate_pao_p_3(selected_capital, sel_duree);
|
|
break;
|
|
case 'ph':
|
|
results = calculate_ph(selected_capital, sel_duree);
|
|
break;
|
|
case 'am':
|
|
results = calculate_am(selected_capital, sel_duree);
|
|
break;
|
|
case 'frais_notaire':
|
|
results = calculate_frais_notaire(selected_capital, sel_duree);
|
|
break;
|
|
case 'but_immo':
|
|
results = calculate_but_immo(selected_capital, sel_duree);
|
|
break;
|
|
case 'cdp':
|
|
results = calculate_cdp(selected_capital, sel_duree);
|
|
break;
|
|
case 'amr':
|
|
case 'cied':
|
|
results = calculate_mono_rate_bt_10_30(sub_loan_radio_type, selected_capital, sel_duree);
|
|
break;
|
|
case 'mobil_carav':
|
|
results = calculate_mobilhome(selected_capital, sel_duree);
|
|
break;
|
|
case 'regroup_cred':
|
|
results = calculate_regroupement_de_credit(selected_capital, sel_duree);
|
|
break;
|
|
}
|
|
|
|
// Mise à jour des sliders et des valeurs
|
|
let dynamic_start_max = results[1];
|
|
let dynamic_start_min = results[0];
|
|
|
|
let info_parent = jQuery('.credit_infos').parents('.stimulated-results');
|
|
|
|
/* console.log('dynamic_start_max', dynamic_start_max); */
|
|
|
|
duree_range = form_sliders[selected].durees;
|
|
jQuery('.disclaimer').html(form_sliders[selected].description);
|
|
|
|
if (jQuery(".mini-stimulator").length) {
|
|
jQuery('.type_pret_value').html(form_sliders[selected].title);
|
|
} else {
|
|
if ((selected == "ph") || (selected == "am")) {
|
|
change_duree(dynamic_start_min, dynamic_start_max, dynamic_start_max);
|
|
jQuery('#selected_months').val(30);
|
|
} else {
|
|
change_duree(dynamic_start_min, dynamic_start_max, dynamic_start_max);
|
|
|
|
/* console.log('form_sliders[selected].duree_max', form_sliders[selected].duree_max); */
|
|
|
|
jQuery('#selected_months').val(form_sliders[selected].duree_max);
|
|
}
|
|
change_capital_slider(form_sliders[selected].capital_min, form_sliders[selected].capital_max, form_sliders[selected].capital_selected);
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, form_sliders[selected].duree_max);
|
|
update_capital_input();
|
|
}
|
|
|
|
// Affichage des informations du crédit
|
|
var group = form_sliders[selected].group;
|
|
var info = [];
|
|
|
|
if(cd_js.groups[sub_loan_radio_type] && cd_js.groups[sub_loan_radio_type].infos) {
|
|
info = cd_js.groups[sub_loan_radio_type].infos;
|
|
jQuery('.credit_infos .notice-info').html(info);
|
|
jQuery('.credit_infos').slideDown();
|
|
info_parent.addClass('info_active');
|
|
} else {
|
|
if(jQuery('.credit_infos').is(':visible')) {
|
|
jQuery('.credit_infos .notice-info').html('');
|
|
jQuery('.credit_infos').slideUp();
|
|
info_parent.removeClass('info_active');
|
|
}
|
|
}
|
|
|
|
calculate_mensualite();
|
|
|
|
// Ajout : fonction pour mettre à jour l'unité de durée à côté de #selected_months
|
|
updateSelectedMonthsUnit();
|
|
|
|
// Mettre à jour l'état des boutons de durée après changement de type de crédit
|
|
updateDurationButtonsState();
|
|
}
|
|
|
|
// Detect capital change
|
|
jQuery(document).on('input', '#selected_capital', function(e) {
|
|
jQuery('#selected_capital').on('keyup', function() {
|
|
clearTimeout(Timer);
|
|
|
|
sel_val = jQuery('#selected_capital').val();
|
|
|
|
/* jQuery('#selected_capital').val(sel_val + 1); */
|
|
|
|
// Ne plus appeler delayed_capital_chnage ici pour éviter la correction automatique pendant la saisie
|
|
// Timer = setTimeout(delayed_capital_chnage, 20);
|
|
});
|
|
});
|
|
|
|
// Detect months change
|
|
jQuery(document).on('input', '#selected_months', function(e) {
|
|
jQuery('#selected_months').on('keyup', function() {
|
|
clearTimeout(Timer);
|
|
|
|
sel_val = jQuery('#selected_months').val();
|
|
|
|
Timer = setTimeout(validate_months_input, 5000); // Délai de 0.5s
|
|
});
|
|
});
|
|
|
|
jQuery(document).on('blur', '#selected_capital', function() {
|
|
display_alert_capital();
|
|
// Appeler delayed_capital_chnage au onblur pour corriger la valeur seulement quand l'utilisateur quitte le champ
|
|
delayed_capital_chnage();
|
|
});
|
|
|
|
jQuery(document).on('blur', '#selected_months', function() {
|
|
// Vérifier si le champ est vide ou contient une valeur invalide
|
|
var value = jQuery(this).val();
|
|
if (value === '' || isNaN(value)) {
|
|
// Remettre une valeur par défaut ou afficher un message
|
|
jQuery(this).val(''); // ou une valeur par défaut
|
|
// Optionnel : afficher un message d'alerte
|
|
} else {
|
|
// Appeler la validation normale
|
|
validate_months_input();
|
|
}
|
|
});
|
|
|
|
// Action to do on capital value change
|
|
function on_slider_value_change() {
|
|
console.log('🔄 ON_SLIDER_VALUE_CHANGE - Fonction appelée');
|
|
var selected = jQuery('#loan_type').val();
|
|
var loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
selected = loan_radio_type;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
}
|
|
|
|
var capital_min = form_sliders[selected].capital_min;
|
|
var capital_max = form_sliders[selected].capital_max;
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
if (!(selected == 'ph' || selected == 'am')) {
|
|
/* jQuery('#selected_months').val(200); */
|
|
}
|
|
console.log('🔄 ON_SLIDER_VALUE_CHANGE - Appel calculate_mensualite()');
|
|
calculate_mensualite();
|
|
/* change_duree(form_sliders[selected].duree_min, form_sliders[selected].duree_max, form_sliders[selected].duree_max); */
|
|
/* change_capital_slider(capital_min, capital_max, selected_capital); */
|
|
|
|
}
|
|
|
|
function display_alert_capital() {
|
|
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
var selected = jQuery('#loan_type').val(),
|
|
selected_radio = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';;
|
|
|
|
if (selected_radio != '')
|
|
selected = selected_radio;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
}
|
|
|
|
var capital_max = form_sliders[selected].capital_max;
|
|
var capital_min = form_sliders[selected].capital_min;
|
|
|
|
if (jQuery('.limit-warning').length) {
|
|
jQuery('.limit-warning').slideUp();
|
|
jQuery('.limit-warning').remove();
|
|
}
|
|
|
|
if (!((selected_capital > capital_min) && (selected_capital < capital_max))) {
|
|
if ((selected_capital <= capital_min)) {
|
|
|
|
jQuery('.second-col').prepend('<div class="alert alert-warning limit-warning">Le montant minimum requis est de ' + capital_min + '€</div>');
|
|
} else {
|
|
|
|
jQuery('.second-col').prepend('<div class="alert alert-warning limit-warning">Le montant maximum est de ' + capital_max + '€</div>');
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// Get keystroke stop on capital value
|
|
function delayed_capital_chnage() {
|
|
var selected_capital_range = '#selected_capital_range';
|
|
var selected = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
var selected_capital = parseFloat(jQuery('#selected_capital').val());
|
|
|
|
if (loan_radio_type != '') {
|
|
selected = loan_radio_type;
|
|
}
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
var capital_max = form_sliders[selected].capital_max;
|
|
var capital_min = form_sliders[selected].capital_min;
|
|
var simu_button = document.querySelector('.stimulator_result_btn');
|
|
|
|
// Suppression de tout message d'alerte
|
|
if (jQuery('.limit-warning').length) {
|
|
jQuery('.limit-warning').slideUp();
|
|
jQuery('.limit-warning').remove();
|
|
}
|
|
|
|
// Recalculer la durée max dynamiquement en fonction du capital AVANT la correction
|
|
console.log('🔄 DELAYED_CAPITAL_CHANGE - Recalcul de la durée max pour capital:', selected_capital);
|
|
|
|
// Utiliser la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, '');
|
|
|
|
if (results && results.length > 1) {
|
|
var new_max_duration = results[1];
|
|
var current_duration = jQuery('#selected_months').val();
|
|
|
|
console.log('🔄 DELAYED_CAPITAL_CHANGE - Durée actuelle:', current_duration);
|
|
console.log('🔄 DELAYED_CAPITAL_CHANGE - Durée max recalculée:', new_max_duration);
|
|
|
|
// Si la durée actuelle dépasse le nouveau max, ajuster à la nouvelle durée max
|
|
if (parseInt(current_duration) > parseInt(new_max_duration)) {
|
|
console.log('🔄 DELAYED_CAPITAL_CHANGE - Ajustement de la durée à:', new_max_duration);
|
|
jQuery('#selected_months').val(new_max_duration);
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, new_max_duration);
|
|
} else {
|
|
// Sinon, garder la durée actuelle mais mettre à jour les limites du slider
|
|
console.log('🔄 DELAYED_CAPITAL_CHANGE - Durée conservée, mise à jour du slider');
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, current_duration);
|
|
}
|
|
}
|
|
|
|
// Correction automatique si hors bornes
|
|
if (selected_capital < capital_min) {
|
|
jQuery('#selected_capital').val(capital_min);
|
|
jQuery(selected_capital_range).slider('value', capital_min);
|
|
// Déclencher l'événement slide pour maintenir la synchronisation
|
|
jQuery(selected_capital_range).slider('option', 'slide').call(jQuery(selected_capital_range)[0], null, {value: capital_min});
|
|
// Mise à jour affichage
|
|
var selected_capital_box = jQuery(selected_capital_range).parents('.selected_capital');
|
|
jQuery(selected_capital_range).find('.slider_capital_box').text(number_format(capital_min, 2, ',', '.') + ' €');
|
|
selected_capital_box.find('.outside_box').text(number_format(capital_min, 2, ',', '.') + ' €');
|
|
if (simu_button) simu_button.disabled = false;
|
|
} else if (selected_capital > capital_max) {
|
|
jQuery('#selected_capital').val(capital_max);
|
|
jQuery(selected_capital_range).slider('value', capital_max);
|
|
// Déclencher l'événement slide pour maintenir la synchronisation
|
|
jQuery(selected_capital_range).slider('option', 'slide').call(jQuery(selected_capital_range)[0], null, {value: capital_max});
|
|
// Mise à jour affichage
|
|
var selected_capital_box = jQuery(selected_capital_range).parents('.selected_capital');
|
|
jQuery(selected_capital_range).find('.slider_capital_box').text(number_format(capital_max, 2, ',', '.') + ' €');
|
|
selected_capital_box.find('.outside_box').text(number_format(capital_max, 2, ',', '.') + ' €');
|
|
if (simu_button) simu_button.disabled = false;
|
|
} else {
|
|
if (simu_button && simu_button.disabled) simu_button.disabled = false;
|
|
}
|
|
|
|
// Appeler calculate_mensualite() pour tout recalculer (change_duree + mensualités)
|
|
calculate_mensualite();
|
|
|
|
// Mettre à jour l'état des boutons de durée
|
|
updateDurationButtonsState();
|
|
}
|
|
|
|
// Get keystroke stop on months value
|
|
function delayed_months_change() {
|
|
var selected_months_range = '#selected_months_range';
|
|
var selected = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
var selected_months = jQuery('#selected_months').val();
|
|
var selected_duree_box = jQuery(selected_months_range).parents('.selected_duree');
|
|
|
|
if (loan_radio_type != '') {
|
|
selected = loan_radio_type;
|
|
}
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
var duree_max = form_sliders[selected].duree_max;
|
|
var duree_min = form_sliders[selected].duree_min;
|
|
|
|
if ((selected_months >= duree_min) && (selected_months <= duree_max)) {
|
|
jQuery(selected_months_range).slider({
|
|
value: selected_months
|
|
});
|
|
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
var periodicite = loan_type_in_years.includes(selected) ? ' ans' : ' mois';
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(selected_months + periodicite);
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(selected_months + periodicite);
|
|
|
|
calculate_mensualite();
|
|
}
|
|
}
|
|
|
|
// Check if duration changed
|
|
jQuery(function() {
|
|
jQuery(document).on('click', '.duree-btn', function() {
|
|
var $this = jQuery(this);
|
|
if ($this.length && $this.hasClass('months-active')) {
|
|
var selected_duree = $this.data('duree');
|
|
var loan_type = jQuery('#loan_type').val();
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
|
|
// Récupérer les limites originales du slider
|
|
var results = calculate_pat(selected_capital, selected_duree);
|
|
var max_duration = results[1];
|
|
|
|
// Mettre à jour la valeur sélectionnée
|
|
jQuery('#selected_months').val(selected_duree);
|
|
|
|
// Mettre à jour le slider avec la nouvelle valeur mais en préservant la limite maximale
|
|
var $slider = jQuery('#selected_months_range');
|
|
if ($slider.length) {
|
|
$slider.slider('option', 'value', selected_duree);
|
|
}
|
|
|
|
calculate_mensualite();
|
|
}
|
|
});
|
|
});
|
|
|
|
//Change month values
|
|
function change_duree(default_min, default_max, selected_value) {
|
|
var list = '';
|
|
var list_class = '',
|
|
loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '',
|
|
class_name = 'mens_',
|
|
selected_capital = jQuery('#selected_capital').val(),
|
|
monthly_low = 0,
|
|
monthly_high = 0,
|
|
capital_min = 0,
|
|
capital_max = 0,
|
|
selected_duree_box = jQuery('#selected_months_range').parents('.selected_duree');
|
|
|
|
// Déplacer la définition de loan_type_in_years ici, en dehors de la boucle
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
if (selected_capital == '') {
|
|
|
|
selected_capital = form_sliders[loan_type]['capital_selected'];
|
|
}
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
}
|
|
|
|
/* console.log('loan_type-bis', loan_type);
|
|
console.log('loan_radio_type', loan_radio_type);
|
|
console.log('sub_loan_radio_type', sub_loan_radio_type);
|
|
console.log('selected_capital-bis', selected_capital); */
|
|
capital_min = form_sliders[loan_type]['capital_min'];
|
|
capital_max = form_sliders[loan_type]['capital_max'];
|
|
|
|
// Utiliser la fonction centralisée pour calculer les limites
|
|
results = calculateDynamicLimits(loan_type, sub_loan_radio_type, selected_capital, selected_value);
|
|
|
|
/* console.log('results-bis', results); */
|
|
|
|
monthly_low = results[0];
|
|
monthly_high = results[1];
|
|
|
|
/* console.log('monthly_low', monthly_low);
|
|
console.log('monthly_high', monthly_high); */
|
|
|
|
var validDurees = [];
|
|
|
|
// Filtrer d'abord les durées valides
|
|
for (var j = 0; j < duree_range.length; j++) {
|
|
|
|
|
|
if ((monthly_low <= parseInt(duree_range[j]) && parseInt(duree_range[j]) <= monthly_high)) {
|
|
validDurees.push(duree_range[j]);
|
|
}
|
|
}
|
|
|
|
var startIndex = Math.max(0, validDurees.length - 4);
|
|
|
|
/* console.log(duree_range[startIndex]);
|
|
|
|
console.log(selected_capital);
|
|
console.log(results);
|
|
console.log(startIndex);
|
|
console.log(validDurees);
|
|
console.log('default_max', default_max);
|
|
console.log('default_min', default_min);
|
|
console.log('sel duree', selected_value); */
|
|
|
|
|
|
if (jQuery('#selected_capital').val() < capital_min) {
|
|
list = '<li>La somme minimale est de ' + capital_min + '€</li>';
|
|
} else if (jQuery('#selected_capital').val() > capital_max) {
|
|
list = '<li>La somme maximale est de ' + capital_max + '€</li>';
|
|
} else {
|
|
/* for (var i = 0; i < duree_range.length; i++) { */
|
|
for (var i = startIndex; i < validDurees.length; i++) {
|
|
|
|
var periodicite = ' mois';
|
|
|
|
// Supprimer la redéfinition de loan_type_in_years ici
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
|
|
class_name = validDurees[i] + '_ans';
|
|
periodicite = ' ans';
|
|
} else {
|
|
|
|
class_name = 'mens_' + validDurees[i];
|
|
}
|
|
|
|
/* console.log('2' + selected_value); */
|
|
|
|
if ((default_min <= parseInt(validDurees[i]) && parseInt(validDurees[i]) <= default_max)) {
|
|
if (selected_value == validDurees[i]) {
|
|
list_class = ' selected';
|
|
}
|
|
|
|
if (validDurees[i] <= monthly_high) {
|
|
list = list + '<li data-duree="' + validDurees[i] + '" class="duree-btn months-active' + list_class + '"><span class="mensualite ' + class_name + '"></span>' + validDurees[i] + periodicite + '</li>';
|
|
}
|
|
} else {
|
|
list = list + '<li data-duree="' + validDurees[i] + '" class="duree-btn months-inactive" style="display: none;"><span class="mensualite ' + class_name + '"></span>' + validDurees[i] + periodicite + '</li>';
|
|
}
|
|
list_class = '';
|
|
}
|
|
}
|
|
|
|
/* console.log(duree_range); */
|
|
/* console.log(monthly_high);
|
|
console.log(monthly_low); */
|
|
jQuery('#date-range-selector').html(list);
|
|
|
|
// Mise à jour du slider_duree_box avec la bonne périodicité
|
|
var periodicite = loan_type_in_years.includes(loan_type) ? ' ans' : ' mois';
|
|
jQuery('.slider_duree_box').text(selected_value + periodicite);
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(selected_value + periodicite);
|
|
|
|
/* var selected_months_range = '#selected_months_range';
|
|
var selected_months = '#selected_months';
|
|
jQuery(selected_months_range).slider({
|
|
value: selected_value,
|
|
min: default_min,
|
|
max: default_max,
|
|
step: 1,
|
|
slide: function(event, ui) {
|
|
console.log('duree slider', ui.value);
|
|
jQuery(selected_months).val(ui.value);
|
|
jQuery(selected_months_range).children("span").text(ui.value + ' ans');
|
|
},
|
|
stop: function(event, ui) {
|
|
calculate_mensualite();
|
|
}
|
|
}); */
|
|
|
|
// Ajout de l'initialisation de la valeur par défaut
|
|
/* jQuery(selected_months).val(selected_value);
|
|
jQuery(selected_months_range).children("span").text(selected_value + ' ans'); */
|
|
|
|
/* console.log(jQuery(selected_months_range).slider("option", "value"));
|
|
|
|
jQuery(selected_months).val(jQuery(selected_months_range).slider('value'));
|
|
jQuery(selected_months_range).children("span").text(jQuery(selected_months_range).slider('value') + ' ans'); */
|
|
}
|
|
|
|
//Change capital slider values
|
|
function change_capital_slider(default_min, default_max, default_selected_value) {
|
|
var selected_capital_range = '#selected_capital_range';
|
|
var selected_capital = '#selected_capital';
|
|
var selected_capital_box = jQuery(selected_capital_range).parents('.selected_capital');
|
|
var stepUpdateTimeout = null;
|
|
var isInputChange = false;
|
|
var fromSlider = false;
|
|
|
|
var loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
}
|
|
|
|
var pivot_value = form_sliders[loan_type].pivot_value;
|
|
var sub_pivot_value = form_sliders[loan_type].sub_pivot_value;
|
|
var pivot_percent = ((pivot_value - default_min) / (default_max - default_min)) * 100;
|
|
var sub_pivot_percent = ((sub_pivot_value - default_min) / (default_max - default_min)) * 100;
|
|
|
|
/* console.log('default_min', default_min);
|
|
console.log('default_max', default_max);
|
|
console.log('pivot_value', pivot_value);
|
|
console.log('sub_pivot_value', sub_pivot_value);
|
|
console.log('pivot_percent', pivot_percent);
|
|
console.log('sub_pivot_percent', sub_pivot_percent); */
|
|
|
|
// Supprime l'ancienne zone pivot si elle existe
|
|
jQuery('.pivot-zone').remove();
|
|
|
|
// Crée la nouvelle zone pivot si pivot_value > 0
|
|
if (pivot_value > 0) {
|
|
var pivotZone = jQuery('<div class="pivot-zone"></div>');
|
|
/* var textPivot = cd_js.groups[loan_type].depassement_montant !== undefined ? cd_js.groups[loan_type].depassement_montant : ''; */
|
|
/* console.log('textPivot', textPivot); */
|
|
pivotZone.css({
|
|
'position': 'absolute',
|
|
'left': pivot_percent + '%',
|
|
'right': '0',
|
|
'top': '0',
|
|
'bottom': '0',
|
|
'background-color': 'rgba(255, 0, 0, 0.2)',
|
|
'pointer-events': 'none'
|
|
});
|
|
jQuery(selected_capital_range).append(pivotZone);
|
|
}
|
|
|
|
// Fonction pour calculer le step en fonction de la valeur
|
|
function calculateStep(value) {
|
|
return value < 10000 ? 500 : 250;
|
|
}
|
|
|
|
// Fonction pour arrondir au step le plus proche
|
|
function roundToStep(value) {
|
|
var step = calculateStep(value);
|
|
return Math.round(value / step) * step;
|
|
}
|
|
|
|
// Configuration du champ input
|
|
jQuery(selected_capital)
|
|
.attr('step', '1')
|
|
.on('input', function() {
|
|
var $input = jQuery(this);
|
|
var value = Number($input.val());
|
|
|
|
console.log('⌨️ INPUT CHANGE - Valeur saisie:', value);
|
|
console.log('⌨️ INPUT CHANGE - État des flags avant:', { fromSlider, isInputChange });
|
|
|
|
// Si la valeur est vide ou non numérique, ne rien faire
|
|
if (!value) return;
|
|
|
|
// Annuler le timeout précédent s'il existe
|
|
if (stepUpdateTimeout) {
|
|
clearTimeout(stepUpdateTimeout);
|
|
}
|
|
|
|
// Programmer la mise à jour du step après un délai
|
|
stepUpdateTimeout = setTimeout(function() {
|
|
/* var newStep = calculateStep(value); */
|
|
$input.attr('step', '1');
|
|
}, 500); // Délai de 500ms
|
|
|
|
// Indiquer que le changement vient de l'input
|
|
isInputChange = true;
|
|
|
|
console.log('⌨️ INPUT CHANGE - Mise à jour slider avec:', value);
|
|
// Mettre à jour le slider avec la valeur exacte
|
|
jQuery(selected_capital_range).slider('value', value);
|
|
|
|
console.log('⌨️ INPUT CHANGE - Mise à jour slider_capital_box avec:', number_format(value, 2, ',', '.') + ' €');
|
|
// Mise à jour de l'affichage
|
|
jQuery(selected_capital_range).find(".slider_capital_box")
|
|
.text(number_format(value, 2, ',', '.') + ' €');
|
|
|
|
/* console.log('selected_capital_box', selected_capital_box.find('.outside_box')); */
|
|
|
|
console.log('⌨️ INPUT CHANGE - Mise à jour outside_box avec:', number_format(value, 2, ',', '.') + ' €');
|
|
selected_capital_box.find('.outside_box').text(number_format(value, 2, ',', '.') + ' €');
|
|
|
|
// Mise à jour des min/max du slider de durée
|
|
/* update_duration_slider_min_max(value); */
|
|
});
|
|
|
|
|
|
jQuery(selected_capital_range).slider({
|
|
min: default_min,
|
|
max: default_max,
|
|
value: default_selected_value,
|
|
step: calculateStep(default_selected_value),
|
|
slide: function(event, ui) {
|
|
|
|
// Reset des flags au début de slide si on vient d'un changement manuel
|
|
if (isInputChange) {
|
|
console.log('🔄 SLIDER SLIDE - Reset des flags car changement manuel détecté');
|
|
isInputChange = false;
|
|
fromSlider = false;
|
|
}
|
|
|
|
fromSlider = true;
|
|
console.log('🔄 SLIDER SLIDE - Valeur:', ui.value);
|
|
console.log('🔄 SLIDER SLIDE - État des flags après:', { fromSlider, isInputChange });
|
|
|
|
var orange_bar = jQuery('.slider_capital_wrapper .after_bar'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
/* console.log('left_css', left_css); */
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
|
|
// Gestion du pivot
|
|
if (pivot_value > 0 && ui.value >= pivot_value) {
|
|
jQuery(selected_capital_range).find(".slider_capital_box").addClass('pivot-value');
|
|
if (!jQuery('#acceptConditions').is(':checked')) {
|
|
jQuery('.stimulator_result_btn').prop('disabled', true).addClass('disabled');
|
|
}
|
|
} else {
|
|
jQuery(selected_capital_range).find(".slider_capital_box").removeClass('pivot-value');
|
|
jQuery('.stimulator_result_btn').prop('disabled', false).removeClass('disabled');
|
|
}
|
|
|
|
console.log('📝 SLIDER SLIDE - Mise à jour input capital avec:', ui.value);
|
|
// ✅ Mise à jour de l'input
|
|
jQuery(selected_capital).val(ui.value);
|
|
|
|
console.log('📝 SLIDER SLIDE - Mise à jour slider_capital_box avec:', number_format(ui.value, 2, ',', '.') + ' €');
|
|
// ✅ Mise à jour du span du slider
|
|
jQuery(selected_capital_range).find(".slider_capital_box").text(number_format(ui.value, 2, ',', '.') + ' €');
|
|
|
|
console.log('📝 SLIDER SLIDE - Mise à jour outside_box avec:', number_format(ui.value, 2, ',', '.') + ' €');
|
|
// ✅ AJOUTER CETTE LIGNE pour le span outside
|
|
selected_capital_box.find('.outside_box').text(number_format(ui.value, 2, ',', '.') + ' €');
|
|
|
|
let pivot_info_parent = jQuery('.pat_plus75000').parents('.stimulated-results');
|
|
|
|
// Gestion de l'affichage de la notice
|
|
if (pivot_value > 0) {
|
|
if (ui.value >= pivot_value) {
|
|
jQuery('.pat_plus75000').slideDown(300);
|
|
pivot_info_parent.addClass('info_active');
|
|
} else {
|
|
jQuery('.pat_plus75000').slideUp(300);
|
|
pivot_info_parent.removeClass('info_active');
|
|
}
|
|
} else {
|
|
jQuery('.pat_plus75000').hide();
|
|
}
|
|
},
|
|
stop: function(event, ui) {
|
|
|
|
console.log('🛑 SLIDER STOP - Valeur finale:', ui.value);
|
|
console.log('🛑 SLIDER STOP - fromSlider:', fromSlider);
|
|
console.log('🛑 SLIDER STOP - isInputChange:', isInputChange);
|
|
|
|
// Mise à jour sécurisée de l'input capital
|
|
if (!isInputChange) {
|
|
console.log('🛑 SLIDER STOP - Mise à jour input capital avec:', ui.value);
|
|
jQuery(selected_capital).val(ui.value);
|
|
} else {
|
|
console.log('🛑 SLIDER STOP - Vérification synchronisation input/slider');
|
|
var currentInputValue = jQuery(selected_capital).val();
|
|
if (currentInputValue != ui.value) {
|
|
console.log('🛑 SLIDER STOP - Désynchronisation détectée! Input:', currentInputValue, 'Slider:', ui.value);
|
|
console.log('🛑 SLIDER STOP - Correction de l\'input avec:', ui.value);
|
|
jQuery(selected_capital).val(ui.value);
|
|
} else {
|
|
console.log('🛑 SLIDER STOP - Input et slider synchronisés');
|
|
}
|
|
}
|
|
|
|
var selected = jQuery('#loan_type').val();
|
|
var loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '';
|
|
var sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
|
|
if (loan_radio_type != '') selected = loan_radio_type;
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type]) {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Cas particuliers déjà gérés
|
|
if (((selected == "am") && selected_capital > 100000) || ((selected == "ph") && selected_capital > 100000)) {
|
|
jQuery('#selected_months').val(30);
|
|
change_duree(form_sliders[selected].duree_min, form_sliders[selected].duree_max, 30);
|
|
} else {
|
|
// Calcul de la nouvelle durée max selon le type de prêt via la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, '');
|
|
console.log('🛑 SLIDER STOP - Results:', results);
|
|
console.log('🛑 SLIDER STOP - Results type:', typeof results);
|
|
console.log('🛑 SLIDER STOP - Results length:', results ? results.length : 'undefined');
|
|
|
|
if (results && results.length > 1) {
|
|
var new_max_duration = results[1];
|
|
|
|
console.log('🛑 SLIDER STOP - Durée max recalculée:', new_max_duration);
|
|
jQuery('#selected_months').val(new_max_duration);
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, new_max_duration);
|
|
} else {
|
|
console.log('🛑 SLIDER STOP - Pas de recalcul nécessaire');
|
|
}
|
|
}
|
|
|
|
var orange_bar = jQuery('.slider_capital_wrapper .after_bar'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
|
|
console.log('🛑 SLIDER STOP - Mise à jour outside_box avec:', number_format(ui.value, 2, ',', '.') + ' €');
|
|
selected_capital_box.find('.outside_box').text(number_format(ui.value, 2, ',', '.') + ' €');
|
|
|
|
console.log('🛑 SLIDER STOP - Appel calculate_mensualite()');
|
|
// calculate_mensualite() va appeler change_duree() et remplir les mensualités
|
|
calculate_mensualite();
|
|
|
|
// Mettre à jour l'état des boutons de durée après changement de capital
|
|
updateDurationButtonsState();
|
|
|
|
// Reset des flags APRÈS tous les traitements
|
|
console.log('🛑 SLIDER STOP - Reset des flags');
|
|
fromSlider = false;
|
|
isInputChange = false;
|
|
},
|
|
change: function(event, ui) {
|
|
var orange_bar = jQuery('.slider_capital_wrapper .after_bar'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
}
|
|
});
|
|
|
|
// Gestion du changement d'état de la case à cocher
|
|
jQuery('#acceptConditions').on('change', function() {
|
|
var currentValue = jQuery(selected_capital).val();
|
|
if (pivot_value > 0 && currentValue >= pivot_value) {
|
|
if (jQuery(this).is(':checked')) {
|
|
jQuery('.stimulator_result_btn').prop('disabled', false).removeClass('disabled');
|
|
} else {
|
|
jQuery('.stimulator_result_btn').prop('disabled', true).addClass('disabled');
|
|
}
|
|
}
|
|
});
|
|
|
|
var appended_elem = '<span class="slider_capital_box">test</span>';
|
|
/* jQuery(selected_capital).val(jQuery(selected_capital_range).slider('value')); */
|
|
if (!jQuery('.ui-slider-handle .fa-angle-right').length)
|
|
jQuery(selected_capital_range).find(".ui-slider-handle").append('<i class="fa-angle-left fas" data-name="angle-right" aria-hidden="true"></i><i class="fa-angle-right fas" data-name="angle-right" aria-hidden="true"></i>');
|
|
|
|
//if element is not present, append it
|
|
if (!jQuery(selected_capital_range).find('.slider_capital_box').length) {
|
|
jQuery(selected_capital_range).find('.ui-slider-handle').append(appended_elem);
|
|
}
|
|
jQuery(selected_capital_range).find(".slider_capital_box").text(number_format((jQuery(selected_capital_range).slider('value')), 2, ',', '.') + ' €');
|
|
selected_capital_box.find('.outside_box').text(number_format((jQuery(selected_capital_range).slider('value')), 2, ',', '.') + ' €');
|
|
|
|
if (sub_pivot_value > 0) {
|
|
var subPivotZone = jQuery('<div class="sub-pivot-zone"></div>');
|
|
subPivotZone.css({
|
|
'position': 'absolute',
|
|
'left': '0',
|
|
'width': sub_pivot_percent + '%',
|
|
'top': '0',
|
|
'bottom': '0',
|
|
'background-color': 'rgba(0, 0, 255, 0.15)', // Par exemple, bleu clair
|
|
'pointer-events': 'none'
|
|
});
|
|
|
|
if(jQuery('.sub-pivot-zone').length == 0)
|
|
jQuery(selected_capital_range).append(subPivotZone);
|
|
}
|
|
}
|
|
|
|
//Change month slider values
|
|
function change_month_slider(default_min, default_max, default_selected_value) {
|
|
var selected_months_range = '#selected_months_range';
|
|
var selected_months = '#selected_months';
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
var sel_duree = jQuery(selected_months).val(),
|
|
selected_duree_box = jQuery(selected_months_range).parents('.selected_duree');
|
|
|
|
// Récupérer le type de crédit
|
|
var loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Récupérer le capital actuel
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
|
|
if (selected_capital == '')
|
|
selected_capital = form_sliders[loan_type]['capital_selected'];
|
|
|
|
/* console.log('selected_capital', selected_capital);
|
|
console.log('loan_type', loan_type);
|
|
console.log('sel_duree', sel_duree); */
|
|
|
|
// Calculer la durée maximale en fonction du capital via la fonction centralisée
|
|
var results = calculateDynamicLimits(loan_type, sub_loan_radio_type, selected_capital, sel_duree);
|
|
|
|
// Utiliser max_duration (index 1) comme limite maximale
|
|
var max_duration = results[1];
|
|
var dynamic_max = max_duration;
|
|
|
|
// Trouver la durée maximale valide dans les durées du type de prêt
|
|
var available_durations = form_sliders[loan_type].durees;
|
|
|
|
for (var i = available_durations.length - 1; i >= 0; i--) {
|
|
if (available_durations[i] <= max_duration) {
|
|
dynamic_max = available_durations[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* console.log('available_durations', results);
|
|
|
|
console.log('dynamic_max', dynamic_max);
|
|
console.log('duration max', max_duration);
|
|
console.log('loan_type', loan_type);
|
|
console.log('available_durations array', available_durations); */
|
|
|
|
function getStepForValue(loan_type, value) {
|
|
let dynamic_step = 1;
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
dynamic_step = 1; // Step de 1 an pour les prêts en années
|
|
} else if (loan_type === 'cdp') {
|
|
dynamic_step = 1; // Step de 1 mois pour le crédit pont
|
|
} else {
|
|
if (value <= 48) {
|
|
dynamic_step = 6; // Step de 6 mois jusqu'à 48 mois
|
|
} else {
|
|
dynamic_step = 12; // Step de 12 mois au-delà de 48 mois
|
|
}
|
|
}
|
|
|
|
return dynamic_step;
|
|
}
|
|
|
|
// Mettre à jour le slider avec la nouvelle limite maximale
|
|
jQuery(selected_months_range).slider({
|
|
min: default_min,
|
|
max: dynamic_max,
|
|
value: dynamic_max, // Utiliser la valeur maximale comme valeur initiale
|
|
step: getStepForValue(loan_type, dynamic_max),
|
|
slide: function(event, ui) {
|
|
var newStep = getStepForValue(loan_type, ui.value);
|
|
|
|
if (newStep !== jQuery(this).slider('option', 'step')) {
|
|
jQuery(this).slider('option', 'step', newStep);
|
|
}
|
|
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
jQuery(selected_months).val(ui.value);
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(ui.value + ' ans');
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(ui.value + ' ans');
|
|
} else {
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(ui.value + ' mois');
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(ui.value + ' mois');
|
|
}
|
|
},
|
|
stop: function(event, ui) {
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
calculate_mensualite();
|
|
|
|
// Mettre à jour l'état des boutons de durée après mouvement du slider
|
|
updateDurationButtonsState();
|
|
},
|
|
change: function(event, ui) {
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
}
|
|
});
|
|
|
|
jQuery(selected_months).val(jQuery(selected_months_range).slider('value'));
|
|
|
|
var periodicite = loan_type_in_years.includes(loan_type) ? ' ans' : ' mois';
|
|
var appended_elem = '<span class="slider_duree_box">' + jQuery(selected_months_range).slider('value') + periodicite + '</span>';
|
|
selected_duree_box.find(".outside_slider_duree_box").text(jQuery(selected_months_range).slider('value') + periodicite);
|
|
|
|
if (!jQuery(selected_months_range).find('.ui-slider-handle .fa-angle-right').length) {
|
|
jQuery(selected_months_range).find(".ui-slider-handle").append('<i class="fa-angle-left fas" data-name="angle-right" aria-hidden="true"></i><i class="fa-angle-right fas" data-name="angle-right" aria-hidden="true"></i>');
|
|
}
|
|
|
|
if (!jQuery(selected_months_range).find('.slider_duree_box').length) {
|
|
jQuery(selected_months_range).find('.ui-slider-handle').append(appended_elem);
|
|
}
|
|
}
|
|
|
|
// Create plus and minus buttons for slider
|
|
|
|
jQuery(document).on('click', ".stimulator-slider-control.capital-minus, .stimulator-slider-control.capital-plus", function() {
|
|
var selected_capital_range = '#selected_capital_range';
|
|
var selected_capital_box = jQuery(selected_capital_range).parents('.selected_capital');
|
|
var selected = jQuery('#loan_type').val();
|
|
|
|
/* console.log('selected_capital_box', selected_capital_box); */
|
|
|
|
var selected_radio = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (selected_radio != '')
|
|
selected = selected_radio;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
|
|
if (sub_loan_radio_type != '' && authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
}
|
|
|
|
var current_step = form_sliders[selected].capital_step;
|
|
var is_plus = jQuery(this).hasClass('capital-plus');
|
|
var selected_capital = is_plus ?
|
|
(+jQuery('#selected_capital').val() + current_step) :
|
|
(+jQuery('#selected_capital').val() - current_step);
|
|
|
|
if ((selected_capital >= form_sliders[selected].capital_min) && (selected_capital <= form_sliders[selected].capital_max)) {
|
|
jQuery(selected_capital_range).slider({
|
|
value: selected_capital
|
|
});
|
|
|
|
// Mise à jour du capital
|
|
jQuery('#selected_capital').val(selected_capital);
|
|
|
|
console.log('🔘 BOUTON CAPITAL - Type de crédit:', selected);
|
|
console.log('🔘 BOUTON CAPITAL - Nouveau capital:', selected_capital);
|
|
|
|
// Cas particuliers déjà gérés
|
|
if (((selected == "am") && selected_capital > 100000) || ((selected == "ph") && selected_capital > 100000)) {
|
|
jQuery('#selected_months').val(30);
|
|
change_duree(form_sliders[selected].duree_min, form_sliders[selected].duree_max, 30);
|
|
} else {
|
|
// Recalculer la durée max dynamiquement en fonction du nouveau capital via la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, '');
|
|
|
|
console.log('🔘 BOUTON CAPITAL - Results:', results);
|
|
|
|
if (results && results.length > 1) {
|
|
var new_max_duration = results[1];
|
|
var current_duration = jQuery('#selected_months').val();
|
|
|
|
console.log('🔘 BOUTON CAPITAL - Durée actuelle:', current_duration);
|
|
console.log('🔘 BOUTON CAPITAL - Durée max recalculée:', new_max_duration);
|
|
|
|
// Si la durée actuelle dépasse le nouveau max, ajuster à la nouvelle durée max
|
|
if (parseInt(current_duration) > parseInt(new_max_duration)) {
|
|
console.log('🔘 BOUTON CAPITAL - Ajustement de la durée à:', new_max_duration);
|
|
jQuery('#selected_months').val(new_max_duration);
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, new_max_duration);
|
|
} else {
|
|
// Sinon, garder la durée actuelle mais mettre à jour les limites du slider
|
|
console.log('🔘 BOUTON CAPITAL - Durée conservée, mise à jour du slider');
|
|
change_month_slider(form_sliders[selected].duree_min, form_sliders[selected].duree_max, current_duration);
|
|
}
|
|
}
|
|
}
|
|
|
|
// calculate_mensualite() va appeler change_duree() et remplir les mensualités
|
|
calculate_mensualite();
|
|
|
|
// Mettre à jour l'état des boutons de durée après changement de capital
|
|
updateDurationButtonsState();
|
|
|
|
/* jQuery(selected_capital_range).find(".ui-slider-handle").append('<i class="fa-angle-right fas" data-name="angle-right" aria-hidden="true"></i>');
|
|
jQuery(selected_capital_range).find('.ui-slider-handle').append(appended_elem); */
|
|
jQuery('.range_selector.selected_capital .outside_box').text(number_format((jQuery(selected_capital_range).slider('value')), 2, ',', '.') + ' €');
|
|
jQuery(selected_capital_range).find(".slider_capital_box").text(number_format((jQuery(selected_capital_range).slider('value')), 2, ',', '.') + ' €');
|
|
}
|
|
});
|
|
|
|
// 2. 5 Step form
|
|
|
|
// Accordian for content pages
|
|
jQuery(".ac-toggle-button").on('click', function(e) {
|
|
e.preventDefault();
|
|
jQuery(".ac-text-block").slideToggle("slow");
|
|
});
|
|
|
|
// Show link list when link is clicked
|
|
jQuery(".agency-menu-link").children("a").on('click', function() {
|
|
if (jQuery(".agency-menu-link").hasClass('agencies-active-link')) {
|
|
jQuery(".footer-locations").css("display", "none");
|
|
jQuery(".agency-menu-link").removeClass('agencies-active-link');
|
|
} else {
|
|
jQuery(".footer-locations").css("display", "inherit");
|
|
jQuery(".agency-menu-link").addClass('agencies-active-link');
|
|
}
|
|
});
|
|
|
|
jQuery('#co-emprunteur').on('change', function() {
|
|
if (jQuery('[name="co-emprunteur"]:checked').val() == "avec un co-emprunteur") {
|
|
jQuery(".co-emprunteur-fields").css('display', 'block');
|
|
jQuery("#co-emprunteur-step2").val(1);
|
|
jQuery("#co-emprunteur-step3").val(1);
|
|
jQuery("#co-emprunteur-step4").val(1);
|
|
} else {
|
|
jQuery(".co-emprunteur-fields").css('display', 'none');
|
|
jQuery(".co-emprunteur-fields input").val("");
|
|
jQuery("#co-emprunteur-step2").val(0);
|
|
jQuery("#co-emprunteur-step3").val(0);
|
|
jQuery("#co-emprunteur-step4").val(0);
|
|
|
|
}
|
|
});
|
|
|
|
jQuery('#je-suis-resident').on('change', function() {
|
|
if (jQuery('[name="je-suis-resident"]:checked').val() == "en Belgique") {
|
|
jQuery(".field-numero-national").show();
|
|
} else {
|
|
jQuery(".field-numero-national").hide();
|
|
}
|
|
});
|
|
jQuery('#co-je-suis-resident').on('change', function() {
|
|
if (jQuery('[name="co-je-suis-resident"]:checked').val() == "en Belgique") {
|
|
jQuery(".field-co-numero-national").show();
|
|
} else {
|
|
jQuery(".field-co-numero-national").hide();
|
|
}
|
|
});
|
|
|
|
jQuery('#habitation').on('change', function() {
|
|
var fields = ["montant-du-loyer-a-payer", "credit-hypothecaire-en-cours", "vous-habitez"];
|
|
for (var i = 0; i < fields.length; i++) {
|
|
jQuery(".field-" + fields[i]).hide();
|
|
}
|
|
switch (jQuery('#habitation').val()) {
|
|
case 'locataire':
|
|
jQuery(".field-montant-du-loyer-a-payer").show();
|
|
break;
|
|
case 'propriétaire':
|
|
jQuery(".field-credit-hypothecaire-en-cours").show();
|
|
break;
|
|
case 'sans charge locative':
|
|
jQuery(".field-vous-habitez").show();
|
|
break;
|
|
}
|
|
});
|
|
|
|
jQuery('#habitation-co-emprunteur').on('change', function() {
|
|
var fields = ["montant-du-loyer-a-payer-co-emprunteur", "credit-hypothecaire-en-cours-co-emprunteur", "vous-habitez-co-emprunteur"];
|
|
for (var i = 0; i < fields.length; i++) {
|
|
jQuery(".field-" + fields[i]).hide();
|
|
}
|
|
switch (jQuery('#habitation-co-emprunteur').val()) {
|
|
case 'locataire':
|
|
jQuery(".field-montant-du-loyer-a-payer-co-emprunteur").show();
|
|
break;
|
|
|
|
case 'propriétaire':
|
|
jQuery(".field-credit-hypothecaire-en-cours-co-emprunteur").show();
|
|
break;
|
|
|
|
case 'sans charge locative':
|
|
jQuery(".field-vous-habitez-co-emprunteur").show();
|
|
break;
|
|
}
|
|
});
|
|
jQuery('#nombre-d-enfant-s-a-charge').on('change', function() {
|
|
if (jQuery("#nombre-d-enfant-s-a-charge").val() == 0) {
|
|
jQuery(".field-montant-allocations-familiales").hide();
|
|
jQuery(".field-montant-pension-alimentaire-recue").hide();
|
|
} else {
|
|
jQuery(".field-montant-allocations-familiales").show();
|
|
jQuery(".field-montant-pension-alimentaire-recue").show();
|
|
}
|
|
});
|
|
jQuery('#nombre-d-enfant-s-a-charge-co-emprunteur').on('change', function() {
|
|
if (jQuery("#nombre-d-enfant-s-a-charge-co-emprunteur").val() == 0) {
|
|
jQuery(".field-co-montant-allocations-familiales").hide();
|
|
jQuery(".field-co-montant-pension-alimentaire-recue").hide();
|
|
} else {
|
|
jQuery(".field-co-montant-allocations-familiales").show();
|
|
jQuery(".field-co-montant-pension-alimentaire-recue").show();
|
|
}
|
|
});
|
|
jQuery('#profession').on('change', function() {
|
|
var ordered_fields;
|
|
jQuery("#autres-revenus-cheques-repas").val('non');
|
|
on_chnage_autres_revenus_cheques('');
|
|
jQuery('#valeur-du-cheque-repas').val('');
|
|
var fields = ['type-de-contrat', 'nom-de-l-employeur', 'adresse-rue-numero', 'code-postal', 'localite', 'engage-depuis-quant', 'salaire-net-mensuel', 'nom-de-l-organisme-de-paiement', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'revenus-imposables-annuels', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire'];
|
|
for (var i = 0; i < fields.length; i++) {
|
|
jQuery(".field-" + fields[i]).hide();
|
|
}
|
|
var allowed_fields;
|
|
var selected = jQuery("#profession").val();
|
|
jQuery("#tab4 .emprunteur-primary").removeClass('flex-ordered');
|
|
|
|
if ((selected == "ouvrier") || (selected == "employé") || (selected == "fonctionnaire") || (selected == "militaire") || (selected == "policier") || (selected == "enseignant")) {
|
|
allowed_fields = ['type-de-contrat', 'nom-de-l-employeur', 'adresse-rue-numero', 'code-postal', 'localite', 'engage-depuis-quant', 'salaire-net-mensuel', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire'];
|
|
} else if (selected == "chômeur") {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
ordered_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'montant-total-des-revenus-locatifs', 'allocation-supplementaire', 'valeur-du-cheque-repas', 'montant-net-mensuel', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
jQuery("#tab4 .emprunteur-primary").addClass('flex-ordered');
|
|
var order = 1;
|
|
for (var i = 0; i < ordered_fields.length; i++) {
|
|
jQuery(".field-" + ordered_fields[i]).css('order', order);
|
|
order++;
|
|
}
|
|
} else if ((selected == "invalide")) {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire'];
|
|
} else if ((selected == "pensionné") || (selected == "prépensionné")) {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire'];
|
|
} else if ((selected == "indépendant")) {
|
|
allowed_fields = ['depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'adresse-rue-numero', 'code-postal', 'localite', 'revenus-imposables-annuels', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
ordered_fields = ['depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'adresse-rue-numero', 'code-postal', 'localite', 'revenus-imposables-annuels', 'revenus-locatifs', 'montant-total-des-revenus-locatifs', 'autres-revenus-cheques-repas', 'valeur-du-cheque-repas', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
jQuery("#tab4 .emprunteur-primary").addClass('flex-ordered');
|
|
var order = 1;
|
|
for (var i = 0; i < ordered_fields.length; i++) {
|
|
jQuery(".field-" + ordered_fields[i]).css('order', order);
|
|
order++;
|
|
}
|
|
} else if (selected == "sans profession") {
|
|
allowed_fields = ['revenus-locatifs'];
|
|
}
|
|
for (var i = 0; i < allowed_fields.length; i++) {
|
|
jQuery(".field-" + allowed_fields[i]).show();
|
|
}
|
|
});
|
|
|
|
jQuery('#profession-co-emprunteur').on('change', function() {
|
|
var ordered_fields;
|
|
jQuery("#autres-revenus-cheques-repas-co-emprunteur").val('non');
|
|
on_chnage_autres_revenus_cheques('co-');
|
|
var fields = ['type-de-contrat', 'nom-de-l-employeur', 'adresse-rue-numero', 'code-postal', 'localite', 'engage-depuis-quant', 'salaire-net-mensuel', 'nom-de-l-organisme-de-paiement', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'revenus-imposables-annuels', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire'];
|
|
for (var i = 0; i < fields.length; i++) {
|
|
jQuery(".field-co-" + fields[i]).hide();
|
|
}
|
|
var allowed_fields;
|
|
var selected = jQuery("#profession-co-emprunteur").val();
|
|
|
|
jQuery("#tab4 .co-emprunteur-fields").removeClass('flex-ordered');
|
|
|
|
if ((selected == "ouvrier") || (selected == "employé") || (selected == "fonctionnaire") || (selected == "militaire") || (selected == "policier") || (selected == "enseignant")) {
|
|
allowed_fields = ['type-de-contrat', 'nom-de-l-employeur', 'adresse-rue-numero', 'code-postal', 'localite', 'engage-depuis-quant', 'salaire-net-mensuel', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire'];
|
|
} else if (selected == "chômeur") {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
ordered_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'montant-total-des-revenus-locatifs', 'allocation-supplementaire', 'valeur-du-cheque-repas', 'montant-net-mensuel', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
jQuery("#tab4 .co-emprunteur-fields").addClass('flex-ordered');
|
|
var order = 1;
|
|
for (var i = 0; i < ordered_fields.length; i++) {
|
|
jQuery(".field-co-" + ordered_fields[i]).css('order', order);
|
|
order++;
|
|
}
|
|
} else if ((selected == "invalide")) {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire'];
|
|
} else if ((selected == "pensionné") || (selected == "prépensionné")) {
|
|
allowed_fields = ['nom-de-l-organisme-de-paiement', 'adresse-rue-numero', 'code-postal', 'localite', 'paye-depuis-quand', 'montant-net-mensuel-de-l-allocation', 'revenus-locatifs', 'allocation-supplementaire'];
|
|
} else if ((selected == "indépendant")) {
|
|
allowed_fields = ['depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'adresse-rue-numero', 'code-postal', 'localite', 'revenus-imposables-annuels', 'revenus-locatifs', 'autres-revenus-cheques-repas', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
ordered_fields = ['depuis-quand', 'numero-d-entreprise', 'domaine-de-l-activite', 'adresse-rue-numero', 'code-postal', 'localite', 'revenus-imposables-annuels', 'revenus-locatifs', 'montant-total-des-revenus-locatifs', 'autres-revenus-cheques-repas', 'valeur-du-cheque-repas', 'allocation-supplementaire', 'repeat-block', 'ajouter-dautres-revenus'];
|
|
jQuery("#tab4 .co-emprunteur-fields").addClass('flex-ordered');
|
|
var order = 1;
|
|
for (var i = 0; i < ordered_fields.length; i++) {
|
|
jQuery(".field-co-" + ordered_fields[i]).css('order', order);
|
|
order++;
|
|
}
|
|
} else if (selected == "sans profession") {
|
|
allowed_fields = ['revenus-locatifs'];
|
|
}
|
|
for (var i = 0; i < allowed_fields.length; i++) {
|
|
jQuery(".field-co-" + allowed_fields[i]).show();
|
|
}
|
|
});
|
|
|
|
jQuery('#allocation-supplementaire').on('change', function() {
|
|
if (jQuery('#allocation-supplementaire').val() != "---") {
|
|
jQuery(".field-paye-depuis-quand-2").show();
|
|
jQuery(".field-montant-net-mensuel-de-l-allocation-2").show();
|
|
jQuery(".field-nom-de-l-organisme-de-paiement").show();
|
|
} else {
|
|
jQuery(".field-paye-depuis-quand-2").hide();
|
|
jQuery(".field-montant-net-mensuel-de-l-allocation-2").hide();
|
|
jQuery(".field-nom-de-l-organisme-de-paiement").hide();
|
|
}
|
|
});
|
|
|
|
jQuery('#allocation-supplementaire-co-emprunteur').on('change', function() {
|
|
if (jQuery('#allocation-supplementaire-co-emprunteur').val() == "oui") {
|
|
jQuery(".field-co-paye-depuis-quand-2").show();
|
|
jQuery(".field-co-montant-net-mensuel-de-l-allocation-2").show();
|
|
jQuery(".field-co-nom-de-l-organisme-de-paiement").show();
|
|
} else {
|
|
jQuery(".field-co-montant-net-mensuel-de-l-allocation-2").hide();
|
|
jQuery(".field-co-paye-depuis-quand-2").hide();
|
|
jQuery(".field-co-nom-de-l-organisme-de-paiement").hide();
|
|
|
|
}
|
|
});
|
|
|
|
function on_chnage_autres_revenus_cheques(prefix) {
|
|
var prefix_extended = '';
|
|
if (prefix == "co-") { prefix_extended = "-co-emprunteur" }
|
|
var selected = jQuery("#profession" + prefix_extended).val();
|
|
jQuery(".field-" + prefix + "valeur-du-cheque-repas").hide();
|
|
jQuery(".field-" + prefix + "montant-net-mensuel").hide();
|
|
if (jQuery("#autres-revenus-cheques-repas" + prefix_extended).val() == "oui") {
|
|
jQuery(".field-" + prefix + "valeur-du-cheque-repas").show();
|
|
if ((selected == "ouvrier") || (selected == "employé") || (selected == "fonctionnaire") || (selected == "militaire") || (selected == "policier") || (selected == "enseignant") || (selected == "indépendant")) {} else {
|
|
jQuery(".field-" + prefix + "montant-net-mensuel").show();
|
|
}
|
|
}
|
|
}
|
|
|
|
jQuery('#autres-revenus-cheques-repas').on('change', function() {
|
|
on_chnage_autres_revenus_cheques('');
|
|
});
|
|
|
|
jQuery('#autres-revenus-cheques-repas-co-emprunteur').on('change', function() {
|
|
on_chnage_autres_revenus_cheques('co-');
|
|
});
|
|
|
|
jQuery('#revenus-locatifs').on('change', function() {
|
|
if (jQuery('#revenus-locatifs').val() == "oui") {
|
|
jQuery(".field-montant-total-des-revenus-locatifs").show();
|
|
} else {
|
|
jQuery(".field-montant-total-des-revenus-locatifs").hide();
|
|
}
|
|
});
|
|
|
|
jQuery('#revenus-locatifs-co-emprunteur').on('change', function() {
|
|
if (jQuery('#revenus-locatifs-co-emprunteur').val() == "oui") {
|
|
jQuery(".field-co-montant-total-des-revenus-locatifs").show();
|
|
} else {
|
|
jQuery(".field-co-montant-total-des-revenus-locatifs").hide();
|
|
}
|
|
});
|
|
|
|
function onchange_type_de_credit() {
|
|
var fields = ['fonds-propres', 'type-des-frais-de-notaire', 'prix-d-achat', 'prix-de-la-construction-tvac', 'prix-d-achat', 'compromis-signe', 'valeur-du-batiment', 'montant-du-revenu-cadastral', 'marque-modele-du-vehicule', 'date-1ere-immatriculation', 'nom-du-vendeur', 'adresse-du-vendeur', 'prix-d-achat-du-vehicule', 'type-des-frais-de-notaire', 'type-des-travaux', 'montant-a-emprunter', 'duree'];
|
|
for (var i = 0; i < fields.length; i++) {
|
|
jQuery(".field-" + fields[i]).hide();
|
|
}
|
|
var allowed_fields;
|
|
|
|
switch (jQuery('#type-de-credit').val()) {
|
|
case 'Prêt Hypothécaire (Achat Maison)':
|
|
allowed_fields = ['prix-d-achat', 'fonds-propres', 'compromis-signe', 'montant-du-revenu-cadastral', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Prêt Hypothécaire (Construction)':
|
|
allowed_fields = ['prix-de-la-construction-tvac', 'fonds-propres', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Prêt Hypothécaire (Refinancement)':
|
|
allowed_fields = ['valeur-du-batiment', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Prêt Hypothécaire (Regroupement)':
|
|
allowed_fields = ['valeur-du-batiment', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Prêt Hypothécaire (Achat à L\'étranger)':
|
|
allowed_fields = ['prix-d-achat', 'fonds-propres', 'compromis-signe', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Prêt à Tempérament (Tous Motifs)':
|
|
allowed_fields = ['montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Financement Véhicule Neuf':
|
|
allowed_fields = ['marque-modele-du-vehicule', 'date-1ere-immatriculation', 'nom-du-vendeur', 'adresse-du-vendeur', 'prix-d-achat-du-vehicule', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Financement Véhicule D\'occasion':
|
|
allowed_fields = ['marque-modele-du-vehicule', 'date-1ere-immatriculation', 'nom-du-vendeur', 'adresse-du-vendeur', 'prix-d-achat-du-vehicule', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Crédit Travaux / Rénovation / Energie':
|
|
allowed_fields = ['type-des-travaux', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
case 'Frais De Notaire':
|
|
allowed_fields = ['type-des-frais-de-notaire', 'montant-a-emprunter', 'duree'];
|
|
break;
|
|
default:
|
|
allowed_fields = ['montant-a-emprunter', 'duree'];
|
|
break;
|
|
}
|
|
for (var i = 0; i < allowed_fields.length; i++) {
|
|
jQuery(".field-" + allowed_fields[i]).show();
|
|
}
|
|
onchange_loan_type();
|
|
|
|
};
|
|
|
|
// Fonction centralisée pour calculer les limites dynamiques en fonction du type de crédit et du capital
|
|
function calculateDynamicLimits(loan_type, sub_loan_radio_type, capital, duration) {
|
|
var results;
|
|
|
|
switch (loan_type) {
|
|
case 'pat':
|
|
results = calculate_pat(capital, duration);
|
|
break;
|
|
case 'fin_neuve':
|
|
results = calculate_fin_neuve(capital, duration);
|
|
break;
|
|
case 'fin_occ_m3a':
|
|
results = calculate_pao_m_3(capital, duration);
|
|
break;
|
|
case 'fin_occ_p3a':
|
|
results = calculate_pao_p_3(capital, duration);
|
|
break;
|
|
case 'ph':
|
|
results = calculate_ph(capital, duration);
|
|
break;
|
|
case 'am':
|
|
results = calculate_am(capital, duration);
|
|
break;
|
|
case 'frais_notaire':
|
|
results = calculate_frais_notaire(capital, duration);
|
|
break;
|
|
case 'but_immo':
|
|
results = calculate_but_immo(capital, duration);
|
|
break;
|
|
case 'cdp':
|
|
results = calculate_cdp(capital, duration);
|
|
break;
|
|
case 'amr':
|
|
case 'cied':
|
|
results = calculate_mono_rate_bt_10_30(sub_loan_radio_type, capital, duration);
|
|
break;
|
|
case 'mobil_carav':
|
|
results = calculate_mobilhome(capital, duration);
|
|
break;
|
|
case 'regroup_cred':
|
|
results = calculate_regroupement_de_credit(capital, duration);
|
|
break;
|
|
default:
|
|
// Si le type n'est pas reconnu, utiliser les valeurs par défaut
|
|
results = [
|
|
form_sliders[loan_type] ? form_sliders[loan_type].duree_min : 24,
|
|
form_sliders[loan_type] ? form_sliders[loan_type].duree_max : 240,
|
|
duration || 0,
|
|
true,
|
|
0,
|
|
''
|
|
];
|
|
break;
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
// Fonction pour activer/désactiver les boutons de durée en fonction des limites dynamiques
|
|
function updateDurationButtonsState() {
|
|
var selected = jQuery('#loan_type').val();
|
|
var selected_radio = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '';
|
|
var sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph','cdp'];
|
|
|
|
if (selected_radio != '')
|
|
selected = selected_radio;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
var current_value = +jQuery('#selected_months').val();
|
|
|
|
// Calculer les limites dynamiques via la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, current_value);
|
|
|
|
var duree_min = results[0];
|
|
var duree_max = results[1];
|
|
|
|
// Fonction pour calculer le step
|
|
function getStepForValue(loan_type, value) {
|
|
let dynamic_step = 1;
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
dynamic_step = 1;
|
|
} else if (loan_type === 'cdp') {
|
|
dynamic_step = 1;
|
|
} else {
|
|
if (value <= 48) {
|
|
dynamic_step = 6;
|
|
} else {
|
|
dynamic_step = 12;
|
|
}
|
|
}
|
|
return dynamic_step;
|
|
}
|
|
|
|
var current_step = getStepForValue(selected, current_value);
|
|
|
|
// Calculer les valeurs potentielles
|
|
var next_value = current_value + current_step;
|
|
var prev_value = current_value - current_step;
|
|
|
|
// Ajouter une transition CSS pour un effet fluide (une seule fois)
|
|
if (!jQuery('.stimulator-slider-control.duree-plus').data('transition-added')) {
|
|
jQuery('.stimulator-slider-control.duree-plus, .stimulator-slider-control.duree-minus').css({
|
|
'transition': 'opacity 0.3s ease',
|
|
'cursor': 'pointer'
|
|
});
|
|
jQuery('.stimulator-slider-control.duree-plus, .stimulator-slider-control.duree-minus').data('transition-added', true);
|
|
}
|
|
|
|
// Activer/désactiver le bouton plus
|
|
if (next_value > duree_max) {
|
|
jQuery('.stimulator-slider-control.duree-plus').addClass('disabled').prop('disabled', true).css({
|
|
'opacity': '0.4',
|
|
'cursor': 'not-allowed'
|
|
});
|
|
console.log('🔒 Bouton durée+ désactivé (next:', next_value, '> max:', duree_max, ')');
|
|
} else {
|
|
jQuery('.stimulator-slider-control.duree-plus').removeClass('disabled').prop('disabled', false).css({
|
|
'opacity': '1',
|
|
'cursor': 'pointer'
|
|
});
|
|
console.log('🔓 Bouton durée+ activé');
|
|
}
|
|
|
|
// Activer/désactiver le bouton moins
|
|
if (prev_value < duree_min) {
|
|
jQuery('.stimulator-slider-control.duree-minus').addClass('disabled').prop('disabled', true).css({
|
|
'opacity': '0.4',
|
|
'cursor': 'not-allowed'
|
|
});
|
|
console.log('🔒 Bouton durée- désactivé (prev:', prev_value, '< min:', duree_min, ')');
|
|
} else {
|
|
jQuery('.stimulator-slider-control.duree-minus').removeClass('disabled').prop('disabled', false).css({
|
|
'opacity': '1',
|
|
'cursor': 'pointer'
|
|
});
|
|
console.log('🔓 Bouton durée- activé');
|
|
}
|
|
}
|
|
|
|
jQuery(document).on('click', ".stimulator-slider-control.duree-plus, .stimulator-slider-control.duree-minus", function() {
|
|
var selected_months_range = '#selected_months_range';
|
|
var selected_months = '#selected_months';
|
|
var selected = jQuery('#loan_type').val();
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph','cdp'];
|
|
|
|
var selected_radio = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (selected_radio != '')
|
|
selected = selected_radio;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (sub_loan_radio_type != '' && authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Récupérer le capital actuel pour calculer les limites dynamiques
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
var current_value = +jQuery(selected_months).val();
|
|
|
|
// Calculer les limites dynamiques en fonction du capital via la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, current_value);
|
|
|
|
var duree_min = results[0];
|
|
var duree_max = results[1];
|
|
|
|
console.log('🔘 BOUTON DURÉE - Capital:', selected_capital);
|
|
console.log('🔘 BOUTON DURÉE - Limites dynamiques: min =', duree_min, ', max =', duree_max);
|
|
console.log('🔘 BOUTON DURÉE - Valeur actuelle:', current_value);
|
|
|
|
var is_plus = jQuery(this).hasClass('duree-plus');
|
|
|
|
// Utiliser la fonction getStepForValue pour déterminer le step approprié
|
|
function getStepForValue(loan_type, value) {
|
|
let dynamic_step = 1;
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
dynamic_step = 1; // Step de 1 an pour les prêts en années
|
|
} else if (loan_type === 'cdp') {
|
|
dynamic_step = 1; // Step de 1 mois pour le crédit pont
|
|
} else {
|
|
if (value <= 48) {
|
|
dynamic_step = 6; // Step de 6 mois jusqu'à 48 mois
|
|
} else {
|
|
dynamic_step = 12; // Step de 12 mois au-delà de 48 mois
|
|
}
|
|
}
|
|
|
|
return dynamic_step;
|
|
}
|
|
|
|
// Calculer le step approprié pour la valeur actuelle
|
|
var current_step = getStepForValue(selected, current_value);
|
|
|
|
// Calculer la nouvelle valeur
|
|
var new_value;
|
|
if (is_plus) {
|
|
new_value = current_value + current_step;
|
|
} else {
|
|
new_value = current_value - current_step;
|
|
}
|
|
|
|
console.log('🔘 BOUTON DURÉE - Nouvelle valeur:', new_value);
|
|
|
|
// Vérifier que la nouvelle valeur est dans les limites DYNAMIQUES
|
|
if ((new_value >= duree_min) && (new_value <= duree_max)) {
|
|
jQuery(selected_months).val(new_value);
|
|
jQuery(selected_months_range).slider({
|
|
value: new_value
|
|
});
|
|
change_duree(form_sliders[selected].duree_min, form_sliders[selected].duree_max, new_value);
|
|
calculate_mensualite();
|
|
|
|
console.log('✅ Bouton durée - Valeur mise à jour');
|
|
} else {
|
|
console.log('⚠️ Bouton durée - Valeur hors limites dynamiques');
|
|
}
|
|
|
|
// Mettre à jour l'état des boutons après le changement
|
|
updateDurationButtonsState();
|
|
});
|
|
|
|
jQuery('.dautres-credit').on('click', function() {
|
|
if (jQuery('[name="dautres-credit[]"]').is(":checked")) {
|
|
jQuery(".dautres-credit-fields").css('display', 'block');
|
|
var n = jQuery(".repeater-fields-step-5").length;
|
|
if (n == "") { n = 0 };
|
|
n++;
|
|
var form_step_5 = '<div class="repeater-fields-step-5 rf-g-cours-' + n + '"><a href="javascript:void(0);" class="remove_rf_en_cours" data-repeated="' + n + '">X</a><div class="form-group"><label class="col-md-4">Avez-vous d\'autres crédits en cours?</label><div class="col-md-8"><span class="wpcf7-form-control-wrap dautres-credit"><span class="wpcf7-form-control wpcf7-checkbox field-co-emprunteur"><span class="wpcf7-list-item first last"><input type="checkbox" name="dautres-credit[]" class="dautres-credit-repeater" data-repeated="' + n + '" value="oui"><span class="wpcf7-list-item-label">oui</span></span></span></span></div><div class="clearfix"></div></div><div class="dautres-credit-fields-' + n + '" style="display: none;"> <div class="form-group"> <label class="col-md-4">Type de créance</label> <div class="col-md-8"> <span class="wpcf7-form-control-wrap type-de-creance"><select name="type-de-creance[]" class="wpcf7-form-control wpcf7-select" aria-invalid="false"><option value="">Veuillez faire un choix</option><option value="prêt hypothécaire">prêt hypothécaire</option><option value="prêt à tempérament">prêt à tempérament</option><option value="financement véhicule">financement véhicule</option><option value="leasing">leasing</option><option value="crédit ballon">crédit ballon</option><option value="carte de crédit">carte de crédit</option><option value="réserve d\'argent">réserve d\'argent</option><option value="découvert bancaire">découvert bancaire</option></select></span> </div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Nom de l\'organisme / Banque </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap nom-de-l-organisme-banque"><input type="text" name="nom-de-l-organisme-banque[]" value="" size="40" class="wpcf7-form-control wpcf7-text"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Capital emprunté </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap capital-emprunte"><input type="text" name="capital-emprunte[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Durée du crédit (en mois)</label> <div class="col-md-8"><span class="wpcf7-form-control-wrap duree-du-credit-en-mois"><input type="text" name="duree-du-credit-en-mois[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Mensualité </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap mensualite"><input type="text" name="mensualite[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Date 1ère échéance </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap date-1ere-echeance"><input type="text" name="date-1ere-echeance[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"><label class="col-md-4">Solde restant dû (approximatif) </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap solde-restant-du-approximatif"><input type="text" name="solde-restant-du-approximatif[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">A clôturer / Solder ? </label> <div class="col-md-8"><div class="col-md-8"> <span class="wpcf7-form-control-wrap"> <span class="wpcf7-form-control wpcf7-radio"> <span class="wpcf7-list-item first"> <input type="radio" name="a-cloturer-solder[' + n + ']" value="oui"> <span class="wpcf7-list-item-label">oui</span> </span> <span class="wpcf7-list-item last"> <input type="radio" name="a-cloturer-solder[' + n + ']" value="non"> <span class="wpcf7-list-item-label">non</span> </span> </span> </span></div></div><div class="clearfix"></div></div></div></div>';
|
|
jQuery("#step-5-repeat-block").append(form_step_5);
|
|
} else {
|
|
var repeater_id = jQuery(".repeater-fields-step-5").length;
|
|
jQuery(".rf-g-cours-" + repeater_id).remove();
|
|
jQuery(".dautres-credit-fields").css('display', 'none');
|
|
}
|
|
});
|
|
|
|
jQuery(document).on('click', '.dautres-credit-repeater', function() {
|
|
var block_5 = jQuery(this).data("repeated");
|
|
if (jQuery(this).is(":checked")) {
|
|
jQuery(".dautres-credit-fields-" + block_5).show();
|
|
var n = jQuery(".repeater-fields-step-5").length;
|
|
if (n == "") { n = 0 };
|
|
n++;
|
|
var form_step_5 = '<div class="repeater-fields-step-5 rf-g-cours-' + n + '"><a href="javascript:void(0);" class="remove_rf_en_cours" data-repeated="' + n + '">X</a><div class="form-group"><label class="col-md-4">Avez-vous d\'autres crédits en cours?</label><div class="col-md-8"><span class="wpcf7-form-control-wrap dautres-credit"><span class="wpcf7-form-control wpcf7-checkbox field-co-emprunteur"><span class="wpcf7-list-item first last"><input type="checkbox" name="dautres-credit[]" class="dautres-credit-repeater" data-repeated="' + n + '" value="oui"><span class="wpcf7-list-item-label">oui</span></span></span></span></div><div class="clearfix"></div></div><div class="dautres-credit-fields-' + n + '" style="display: none;"> <div class="form-group"> <label class="col-md-4">Type de créance</label> <div class="col-md-8"> <span class="wpcf7-form-control-wrap type-de-creance"><select name="type-de-creance[]" class="wpcf7-form-control wpcf7-select" aria-invalid="false"><option value="">Veuillez faire un choix</option><option value="prêt hypothécaire">prêt hypothécaire</option><option value="prêt à tempérament">prêt à tempérament</option><option value="financement véhicule">financement véhicule</option><option value="leasing">leasing</option><option value="crédit ballon">crédit ballon</option><option value="carte de crédit">carte de crédit</option><option value="réserve d\'argent">réserve d\'argent</option><option value="découvert bancaire">découvert bancaire</option></select></span> </div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Nom de l\'organisme / Banque </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap nom-de-l-organisme-banque"><input type="text" name="nom-de-l-organisme-banque[]" value="" size="40" class="wpcf7-form-control wpcf7-text"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Capital emprunté </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap capital-emprunte"><input type="text" name="capital-emprunte[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Durée du crédit (en mois)</label> <div class="col-md-8"><span class="wpcf7-form-control-wrap duree-du-credit-en-mois"><input type="text" name="duree-du-credit-en-mois[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Mensualité </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap mensualite"><input type="text" name="mensualite[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">Date 1ère échéance </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap date-1ere-echeance"><input type="text" name="date-1ere-echeance[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"><label class="col-md-4">Solde restant dû (approximatif) </label> <div class="col-md-8"><span class="wpcf7-form-control-wrap solde-restant-du-approximatif"><input type="text" name="solde-restant-du-approximatif[]" value="" size="40" class="wpcf7-form-control wpcf7-text number-field"></span></div><div class="clearfix"></div></div><div class="form-group"> <label class="col-md-4">A clôturer / Solder ? </label> <div class="col-md-8"><div class="col-md-8"> <span class="wpcf7-form-control-wrap"> <span class="wpcf7-form-control wpcf7-radio"> <span class="wpcf7-list-item first"> <input type="radio" name="a-cloturer-solder[' + n + ']" value="oui"> <span class="wpcf7-list-item-label">oui</span> </span> <span class="wpcf7-list-item last"> <input type="radio" name="a-cloturer-solder[' + n + ']" value="non"> <span class="wpcf7-list-item-label">non</span> </span> </span> </span></div></div><div class="clearfix"></div></div></div></div>';
|
|
jQuery("#step-5-repeat-block").append(form_step_5);
|
|
} else {
|
|
var repeater_id = jQuery(".repeater-fields-step-5").length;
|
|
jQuery(".rf-g-cours-" + repeater_id).remove();
|
|
jQuery(".dautres-credit-fields-" + block_5).hide();
|
|
}
|
|
});
|
|
|
|
jQuery(document).on('click', '.remove_rf_revenus', function() {
|
|
var repeater_id = jQuery(this).data("repeated");
|
|
jQuery(".rf-g-revenus-" + repeater_id).remove();
|
|
});
|
|
jQuery(document).on('click', '.remove_rf_en_cours', function() {
|
|
var repeater_id = jQuery(this).data("repeated");
|
|
jQuery(".rf-g-cours-" + repeater_id).remove();
|
|
});
|
|
jQuery(document).on("keypress", "form", function(event) {
|
|
return event.keyCode != 13;
|
|
});
|
|
|
|
jQuery('.mini-stimulator #loan_type, .mini-stimulator .loan_type').change(function() {
|
|
var hidden_fields, allowed_fields;
|
|
var changeTo = '';
|
|
hidden_fields = [];
|
|
|
|
var loan_type = jQuery('.mini-stimulator #loan_type').val(),
|
|
loan_radio_type = jQuery('.mini-stimulator .loan_type:checked').length ? jQuery('.mini-stimulator .loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
jQuery(".field-type-des-travaux").hide();
|
|
allowed_fields = ['fonds-propres', 'type-des-frais-de-notaire'];
|
|
for (var i = 0; i < allowed_fields.length; i++) { jQuery(".field-" + allowed_fields[i]).show(); }
|
|
switch (loan_type) {
|
|
case 'pat':
|
|
changeTo = "Prêt à Tempérament (Personnel / Tous Motifs / Achats Divers)";
|
|
hidden_fields = ['fonds-propres', 'type-des-frais-de-notaire'];
|
|
break;
|
|
|
|
case 'frais_notaire':
|
|
hidden_fields = ['fonds-propres'];
|
|
changeTo = "Frais De Notaire";
|
|
break;
|
|
|
|
case 'but_immo':
|
|
hidden_fields = ['fonds-propres', 'type-des-frais-de-notaire'];
|
|
jQuery(".field-type-des-travaux").show();
|
|
changeTo = "Crédit Travaux / Rénovation / Energie";
|
|
break;
|
|
|
|
case 'fin_neuve':
|
|
changeTo = "Financement Véhicule Neuf";
|
|
hidden_fields = ['type-des-frais-de-notaire'];
|
|
break;
|
|
|
|
case 'fin_occ_m3a':
|
|
hidden_fields = ['fonds-propres', 'type-des-frais-de-notaire'];
|
|
changeTo = "Financement Véhicule D'occasion";
|
|
break;
|
|
|
|
case 'fin_occ_p3a':
|
|
hidden_fields = ['fonds-propres', 'type-des-frais-de-notaire'];
|
|
changeTo = "Financement Véhicule D'occasion";
|
|
break;
|
|
|
|
case 'am':
|
|
changeTo = "Prêt Hypothécaire (Achat Maison)";
|
|
break;
|
|
|
|
case 'ph':
|
|
changeTo = "Prêt Hypothécaire (Achat Maison)";
|
|
break;
|
|
}
|
|
// Change all pre de credit to veuillez sélectionner votre type de prêt
|
|
changeTo = '';
|
|
for (var i = 0; i < hidden_fields.length; i++) { jQuery(".field-" + hidden_fields[i]).hide(); }
|
|
jQuery('#type-de-credit').val(changeTo);
|
|
onchange_type_de_credit();
|
|
});
|
|
|
|
jQuery('#type-de-credit').change(function() {
|
|
var changeTo = '';
|
|
var changeYes = false;
|
|
|
|
var loan_type = jQuery('.mini-stimulator #loan_type').val(),
|
|
loan_radio_type = jQuery('.mini-stimulator .loan_type:checked').length ? jQuery('.mini-stimulator .loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
switch (jQuery('#type-de-credit').val()) {
|
|
case "Frais De Notaire":
|
|
changeTo = 'frais_notaire';
|
|
changeYes = true;
|
|
break;
|
|
|
|
case "Crédit Travaux / Rénovation / Energie":
|
|
changeYes = true;
|
|
changeTo = 'but_immo';
|
|
break;
|
|
|
|
case "Financement Véhicule Neuf":
|
|
changeYes = true;
|
|
changeTo = 'fin_neuve';
|
|
break;
|
|
|
|
case "Financement Véhicule D'occasion":
|
|
changeYes = true;
|
|
changeTo = 'fin_occ_m3a';
|
|
break;
|
|
case "Prêt Hypothécaire (Achat Maison)":
|
|
changeYes = true;
|
|
changeTo = 'am';
|
|
break;
|
|
|
|
case "Prêt Hypothécaire (Construction)":
|
|
changeYes = true;
|
|
changeTo = 'ph';
|
|
break;
|
|
case "Prêt Hypothécaire (Refinancement)":
|
|
changeYes = true;
|
|
changeTo = 'am';
|
|
break;
|
|
case "Prêt Hypothécaire (Regroupement)":
|
|
changeYes = true;
|
|
changeTo = 'am';
|
|
break;
|
|
case "Prêt Hypothécaire (Achat à L'étranger)":
|
|
changeYes = true;
|
|
changeTo = 'am';
|
|
break;
|
|
case "Prêt à Tempérament (Personnel / Tous Motifs / Achats Divers)":
|
|
changeYes = true;
|
|
changeTo = 'pat';
|
|
break;
|
|
}
|
|
if ((changeYes == true) && (loan_type != changeTo)) {
|
|
jQuery('.mini-stimulator #loan_type').val(changeTo);
|
|
jQuery('.mini-stimulator input#' + changeTo).prop('checked', true);
|
|
/* jQuery('#selected_months').val(200); */
|
|
}
|
|
onchange_type_de_credit();
|
|
});
|
|
|
|
// 3. General
|
|
"use strict";
|
|
|
|
|
|
/* form handling */
|
|
jQuery(function() {
|
|
jQuery('.field-repeat-block').repeater({
|
|
show: function() {
|
|
changeYesjQuery(this).slideDown();
|
|
},
|
|
hide: function(deleteElement) {
|
|
if (confirm('Êtes-vous sûr de vouloir supprimer cet élément?')) {
|
|
jQuery(this).slideUp(deleteElement);
|
|
}
|
|
},
|
|
ready: function(setIndexes) {
|
|
|
|
}
|
|
});
|
|
// Config
|
|
var form = jQuery('#formulaire_form');
|
|
var wizard = jQuery('#form_wizard');
|
|
var error = jQuery('.alert-danger', form);
|
|
var success = jQuery('.alert-success', form);
|
|
jQuery.validator.addClassRules({
|
|
number_field: {
|
|
number: true
|
|
},
|
|
email_field: {
|
|
email: true
|
|
}
|
|
});
|
|
jQuery.validator.messages.required = "Ce champs est requis.";
|
|
jQuery.validator.messages.email = "Veuillez insérer une adresse mail valide."
|
|
form.validate({
|
|
doNotHideMessage: true,
|
|
focusInvalid: false,
|
|
invalidHandler: function(event, validator) {
|
|
success.hide();
|
|
error.show();
|
|
},
|
|
submitHandler: function(form) {
|
|
success.show();
|
|
error.hide();
|
|
jQuery(form).submit();
|
|
},
|
|
});
|
|
|
|
|
|
// Functions
|
|
var displayConfirm = function() {
|
|
jQuery('#tab6 .form-control-static', form).each(function() {
|
|
var input = jQuery('[name="' + jQuery(this).attr("data-display") + '"]', form);
|
|
|
|
if (input.is(":text") || input.is("textarea")) {
|
|
jQuery(this).html(input.val());
|
|
} else if (input.is("select")) {
|
|
jQuery(this).html(input.find('option:selected').text());
|
|
} else if (input.is(":radio") && input.is(":checked")) {
|
|
jQuery(this).html(input.attr("data-title"));
|
|
}
|
|
});
|
|
}
|
|
|
|
var handleTitle = function(tab, navigation, index) {
|
|
var total = navigation.find('li').length;
|
|
var current = index + 1;
|
|
|
|
// Set widget title
|
|
jQuery('.step-title', wizard).text('Step ' + (index + 1) + ' of ' + total);
|
|
|
|
// Set done steps
|
|
jQuery('li', wizard).removeClass("done");
|
|
|
|
var li_list = navigation.find('li');
|
|
for (var i = 0; i < index; i++) {
|
|
jQuery(li_list[i]).addClass("done");
|
|
}
|
|
|
|
if (current == 1) {
|
|
wizard.find('.button-previous').hide();
|
|
} else {
|
|
wizard.find('.button-previous').show();
|
|
}
|
|
|
|
if (current >= total) {
|
|
wizard.find('.button-next').hide();
|
|
wizard.find('.button-submit').show();
|
|
displayConfirm();
|
|
} else {
|
|
wizard.find('.button-next').show();
|
|
wizard.find('.button-submit').hide();
|
|
}
|
|
}
|
|
|
|
// Form wizard example
|
|
wizard.bootstrapWizard({
|
|
'nextSelector': '.button-next',
|
|
'previousSelector': '.button-previous',
|
|
onTabClick: function(tab, navigation, index, clickedIndex) {
|
|
success.hide();
|
|
error.hide();
|
|
|
|
if (form.valid() == false) {
|
|
return false;
|
|
} else {
|
|
|
|
dataLayer.push({ 'event': 'pageview', 'virtualUrl': 'subscription-step' + (index + 1) + '-completed.html' });
|
|
}
|
|
|
|
handleTitle(tab, navigation, clickedIndex);
|
|
},
|
|
onNext: function(tab, navigation, index) {
|
|
success.hide();
|
|
error.hide();
|
|
|
|
if (form.valid() == false) {
|
|
return false;
|
|
} else {
|
|
dataLayer.push({ 'event': 'pageview', 'virtualUrl': 'subscription-step' + (index + 1) + '-completed.html' });
|
|
}
|
|
handleTitle(tab, navigation, index);
|
|
|
|
},
|
|
onPrevious: function(tab, navigation, index) {
|
|
success.hide();
|
|
error.hide();
|
|
|
|
handleTitle(tab, navigation, index);
|
|
},
|
|
onTabShow: function(tab, navigation, index) {
|
|
// To set progressbar width
|
|
var total = navigation.find('li').length;
|
|
var current = index + 1;
|
|
if (current > 1) { jQuery('.page-formulaire-seletors').hide(); } else { jQuery('.page-formulaire-seletors').show(); }
|
|
var $percent = (current / total) * 100;
|
|
wizard.find('.progress-bar').css({
|
|
width: $percent + '%'
|
|
});
|
|
jQuery('html, body').animate({
|
|
scrollTop: jQuery("#form_wizard").offset().top
|
|
}, 1000);
|
|
}
|
|
});
|
|
|
|
wizard.find('.button-previous').hide();
|
|
jQuery('#form_wizard .button-submit').click(function() {}).hide();
|
|
});
|
|
|
|
function number_format(number, decimals, decPoint, thousandsSep) { // eslint-disable-line camelcase
|
|
|
|
number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
|
|
var n = !isFinite(+number) ? 0 : +number
|
|
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
|
|
var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
|
|
var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
|
|
var s = ''
|
|
|
|
var toFixedFix = function(n, prec) {
|
|
var k = Math.pow(10, prec)
|
|
return '' + (Math.round(n * k) / k)
|
|
.toFixed(prec)
|
|
}
|
|
|
|
// @todo: for IE parseFloat(0.55).toFixed(0) = 0;
|
|
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
|
|
if (s[0].length > 3) {
|
|
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
|
|
}
|
|
if ((s[1] || '').length < prec) {
|
|
s[1] = s[1] || ''
|
|
s[1] += new Array(prec - s[1].length + 1).join('0')
|
|
}
|
|
|
|
return s.join(dec)
|
|
}
|
|
|
|
function update_capital_input() {
|
|
if (jQuery('#selected_capital').length) {
|
|
|
|
var selected = jQuery('#loan_type').val(),
|
|
selected_radio = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (selected_radio != '')
|
|
selected = selected_radio;
|
|
|
|
if (sub_loan_radio_type != '' && authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
|
|
var capital_max = form_sliders[selected].capital_max;
|
|
var capital_min = form_sliders[selected].capital_min;
|
|
var capital_selected = form_sliders[selected].capital_selected;
|
|
|
|
jQuery('#selected_capital').prop('min', capital_min);
|
|
jQuery('#selected_capital').prop('max', capital_max);
|
|
jQuery('#selected_capital').val(capital_selected);
|
|
}
|
|
}
|
|
|
|
|
|
/* allocation selector */
|
|
jQuery(document).on('change', '.allocation-supplementaire-repeater', function() {
|
|
var block_4 = jQuery(this).data("repeated");
|
|
if ((jQuery(this)).val() != "---") {
|
|
jQuery(this).parents(".repeater-fields-step-4").children(".add-repeater-fields").show();
|
|
} else {
|
|
jQuery(this).parents(".repeater-fields-step-4").children(".add-repeater-fields").hide();
|
|
}
|
|
});
|
|
|
|
jQuery(function() {
|
|
var is_sending = false,
|
|
failure_message = 'Whoops, looks like there was a problem. Please try again later.';
|
|
|
|
jQuery('#forumulair-submit').on('click', function(e) {
|
|
|
|
e.preventDefault(); // Prevent the default form submit
|
|
var $this = jQuery('#formulaire_form'); // Cache this
|
|
jQuery.ajax({
|
|
url: cd_ajax_url.ajaxUrl,
|
|
type: 'post',
|
|
dataType: 'JSON', // Set this so we don't need to decode the response...
|
|
data: $this.serialize(), // One-liner form data prep...
|
|
beforeSend: function() {
|
|
is_sending = true;
|
|
// You could do an animation here...
|
|
},
|
|
error: function(data) {
|
|
|
|
},
|
|
success: function(data) {
|
|
if (data.status === 'success') {
|
|
var message =
|
|
"<div class='alert alert-success'><p>Votre demande de crédit nous est bien parvenue et nous vous en remercions. Une suite vous sera assurée dans les plus brefs délais (vous allez d'ailleurs recevoir un accusé de réception de notre part, par e-mail)</p><p>Nous vous informons qu'il est toujours préférable de ne pas introduire votre demande auprès de plusieurs sociétés de crédit en même temps. Nous travaillons avec la plupart des banques et sociétés de crédit, ce qui signifie que si votre dossier venait à être refusé la 1ère fois, nous le réintroduirons automatiquement ailleurs afin d'avoir un maximum de chances d'acceptation.</p><p>Crédit Direct SPRL</p><a href='" + cd_ajax_url.site_url + "'>Retour vers la page d'accueil</a> </div>";
|
|
jQuery('#formulaire_form').html(message);
|
|
window.setTimeout(function() { window.location.href = cd_ajax_url.site_url; }, 15000);
|
|
} else {
|
|
// handleFormError(); // If we don't get the expected response, it's an error...
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
function handleFormError() {
|
|
is_sending = false; // Reset the is_sending var so they can try again...
|
|
alert(failure_message);
|
|
}
|
|
});
|
|
// Create plus and minus buttons for slider
|
|
jQuery("#show_contact_num").click(function() {
|
|
jQuery('.header-top-contacts').slideToggle();
|
|
});
|
|
|
|
jQuery('#rgpdID').on('click', function() {
|
|
|
|
if (jQuery(this).is(':checked')) {
|
|
jQuery('[type="submit"]').removeAttr('disabled');
|
|
} else {
|
|
jQuery('[type="submit"]').prop('disabled', true);
|
|
}
|
|
|
|
});
|
|
|
|
jQuery('[name="hascoborrower"]').each(function() {
|
|
jQuery(this).on('click', function(e) {
|
|
|
|
let val = jQuery(this).val();
|
|
|
|
if (val == 1) {
|
|
jQuery('.co-emprunteur').slideDown();
|
|
jQuery('.isRequired').prop('required', true);
|
|
|
|
// Gérer les patterns pour les champs date dans .co-emprunteur
|
|
// Vérifier si cojob = 5 pour gérer co-independent_section
|
|
var cojobValue = jQuery('select[name="cojob"]').val();
|
|
var isCojobIndependent = cojobValue === '5';
|
|
|
|
// Activer les patterns pour tous les champs date sauf co-independent_section
|
|
jQuery('.co-emprunteur').find('input.input-date').each(function() {
|
|
var $field = jQuery(this);
|
|
var $container = $field.closest('.co-independent_section');
|
|
|
|
// Si le champ n'est pas dans co-independent_section, activer le pattern
|
|
if ($container.length === 0) {
|
|
var currentPattern = $field.attr('pattern');
|
|
if (!$field.attr('data-initial-pattern') && typeof currentPattern !== 'undefined' && currentPattern !== '') {
|
|
$field.attr('data-initial-pattern', '1');
|
|
$field.attr('data-initial-pattern-value', currentPattern);
|
|
}
|
|
|
|
if ($field.attr('data-initial-pattern') === '1') {
|
|
$field.attr('pattern', $field.attr('data-initial-pattern-value'));
|
|
} else {
|
|
$field.attr('pattern', '\\d{1,2}/\\d{1,2}/\\d{4}');
|
|
}
|
|
} else {
|
|
// Si dans co-independent_section, activer uniquement si cojob = 5
|
|
if (isCojobIndependent) {
|
|
var currentPattern = $field.attr('pattern');
|
|
if (!$field.attr('data-initial-pattern') && typeof currentPattern !== 'undefined' && currentPattern !== '') {
|
|
$field.attr('data-initial-pattern', '1');
|
|
$field.attr('data-initial-pattern-value', currentPattern);
|
|
}
|
|
|
|
if ($field.attr('data-initial-pattern') === '1') {
|
|
$field.attr('pattern', $field.attr('data-initial-pattern-value'));
|
|
} else {
|
|
$field.attr('pattern', '\\d{1,2}/\\d{1,2}/\\d{4}');
|
|
}
|
|
} else {
|
|
$field.removeAttr('pattern');
|
|
}
|
|
}
|
|
});
|
|
} else if (val == 0) {
|
|
jQuery('.co-emprunteur').slideUp();
|
|
jQuery('.isRequired').removeAttr('required');
|
|
|
|
// Retirer les patterns quand le co-emprunteur est désactivé
|
|
jQuery('.co-emprunteur').find('input.input-date').each(function() {
|
|
jQuery(this).removeAttr('pattern');
|
|
});
|
|
}
|
|
|
|
});
|
|
});
|
|
|
|
// Gestionnaire pour le changement de cojob dans le formulaire one-step
|
|
// Mettre à jour les patterns des champs date dans co-independent_section
|
|
jQuery('body').on('change', 'select[name="cojob"]', function() {
|
|
var cojobValue = jQuery(this).val();
|
|
var isCojobIndependent = cojobValue === '5';
|
|
var hasCoBorrower = jQuery('input[name="hascoborrower"]:checked').length > 0 &&
|
|
jQuery('input[name="hascoborrower"]:checked').val() == 1;
|
|
|
|
// Mettre à jour les patterns uniquement si le co-emprunteur est activé
|
|
if (hasCoBorrower) {
|
|
jQuery('.co-emprunteur').find('.co-independent_section input.input-date').each(function() {
|
|
var $field = jQuery(this);
|
|
|
|
if (isCojobIndependent) {
|
|
// Activer le pattern si cojob = 5
|
|
var currentPattern = $field.attr('pattern');
|
|
if (!$field.attr('data-initial-pattern') && typeof currentPattern !== 'undefined' && currentPattern !== '') {
|
|
$field.attr('data-initial-pattern', '1');
|
|
$field.attr('data-initial-pattern-value', currentPattern);
|
|
}
|
|
|
|
if ($field.attr('data-initial-pattern') === '1') {
|
|
$field.attr('pattern', $field.attr('data-initial-pattern-value'));
|
|
} else {
|
|
$field.attr('pattern', '\\d{1,2}/\\d{1,2}/\\d{4}');
|
|
}
|
|
} else {
|
|
// Retirer le pattern si cojob ≠ 5
|
|
$field.removeAttr('pattern');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
/* jQuery('#selected_capital_range').on('slide, change', function(event, ui) {
|
|
|
|
var css_left_span = jQuery('#selected_capital_range').find('span').css('left'),
|
|
orange_bar = jQuery('.slider-count-wrapper .after_bar');
|
|
|
|
if (!orange_bar.hasClass('active'))
|
|
orange_bar.addClass('active');
|
|
|
|
|
|
if (css_left_span < 90)
|
|
css_left_span += 10;
|
|
|
|
orange_bar.css('width', css_left_span);
|
|
|
|
}); */
|
|
|
|
/*jQuery('#selected_capital_range').on('slidechange', function(event, ui) {
|
|
|
|
var css_left_span = jQuery('#selected_capital_range').find('span').css('left'),
|
|
orange_bar = jQuery('.slider-count-wrapper .after_bar');
|
|
|
|
if (!orange_bar.hasClass('active'))
|
|
orange_bar.addClass('active');
|
|
|
|
|
|
if (css_left_span < 90)
|
|
css_left_span += 10;
|
|
|
|
orange_bar.css('width', css_left_span);
|
|
|
|
});*/
|
|
|
|
jQuery('#selected_capital_range').on('slidecreate', function(event, ui) {
|
|
|
|
var css_left_span = jQuery('#selected_capital_range').find('span').css('left'),
|
|
orange_bar = jQuery('.slider-count-wrapper .after_bar');
|
|
|
|
if (!orange_bar.hasClass('active'))
|
|
orange_bar.addClass('active');
|
|
|
|
|
|
orange_bar.css('width', css_left_span);
|
|
|
|
});
|
|
|
|
jQuery(document).ready(function($) {
|
|
// Gestion du changement d'état de la case à cocher avec effet de slide
|
|
$('#switch_duration_type').on('change', function() {
|
|
if ($(this).is(':checked')) {
|
|
$('.determined_choices').slideUp(300, function() {
|
|
$('.free_choice').slideDown(300);
|
|
});
|
|
} else {
|
|
$('.free_choice').slideUp(300, function() {
|
|
$('.determined_choices').slideDown(300);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
// Gestion des boutons de type de crédit
|
|
jQuery(document).ready(function($) {
|
|
$('.credit-type-selector').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
const type = $(this).data('type');
|
|
const $container = $('.load_simulator').parent();
|
|
|
|
// Ajout d'un indicateur de chargement
|
|
$container.addClass('loading');
|
|
|
|
// Requête AJAX
|
|
$.ajax({
|
|
url: cd_js.ajaxUrl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'ajax_regenerate_simulator',
|
|
type: type,
|
|
nonce: cd_js.nonce
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
// Mise à jour du contenu
|
|
$container.html(response.data.html);
|
|
|
|
// Réinitialisation des événements
|
|
if (typeof on_slider_value_change === 'function') {
|
|
on_slider_value_change();
|
|
}
|
|
} else {
|
|
console.error('Erreur lors de la régénération du simulateur:', response.data.message);
|
|
}
|
|
},
|
|
error: function(xhr, status, error) {
|
|
console.error('Erreur AJAX:', error);
|
|
$container.removeClass('loading');
|
|
},
|
|
complete: function() {
|
|
$container.removeClass('loading');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
function handleCreditTypeClick() {
|
|
jQuery('#cred-hypo, #cred-pat').on('click', function(e) {
|
|
e.preventDefault();
|
|
// Ajout gestion classe active_btn
|
|
jQuery('#cred-hypo, #cred-pat').removeClass('active_btn');
|
|
jQuery(this).addClass('active_btn');
|
|
|
|
const type = jQuery(this).attr('id') === 'cred-hypo' ? 'am' : 'pat';
|
|
const container = jQuery('.home-simu-holder > .fusion-column-wrapper');
|
|
const parentContainer = container.parent();
|
|
|
|
// Sauvegarder la hauteur actuelle
|
|
const currentHeight = container.outerHeight();
|
|
|
|
jQuery.ajax({
|
|
url: cd_js.ajaxUrl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'ajax_regenerate_simulator',
|
|
type: type,
|
|
nonce: cd_js.nonce
|
|
},
|
|
beforeSend: function() {
|
|
// Ajouter le spinner
|
|
const loadingSpinner = jQuery('<div class="cd-loading-spinner"></div>');
|
|
parentContainer.append(loadingSpinner);
|
|
// Définir la hauteur minimale du parent
|
|
parentContainer.css('min-height', currentHeight + 'px');
|
|
// Animation de sortie
|
|
container.addClass('animate-slide-out-down');
|
|
// Enregistrer le temps de début du spinner
|
|
parentContainer.data('spinnerStart', Date.now());
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
// Mise à jour du contenu avec animation
|
|
container.html(response.data.html);
|
|
|
|
// Séquence d'animations d'entrée
|
|
setTimeout(function() {
|
|
container.removeClass('animate-slide-out-down').addClass('animate-slide-in-up');
|
|
|
|
// Réinitialisation des événements après l'animation
|
|
setTimeout(function() {
|
|
if (typeof on_slider_value_change === 'function') {
|
|
on_slider_value_change();
|
|
}
|
|
|
|
// Réinitialisation des sliders
|
|
if (typeof change_capital_slider === 'function') {
|
|
const capitalSlider = jQuery('#selected_capital_range');
|
|
if (capitalSlider.length) {
|
|
const min = parseInt(capitalSlider.data('min'));
|
|
const max = parseInt(capitalSlider.data('max'));
|
|
const value = parseInt(capitalSlider.data('value'));
|
|
change_capital_slider(min, max, value);
|
|
|
|
// Initialisation de la barre orange pour le capital
|
|
const capitalOrangeBar = jQuery('.slider-count-wrapper .after_bar');
|
|
if (capitalOrangeBar.length) {
|
|
const cssLeftSpan = capitalSlider.find('span').css('left');
|
|
capitalOrangeBar.addClass('active');
|
|
capitalOrangeBar.css('width', cssLeftSpan);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (typeof change_month_slider === 'function') {
|
|
const monthSlider = jQuery('#selected_month_range');
|
|
if (monthSlider.length) {
|
|
const min = parseInt(monthSlider.data('min'));
|
|
const max = parseInt(monthSlider.data('max'));
|
|
const value = parseInt(monthSlider.data('value'));
|
|
change_month_slider(min, max, value);
|
|
|
|
// Initialisation de la barre orange pour la durée
|
|
const monthOrangeBar = jQuery('.slider-month-wrapper .after_bar');
|
|
if (monthOrangeBar.length) {
|
|
const cssLeftSpan = monthSlider.find('span').css('left');
|
|
monthOrangeBar.addClass('active');
|
|
monthOrangeBar.css('width', cssLeftSpan);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Réinitialisation des calculs
|
|
if (typeof calculate_mensualite === 'function') {
|
|
calculate_mensualite();
|
|
}
|
|
|
|
// Réinitialisation des événements de formulaire
|
|
if (typeof onchange_loan_type === 'function') {
|
|
onchange_loan_type('radio');
|
|
}
|
|
|
|
// Réinitialiser la hauteur minimale après l'animation
|
|
parentContainer.css('min-height', '');
|
|
}, 500); // Attendre la fin de l'animation slideInUp
|
|
}, 500); // Attendre la fin de l'animation slideOutDown
|
|
} else {
|
|
console.error('Erreur lors de la régénération du simulateur:', response.data.message);
|
|
container.removeClass('animate-slide-out-down').addClass('animate-slide-in-up');
|
|
parentContainer.css('min-height', '');
|
|
}
|
|
},
|
|
error: function(xhr, status, error) {
|
|
console.error('Erreur AJAX:', error);
|
|
container.removeClass('animate-slide-out-down').addClass('animate-slide-in-up');
|
|
parentContainer.css('min-height', '');
|
|
},
|
|
complete: function() {
|
|
// Supprimer le spinner après au moins 800 ms
|
|
var spinnerStart = parentContainer.data('spinnerStart') || Date.now();
|
|
var elapsed = Date.now() - spinnerStart;
|
|
var minDuration = 800;
|
|
var removeSpinner = function() {
|
|
parentContainer.find('.cd-loading-spinner').remove();
|
|
};
|
|
if (elapsed < minDuration) {
|
|
setTimeout(removeSpinner, minDuration - elapsed);
|
|
} else {
|
|
removeSpinner();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Appeler la fonction lors du chargement du document
|
|
jQuery(document).ready(function() {
|
|
handleCreditTypeClick();
|
|
});
|
|
|
|
// Initialisation de la modal de rappel de crédit
|
|
/* document.addEventListener('DOMContentLoaded', function() {
|
|
var creditReminderBtn = document.querySelector('.credit-reminder-btn');
|
|
var modal = new bootstrap.Modal(document.getElementById('creditReminderModal'));
|
|
|
|
console.log('modal', modal);
|
|
|
|
if (creditReminderBtn) {
|
|
|
|
creditReminderBtn.addEventListener('click', function() {
|
|
console.log('bjkbjbnjjnk');
|
|
modal.show();
|
|
});
|
|
}
|
|
}); */
|
|
|
|
// Initialisation de la modal iziModal
|
|
jQuery("#creditReminderModal").iziModal({
|
|
width: 600,
|
|
overlayClose: true,
|
|
closeOnEscape: true,
|
|
headerColor: '#fe8c1e', // Orange pour l'en-tête
|
|
title: 'Vous avez une demande de crédit en cours',
|
|
subtitle: '',
|
|
padding: 20,
|
|
radius: 5,
|
|
zindex: 999,
|
|
iframe: false,
|
|
iframeHeight: 400,
|
|
iframeURL: null,
|
|
focusInput: false,
|
|
group: '',
|
|
loop: false,
|
|
navigateCaption: true,
|
|
navigateArrows: true,
|
|
history: false,
|
|
restoreDefaultContent: false,
|
|
autoOpen: false,
|
|
bodyOverflow: false,
|
|
fullscreen: false,
|
|
openFullscreen: false,
|
|
closeOnOverlayClick: true,
|
|
overlay: true,
|
|
overlayColor: 'rgba(0, 0, 0, 0.4)',
|
|
timeout: false,
|
|
timeoutProgressbar: false,
|
|
onOpening: function(){
|
|
// Callback avant l'ouverture
|
|
},
|
|
onOpened: function(){
|
|
// Callback après l'ouverture
|
|
// Personnalisation des couleurs après l'ouverture
|
|
jQuery('.iziModal-header').css({
|
|
'background-color': '#fe8c1e',
|
|
'color': '#fff'
|
|
});
|
|
jQuery('.iziModal-header.inner-header').css({
|
|
'background-color': '#fff',
|
|
'color': '#fff',
|
|
'box-shadow': 'none'
|
|
});
|
|
jQuery('.iziModal-close').css({
|
|
'color': '#fff'
|
|
});
|
|
jQuery('.iziModal-content').css({
|
|
'border-top': '3px solid #fe8c1e'
|
|
});
|
|
jQuery('.btn-primary').css({
|
|
'background-color': '#1c3050',
|
|
'border-color': '#fe8c1e'
|
|
});
|
|
jQuery('.btn-primary:hover').css({
|
|
'background-color': '#e67e17',
|
|
'border-color': '#e67e17'
|
|
});
|
|
},
|
|
onClosing: function(){
|
|
// Callback avant la fermeture
|
|
},
|
|
onClosed: function(){
|
|
// Callback après la fermeture
|
|
}
|
|
});
|
|
|
|
/* jQuery('#IDjob,#IDcojob').on('change', function() {
|
|
let job = jQuery(this).val(),
|
|
hascoborrower = jQuery('#hascoborrower').val(),
|
|
independent_section = jQuery('.independent_section'),
|
|
employee_section = jQuery('.employee_section'),
|
|
co_independent_section = jQuery('.co-emprunteur .independent_section'),
|
|
co_employee_section = jQuery('.co-emprunteur .employee_section');
|
|
|
|
if(job == 'independent') {
|
|
if(hascoborrower == 0) {
|
|
independent_section.fadeIn().removeClass('hidden');
|
|
employee_section.fadeOut().addClass('hidden');
|
|
} else {
|
|
co_independent_section.fadeIn().removeClass('hidden');
|
|
co_employee_section.fadeOut().addClass('hidden');
|
|
}
|
|
} else {
|
|
employee_section.fadeIn().removeClass('hidden');
|
|
if(hascoborrower == 0) {
|
|
independent_section.fadeIn().removeClass('hidden');
|
|
employee_section.fadeOut().addClass('hidden');
|
|
} else {
|
|
co_independent_section.fadeIn().removeClass('hidden');
|
|
co_employee_section.fadeOut().addClass('hidden');
|
|
}
|
|
}
|
|
}); */
|
|
|
|
/**
|
|
* Valide et arrondit la valeur saisie dans le champ selected_months
|
|
* en fonction des limites min/max et du step du slider
|
|
*/
|
|
function validate_months_input() {
|
|
var selected_months_range = '#selected_months_range';
|
|
var selected_months = '#selected_months';
|
|
var selected = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '',
|
|
selected_duree_box = jQuery(selected_months_range).parents('.selected_duree');
|
|
|
|
if (loan_radio_type != '') {
|
|
selected = loan_radio_type;
|
|
}
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
selected = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
selected = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Récupérer le capital actuel pour calculer le max dynamique
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
var current_value = jQuery(selected_months).val() ? parseInt(jQuery(selected_months).val()) : 0;
|
|
|
|
// Calculer les limites dynamiques en fonction du capital et du type de crédit via la fonction centralisée
|
|
var results = calculateDynamicLimits(selected, sub_loan_radio_type, selected_capital, current_value);
|
|
|
|
// Extraire les limites dynamiques
|
|
var duree_min = results[0];
|
|
var duree_max = results[1];
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph','cdp'];
|
|
|
|
// Recalculer current_value si nécessaire
|
|
if (!current_value || current_value === 0) {
|
|
current_value = parseInt(duree_min);
|
|
}
|
|
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Type de crédit:', selected);
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Capital:', selected_capital);
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Durée min dynamique:', duree_min);
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Durée max dynamique:', duree_max);
|
|
|
|
// Utiliser la fonction getStepForValue existante
|
|
var step = getStepForValue(selected, current_value);
|
|
|
|
|
|
// Arrondir à la valeur la plus proche selon le step
|
|
var rounded_value = Math.round(current_value / step) * step;
|
|
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Valeur saisie:', current_value);
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Step:', step);
|
|
console.log('🔍 VALIDATE_MONTHS_INPUT - Valeur arrondie:', rounded_value);
|
|
|
|
// Appliquer les limites min/max (SNAP)
|
|
if (rounded_value < duree_min) {
|
|
console.log('⚠️ SNAP appliqué : valeur trop basse (' + rounded_value + ') → min (' + duree_min + ')');
|
|
rounded_value = duree_min;
|
|
} else if (rounded_value > duree_max) {
|
|
console.log('⚠️ SNAP appliqué : valeur trop haute (' + rounded_value + ') → max dynamique (' + duree_max + ')');
|
|
rounded_value = duree_max;
|
|
} else {
|
|
console.log('✅ Valeur dans les limites, pas de snap nécessaire');
|
|
}
|
|
|
|
console.log('🎯 VALIDATE_MONTHS_INPUT - Valeur finale:', rounded_value);
|
|
|
|
// Mettre à jour le champ et le slider
|
|
jQuery(selected_months).val(rounded_value);
|
|
jQuery(selected_months_range).slider('value', rounded_value);
|
|
|
|
// Mettre à jour l'affichage
|
|
var periodicite = loan_type_in_years.includes(selected) ? ' ans' : ' mois';
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(rounded_value + periodicite);
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(rounded_value + periodicite);
|
|
// Recalculer la mensualité
|
|
calculate_mensualite();
|
|
}
|
|
|
|
// Modifier l'événement input existant pour utiliser la nouvelle fonction
|
|
/* jQuery(document).on('input', '#selected_months', function(e) {
|
|
jQuery('#selected_months').on('keyup', function() {
|
|
if(jQuery('#selected_months').val() != '') {
|
|
clearTimeout(Timer);
|
|
Timer = setTimeout(validate_months_input, 500); // Délai de 0.5s
|
|
}
|
|
});
|
|
}); */
|
|
|
|
function getStepForValue(loan_type, value) {
|
|
let dynamic_step = 1;
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
dynamic_step = 1; // Step de 1 an pour les prêts en années
|
|
} else if (loan_type === 'cdp') {
|
|
dynamic_step = 1; // Step de 1 mois pour le crédit pont
|
|
} else {
|
|
if (value <= 48) {
|
|
dynamic_step = 6; // Step de 6 mois jusqu'à 48 mois
|
|
} else {
|
|
dynamic_step = 12; // Step de 12 mois au-delà de 48 mois
|
|
}
|
|
}
|
|
|
|
return dynamic_step;
|
|
}
|
|
|
|
function change_month_slider(default_min, default_max, default_selected_value) {
|
|
var selected_months_range = '#selected_months_range';
|
|
var selected_months = '#selected_months';
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
var sel_duree = jQuery(selected_months).val(),
|
|
selected_duree_box = jQuery(selected_months_range).parents('.selected_duree');
|
|
|
|
// Récupérer le type de crédit
|
|
var loan_type = jQuery('#loan_type').val(),
|
|
loan_radio_type = jQuery('.loan_type:checked').length ? jQuery('.loan_type:checked').val() : '',
|
|
sub_loan_radio_type = jQuery('.sub_loan_type:checked').length ? jQuery('.sub_loan_type:checked').val() : '';
|
|
|
|
if (loan_radio_type != '')
|
|
loan_type = loan_radio_type;
|
|
|
|
if (sub_loan_radio_type != '') {
|
|
if (authorized_value.includes(sub_loan_radio_type)) {
|
|
loan_type = sub_loan_radio_type;
|
|
} else if (map_values[sub_loan_radio_type] !== 'undefined') {
|
|
loan_type = map_values[sub_loan_radio_type];
|
|
}
|
|
}
|
|
|
|
// Récupérer le capital actuel
|
|
var selected_capital = jQuery('#selected_capital').val();
|
|
|
|
if (selected_capital == '')
|
|
selected_capital = form_sliders[loan_type]['capital_selected'];
|
|
|
|
/* console.log('selected_capital', selected_capital);
|
|
console.log('loan_type', loan_type);
|
|
console.log('sel_duree', sel_duree);
|
|
*/
|
|
// Calculer la durée maximale en fonction du capital
|
|
var results = [];
|
|
switch (loan_type) {
|
|
case 'pat':
|
|
results = calculate_pat(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_neuve':
|
|
results = calculate_fin_neuve(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_occ_m3a':
|
|
results = calculate_pao_m_3(selected_capital, sel_duree);
|
|
break;
|
|
case 'fin_occ_p3a':
|
|
results = calculate_pao_p_3(selected_capital, sel_duree);
|
|
break;
|
|
case 'ph':
|
|
results = calculate_ph(selected_capital, sel_duree);
|
|
break;
|
|
case 'am':
|
|
results = calculate_am(selected_capital, sel_duree);
|
|
break;
|
|
case 'frais_notaire':
|
|
results = calculate_frais_notaire(selected_capital, sel_duree);
|
|
break;
|
|
case 'but_immo':
|
|
results = calculate_but_immo(selected_capital, sel_duree);
|
|
break;
|
|
case 'cdp':
|
|
results = calculate_cdp(selected_capital, sel_duree);
|
|
break;
|
|
case 'amr':
|
|
case 'cied':
|
|
results = calculate_mono_rate_bt_10_30(sub_loan_radio_type, selected_capital, sel_duree);
|
|
break;
|
|
case 'mobil_carav':
|
|
results = calculate_mobilhome(selected_capital, sel_duree);
|
|
break;
|
|
case 'regroup_cred':
|
|
results = calculate_regroupement_de_credit(selected_capital, sel_duree);
|
|
break;
|
|
}
|
|
|
|
// Utiliser max_duration (index 1) comme limite maximale
|
|
var max_duration = results[1];
|
|
var dynamic_max = max_duration;
|
|
|
|
// Trouver la durée maximale valide dans les durées du type de prêt
|
|
var available_durations = form_sliders[loan_type].durees;
|
|
|
|
for (var i = available_durations.length - 1; i >= 0; i--) {
|
|
if (available_durations[i] <= max_duration) {
|
|
dynamic_max = available_durations[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* console.log('available_durations', results);
|
|
|
|
console.log('dynamic_max', dynamic_max);
|
|
console.log('duration max', max_duration);
|
|
console.log('loan_type', loan_type);
|
|
console.log('available_durations array', available_durations); */
|
|
|
|
function getStepForValue(loan_type, value) {
|
|
let dynamic_step = 1;
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
dynamic_step = 1; // Step de 1 an pour les prêts en années
|
|
} else if (loan_type === 'cdp') {
|
|
dynamic_step = 1; // Step de 1 mois pour le crédit pont
|
|
} else {
|
|
if (value <= 48) {
|
|
dynamic_step = 6; // Step de 6 mois jusqu'à 48 mois
|
|
} else {
|
|
dynamic_step = 12; // Step de 12 mois au-delà de 48 mois
|
|
}
|
|
}
|
|
|
|
return dynamic_step;
|
|
}
|
|
|
|
// Mettre à jour le slider avec la nouvelle limite maximale
|
|
jQuery(selected_months_range).slider({
|
|
min: default_min,
|
|
max: dynamic_max,
|
|
value: dynamic_max, // Utiliser la valeur maximale comme valeur initiale
|
|
step: getStepForValue(loan_type, dynamic_max),
|
|
slide: function(event, ui) {
|
|
var newStep = getStepForValue(loan_type, ui.value);
|
|
|
|
if (newStep !== jQuery(this).slider('option', 'step')) {
|
|
jQuery(this).slider('option', 'step', newStep);
|
|
}
|
|
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
jQuery(selected_months).val(ui.value);
|
|
|
|
if (loan_type_in_years.includes(loan_type)) {
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(ui.value + ' ans');
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(ui.value + ' ans');
|
|
} else {
|
|
jQuery(selected_months_range).find(".slider_duree_box").text(ui.value + ' mois');
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(ui.value + ' mois');
|
|
}
|
|
},
|
|
stop: function(event, ui) {
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
calculate_mensualite();
|
|
|
|
// Mettre à jour l'état des boutons de durée après mouvement du slider
|
|
updateDurationButtonsState();
|
|
},
|
|
change: function(event, ui) {
|
|
var orange_bar = jQuery('.slider_duree_wrapper .after_bar_month'),
|
|
elem = jQuery(ui.handle),
|
|
left_css = parseInt(elem.css('left'), 10);
|
|
|
|
orange_bar.css('width', left_css + 10);
|
|
}
|
|
});
|
|
|
|
jQuery(selected_months).val(jQuery(selected_months_range).slider('value'));
|
|
|
|
var periodicite = loan_type_in_years.includes(loan_type) ? ' ans' : ' mois';
|
|
var appended_elem = '<span class="slider_duree_box">' + jQuery(selected_months_range).slider('value') + periodicite + '</span>';
|
|
jQuery(selected_duree_box).find(".outside_slider_duree_box").text(jQuery(selected_months_range).slider('value') + periodicite);
|
|
|
|
if (!jQuery(selected_months_range).find('.ui-slider-handle .fa-angle-right').length) {
|
|
jQuery(selected_months_range).find(".ui-slider-handle").append('<i class="fa-angle-left fas" data-name="angle-right" aria-hidden="true"></i><i class="fa-angle-right fas" data-name="angle-right" aria-hidden="true"></i>');
|
|
}
|
|
|
|
if (!jQuery(selected_months_range).find('.slider_duree_box').length) {
|
|
jQuery(selected_months_range).find('.ui-slider-handle').append(appended_elem);
|
|
}
|
|
}
|
|
|
|
// Ajout : fonction pour mettre à jour l'unité de durée à côté de #selected_months
|
|
function updateSelectedMonthsUnit() {
|
|
|
|
|
|
var loan_type = jQuery('#loan_type').val();
|
|
var loan_type_in_years = ['am', 'amr', 'cied', 'ph'];
|
|
var unit = loan_type_in_years.includes(loan_type) ? 'Ans' : 'Mois';
|
|
|
|
var $inputGroup = jQuery('#selected_months').parents('.input-group').find('.input-group-append');
|
|
|
|
/* console.log('unit', unit); */
|
|
|
|
$inputGroup.find('.input-group-text').text(unit);
|
|
|
|
/* console.log('inputGroup', $inputGroup); */
|
|
}
|
|
|
|
// Gestion de l'affichage du champ montant_allocation_familiale basé sur le nombre d'enfants
|
|
jQuery(document).ready(function() {
|
|
// Fonction pour gérer l'affichage du champ montant_allocation_familiale (emprunteur principal)
|
|
function toggleMontantAllocation() {
|
|
var nbEnfants = parseInt(jQuery('#IDdependentchildren').val()) || 0;
|
|
if (nbEnfants > 0) {
|
|
jQuery('#IDmontant_allocation_familiale').closest('.montant_allocation').removeClass('hidden').show();
|
|
} else {
|
|
jQuery('#IDmontant_allocation_familiale').closest('.montant_allocation').addClass('hidden').hide();
|
|
}
|
|
}
|
|
|
|
// Fonction pour gérer l'affichage du champ montant_allocation_familiale (co-emprunteur)
|
|
function toggleCoMontantAllocation() {
|
|
var nbEnfantsCo = parseInt(jQuery('#IDcodependentchildren').val()) || 0;
|
|
if (nbEnfantsCo > 0) {
|
|
jQuery('#coIDmontant_allocation_familiale').closest('.montant_allocation').removeClass('hidden').show();
|
|
} else {
|
|
jQuery('#coIDmontant_allocation_familiale').closest('.montant_allocation').addClass('hidden').hide();
|
|
}
|
|
}
|
|
|
|
// Événement sur le changement du nombre d'enfants (emprunteur principal)
|
|
jQuery('#IDdependentchildren').on('change', function() {
|
|
toggleMontantAllocation();
|
|
});
|
|
|
|
// Événement sur le changement du nombre d'enfants (co-emprunteur)
|
|
jQuery('#IDcodependentchildren').on('change', function() {
|
|
toggleCoMontantAllocation();
|
|
});
|
|
|
|
// Vérification initiale au chargement de la page
|
|
toggleMontantAllocation();
|
|
toggleCoMontantAllocation();
|
|
}); |