mantenimento-app 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,6 +32,14 @@ function calculateModel(input) {
32
32
  const aPag2 = toNumber(input.aPag2);
33
33
  const aFam1 = toNumber(input.aFam1);
34
34
  const aFam2 = toNumber(input.aFam2);
35
+ const primaCasaMutuoEnabled = toNumber(input.primaCasaMutuoEnabled) > 0;
36
+ const primaCasaMutuoImporto = Math.max(0, toNumber(input.primaCasaMutuoImporto));
37
+ const primaCasaAssegnataA = String(input.primaCasaAssegnataA || '');
38
+ const rawMutuoPerc1 = input.primaCasaMutuoPerc1 === undefined ? 50 : input.primaCasaMutuoPerc1;
39
+ const primaCasaMutuoPerc1 = clamp(toNumber(rawMutuoPerc1), 0, 100);
40
+ const primaCasaMutuoPerc2 = 100 - primaCasaMutuoPerc1;
41
+ const quotaMutuoSpese1 = primaCasaMutuoEnabled ? (primaCasaMutuoImporto * (primaCasaMutuoPerc1 / 100)) : 0;
42
+ const quotaMutuoSpese2 = primaCasaMutuoEnabled ? (primaCasaMutuoImporto - quotaMutuoSpese1) : 0;
35
43
 
36
44
  const match12 = Math.min(aPag1, aPerc2);
37
45
  const match21 = Math.min(aPag2, aPerc1);
@@ -40,8 +48,10 @@ function calculateModel(input) {
40
48
 
41
49
  const c1Spese = Array.isArray(input.c1Spese) ? input.c1Spese : [];
42
50
  const c2Spese = Array.isArray(input.c2Spese) ? input.c2Spese : [];
43
- const spese1 = c1Spese.reduce((acc, n) => acc + toNumber(n), 0);
44
- const spese2 = c2Spese.reduce((acc, n) => acc + toNumber(n), 0);
51
+ const speseBase1 = c1Spese.reduce((acc, n) => acc + toNumber(n), 0);
52
+ const speseBase2 = c2Spese.reduce((acc, n) => acc + toNumber(n), 0);
53
+ const spese1 = speseBase1 + quotaMutuoSpese1;
54
+ const spese2 = speseBase2 + quotaMutuoSpese2;
45
55
  const speseTot = spese1 + spese2;
46
56
 
47
57
  const disp1 = r1 + aPerc1 + aFam1 - aPag1 - spese1;
@@ -85,6 +95,33 @@ function calculateModel(input) {
85
95
  assegnoDa2a1 = nonCollocatario === 2 ? contributoIndiretto : 0;
86
96
  }
87
97
 
98
+ const assegnoBaseDa1a2 = assegnoDa1a2;
99
+ const assegnoBaseDa2a1 = assegnoDa2a1;
100
+
101
+ const assigned = primaCasaAssegnataA === '1' || primaCasaAssegnataA === '2' ? primaCasaAssegnataA : '';
102
+ const primaCasaConsidered = primaCasaMutuoEnabled
103
+ && primaCasaMutuoImporto > 0
104
+ && assigned !== ''
105
+ && Number(assigned) === collocatario;
106
+ let primaCasaTransfer1to2 = 0;
107
+ let primaCasaTransfer2to1 = 0;
108
+ if (primaCasaConsidered) {
109
+ if (assigned === '1') {
110
+ primaCasaTransfer2to1 = Math.max(0, quotaMutuoSpese2);
111
+ } else if (assigned === '2') {
112
+ primaCasaTransfer1to2 = Math.max(0, quotaMutuoSpese1);
113
+ }
114
+ }
115
+
116
+ assegnoDa1a2 = Math.max(0, assegnoDa1a2 - primaCasaTransfer1to2);
117
+ assegnoDa2a1 = Math.max(0, assegnoDa2a1 - primaCasaTransfer2to1);
118
+
119
+ const compensativeBenefits = [];
120
+ if (aFam1 > 0.005) compensativeBenefits.push({ type: 'family', to: 1, amount: aFam1 });
121
+ if (aFam2 > 0.005) compensativeBenefits.push({ type: 'family', to: 2, amount: aFam2 });
122
+ if (primaCasaTransfer1to2 > 0.005) compensativeBenefits.push({ type: 'primary-home-mortgage', from: 1, to: 2, amount: primaCasaTransfer1to2 });
123
+ if (primaCasaTransfer2to1 > 0.005) compensativeBenefits.push({ type: 'primary-home-mortgage', from: 2, to: 1, amount: primaCasaTransfer2to1 });
124
+
88
125
  const post1 = disp1 - assegnoDa1a2 + assegnoDa2a1;
89
126
  const post2 = disp2 - assegnoDa2a1 + assegnoDa1a2;
90
127
 
@@ -92,6 +129,7 @@ function calculateModel(input) {
92
129
  r1, r2, r1Raw, r2Raw, incomeMode, figli, perm1, perm2,
93
130
  aPerc1, aPag1, aPerc2, aPag2, aFam1, aFam2,
94
131
  match12, match21, esternoPag1, esternoPag2,
132
+ speseBase1, speseBase2, quotaMutuoSpese1, quotaMutuoSpese2,
95
133
  spese1, spese2, speseTot,
96
134
  disp1, disp2, peso1, peso2,
97
135
  mode, simplePerc,
@@ -99,6 +137,12 @@ function calculateModel(input) {
99
137
  fabbisognoFigli, quotaTeorica1, quotaTeorica2,
100
138
  quotaDiretta1, quotaDiretta2,
101
139
  saldo1, saldo2,
140
+ assegnoBaseDa1a2, assegnoBaseDa2a1,
141
+ primaCasaMutuoEnabled, primaCasaMutuoImporto,
142
+ primaCasaAssegnataA: assigned,
143
+ primaCasaMutuoPerc1, primaCasaMutuoPerc2,
144
+ primaCasaConsidered, primaCasaTransfer1to2, primaCasaTransfer2to1,
145
+ compensativeBenefits,
102
146
  assegnoDa1a2, assegnoDa2a1,
103
147
  post1, post2
104
148
  };