284 lines
8.3 KiB
JSON
284 lines
8.3 KiB
JSON
{
|
||
"steps": [
|
||
{
|
||
"id": "welcome",
|
||
"order": 0,
|
||
"title": "Benvenuto",
|
||
"description": "",
|
||
"type": "intro",
|
||
"fields": [],
|
||
"attachments": [],
|
||
"pricing": [],
|
||
"next": "taxpayer"
|
||
},
|
||
|
||
{
|
||
"id": "taxpayer",
|
||
"order": 1,
|
||
"title": "Dati contribuente e dichiarazione precedente",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "prevPreparedByUs", "type": "boolean", "required": true },
|
||
{ "key": "prevDeclaration", "type": "file", "requiredIf": { "prevPreparedByUs": false } },
|
||
|
||
{ "key": "taxpayer.firstName", "type": "string", "required": true },
|
||
{ "key": "taxpayer.lastName", "type": "string", "required": true },
|
||
{ "key": "taxpayer.birthDate", "type": "date", "required": true },
|
||
{ "key": "taxpayer.address", "type": "string", "required": true },
|
||
{ "key": "taxpayer.zip", "type": "string", "required": true },
|
||
{ "key": "taxpayer.city", "type": "string", "required": true }
|
||
],
|
||
"attachments": ["prevDeclaration"],
|
||
"pricing": [],
|
||
"next": "marital"
|
||
},
|
||
|
||
{
|
||
"id": "marital",
|
||
"order": 2,
|
||
"title": "Stato civile",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "maritalStatus", "type": "enum", "values": ["SINGLE", "MARRIED","PARTNERED"], "required": true },
|
||
|
||
{ "key": "spouse.firstName", "type": "string", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } },
|
||
{ "key": "spouse.lastName", "type": "string", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } },
|
||
{ "key": "spouse.birthDate", "type": "date", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } },
|
||
{ "key": "spouse.address", "type": "string", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } },
|
||
{ "key": "spouse.zip", "type": "string", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } },
|
||
{ "key": "spouse.city", "type": "string", "requiredIf": { "maritalStatus": ["MARRIED","PARTNERED"] } }
|
||
],
|
||
"attachments": [],
|
||
"pricing": [
|
||
{ "amountCHF": 10, "condition": { "maritalStatus": ["MARRIED","PARTNERED"] } }
|
||
],
|
||
"next": "children"
|
||
},
|
||
|
||
{
|
||
"id": "children",
|
||
"order": 3,
|
||
"title": "Figli",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasChildren", "type": "boolean", "required": true },
|
||
|
||
{
|
||
"key": "children",
|
||
"type": "array",
|
||
"maxItems": 5,
|
||
"item": {
|
||
"firstName": "string",
|
||
"lastName": "string",
|
||
"birthDate": "date",
|
||
"sameHousehold": "boolean",
|
||
"addressIfDifferent": "string",
|
||
"school": "string",
|
||
"careCosts": "file"
|
||
}
|
||
},
|
||
|
||
{ "key": "moreThanFiveChildrenNote", "type": "string", "required": false }
|
||
],
|
||
"attachments": ["children[*].careCosts"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "perItem": "children" }
|
||
],
|
||
"next": "income"
|
||
},
|
||
|
||
{
|
||
"id": "income",
|
||
"order": 4,
|
||
"title": "Redditi",
|
||
"description": "",
|
||
"fields": [
|
||
{
|
||
"key": "incomeTypes",
|
||
"type": "array",
|
||
"values": ["EMPLOYED", "SELF_EMPLOYED", "PENSIONER", "UNEMPLOYED"]
|
||
},
|
||
|
||
{ "key": "employment.percent", "type": "number", "requiredIf": { "incomeTypes": "EMPLOYED" } },
|
||
{ "key": "employment.detailsUnder70", "type": "string", "requiredIf": { "employment.percent": "<70" } }
|
||
],
|
||
"attachments": [
|
||
"salaryCertificate",
|
||
"accountingDocuments",
|
||
"avsCertificate",
|
||
"lppCertificate",
|
||
"unemploymentCertificate"
|
||
],
|
||
"pricing": [],
|
||
"next": "professionalExpenses"
|
||
},
|
||
|
||
{
|
||
"id": "professionalExpenses",
|
||
"order": 5,
|
||
"title": "Spese professionali",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "expensesChanged", "type": "boolean", "required": true },
|
||
{ "key": "workplaceDescription", "type": "string", "requiredIf": { "expensesChanged": true } },
|
||
{ "key": "commuteMethod", "type": "enum", "values": ["CAR", "BUS", "BIKE", "WALK"] },
|
||
{ "key": "commuteKm", "type": "number" },
|
||
{ "key": "lunchAtHome", "type": "boolean" },
|
||
{ "key": "eatsOut", "type": "boolean" },
|
||
{ "key": "hasCanteenOrVouchers", "type": "boolean", "requiredIf": { "eatsOut": true } }
|
||
],
|
||
"attachments": ["transportSubscription"],
|
||
"pricing": [],
|
||
"next": "sideIncome"
|
||
},
|
||
|
||
{
|
||
"id": "sideIncome",
|
||
"order": 6,
|
||
"title": "Reddito accessorio",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasSideIncome", "type": "boolean", "required": true }
|
||
],
|
||
"attachments": ["sideIncomeDocuments"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "condition": { "hasSideIncome": true } }
|
||
],
|
||
"next": "annuities"
|
||
},
|
||
|
||
{
|
||
"id": "annuities",
|
||
"order": 7,
|
||
"title": "Rendite",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasAnnuities", "type": "boolean", "required": true }
|
||
],
|
||
"attachments": ["annuityDocuments"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "condition": { "hasAnnuities": true } }
|
||
],
|
||
"next": "insurance"
|
||
},
|
||
|
||
{
|
||
"id": "insurance",
|
||
"order": 8,
|
||
"title": "Spese assicurative e mediche",
|
||
"description": "",
|
||
"fields": [],
|
||
"attachments": ["healthInsuranceCertificate", "medicalExpenses"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "condition": { "medicalExpenses": true } }
|
||
],
|
||
"next": "pillar3"
|
||
},
|
||
|
||
{
|
||
"id": "pillar3",
|
||
"order": 9,
|
||
"title": "Polizze 3A / 3B",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasPillar3", "type": "boolean", "required": true }
|
||
],
|
||
"attachments": ["pillar3Documents"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "condition": { "hasPillar3": true } }
|
||
],
|
||
"next": "bankAccounts"
|
||
},
|
||
|
||
{
|
||
"id": "bankAccounts",
|
||
"order": 10,
|
||
"title": "Conti bancari",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasBankAccounts", "type": "boolean", "required": true }
|
||
],
|
||
"attachments": ["bankStatements"],
|
||
"pricing": [
|
||
{ "amountCHF": 2, "perExtraAttachmentAfter": 2 }
|
||
],
|
||
"next": "otherAssets"
|
||
},
|
||
|
||
{
|
||
"id": "otherAssets",
|
||
"order": 11,
|
||
"title": "Altri beni / averi",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasOtherAssets", "type": "boolean", "required": true },
|
||
{ "key": "otherAssetsList", "type": "array", "item": { "description": "string", "amount": "number" } }
|
||
],
|
||
"attachments": ["otherAssetsDocuments"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "perItem": "otherAssetsList" }
|
||
],
|
||
"next": "debts"
|
||
},
|
||
|
||
{
|
||
"id": "debts",
|
||
"order": 12,
|
||
"title": "Debiti / ipoteche",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasDebts", "type": "boolean", "required": true }
|
||
],
|
||
"attachments": ["debtCertificates"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "perAttachment": true }
|
||
],
|
||
"next": "properties"
|
||
},
|
||
|
||
{
|
||
"id": "properties",
|
||
"order": 13,
|
||
"title": "Immobili",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasProperties", "type": "boolean", "required": true },
|
||
{
|
||
"key": "propertiesList",
|
||
"type": "array",
|
||
"item": {
|
||
"country": "enum",
|
||
"address": "string",
|
||
"purchaseYear": "number",
|
||
"buildingYear": "number",
|
||
"isRented": "boolean"
|
||
}
|
||
}
|
||
],
|
||
"attachments": ["propertyDocuments", "deed", "maintenanceInvoices"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "condition": { "country": "SWISS" } },
|
||
{ "amountCHF": 7, "condition": { "country": "ITALY" } },
|
||
{ "amountCHF": 7, "condition": { "country": "FOREIGN" } }
|
||
],
|
||
"next": "foreign"
|
||
},
|
||
|
||
{
|
||
"id": "foreign",
|
||
"order": 14,
|
||
"title": "Redditi o averi all’estero",
|
||
"description": "",
|
||
"fields": [
|
||
{ "key": "hasForeignAssets", "type": "boolean", "required": true },
|
||
{ "key": "foreignDescription", "type": "string", "requiredIf": { "hasForeignAssets": true } }
|
||
],
|
||
"attachments": ["foreignDocuments"],
|
||
"pricing": [
|
||
{ "amountCHF": 5, "perAttachment": true }
|
||
],
|
||
"next": null
|
||
}
|
||
]
|
||
}
|