mantenimento-app 2.2.5 → 2.2.6

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.
package/app.js CHANGED
@@ -3457,15 +3457,17 @@ const defaultExpenseItems = [
3457
3457
  const housingUtilityNonColl = collocatario === 1 ? housingUtility2 : housingUtility1;
3458
3458
 
3459
3459
  const baseDuplicazione = speseConvivenza > 0 ? (speseTot - speseConvivenza) : null;
3460
+ // OECD-modified equivalence logic suggests split-household extra burden is material but not full duplication.
3461
+ const HOUSING_UTILITY_ADJ_FACTOR = 0.35;
3460
3462
  const separationAdjustmentHousingUtilities = baseDuplicazione !== null && baseDuplicazione <= 0.005
3461
- ? Math.max(0, housingUtilityNonColl)
3463
+ ? Math.max(0, housingUtilityNonColl * HOUSING_UTILITY_ADJ_FACTOR)
3462
3464
  : 0;
3463
- const speseConvivenzaEffettive = speseConvivenza > 0
3464
- ? Math.max(0, speseConvivenza - separationAdjustmentHousingUtilities)
3465
+ const speseConvivenzaEffettive = speseConvivenza > 0 ? speseConvivenza : null;
3466
+ const costoSeparazioneMensile = baseDuplicazione !== null
3467
+ ? Math.max(0, baseDuplicazione + separationAdjustmentHousingUtilities)
3465
3468
  : null;
3466
- const costoSeparazioneMensile = speseConvivenzaEffettive !== null ? (speseTot - speseConvivenzaEffettive) : null;
3467
3469
  const nettoInsiemeCombinato = speseConvivenzaEffettive !== null ? (r1 + r2 - speseConvivenzaEffettive) : null;
3468
- const nettoSeparatoTotale = post1 + post2;
3470
+ const nettoSeparatoTotale = (post1 + post2) - separationAdjustmentHousingUtilities;
3469
3471
  const perditaMensile = nettoInsiemeCombinato !== null ? nettoInsiemeCombinato - nettoSeparatoTotale : null;
3470
3472
  const perditaAnnua = perditaMensile !== null ? perditaMensile * 12 : null;
3471
3473
  const totReddito = Math.max(0.001, r1 + r2);
@@ -132,15 +132,16 @@ function calculateModel(input) {
132
132
  const housingUtility2 = c2Spese.reduce((acc, n, idx) => acc + (housingIdx.has(idx) ? toNumber(n) : 0), 0) + quotaMutuoSpese2;
133
133
  const housingUtilityNonColl = collocatario === 1 ? housingUtility2 : housingUtility1;
134
134
  const baseDuplicazione = speseConvivenza > 0 ? (speseTot - speseConvivenza) : null;
135
+ const HOUSING_UTILITY_ADJ_FACTOR = 0.35;
135
136
  const separationAdjustmentHousingUtilities = baseDuplicazione !== null && baseDuplicazione <= 0.005
136
- ? Math.max(0, housingUtilityNonColl)
137
+ ? Math.max(0, housingUtilityNonColl * HOUSING_UTILITY_ADJ_FACTOR)
137
138
  : 0;
138
- const speseConvivenzaEffettive = speseConvivenza > 0
139
- ? Math.max(0, speseConvivenza - separationAdjustmentHousingUtilities)
139
+ const speseConvivenzaEffettive = speseConvivenza > 0 ? speseConvivenza : null;
140
+ const costoSeparazioneMensile = baseDuplicazione !== null
141
+ ? Math.max(0, baseDuplicazione + separationAdjustmentHousingUtilities)
140
142
  : null;
141
- const costoSeparazioneMensile = speseConvivenzaEffettive !== null ? (speseTot - speseConvivenzaEffettive) : null;
142
143
  const nettoInsiemeCombinato = speseConvivenzaEffettive !== null ? (r1 + r2 - speseConvivenzaEffettive) : null;
143
- const nettoSeparatoTotale = post1 + post2;
144
+ const nettoSeparatoTotale = (post1 + post2) - separationAdjustmentHousingUtilities;
144
145
  const perditaMensile = nettoInsiemeCombinato !== null ? nettoInsiemeCombinato - nettoSeparatoTotale : null;
145
146
  const perditaAnnua = perditaMensile !== null ? perditaMensile * 12 : null;
146
147
  const totReddito = Math.max(0.001, r1 + r2);
@@ -3457,15 +3457,17 @@ const defaultExpenseItems = [
3457
3457
  const housingUtilityNonColl = collocatario === 1 ? housingUtility2 : housingUtility1;
3458
3458
 
3459
3459
  const baseDuplicazione = speseConvivenza > 0 ? (speseTot - speseConvivenza) : null;
3460
+ // OECD-modified equivalence logic suggests split-household extra burden is material but not full duplication.
3461
+ const HOUSING_UTILITY_ADJ_FACTOR = 0.35;
3460
3462
  const separationAdjustmentHousingUtilities = baseDuplicazione !== null && baseDuplicazione <= 0.005
3461
- ? Math.max(0, housingUtilityNonColl)
3463
+ ? Math.max(0, housingUtilityNonColl * HOUSING_UTILITY_ADJ_FACTOR)
3462
3464
  : 0;
3463
- const speseConvivenzaEffettive = speseConvivenza > 0
3464
- ? Math.max(0, speseConvivenza - separationAdjustmentHousingUtilities)
3465
+ const speseConvivenzaEffettive = speseConvivenza > 0 ? speseConvivenza : null;
3466
+ const costoSeparazioneMensile = baseDuplicazione !== null
3467
+ ? Math.max(0, baseDuplicazione + separationAdjustmentHousingUtilities)
3465
3468
  : null;
3466
- const costoSeparazioneMensile = speseConvivenzaEffettive !== null ? (speseTot - speseConvivenzaEffettive) : null;
3467
3469
  const nettoInsiemeCombinato = speseConvivenzaEffettive !== null ? (r1 + r2 - speseConvivenzaEffettive) : null;
3468
- const nettoSeparatoTotale = post1 + post2;
3470
+ const nettoSeparatoTotale = (post1 + post2) - separationAdjustmentHousingUtilities;
3469
3471
  const perditaMensile = nettoInsiemeCombinato !== null ? nettoInsiemeCombinato - nettoSeparatoTotale : null;
3470
3472
  const perditaAnnua = perditaMensile !== null ? perditaMensile * 12 : null;
3471
3473
  const totReddito = Math.max(0.001, r1 + r2);
@@ -599,7 +599,7 @@
599
599
  <script src="supabase.min.js"></script>
600
600
  <script src="fabric.min.js"></script>
601
601
  <script src="html2pdf.bundle.min.js"></script>
602
- <script src="app.js?v=2.2.5"></script>
602
+ <script src="app.js?v=2.2.6"></script>
603
603
  </body>
604
604
  </html>
605
605
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mantenimento-app",
3
- "version": "2.2.5",
3
+ "version": "2.2.6",
4
4
  "description": "Frontend + backend architecture for the mantenimento calculator",
5
5
  "type": "commonjs",
6
6
  "main": "backend/calculate-model.js",