| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 
 | var prenom = document.getElementById("prenom").value;
//document.write("Prénom : ",prenom,"<br>"); 
var instit = parseInt(document.getElementById("instit").value);
//document.write("Instit ? ",instit,"<br>");
var catarr = parseInt(document.getElementById("catarr").value);
//document.write("Catarr ? ",catarr,"<br>");
var catai = parseInt(document.getElementById("catai").value);
//document.write("Catai ? ",catai,"<br>");
var trav = parseFloat(document.getElementById("trav").value);
//document.write("Trav ? ",trav,"<br>");
var remp = parseFloat(document.getElementById("remp").value);
//document.write("Remp ? ",remp,"<br>");
var autres = parseFloat(document.getElementById("autres").value);
//document.write("Autres ? ",autres,"<br>");
var part = parseFloat(document.getElementById("part").value);
//document.write("Part ? ",part,"<br>");
var noncum = parseFloat(document.getElementById("noncum").value);
//document.write("Non cum ? ",noncum,"<br>");
 
//
 
const lastUpdate = "01/06/2020";   
document.write("Dernière mise à jour le : ");
document.write(lastUpdate);
 
// variables à indexer régulièrement
 
/* ici les différents barèmes concernant l'ARR
A, B et C sont les catégories de ménage. AP/G/T sont les abattements sur le revenu du partenaire (P), sur les autres revenus (G) et sur le travail (T) à 50% (T50) et à 25% (T25)
*/ 
 
const BARR = {
A : 7523.29,
B : 11284.94,
C : 15250.89,
AP : 3761.65,
AG : 700.10,
AT50 : 4973.19,
AT25 : 7459.78
};
 
/* ici les différents barèmes concernant l'AI
b1 à b5 sont les catégories de points. AP/T/R sont les abattements sur le revenu du partenaire (P), sur les revenus du travail(T) et sur les revenus de remplacement (R et R2 suivant le seuil)
*/
const BAI = {
b1 : 1271.84,
b2 : 4206.76,
b3 : 6690.30,
b4 : 9722.78,
b5 : 11022.78,
AP : 40073.35,
AT : 22899.05,
AR : 19627.77,
AR2 : 3270.83 
};
 
 
/* Affichage des variables, pour vérifier si tout fonctionne bien ce côté là
// A supprimer quand le code est correct
 
document.write("<br>","BARR.A : ",BARR.A,"<br>","BARR.B : ",BARR.B,"<br>","BARR.C : ",BARR.C,"<br>","BARR.AP : ",BARR.AP,"<br>","BARR.AG : ",BARR.AG,"<br>","BARR.AT50 : ",BARR.AT50,"<br>","BARR.AT25 : ",BARR.AT25,"<br>","<br>");
document.write("BAI.b1 : ",BAI.b1,"<br>","BAI.b2 : ",BAI.b2,"<br>","BAI.b3 : ",BAI.b3,"<br>","BAI.b4 : ",BAI.b4,"<br>","BAI.b5 : ",BAI.b5,"<br>","BAI.AP : ",BAI.AP,"<br>","BAI.AT : ",BAI.AT,"<br>","BAI.AR : ",BAI.AR,"<br>","BAI.AR2 : ",BAI.AR2,"<br>","<br>");
*/
 
/* création des variables qu'il faudra nourrir avec les données du formulaire
Idéalement, ils devraient en être issus directement mais comme je n'y arrive pas encore, je les crée avec une valeur de base de zéro
*/
/*
var instit = 0;
var catarr = 0;
var catai = 0;
var trav = 0;
var remp = 0;
var autres = 0;
var part = 0;
var noncum = 0;
*/
 
/* si la personne mentionne des revenus du partenaire en catégorie A ou B, il y aura forcément un problème dans le calcul car ce n'est normalement pas possible.
Par souci de facilité, l'usager est prévenu directement sur le formulaire de ne pas le faire et on en tiendra pas compte dans les calculs par la suite.
*/
 
