Skip to content

Commit

Permalink
Merge pull request Toaztr#367 from mvicrob/copied
Browse files Browse the repository at this point in the history
feat: Add life insurance
  • Loading branch information
mvicrob authored Nov 10, 2022
2 parents f984a73 + 5e4f28a commit b7c9242
Show file tree
Hide file tree
Showing 12 changed files with 612 additions and 0 deletions.
34 changes: 34 additions & 0 deletions models/LifeInsuranceAdjudicationItem.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"title": "LifeInsuranceAdjudicationItem",
"x-stoplight": {
"id": "l2blqkdfsa5zq"
},
"description": "Représente une opération d'arbitrage sur un contrat d'assurance vie, depuis ou vers le fonds euros.",
"type": "object",
"properties": {
"type": {
"default": "FROM_EURO_FUNDS",
"description": "Type d'arbitrage.",
"type": "string",
"enum": [
"FROM_EURO_FUNDS",
"TO_EURO_FUNDS"
]
},
"amount": {
"description": "Montant de l'arbitrage.",
"minimum": 0,
"type": "number"
},
"date": {
"description": "Date de l'arbitrage.",
"format": "date-time",
"type": "string"
}
},
"required": [
"type",
"amount",
"date"
]
}
37 changes: 37 additions & 0 deletions models/LifeInsuranceAdvanceItem.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"title": "LifeInsuranceAdvanceItem",
"x-stoplight": {
"id": "0b9xa584a6b3a"
},
"description": "Représente une avance sur un contrat d'assurance vie",
"type": "object",
"properties": {
"amount": {
"description": "Montant de l'avance.",
"minimum": 0,
"type": "number"
},
"percentage_in_euro_fund": {
"type": "number",
"description": "Pourcentage du rachat sur le fond euro.",
"minimum": 0,
"default": 100,
"maximum": 100
},
"date_out": {
"description": "Date du déblocage de l'avance.",
"format": "date-time",
"type": "string"
},
"date_in": {
"description": "Date du remboursement de l'avance.",
"format": "date-time",
"type": "string"
}
},
"required": [
"amount",
"date_out",
"date_in"
]
}
35 changes: 35 additions & 0 deletions models/LifeInsuranceFees.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"title": "LifeInsuranceFees",
"x-stoplight": {
"id": "se1018hcgiqm1"
},
"oneOf": [
{
"properties": {
"percentage": {
"type": "number",
"minimum": 0,
"maximum": 100,
"default": 0
}
},
"required": [
"percentage"
]
},
{
"properties": {
"flat": {
"type": "number",
"default": 0,
"minimum": 0
}
},
"required": [
"flat"
]
}
],
"type": "object",
"description": "Frais appliqués à une opération sur un contrat d'assurance vie: valeur fixe + pourcentage du montant de l'opération (versement, rachat, avance)."
}
55 changes: 55 additions & 0 deletions models/LifeInsuranceInstallmentItem.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"title": "LifeInsuranceInstallmentItem",
"description": "Représente le versement d'une prime sur un contrat d'assurance vie",
"type": "object",
"properties": {
"type": {
"default": "ONE_TIME",
"description": "Type de versement.",
"type": "string",
"enum": [
"INITIAL",
"ONE_TIME",
"RECURRING"
]
},
"amount": {
"description": "Montant du versement.",
"minimum": 0,
"type": "number"
},
"percentage_in_euro_fund": {
"type": "number",
"description": "Pourcentage du versement alloué au fond euro.",
"minimum": 0,
"default": 100,
"maximum": 100
},
"date_or_periodicity": {
"oneOf": [
{
"properties": {
"date": {
"description": "Date du versement.",
"format": "date-time",
"type": "string"
}
}
},
{
"properties": {
"periodicity": {
"$ref": "./LifeInsurancePeriodicity.v1.json"
}
}
}
],
"type": "object"
}
},
"required": [
"type",
"amount",
"date_or_periodicity"
]
}
163 changes: 163 additions & 0 deletions models/LifeInsuranceParameters.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
{
"title": "LifeInsuranceParameters",
"type": "object",
"description": "Paramètres de simulation d'un projet d'assurance vie",
"properties": {
"mode": {
"type": "string",
"description": "Mode de simulation: grandeur recherchée",
"enum": [
"FINAL_CAPITAL",
"INITIAL_CAPITAL",
"MONTHLY_PAYMENT",
"YEARLY_AVERAGE_PERFORMANCE"
]
},
"contract_parameters": {
"type": "object",
"required": [
"subscription_date",
"valuation_date",
"horizon_date"
],
"properties": {
"subscription_date": {
"description": "Date de la première souscription.",
"format": "date-time",
"type": "string"
},
"valuation_date": {
"description": "Date de valorisation du contrat.",
"format": "date-time",
"type": "string"
},
"horizon_date": {
"description": "Horizon du contrat: date de fin.",
"format": "date-time",
"type": "string"
},
"percentage_in_non_euro_fund": {
"description": "Pourcentage du capital investis hors du fond euros.",
"type": "number",
"minimum": 0,
"maximum": 100,
"default": 0
}
}
},
"installments": {
"type": "array",
"description": "Liste des versements, incluant le versement initial",
"items": {
"$ref": "./LifeInsuranceInstallmentItem.v1.json"
}
},
"purchases": {
"type": "array",
"description": "Liste des rachats",
"items": {
"$ref": "./LifeInsurancePurchaseItem.v1.json"
}
},
"advances": {
"type": "array",
"description": "Liste des avances",
"items": {
"$ref": "./LifeInsuranceAdvanceItem.v1.json"
}
},
"adjudications": {
"type": "array",
"description": "Liste des arbitrages",
"items": {
"$ref": "./LifeInsuranceAdjudicationItem.v1.json"
}
},
"fees": {
"type": "object",
"description": "Frais sur les opérations du contrat d'assurance vie: versement initial, persement ponctuel, versement régulier, rachat, avance, arbitrage et gestion (du fond euro et UC).",
"properties": {
"initial_installment": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"installment": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"regular_installment": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"purchase": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"advance": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"adjudication": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"management_euro_fund": {
"$ref": "./LifeInsuranceFees.v1.json"
},
"management_non_euro_fund": {
"$ref": "./LifeInsuranceFees.v1.json"
}
}
},
"funds_yearly_performances": {
"type": "object",
"description": "Performance annuelle brute de frais de gestion des fonds euro et non euro. Le nombre d'élèments doit correspondre à la durée du contrat, soit le nombre d'années entre les paramètres subscription_date et horizon_date.",
"properties": {
"euro": {
"type": "array",
"description": "Performances annuelles du fond euros",
"items": {
"type": "number",
"minimum": 0
}
},
"non_euro": {
"type": "array",
"description": "Performances annuelles du ou des fonds non euros",
"items": {
"type": "number"
}
}
}
},
"taxes": {
"type": "object",
"description": "Impositions des plus-values",
"properties": {
"tax_mode": {
"type": "string",
"description": "Fiscalité choisie: prélèvement forfaitaire libératoire ou intégration à l'impôt sur le revenu.",
"enum": [
"ONE_SHOT_PAYING",
"INTEGRATION_TO_INCOME_TAX"
],
"default": "ONE_SHOT_PAYING"
},
"marginal_tax_rate": {
"type": "number",
"description": "Taux marginal d'imposition",
"minimum": 0,
"maximum": 100
},
"allowance": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "Abbatement éventuels"
}
},
"required": [
"tax_mode"
]
}
},
"required": [
"mode",
"contract_parameters",
"installments"
]
}
12 changes: 12 additions & 0 deletions models/LifeInsurancePeriodicity.v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"type": "string",
"title": "LifeInsurancePeriodicity",
"enum": [
"MONTHLY",
"QUARTERLY",
"HALF_YEARLY",
"YEARLY"
],
"description": "Périodicité des évènements d'un contrat d'assurance vie.",
"default": "MONTHLY"
}
Loading

0 comments on commit b7c9242

Please sign in to comment.