Files
bruno/schema.json
2026-02-18 21:04:57 +01:00

284 lines
8.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 allestero",
"description": "",
"fields": [
{ "key": "hasForeignAssets", "type": "boolean", "required": true },
{ "key": "foreignDescription", "type": "string", "requiredIf": { "hasForeignAssets": true } }
],
"attachments": ["foreignDocuments"],
"pricing": [
{ "amountCHF": 5, "perAttachment": true }
],
"next": null
}
]
}