/* Création des variables qui serviront à déduire le barème de base
Valeurs à zéro pour permettre de tester les calculs avant d'avoir réussi à les récupérer depuis les champs de formulaire
*/
var DeducARR;
var DeducAI;
 
/* Création des variable pour les calculs de déduction intermédiares
ARR est Allocation de remplacement de revenus. AI est allocation d'intégration
*/
 
var DeduARR_RevP = 0;
var DeduARR_RevT = 0;
var DeduARR_RevG = 0;
// RevG comprend les revenus de remplacement et les autres revenus, pour l'ARR
 
var DeduAI_RevP = 0;
var DeduAI_RevT = 0;
var DeduAI_RevR = 0;
var DeduAI_RevG = 0;
/* RevG comprend les autres revenus et la part non immunisée des revenus de remplacement pour l'AI. Doit donc se calculer en deux temps. Premier temps --> juste les autres revenus 
*/
 
var Dedu_NonCum = noncum;
// dans l'excel, ils sont mentionnés séparément pour l'ARR et l'AI mais je n'ai pas trouvé de raison pour justifier cela. Doit être approfondi
 
//puis créer la variable qui contiendra toutes les autres
var DeduARR = 0;
var DeduAI = 0;
 
// Calculs qui suivent concernent les abattements et les déductions pour l'ARR
 
/*Si les revenus du partenaire sont inférieurs ou égaux à l'abattement, ils ne seront donc pas pris en considération. Dans le cas contraire, seuls les revenus qui excèdent l'abattement seront déduits.
*/
 
if (part <= BARR.AP){
	var DeduARR_RevP = 0;
}
else {
	var DeduARR_RevP = part - BARR.AP;
}
 
/* Calcul de la déduction des revenus du travail
Si les revenus du travail sont inférieurs ou égaux au barême 50, on ne déduira que la moitié.
S'ils sont supérieur au barème 50 et inférieurs au barème 25. La première tranche ne sera compté que pour la moitié et la seconde au quart.
Au delà de 25, tout est déduit.
*/
 
if (trav === 0){
	var DeduAI_RevT = 0;
}
 
else if (trav <= BARR.AT50){
	var DeduARR_RevT = trav / 2;
}
 
else if (trav <= BARR.AT25){
	var DeduARR_RevT = (BARR.AT50 / 2) + (((trav - BARR.AT50) / 4) * 3);
}
 
else {
	var DeduARR_RevT = (BARR.AT50 / 2) + (((BARR.AT25 - BARR.AT50) / 4) * 3) + (trav - BARR.AT25);
}
 
/*
Calcul de la déduction des autres revenus.
Il y a un abattement égal au barème AG. On va reprendre le même calcul que pour les revenus du partenaire basé sur un même principe
Mais on doit y ajouter la fusion des autres revenus et des revenus de remplacement en ARR dans une nouvelle variable autres2 (pour ne pas que la variable autre ne soit plus utilisable en AI).
*/
 
var autres2 = (autres + remp);
 
if (autres2 <= BARR.AG){
	var DeduARR_RevG = 0;
}
else {
	var DeduARR_RevG = autres2 - BARR.AG;
}
 
/* on va additionner toutes les différentes déductions dans une seule variable pour l'ARR
*/
var DeduARR = DeduARR_RevG + DeduARR_RevP + DeduARR_RevT + Dedu_NonCum;
 
/* suivant le choix fait dans le formulaire, on va définir ce qu'est ARR au début du calcul puis déduire les revenus. Si le résultat final est négatif, on le met à 0.
*/
 
if (catarr === 0) {
	var ARR = 0;
}
 
else if (catarr === 1) {
	var ARR = BARR.A - DeduARR;
	}
 
else if (catarr === 2) {
	var ARR = BARR.B - DeduARR;
	}	
 
else {
	var ARR = BARR.C - DeduARR;
	}
 
