ccnl-engine 0.1.0__py3-none-any.whl
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.
- ccnl_engine/__init__.py +1 -0
- ccnl_engine/contracts/__init__.py +1 -0
- ccnl_engine/contracts/data/__init__.py +1 -0
- ccnl_engine/contracts/data/acconciatura-estetica-confartigianato.json +412 -0
- ccnl_engine/contracts/data/agenzie-viaggio-fiavet.json +618 -0
- ccnl_engine/contracts/data/alimentari-federalimentare.json +866 -0
- ccnl_engine/contracts/data/autoferrotranvieri-internavigatori.json +2095 -0
- ccnl_engine/contracts/data/bancari-abi.json +468 -0
- ccnl_engine/contracts/data/bcc-credito-cooperativo.json +493 -0
- ccnl_engine/contracts/data/calzaturiero-assocalzaturifici.json +505 -0
- ccnl_engine/contracts/data/carta-cartone-assocarta.json +751 -0
- ccnl_engine/contracts/data/ceramica-industria-confindustria.json +739 -0
- ccnl_engine/contracts/data/chimica-affini-pmi-unionchimica.json +390 -0
- ccnl_engine/contracts/data/chimica-farmaceutica-federchimica.json +713 -0
- ccnl_engine/contracts/data/commercio-confcommercio.json +723 -0
- ccnl_engine/contracts/data/comunicazione-artigianato-confartigianato.json +525 -0
- ccnl_engine/contracts/data/cooperative-sociali.json +748 -0
- ccnl_engine/contracts/data/dirigenza-funzioni-centrali-aran.json +126 -0
- ccnl_engine/contracts/data/dirigenza-funzioni-locali-aran.json +115 -0
- ccnl_engine/contracts/data/dirigenza-istruzione-ricerca-aran.json +136 -0
- ccnl_engine/contracts/data/dirigenza-sanitaria-area-sanita-aran.json +141 -0
- ccnl_engine/contracts/data/dirigenza-sanitaria-medico-veterinaria-aran.json +144 -0
- ccnl_engine/contracts/data/dmo-federdistribuzione.json +749 -0
- ccnl_engine/contracts/data/edilizia-ance.json +374 -0
- ccnl_engine/contracts/data/edilizia-artigianato-cna.json +867 -0
- ccnl_engine/contracts/data/elettrico-elettricita-futura.json +910 -0
- ccnl_engine/contracts/data/funzioni-centrali-aran.json +168 -0
- ccnl_engine/contracts/data/funzioni-locali-aran.json +189 -0
- ccnl_engine/contracts/data/gas-acqua-utilitalia.json +713 -0
- ccnl_engine/contracts/data/gomma-plastica-federazione-gomma-plastica.json +669 -0
- ccnl_engine/contracts/data/grafica-editoria-aieg.json +705 -0
- ccnl_engine/contracts/data/igiene-ambientale-utilitalia.json +1316 -0
- ccnl_engine/contracts/data/impiegati-tecnici-agricoli.json +282 -0
- ccnl_engine/contracts/data/istruzione-ricerca-aran.json +222 -0
- ccnl_engine/contracts/data/lavoro-domestico-convivente.json +309 -0
- ccnl_engine/contracts/data/lavoro-domestico-non-convivente.json +280 -0
- ccnl_engine/contracts/data/legno-arredamento-federlegno.json +1266 -0
- ccnl_engine/contracts/data/legno-lapidei-artigianato-confartigianato.json +587 -0
- ccnl_engine/contracts/data/logistica-trasporto-confetra.json +473 -0
- ccnl_engine/contracts/data/metalmeccanico-artigianato.json +689 -0
- ccnl_engine/contracts/data/metalmeccanico-confapi.json +471 -0
- ccnl_engine/contracts/data/metalmeccanico-federmeccanica.json +625 -0
- ccnl_engine/contracts/data/multiservizi-anip.json +1461 -0
- ccnl_engine/contracts/data/operai-agricoli-florovivaisti.json +206 -0
- ccnl_engine/contracts/data/orafi-argentieri-industria-federorafi.json +460 -0
- ccnl_engine/contracts/data/panificazione-artigianato-confartigianato.json +729 -0
- ccnl_engine/contracts/data/panificazione-assipan.json +312 -0
- ccnl_engine/contracts/data/pelli-cuoio-industria-assopellettieri.json +486 -0
- ccnl_engine/contracts/data/pubblici-esercizi-fipe-angem.json +585 -0
- ccnl_engine/contracts/data/sanita-aran.json +192 -0
- ccnl_engine/contracts/data/sanita-privata-aiop-aris.json +534 -0
- ccnl_engine/contracts/data/studi-professionali-confprofessioni.json +466 -0
- ccnl_engine/contracts/data/telecomunicazioni-asstel.json +488 -0
- ccnl_engine/contracts/data/terziario-confesercenti.json +568 -0
- ccnl_engine/contracts/data/tessile-moda-artigianato-confartigianato.json +505 -0
- ccnl_engine/contracts/data/tessile-smi.json +646 -0
- ccnl_engine/contracts/data/trasporto-aereo-assaeroporti.json +946 -0
- ccnl_engine/contracts/data/trasporto-ferroviario-agens.json +695 -0
- ccnl_engine/contracts/data/turismo-confcommercio.json +580 -0
- ccnl_engine/contracts/data/turismo-federalberghi.json +628 -0
- ccnl_engine/contracts/data/uneba-uneba.json +571 -0
- ccnl_engine/contracts/data/vigilanza-privata-assiv.json +459 -0
- ccnl_engine/contracts/loaders.py +22 -0
- ccnl_engine/engine/__init__.py +1 -0
- ccnl_engine/engine/compute.py +583 -0
- ccnl_engine/engine/contributions.py +122 -0
- ccnl_engine/engine/irpef.py +80 -0
- ccnl_engine/engine/result.py +57 -0
- ccnl_engine/engine/rounding.py +14 -0
- ccnl_engine/models/__init__.py +1 -0
- ccnl_engine/models/apprenticeship.py +152 -0
- ccnl_engine/models/ccnl.py +492 -0
- ccnl_engine/models/employment.py +42 -0
- ccnl_engine/models/validity.py +79 -0
- ccnl_engine/py.typed +0 -0
- ccnl_engine/tax/__init__.py +1 -0
- ccnl_engine/tax/data/2026-agricoltura.json +61 -0
- ccnl_engine/tax/data/2026-artigianato.json +82 -0
- ccnl_engine/tax/data/2026-credito.json +77 -0
- ccnl_engine/tax/data/2026-edilizia.json +92 -0
- ccnl_engine/tax/data/2026-industria.json +91 -0
- ccnl_engine/tax/data/2026-lavoro-domestico.json +54 -0
- ccnl_engine/tax/data/2026-pubblica-amministrazione.json +75 -0
- ccnl_engine/tax/data/2026-terziario.json +87 -0
- ccnl_engine/tax/data/__init__.py +1 -0
- ccnl_engine/tax/loaders.py +163 -0
- ccnl_engine/tax/models.py +481 -0
- ccnl_engine-0.1.0.dist-info/METADATA +181 -0
- ccnl_engine-0.1.0.dist-info/RECORD +92 -0
- ccnl_engine-0.1.0.dist-info/WHEEL +5 -0
- ccnl_engine-0.1.0.dist-info/licenses/LICENSE +21 -0
- ccnl_engine-0.1.0.dist-info/top_level.txt +1 -0
ccnl_engine/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""ccnl_engine package."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""CCNL contract data and loaders."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Bundled CCNL contract JSON data files."""
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "0.3",
|
|
3
|
+
"meta": {
|
|
4
|
+
"id": "acconciatura-estetica-confartigianato",
|
|
5
|
+
"name": "CCNL Acconciatura ed Estetica — Confartigianato/CNA",
|
|
6
|
+
"cnel_code": "H515",
|
|
7
|
+
"sector": "acconciatura ed estetica",
|
|
8
|
+
"tax_sector": "artigianato",
|
|
9
|
+
"signatories": [
|
|
10
|
+
"Confartigianato Benessere-Acconciatori",
|
|
11
|
+
"CNA Unione Benessere e Sanità",
|
|
12
|
+
"Casartigiani",
|
|
13
|
+
"CLAAI",
|
|
14
|
+
"FILCAMS-CGIL",
|
|
15
|
+
"FISASCAT-CISL",
|
|
16
|
+
"UILTUCS-UIL"
|
|
17
|
+
],
|
|
18
|
+
"sources": [
|
|
19
|
+
{
|
|
20
|
+
"url": "https://www.confartigianatomarcatrevigiana.it/wp-content/uploads/2024/09/ccnl-benessere-app.prof-fino-30.9.24.pdf",
|
|
21
|
+
"type": "official_contract",
|
|
22
|
+
"agreement_date": "2024-05-20"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"url": "https://www.studiomion.it/tabelle-retributive/tabelle-retributive-acconciatura-estetica/",
|
|
26
|
+
"type": "table",
|
|
27
|
+
"agreement_date": "2024-05-20"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"url": "https://www.ilccnl.it/contratto/acconciatura-estetica/",
|
|
31
|
+
"type": "table",
|
|
32
|
+
"agreement_date": null
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"extraction": {
|
|
36
|
+
"method": "manual",
|
|
37
|
+
"model": null,
|
|
38
|
+
"timestamp": "2026-09-02T00:00:00",
|
|
39
|
+
"human_reviewed": true
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"coverage": {
|
|
43
|
+
"layer_1": "implemented",
|
|
44
|
+
"layer_2": "implemented",
|
|
45
|
+
"notes": [
|
|
46
|
+
"INFO: SALARY MODEL: conglobated (minimi tabellari conglobati — contingenza and EDR fully absorbed). Back-calculation: May 2024 L3=1379.00/173=7.97 EUR/h; L2=1454.58/173=8.41 EUR/h; L1=1592.29/173=9.20 EUR/h — consistent divisor confirms conglobated model (lexplain.it + ilccnl.it).",
|
|
47
|
+
"INFO: TRANCHE DATES: four tranches — 2024-05-01 (retroactive, renewal signed 20 May 2024), 2025-01-01, 2026-01-01, 2026-10-01. Source: studiomion.it salary tables; cross-checked ilccnl.it for Jan 2026 values.",
|
|
48
|
+
"INFO: HOURLY DIVISOR: 173, derived from 40-hour work week (Art. 12 CCNL). Formula: 40 h/week × 52/12 = 173.33, rounded to 173 per contract usage. Confirmed: 1379.00/7.97=173.0 (L3 May 2024).",
|
|
49
|
+
"INFO: ADDITIONAL MONTHS: 13 (tredicesima only). Source: ilccnl.it Art. 40; informaimpresa.it ('tredici mensilità' explicitly stated as basis for Responsabile Tecnico allowance calculation).",
|
|
50
|
+
"INFO: SENIORITY: biennale (every 24 months), maximum 5 scatti. Per-level amounts: L1=9.30, L2=8.26, L3=7.75, L4=7.23 EUR/scatto. Source: ilccnl.it (current database), cross-checked CISL 2013 PDF (amounts unchanged by 2024 renewal, which only introduced a 6 EUR apprentice-specific scatto).",
|
|
51
|
+
"INFO: APPRENTICESHIP Gruppo 1 (acconciatori, estetisti, tricologi, tatuatori → destination level 3, max 5 years), track 'gruppo_1'. Primary source: Confartigianato Marca Trevigiana PDF (ccnl-benessere-app.prof-fino-30.9.24.pdf) for the pre-Oct-2024 table; post-Oct-2024 update (filcams.cgil.it + fisascat.it) raised months 1-12 from 65% to 70%, making months 1-18 uniformly 70%. Modelled table: 0-18=70%, 18-24=78%, 24-36=85%, 36-48=90%, 48-54=95%, 54+=100%.",
|
|
52
|
+
"SIMPLIFICATION: APPRENTICESHIP Gruppo 2 (manicure/pedicure → level 3, max 18 months, 70%/80%/100%), track 'gruppo_2': the three percentages are mapped to 6-month periods (0-6, 6-12, 12-18). Select with Apprentice(track='gruppo_2'); without a track name level 3 is ambiguous.",
|
|
53
|
+
"SIMPLIFICATION: APPRENTICESHIP DURATION (TAB.3): the 6-month reduction for post-secondary qualification holders (Gruppo 1: 54 months instead of 60) is not modelled; the standard 60-month table applies.",
|
|
54
|
+
"INFO: APPRENTICE SENIORITY: apprentice-specific scatto of 6 EUR (Art. 25 of the 2024 renewal, from 2024-10-01) modelled as seniority_increments.apprentice_amount.",
|
|
55
|
+
"INFO: RESPONSABILE TECNICO: 100 EUR x 13 mensilità for workers designated Responsabile Tecnico at level 1 or 2, modelled as a role-scoped allowance (role 'responsabile_tecnico').",
|
|
56
|
+
"INFO: PRE-MAY-2024 SALARY: the final tranche of the 2022 renewal (from 2023-02-01: L1=1511.46, L2=1380.74, L3=1309.00, L4=1234.19) is modelled; earlier periods are not.",
|
|
57
|
+
"INFO: INPS: reuses 2026-artigianato.json (ARTIGIANATO sector).",
|
|
58
|
+
"INFO: APPRENTICESHIP Gruppo 3 (impiegati amministrativi, destination level 2, 3 anni / 6 semestri): 70/70/70/78/85/85 per semester. Source: consulenza.it circolare acconciatura 2024; lexplain.it tabella apprendistato acconciatori (medium-high confidence: two concordant secondary sources; primary accordo tables not online)."
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"parameters": {
|
|
62
|
+
"hourly_divisor": {
|
|
63
|
+
"periods": [
|
|
64
|
+
{
|
|
65
|
+
"valid_from": "2023-02-01",
|
|
66
|
+
"valid_until": null,
|
|
67
|
+
"value": "173"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"additional_months": {
|
|
72
|
+
"periods": [
|
|
73
|
+
{
|
|
74
|
+
"valid_from": "2023-02-01",
|
|
75
|
+
"valid_until": null,
|
|
76
|
+
"value": "13"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"seniority_increments": {
|
|
81
|
+
"cadence_months": 24,
|
|
82
|
+
"maximum_count": 5,
|
|
83
|
+
"amount_by_level": {
|
|
84
|
+
"4": {
|
|
85
|
+
"periods": [
|
|
86
|
+
{
|
|
87
|
+
"valid_from": "2023-02-01",
|
|
88
|
+
"valid_until": null,
|
|
89
|
+
"value": "7.23"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"3": {
|
|
94
|
+
"periods": [
|
|
95
|
+
{
|
|
96
|
+
"valid_from": "2023-02-01",
|
|
97
|
+
"valid_until": null,
|
|
98
|
+
"value": "7.75"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
"2": {
|
|
103
|
+
"periods": [
|
|
104
|
+
{
|
|
105
|
+
"valid_from": "2023-02-01",
|
|
106
|
+
"valid_until": null,
|
|
107
|
+
"value": "8.26"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"1": {
|
|
112
|
+
"periods": [
|
|
113
|
+
{
|
|
114
|
+
"valid_from": "2023-02-01",
|
|
115
|
+
"valid_until": null,
|
|
116
|
+
"value": "9.30"
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"apprentice_amount": {
|
|
122
|
+
"periods": [
|
|
123
|
+
{
|
|
124
|
+
"valid_from": "2024-10-01",
|
|
125
|
+
"valid_until": null,
|
|
126
|
+
"value": "6.00"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"levels": [
|
|
133
|
+
{
|
|
134
|
+
"code": "4",
|
|
135
|
+
"order": 1,
|
|
136
|
+
"description": "Level 4 — auxiliary worker / entry-level apprentice",
|
|
137
|
+
"base_salary": {
|
|
138
|
+
"periods": [
|
|
139
|
+
{
|
|
140
|
+
"valid_from": "2023-02-01",
|
|
141
|
+
"valid_until": "2024-05-01",
|
|
142
|
+
"value": "1234.19"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"valid_from": "2024-05-01",
|
|
146
|
+
"valid_until": "2025-01-01",
|
|
147
|
+
"value": "1300.19"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"valid_from": "2025-01-01",
|
|
151
|
+
"valid_until": "2026-01-01",
|
|
152
|
+
"value": "1347.33"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"valid_from": "2026-01-01",
|
|
156
|
+
"valid_until": "2026-10-01",
|
|
157
|
+
"value": "1387.87"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"valid_from": "2026-10-01",
|
|
161
|
+
"valid_until": null,
|
|
162
|
+
"value": "1406.73"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
"fixed_allowances": [],
|
|
167
|
+
"category": "operaio"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"code": "3",
|
|
171
|
+
"order": 2,
|
|
172
|
+
"description": "Level 3 — qualified worker (hairdresser/beautician)",
|
|
173
|
+
"base_salary": {
|
|
174
|
+
"periods": [
|
|
175
|
+
{
|
|
176
|
+
"valid_from": "2023-02-01",
|
|
177
|
+
"valid_until": "2024-05-01",
|
|
178
|
+
"value": "1309.00"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"valid_from": "2024-05-01",
|
|
182
|
+
"valid_until": "2025-01-01",
|
|
183
|
+
"value": "1379.00"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"valid_from": "2025-01-01",
|
|
187
|
+
"valid_until": "2026-01-01",
|
|
188
|
+
"value": "1429.00"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"valid_from": "2026-01-01",
|
|
192
|
+
"valid_until": "2026-10-01",
|
|
193
|
+
"value": "1472.00"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"valid_from": "2026-10-01",
|
|
197
|
+
"valid_until": null,
|
|
198
|
+
"value": "1492.00"
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
"fixed_allowances": [],
|
|
203
|
+
"category": "operaio"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"code": "2",
|
|
207
|
+
"order": 3,
|
|
208
|
+
"description": "Level 2 — specialist worker / technical supervisor",
|
|
209
|
+
"base_salary": {
|
|
210
|
+
"periods": [
|
|
211
|
+
{
|
|
212
|
+
"valid_from": "2023-02-01",
|
|
213
|
+
"valid_until": "2024-05-01",
|
|
214
|
+
"value": "1380.74"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"valid_from": "2024-05-01",
|
|
218
|
+
"valid_until": "2025-01-01",
|
|
219
|
+
"value": "1454.58"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"valid_from": "2025-01-01",
|
|
223
|
+
"valid_until": "2026-01-01",
|
|
224
|
+
"value": "1507.32"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"valid_from": "2026-01-01",
|
|
228
|
+
"valid_until": "2026-10-01",
|
|
229
|
+
"value": "1552.68"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"valid_from": "2026-10-01",
|
|
233
|
+
"valid_until": null,
|
|
234
|
+
"value": "1573.78"
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
"fixed_allowances": [
|
|
239
|
+
{
|
|
240
|
+
"code": "RESPONSABILE_TECNICO",
|
|
241
|
+
"description": "Technical Supervisor Allowance (employer designation), 100 EUR x 13 monthly payments",
|
|
242
|
+
"monthly": {
|
|
243
|
+
"periods": [
|
|
244
|
+
{
|
|
245
|
+
"valid_from": "2023-02-01",
|
|
246
|
+
"valid_until": null,
|
|
247
|
+
"value": "100.00"
|
|
248
|
+
}
|
|
249
|
+
]
|
|
250
|
+
},
|
|
251
|
+
"role": "responsabile_tecnico"
|
|
252
|
+
}
|
|
253
|
+
],
|
|
254
|
+
"category": "operaio"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"code": "1",
|
|
258
|
+
"order": 4,
|
|
259
|
+
"description": "Level 1 — technical director / senior supervisor",
|
|
260
|
+
"base_salary": {
|
|
261
|
+
"periods": [
|
|
262
|
+
{
|
|
263
|
+
"valid_from": "2023-02-01",
|
|
264
|
+
"valid_until": "2024-05-01",
|
|
265
|
+
"value": "1511.46"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"valid_from": "2024-05-01",
|
|
269
|
+
"valid_until": "2025-01-01",
|
|
270
|
+
"value": "1592.29"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"valid_from": "2025-01-01",
|
|
274
|
+
"valid_until": "2026-01-01",
|
|
275
|
+
"value": "1650.02"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"valid_from": "2026-01-01",
|
|
279
|
+
"valid_until": "2026-10-01",
|
|
280
|
+
"value": "1699.67"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"valid_from": "2026-10-01",
|
|
284
|
+
"valid_until": null,
|
|
285
|
+
"value": "1722.76"
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
},
|
|
289
|
+
"fixed_allowances": [
|
|
290
|
+
{
|
|
291
|
+
"code": "RESPONSABILE_TECNICO",
|
|
292
|
+
"description": "Technical Supervisor Allowance (employer designation), 100 EUR x 13 monthly payments",
|
|
293
|
+
"monthly": {
|
|
294
|
+
"periods": [
|
|
295
|
+
{
|
|
296
|
+
"valid_from": "2023-02-01",
|
|
297
|
+
"valid_until": null,
|
|
298
|
+
"value": "100.00"
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
},
|
|
302
|
+
"role": "responsabile_tecnico"
|
|
303
|
+
}
|
|
304
|
+
],
|
|
305
|
+
"category": "impiegato"
|
|
306
|
+
}
|
|
307
|
+
],
|
|
308
|
+
"apprenticeship": [
|
|
309
|
+
{
|
|
310
|
+
"type": "percentage",
|
|
311
|
+
"name": "gruppo_1",
|
|
312
|
+
"destination_levels": [
|
|
313
|
+
"3"
|
|
314
|
+
],
|
|
315
|
+
"periods": [
|
|
316
|
+
{
|
|
317
|
+
"months_from": 0,
|
|
318
|
+
"months_until": 18,
|
|
319
|
+
"percentage": "0.70"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"months_from": 18,
|
|
323
|
+
"months_until": 24,
|
|
324
|
+
"percentage": "0.78"
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"months_from": 24,
|
|
328
|
+
"months_until": 36,
|
|
329
|
+
"percentage": "0.85"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"months_from": 36,
|
|
333
|
+
"months_until": 48,
|
|
334
|
+
"percentage": "0.90"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"months_from": 48,
|
|
338
|
+
"months_until": 54,
|
|
339
|
+
"percentage": "0.95"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"months_from": 54,
|
|
343
|
+
"months_until": null,
|
|
344
|
+
"percentage": "1.00"
|
|
345
|
+
}
|
|
346
|
+
]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"type": "percentage",
|
|
350
|
+
"name": "gruppo_2",
|
|
351
|
+
"destination_levels": [
|
|
352
|
+
"3"
|
|
353
|
+
],
|
|
354
|
+
"periods": [
|
|
355
|
+
{
|
|
356
|
+
"months_from": 0,
|
|
357
|
+
"months_until": 6,
|
|
358
|
+
"percentage": "0.70"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"months_from": 6,
|
|
362
|
+
"months_until": 12,
|
|
363
|
+
"percentage": "0.80"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"months_from": 12,
|
|
367
|
+
"months_until": null,
|
|
368
|
+
"percentage": "1.00"
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"type": "percentage",
|
|
374
|
+
"name": "gruppo_3",
|
|
375
|
+
"destination_levels": [
|
|
376
|
+
"2"
|
|
377
|
+
],
|
|
378
|
+
"periods": [
|
|
379
|
+
{
|
|
380
|
+
"months_from": 0,
|
|
381
|
+
"months_until": 6,
|
|
382
|
+
"percentage": "0.70"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"months_from": 6,
|
|
386
|
+
"months_until": 12,
|
|
387
|
+
"percentage": "0.70"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"months_from": 12,
|
|
391
|
+
"months_until": 18,
|
|
392
|
+
"percentage": "0.70"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"months_from": 18,
|
|
396
|
+
"months_until": 24,
|
|
397
|
+
"percentage": "0.78"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"months_from": 24,
|
|
401
|
+
"months_until": 30,
|
|
402
|
+
"percentage": "0.85"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"months_from": 30,
|
|
406
|
+
"months_until": null,
|
|
407
|
+
"percentage": "0.85"
|
|
408
|
+
}
|
|
409
|
+
]
|
|
410
|
+
}
|
|
411
|
+
]
|
|
412
|
+
}
|