// Module des fonctions de calcul de crédit // On suppose que cd_js et map_values sont passés en paramètre ou importés dans main.js export function calculate_pat(cd_js, selected_capital, selected_duration = '') { let annual_rate, min_duration, max_duration, duree_in_range = true, display_observation_pat = false, add_message = ''; min_duration = 24; 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; } 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]; } export function calculate_ph(cd_js, 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]; } export function calculate_am(cd_js, 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) { 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; return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message]; } export function calculate_mono_rate_bt_10_30(cd_js, map_values, 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; 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; } var possible_types = [ selected_loan_type, map_values[selected_loan_type], selected_loan_type.toLowerCase(), selected_loan_type.replace(/_/g, ''), selected_loan_type.replace(/^credit_/, '') ]; possible_types = possible_types.filter(type => type); for (var type of possible_types) { var rate = findRate(type); if (rate !== null) { annual_rate = rate; break; } } if (annual_rate === undefined) { 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)) { } 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]; } export function calculate_fin_neuve(cd_js, 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]; } export function calculate_pao_m_3(cd_js, 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]; } export function calculate_pao_p_3(cd_js, 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; } return [min_duration, max_duration, selected_duration, duree_in_range, annual_rate, add_message] } export function calculate_mobilhome(cd_js, 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_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]; } export function calculate_regroupement_de_credit(cd_js, 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]; } export function calculate_frais_notaire(cd_js, 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) && parseInt(selected_capital) <= 15000)) { annual_rate = cd_js.groups.financement_frais_de_notaire.de_2500_a_15000_24_a_60_mois; max_duration = 60; } else if ((15000 < parseInt(selected_capital) && parseInt(selected_capital) <= 40000)) { annual_rate = cd_js.groups.financement_frais_de_notaire.de_15001_a_40000_24_a_120_mois; 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]; } export function calculate_but_immo(cd_js, 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 ((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 { 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]; }