if (ARR < 0) {
	var ARR = 0;
}
else {
	var ARR = ARR;
}
 
 
/* ARR, derniers calculs
si catégorie C et que deux au moins le sont dans le couple, alors ce sera le barème B qui sera octroyé au maximum
Autrement dit, si le montant final calculé est > à B --> B. Sinon, le calcul reste bon (s'il on en croit le fichier excel)
*/
 
if (catarr === 4 && ARR > BARR.B) {
	ARR = BARR.B;
}
 
else {
	ARR = ARR;
}
 
 
// Calculs qui suivent concernent les abattements et les déductions pour l'AI
 
/* on va d'abord calculer la déduction des revenus du partenaire
Il est important de savoir que, ici, si le montant est supérieur à 0, on doit encore le diviser par deux ensuite.
*/
 
if (part <= BAI.AP){
	var DeduAI_RevP = 0;
}
else {
	var DeduAI_RevP = (part - BAI.AP) / 2;
}
 
/* on va faire un calcul très similaire pour les revenus du travail de la personne handicapée
on doit créer une variable avec l'abattement car ce sera utile dans une étape ultérieure
*/
 
if (trav <= BAI.AT){
	var DeduAI_RevT = 0;
}
else {
	var DeduAI_RevT = (trav - BAI.AT) / 2;
}
 
var AbattAI_T = trav - DeduAI_RevT;
 
/* c'est ici que ça commence à se compliquer le plus !!
l'immunisation des revenus de remplacement ne dépend pas que d'un seul barème mais aussi du montant total immunisé en revenus du travail. 
Si tout le pot de l'immunisation des revenus du travail a été utilisé, alors on immunise rien en revenus de remplacement. 
Le total des immunisations revenus du travail et revenus de remplacement ne peut jamais dépasser le barème des revenus du travail.
Exemple, si ce barème était de 100 pour les revenus du travail et de 10 pour les revenus de remplacement, on pourrait immuniser le maximum des revenus de remplacement uniquement si les revenus du travail n'excèdent pas dix. Et si les revenus du travail étaient entre 90 et 100, on ne pourrait immuniser que le restant du pot jusqu'à 100.
La variable BAI.AR représente le seuil de revenus au delà duquel on commence à manger BAI.AR2 qui est le maximum déductible en revenus de remplacement.
 
Concrètement, ici, on regarde si les revenus de remplacement ne sont pas tout simplement égaux à 0 alors rien à déduire.
Ensuite on regarde si les revenus du travail laissent la possibilité d'un abattement des revenus de remplacement, sinon on déduit tous les revenus de remplacement.
Ensuite on regarde si les revenus du travail ne mangent pas la marge et si les revenus de remplacement sont inférieurs à leur propre marge maximale. Dans ce cas, on ne déduit rien.
Ensuite on regarde si les revenus du travail ne mangent pas la marge et si les revenus de remplacement sont supérieur à leur propre marge. Dans ce cas, on déduit la différence entre revenus de remplacement et leur propre marge.
Ensuite, on regarde si les revenus du travail mangent une partie de la marge et si cette marge n'est pas supérieur aux revenus de remplacement. Dans ce cas, les revenus de remplacement ne sont pas déduits.
Enfin, je pense qu'on a épuisé tous les cas de figure, on calcule la différence entre revenus de remplacement et la marge laissée par les revenus du travail. 
On doit aussi créer une variable avec l'abattement effectué car ce sera utile dans une étape ultérieure.
*/
 
if (remp === 0) {
	var DeduAI_RevR = 0;
}
else if (trav >= BAI.AT) {
	var DeduAI_RevR = remp;
}
else if (trav <= BAI.AR && remp <= BAI.AR2) {
	var DeduAI_RevR = 0;
}
else if (trav <= BAI.AR && remp > BAI.AR2) {
	var DeduAI_RevR = remp - BAI.AR2;
}
else if (trav > BAI.AR && remp <= (BAI.AR2 - (trav - BAI.AR))) {
	var DeduAI_RevR = 0;
}
else {
	var DeduAI_RevR = remp - (BAI.AR2 - (trav - BAI.AR));
}
 
var AbattAI_R = remp - DeduAI_RevR;
 
/* pour calculer la déduction des autres revenus, il faut additionner les revenus de remplacement non immunisés (à ce stade DeduAI_RevR) aux autres revenus dans une nouvelle variable autres3.
Ensuite, on détermine le montant de l'allocation ARR théorique avant déduction.
Ensuite, on va voir si le total de ce qui a été abattu précédemment en revenus du travail et de remplacement ne dépasse pas le montant du barème sélectionné en ARR et on va calculer l'abbattement maximal pour cette étape.
Ensuite, on fait l'abattement pour obtenir la dernière déduction à effectuer.
*/
 
var autres3 = autres +DeduAI_RevR;
 
// détemination du barème théorique
if (catarr === 0) {
	var BarTheoARR = 0;
}
else if (catarr === 1) {
	var BarTheoARR = BARR.A;
}
else if (catarr === 2) {
	var BarTheoARR = BARR.B;
}
else {
	var BarTheoARR = BARR.C;
}
 
// détemination de l'abattement maximum
if (BarTheoARR <= (AbattAI_T + AbattAI_R)) {
	var AMAX_RevG = 0;
}
else {
	var AMAX_RevG = BarTheoARR - (AbattAI_R + AbattAI_T);
}
 
// détermination de la déduction
if (AMAX_RevG === 0) {
	var DeduAI_RevG = autres3;
}
else if (AMAX_RevG >= autres3) {
	var DeduAI_RevG = 0;
}
else {
	var DeduAI_RevG = autres3 - AMAX_RevG;
}
 
/* on va additionner toutes les différentes déductions dans une seule variable pour l'AI. On remarquera qu'on ne déduit par les revenus de remplacement car ils sont déjà présents dans le calcul des revenus généraux.
 
*/
var DeduAI = DeduAI_RevG + DeduAI_RevP + DeduAI_RevT + Dedu_NonCum;
 
/* Derniers calculs pour l'AI
D'abord, choix du barème. Ensuite on enlève du barème toutes les déductions. 
Si la personne handicapée vit en instution, le montant doit être réduit de 28%.
Enfin, on s'assure que le résultat ne soit pas négatif et on remet à zéro si c'est le cas.*/
 
 
if (catai === 0) {
	var AI = 0;
}
 
else if (catai === 1) {
	var AI = BAI.b1 - DeduAI;
	}
 
else if (catai === 2) {
	var AI = BAI.b2 - DeduAI;
	}
 
else if (catai === 3) {
	var AI = BAI.b3 - DeduAI;
	}
 
else if (catai === 4) {
	var AI = BAI.b4 - DeduAI;
	}
 
else {
	var AI = BAI.b5 - DeduAI;
	}
 
if (AI < 0) {
	var AI = 0;
}
else {
	var AI = AI;
}
 
if (instit === 1) {
	var AI = AI * 0.72;
}
else {
	var AI = AI;
}
 
 
 
/* Addition du résultat du calcul pour l'ARR et pour l'AI pour obtenir le montant annuel.
Création d'une variable_div12 pour obtenir le montant par mois
*/
 
var ARRAI = ARR + AI;
var AI = (Math.round(AI * 100)) / 100;
var ARR = (Math.round(ARR * 100)) / 100;
var ARRAI = (Math.round(ARRAI * 100)) / 100;
var ARRAIdivDOUZE = ARRAI / 12;
var ARRAIdivDOUZE = (Math.round(ARRAIdivDOUZE * 100)) / 100;
 
document.write("<br>",prenom,", le montant de votre allocation sera de ",ARRAI," par an et ",ARRAIdivDOUZE," par mois.<br>Ce montant est composé de : ",ARR," (ARR) et de ",AI," (AI).");
 
$("form :input").change(function(){
 
 
$("#bizut").replaceWith("<br>",prenom,", le montant de votre allocation sera de ",ARRAI," par an et ",ARRAIdivDOUZE," par mois.<br>Ce montant est composé de : ",ARR," (ARR) et de ",AI," (AI).")
 
}); | 
Partager