aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_')
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_1257
1 files changed, 1257 insertions, 0 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_
new file mode 100644
index 00000000..c86fd55a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_
@@ -0,0 +1,1257 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Taxation" nsURI="http:///TaxCardOriginal.ecore" nsPrefix="TaxCard">
4 <eAnnotations source="http://www.eclipse.org/OCL/Import">
5 <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EEnum" name="Grantor">
8 <eLiterals name="WWW" literal="WWW"/>
9 <eLiterals name="Employer" value="1" literal="Employer"/>
10 <eLiterals name="MMM" value="2" literal="MMM"/>
11 <eLiterals name="UUU" value="3" literal="UUU"/>
12 <eLiterals name="YYY" value="4" literal="YYY"/>
13 <eLiterals name="OOO" value="5" literal="OOO"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Constants" abstract="true">
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"
17 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
18 defaultValueLiteral="3480.0"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"
20 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
21 defaultValueLiteral="3600.0"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_SALARY" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1500.0"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"
25 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
26 defaultValueLiteral="4500.0"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"
28 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
29 defaultValueLiteral="20.0"/>
30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"
31 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
32 defaultValueLiteral="120.0"/>
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"
34 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
35 defaultValueLiteral="0.0"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"
37 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
38 defaultValueLiteral="24000.0"/>
39 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
40 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
41 defaultValueLiteral="99.0"/>
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
43 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
44 defaultValueLiteral="30.0"/>
45 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
46 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
47 defaultValueLiteral="4.0"/>
48 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_DAILY" lowerBound="1"
49 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.0"/>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_MONTHLY"
51 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
52 defaultValueLiteral="62.0"/>
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_YEARLY" lowerBound="1"
54 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="750.0"/>
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_DAILY" lowerBound="1"
56 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
57 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_MONTHLY"
58 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
59 defaultValueLiteral="25.0"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_YEARLY" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="30.0"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_DAILY" lowerBound="1"
63 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_MONTHLY"
65 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
66 defaultValueLiteral="25.0"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_YEARLY" lowerBound="1"
68 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"
70 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
71 defaultValueLiteral="99.0"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"
73 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
75 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
76 <eStructuralFeatures xsi:type="ecore:EAttribute" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
77 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
78 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"
79 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EEnum" name="Disability_Types">
82 <eLiterals name="beug"/>
83 <eLiterals name="NONE" value="1"/>
84 <eLiterals name="A" value="2" literal="A"/>
85 <eLiterals name="B" value="3" literal="B"/>
86 <eLiterals name="C" value="4" literal="C"/>
87 <eLiterals name="D" value="5" literal="D"/>
88 <eLiterals name="E" value="6" literal="E"/>
89 <eLiterals name="OTHER" value="7"/>
90 </eClassifiers>
91 <eClassifiers xsi:type="ecore:EEnum" name="Country">
92 <eLiterals name="ZZ" literal="ZZ"/>
93 <eLiterals name="FF" value="1" literal="FF"/>
94 <eLiterals name="BB" value="2" literal="BB"/>
95 <eLiterals name="DD" value="3" literal="DD"/>
96 <eLiterals name="NN" value="4" literal="NN"/>
97 <eLiterals name="OTHER" value="5" literal="OTHER"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Card_Type">
100 <eLiterals name="Principal" literal="Principal"/>
101 <eLiterals name="Additional" value="1" literal="Additional"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Office">
104 <eLiterals name="RTS_2" literal="RTS_2"/>
105 <eLiterals name="RTS_3" value="1" literal="RTS_3"/>
106 <eLiterals name="RTS_4" value="2" literal="RTS_4"/>
107 <eLiterals name="RTS_5" value="3" literal="RTS_5"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Class_Category">
110 <eLiterals name="One" literal="One"/>
111 <eLiterals name="One_A" value="1" literal="One_A"/>
112 <eLiterals name="Two" value="2" literal="Two"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EEnum" name="Job_Activity">
115 <eLiterals name="Salary" literal="Salary"/>
116 <eLiterals name="Pension" value="1" literal="Pension"/>
117 <eLiterals name="Annuity" value="2" literal="Annuity"/>
118 </eClassifiers>
119 <eClassifiers xsi:type="ecore:EEnum" name="Town">
120 <eLiterals name="LL" literal="LL"/>
121 <eLiterals name="BB" value="1" literal="BB"/>
122 <eLiterals name="SS" value="2" literal="SS"/>
123 <eLiterals name="TT" value="3" literal="TT"/>
124 <eLiterals name="Other" value="4" literal="Other"/>
125 </eClassifiers>
126 <eClassifiers xsi:type="ecore:EEnum" name="Type_of_Rate">
127 <eLiterals name="REGULAR" literal="REGULAR"/>
128 <eLiterals name="REAL_COST" value="1" literal="REAL_COST"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EEnum" name="CE_Type">
131 <eLiterals name="INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
132 <eLiterals name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"
133 value="1" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
134 <eLiterals name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" value="2" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
135 </eClassifiers>
136 <eClassifiers xsi:type="ecore:EEnum" name="Expense_Purpose">
137 <eLiterals name="HOUSE_CARE" literal="HOUSE_CARE"/>
138 <eLiterals name="CHILD_CARE" value="1" literal="CHILD_CARE"/>
139 <eLiterals name="DEPENDENCE_CARE" value="2" literal="DEPENDENCE_CARE"/>
140 <eLiterals name="OTHER" value="3" literal="OTHER"/>
141 <eLiterals name="ALIMONY" value="4"/>
142 <eLiterals name="RECURRENT_DEPT" value="5"/>
143 </eClassifiers>
144 <eClassifiers xsi:type="ecore:EEnum" name="Dependent_Type">
145 <eLiterals name="CHILD" literal="CHILD"/>
146 <eLiterals name="SPOUSE" value="1" literal="SPOUSE"/>
147 <eLiterals name="RELATIVE" value="2" literal="RELATIVE"/>
148 <eLiterals name="OTHER_FAMILY_MEMBER" value="3" literal="OTHER_FAMILY_MEMBER"/>
149 <eLiterals name="NOT_OWN_CHILD" value="4"/>
150 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
153 eType="#//Tax_Payer"/>
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_amount" lowerBound="1"
155 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
157 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id6" ordered="false" lowerBound="1"
159 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
160 </eClassifiers>
161 <eClassifiers xsi:type="ecore:EClass" name="Tax_Payer" abstract="true" eSuperTypes="#//Physical_Person #//Tax_Case">
162 <eAnnotations source="duplicates">
163 <contents xsi:type="ecore:EReference" name="expenses" ordered="false" upperBound="-1"
164 eType="#//Expense" containment="true">
165 <eAnnotations source="redefines" references="#//Physical_Person/expenses"/>
166 </contents>
167 </eAnnotations>
168 <eOperations name="is_dependent_part_of_the_household" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
169 <eParameters name="IN_dependent" lowerBound="1" eType="#//Dependent"/>
170 </eOperations>
171 <eOperations name="number_of_months_of_allowance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
172 <eOperations name="deduction_according_disability_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
173 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
174 <details key="body" value="if ( self.disability_percentage >= 0.25 and self.disability_percentage &lt; 0.35) then&#xA;&#x9;&#x9;&#x9;150&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.35 and self.disability_percentage &lt; 0.45) then&#xA;&#x9;&#x9;&#x9;225&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.45 and self.disability_percentage &lt;0.55) then&#xA;&#x9;&#x9;&#x9;375&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.55 and self.disability_percentage &lt; 0.65 ) then&#xA;&#x9;&#x9;&#x9;450 &#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.65 and self.disability_percentage &lt; 0.75) then&#xA;&#x9;&#x9;&#x9;525&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.75 and self.disability_percentage &lt; 0.85) then&#xA;&#x9;&#x9;&#x9;585&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.85 and self.disability_percentage&lt; 0.95) then&#xA;&#x9;&#x9;&#x9;645&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.95 and self.disability_percentage&lt;=1)then&#xA;&#x9;&#x9;&#x9;735 else 0 endif endif endif endif endif endif endif endif"/>
175 </eAnnotations>
176 </eOperations>
177 <eOperations name="getIsTaxedJointly" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
178 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
179 <details key="body" value="let is_married:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Marriage_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: - **/&#x9;&#xA;if (is_married) = false then&#xA; let is_in_partnership_relation:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Partnership_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_in_partnership_relation) = false then&#xA; false&#xA; else&#xA; if (is_in_partnership_relation) = true then&#xA; let is_joint_tax_beneficial:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_joint_tax_beneficial) = true then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let relation_lasted_for_the_taxation_year:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = false then&#xA; false&#xA; else&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = false then&#xA; false&#xA; else&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) &#xA; &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = true then&#xA; true&#xA; else&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_joint_tax_beneficial) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_married) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let is_couple_assimilated_to_residents:Boolean = (resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_assimilated_to_residents) = true then&#xA; true&#xA; else&#xA; if (is_couple_assimilated_to_residents) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let local_professional_household_income:Real = self.getProfetionalIncomeHouseholdZZ(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = false then&#xA; false&#xA; else&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (are_both_spouses_non_resident) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let professional_income_resident_taxpayer:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes->oclIsInvalid()) then 0.0 else my_incomes.income_amount->sum() endif else if(spouse_incomes->oclIsInvalid()) then 0.0 else spouse_incomes.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = false then&#xA; false&#xA; else&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
180 </eAnnotations>
181 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
182 </eOperations>
183 <eOperations name="getIsreceivingAllowancesForChildren" ordered="false" lowerBound="1"
184 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
185 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
186 <details key="body" value="let children1:Set(Dependent)=self.dependents->select(dependent_type=Dependent_Type::CHILD) in&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in&#xA;&#x9;&#x9;&#x9;let house: Household = union.household in&#xA;&#x9;&#x9;&#x9;let children:Set(Dependent)=if (house.oclIsInvalid()) then children1 else children1->union(house.children) endif in&#xA;&#x9;&#x9;&#x9;if(children->size()=0)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let allowances:Boolean=children.allowances->select(starting_year&lt;=year and ending_year=-1 and amount>0)->size()>0in&#xA;&#x9;&#x9;&#x9;if(allowances)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
187 </eAnnotations>
188 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
189 </eOperations>
190 <eOperations name="getProfetionalIncomeHousehold" ordered="false" lowerBound="1"
191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
192 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
193 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real= if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
194 </eAnnotations>
195 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
196 </eOperations>
197 <eOperations name="getProfetionalIncomeHouseholdZZ" ordered="false" lowerBound="1"
198 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
199 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
200 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real=if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
201 </eAnnotations>
202 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
203 </eOperations>
204 <eOperations name="getTaxClass" ordered="false" lowerBound="1" eType="#//Tax_Class_Category">
205 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
206 <details key="body" value="let is_resident_taxpayer:Boolean = self.oclIsKindOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: Returns yes if a given taxpayer is a resident. - **/&#x9;&#xA;if (is_resident_taxpayer) = true then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_resident_taxpayer) = false then&#xA; let is_married:Boolean = self.getIsMaried(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married. - **/&#x9;&#xA; if (is_married) = false then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_married) = true then&#xA; let total_professional_income_household:Real = self.getProfetionalIncomeHousehold(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes. - **/&#x9;&#xA; let sum_professional_income_household_ZZ:Real = self.getProfetionalIncomeHouseholdZZ(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes that are taxed in ZZ. - **/&#x9;&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
207 </eAnnotations>
208 <eParameters name="taxation_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
209 </eOperations>
210 <eStructuralFeatures xsi:type="ecore:EReference" name="dependents" ordered="false"
211 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/responsible_person"/>
212 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" lowerBound="1"
213 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/taxPayer"/>
214 <eStructuralFeatures xsi:type="ecore:EReference" name="incomes" ordered="false"
215 lowerBound="1" upperBound="-1" eType="#//Income" containment="true" eOpposite="#//Income/taxPayer"/>
216 <eStructuralFeatures xsi:type="ecore:EReference" name="from_law" lowerBound="1"
217 eType="#//FromLaw" containment="true" eOpposite="#//FromLaw/taxPayer"/>
218 <eStructuralFeatures xsi:type="ecore:EAttribute" name="AEP_deduction" ordered="false"
219 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
220 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxesDue" ordered="false"
221 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
222 </eClassifiers>
223 <eClassifiers xsi:type="ecore:EClass" name="Physical_Person">
224 <eOperations name="is_separated_from" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
225 <eParameters name="IN_person" lowerBound="1" eType="#//Physical_Person"/>
226 </eOperations>
227 <eOperations name="is_person_affiliated_personnaly_to_social_security" lowerBound="1"
228 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
229 <eOperations name="getSeperationState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
230 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
231 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.separation_cause=seperation_type&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
232 </eAnnotations>
233 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
234 <eParameters name="seperation_type" ordered="false" lowerBound="1" eType="#//Separation_Causes"/>
235 </eOperations>
236 <eOperations name="getAge" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
237 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
238 <details key="body" value="&#x9;if(birth_year>=year )then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;year-birth_year&#xA;&#x9;&#x9;&#x9;endif"/>
239 </eAnnotations>
240 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
241 </eOperations>
242 <eOperations name="getIsMaried" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
243 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
244 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
245 </eAnnotations>
246 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
247 </eOperations>
248 <eOperations name="getSeperationYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
249 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
250 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.end_year&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
251 </eAnnotations>
252 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
253 </eOperations>
254 <eOperations name="getDivorceTransitionState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
255 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
256 <details key="body" value="let sep_year:Integer=self.getSeperationYear(year) in&#xA;&#x9;&#x9;&#x9;if(sep_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if( (sep_year &lt;= year and sep_year >= (year -3))=false) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let past_sep_year:Integer=self.getSeperationYear(year-5) in&#xA;&#x9;&#x9;&#x9;if(past_sep_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
257 </eAnnotations>
258 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
259 </eOperations>
260 <eOperations name="getSpouse" ordered="false" lowerBound="1" eType="#//Physical_Person">
261 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
262 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in &#xA;&#x9;&#x9;&#x9;if(union.oclIsInvalid())then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9; if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(lasted_union.individual_A=self)then&#xA;&#x9;&#x9;&#x9;lasted_union.individual_B&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.individual_A&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
263 </eAnnotations>
264 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
265 </eOperations>
266 <eOperations name="getLegalUnionRecord" ordered="false" lowerBound="1" eType="#//Legal_Union_Record">
267 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
268 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;lasted_union&#xA;&#x9;&#x9;&#x9;endif"/>
269 </eAnnotations>
270 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
271 </eOperations>
272 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
273 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
274 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assisting_spouse" lowerBound="1"
275 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" derived="true"/>
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="SSNo" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
277 iD="true"/>
278 <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" ordered="false"
279 upperBound="-1" eType="#//Address" eOpposite="#//Address/taxPayer"/>
280 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_year" ordered="false"
281 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
282 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_percentage"
283 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
284 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_type" ordered="false"
285 unique="false" lowerBound="1" eType="#//Disability_Types"/>
286 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_affiliated_personnaly_to_social_security"
287 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
288 derived="true"/>
289 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_month" ordered="false"
290 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
291 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_day" ordered="false"
292 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
293 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
294 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/beneficiary"/>
295 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_widower" ordered="false"
296 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
297 <eStructuralFeatures xsi:type="ecore:EAttribute" name="last_start_year_widower"
298 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
299 </eClassifiers>
300 <eClassifiers xsi:type="ecore:EClass" name="Address">
301 <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" lowerBound="1"
302 eType="#//Country" defaultValueLiteral="ZZ"/>
303 <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" lowerBound="1"
304 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
305 <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" lowerBound="1"
306 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
307 <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
308 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id2" ordered="false" lowerBound="1"
309 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
310 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
311 upperBound="-1" eType="#//Physical_Person" eOpposite="#//Physical_Person/addresses"/>
312 </eClassifiers>
313 <eClassifiers xsi:type="ecore:EClass" name="Expense">
314 <eStructuralFeatures xsi:type="ecore:EAttribute" name="declared_amount" lowerBound="1"
315 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
316 <eStructuralFeatures xsi:type="ecore:EAttribute" name="expense_purpose" lowerBound="1"
317 eType="#//Expense_Purpose" defaultValueLiteral="OTHER"/>
318 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" eType="#//Dependent"
319 eOpposite="#//Dependent/expense"/>
320 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
321 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/expense"/>
322 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year_expense_was_incurred_in"
323 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
324 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
325 eType="#//Income" eOpposite="#//Income/expenses"/>
326 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id4" ordered="false" lowerBound="1"
327 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
328 <eStructuralFeatures xsi:type="ecore:EReference" name="beneficiary" ordered="false"
329 eType="#//Physical_Person" eOpposite="#//Physical_Person/expenses"/>
330 </eClassifiers>
331 <eClassifiers xsi:type="ecore:EClass" name="Dependent" eSuperTypes="#//Physical_Person">
332 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CIM"
333 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
334 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_DS" lowerBound="1"
335 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
336 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care"
337 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
338 <eOperations name="is_dependent_following_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
339 <eParameters name="IN_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
340 </eOperations>
341 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dependent_type" lowerBound="1"
342 eType="#//Dependent_Type"/>
343 <eStructuralFeatures xsi:type="ecore:EReference" name="responsible_person" eType="#//Tax_Payer"
344 eOpposite="#//Tax_Payer/dependents"/>
345 <eStructuralFeatures xsi:type="ecore:EAttribute" name="continued_studies" lowerBound="1"
346 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
347 <eStructuralFeatures xsi:type="ecore:EReference" name="allowances" ordered="false"
348 upperBound="-1" eType="#//External_Allowance" containment="true" eOpposite="#//External_Allowance/person"/>
349 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
350 eType="#//Household" eOpposite="#//Household/children"/>
351 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
352 eType="#//FromAgent" eOpposite="#//FromAgent/dependent"/>
353 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
354 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/dependent"/>
355 </eClassifiers>
356 <eClassifiers xsi:type="ecore:EClass" name="External_Allowance">
357 <eOperations name="getAmount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
358 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
359 <details key="body" value=" if(dep_age>=6 and dep_age&lt;=11) then&#xA;(base + 16.17).round()&#xA; else if (dep_age>=12) then (base + 48.52).round() else &#xA; if(is_disabled) then(base + 185.60).round() else base endif endif endif"/>
360 </eAnnotations>
361 <eParameters name="base" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
362 <eParameters name="dep_age" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
363 <eParameters name="is_disabled" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
364 </eOperations>
365 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
366 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
367 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
368 </eAnnotations>
369 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
370 </eOperations>
371 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
372 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
373 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantor" lowerBound="1"
374 eType="#//Grantor"/>
375 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
376 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
377 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ending_year" ordered="false"
378 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
379 <eStructuralFeatures xsi:type="ecore:EReference" name="reciver" ordered="false"
380 lowerBound="1" eType="#//Physical_Person"/>
381 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
382 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
383 <eStructuralFeatures xsi:type="ecore:EReference" name="person" ordered="false"
384 lowerBound="1" eType="#//Dependent" eOpposite="#//Dependent/allowances"/>
385 </eClassifiers>
386 <eClassifiers xsi:type="ecore:EClass" name="Household" eSuperTypes="#//Tax_Case">
387 <eStructuralFeatures xsi:type="ecore:EReference" name="parents" ordered="false"
388 lowerBound="1" eType="#//Legal_Union_Record" containment="true" eOpposite="#//Legal_Union_Record/household"/>
389 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id1" ordered="false" lowerBound="1"
390 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
391 <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
392 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/household"/>
393 </eClassifiers>
394 <eClassifiers xsi:type="ecore:EClass" name="Legal_Union_Record" abstract="true">
395 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" lowerBound="1"
396 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
397 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_year" lowerBound="1"
398 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
399 <eStructuralFeatures xsi:type="ecore:EAttribute" name="separation_cause" ordered="false"
400 lowerBound="1" eType="#//Separation_Causes"/>
401 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_A" ordered="false"
402 lowerBound="1" eType="#//Physical_Person" containment="true">
403 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
404 <details key="body" value="legal_union_A"/>
405 </eAnnotations>
406 </eStructuralFeatures>
407 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_B" ordered="false"
408 lowerBound="1" eType="#//Physical_Person" containment="true">
409 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
410 <details key="body" value="legal_union_B"/>
411 </eAnnotations>
412 </eStructuralFeatures>
413 <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
414 lowerBound="1" upperBound="-1" eType="#//Tax_Property" containment="true"
415 eOpposite="#//Tax_Property/union_record"/>
416 <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutual_agreement" ordered="false"
417 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
418 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id9" ordered="false" lowerBound="1"
419 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
420 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
421 lowerBound="1" eType="#//Household" eOpposite="#//Household/parents"/>
422 </eClassifiers>
423 <eClassifiers xsi:type="ecore:EEnum" name="Separation_Causes">
424 <eLiterals name="NONE"/>
425 <eLiterals name="DIVORCE" value="1"/>
426 <eLiterals name="SEPARATION_DE_FAIT" value="2"/>
427 <eLiterals name="SEPARATION_BY_COURT" value="3"/>
428 </eClassifiers>
429 <eClassifiers xsi:type="ecore:EClass" name="Tax_Property">
430 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
431 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
432 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxed_jointly" ordered="false"
433 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
434 defaultValueLiteral="false"/>
435 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id10" ordered="false" lowerBound="1"
436 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
437 <eStructuralFeatures xsi:type="ecore:EReference" name="union_record" ordered="false"
438 lowerBound="1" eType="#//Legal_Union_Record" eOpposite="#//Legal_Union_Record/properties"/>
439 </eClassifiers>
440 <eClassifiers xsi:type="ecore:EClass" name="Tax_Case" abstract="true" interface="true"/>
441 <eClassifiers xsi:type="ecore:EClass" name="FromAgent">
442 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxation_year" unique="false"
443 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
444 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
445 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_agent"/>
446 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"
447 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
448 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
449 eType="#//Expense" eOpposite="#//Expense/from_agent"/>
450 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_debt" ordered="false"
451 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
452 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" ordered="false"
453 eType="#//Dependent" eOpposite="#//Dependent/from_agent"/>
454 </eClassifiers>
455 <eClassifiers xsi:type="ecore:EClass" name="Income" abstract="true">
456 <eOperations name="compute_duration_of_contract" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
457 <eOperations name="compute_duration_of_contract_within_taxation_year" lowerBound="1"
458 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
459 <eParameters name="IN_date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
460 </eOperations>
461 <eOperations name="prorata_worked_months" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
462 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
463 <details key="body" value="self.details->select(is_worked)->size()"/>
464 </eAnnotations>
465 </eOperations>
466 <eOperations name="prorata_worked_days" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
467 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
468 <details key="body" value="let a:Set(Income_Detail)=self.details->select(is_worked) in &#xA;&#x9;&#x9;&#x9;a.worked_days->sum().mod(25)"/>
469 </eAnnotations>
470 </eOperations>
471 <eOperations name="prorata_period" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
472 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
473 <details key="body" value="&#xA;&#x9;&#x9;&#x9;let nb_months:Integer=self.prorata_worked_months()in&#xA;&#x9;&#x9;&#x9;let nb_days:Integer=self.prorata_worked_days()in&#xA;&#x9;&#x9;&#x9; if(nb_months=12) then&#xA;&#x9;&#x9;&#x9;1&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;nb_months/12 + nb_days/300&#xA;&#x9;&#x9;&#x9;endif"/>
474 </eAnnotations>
475 </eOperations>
476 <eOperations name="income_per_day" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
477 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
478 <details key="body" value="income_per_year()/300"/>
479 </eAnnotations>
480 </eOperations>
481 <eOperations name="income_per_month" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
482 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
483 <details key="body" value="income_per_year()/12"/>
484 </eAnnotations>
485 </eOperations>
486 <eOperations name="income_per_year" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
487 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
488 <details key="body" value="&#x9;&#x9;&#x9;let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;involved_details.amount->sum()"/>
489 </eAnnotations>
490 </eOperations>
491 <eOperations name="getDurationInyears" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
492 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
493 <details key="body" value="&#xA;&#x9;&#x9;&#x9;if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then &#xA;&#x9;&#x9;&#x9;if(start_year.oclIsUndefined())then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in&#xA;&#x9;&#x9;&#x9;if(res&lt;0) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;res&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif"/>
494 </eAnnotations>
495 </eOperations>
496 <eStructuralFeatures xsi:type="ecore:EAttribute" name="income_amount" ordered="false"
497 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
498 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
499 <details key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
500 </eAnnotations>
501 </eStructuralFeatures>
502 <eStructuralFeatures xsi:type="ecore:EReference" name="income_type" lowerBound="1"
503 eType="#//Income_Type" containment="true" eOpposite="#//Income_Type/income"/>
504 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_within_taxation_year"
505 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
506 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_of_contract"
507 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
508 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_date_within_taxation_year"
509 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
510 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_card" eType="#//Tax_Card"
511 containment="true" eOpposite="#//Tax_Card/income"/>
512 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_liability" lowerBound="1"
513 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
514 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
515 lowerBound="1" eType="#//Tax_Payer" eOpposite="#//Tax_Payer/incomes"/>
516 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year" unique="false" lowerBound="1"
517 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
518 <eStructuralFeatures xsi:type="ecore:EReference" name="details" lowerBound="12"
519 upperBound="12" eType="#//Income_Detail" containment="true" eOpposite="#//Income_Detail/income"/>
520 <eStructuralFeatures xsi:type="ecore:EAttribute" name="num" ordered="false" lowerBound="1"
521 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"
522 iD="true"/>
523 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" ordered="false"
524 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
525 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
526 upperBound="-1" eType="#//Expense" containment="true" eOpposite="#//Expense/income"/>
527 </eClassifiers>
528 <eClassifiers xsi:type="ecore:EClass" name="Income_Type" abstract="true">
529 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subjectToWithholdingTax"
530 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
531 derived="true">
532 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
533 <details key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
534 </eAnnotations>
535 </eStructuralFeatures>
536 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id8" ordered="false" lowerBound="1"
537 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
538 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
539 eType="#//Income" eOpposite="#//Income/income_type"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="Tax_Card">
542 <eOperations name="getSumDeductionsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
543 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
544 <details key="body" value="deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly"/>
545 </eAnnotations>
546 </eOperations>
547 <eOperations name="getSumCreditsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
548 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
549 <details key="body" value="credit_CIS_yearly+credit_CIP_yearly"/>
550 </eAnnotations>
551 </eOperations>
552 <eStructuralFeatures xsi:type="ecore:EAttribute" name="card_identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
553 iD="true"/>
554 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_card_type" lowerBound="1"
555 eType="#//Tax_Card_Type" derived="true">
556 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
557 <details key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
558 </eAnnotations>
559 </eStructuralFeatures>
560 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_office" lowerBound="1"
561 eType="#//Tax_Office"/>
562 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_from_date" ordered="false"
563 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
564 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_until_date" ordered="false"
565 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
566 <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage_of_witholding"
567 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
568 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_name_surname"
569 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
570 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_partner_name_surname"
571 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
572 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_payers_address" eType="#//Address"/>
573 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_Employer_SSNo" ordered="false"
574 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
575 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_employers_name" ordered="false"
576 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
577 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_activity_type" lowerBound="1"
578 eType="#//Job_Activity"/>
579 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_place_of_work" lowerBound="1"
580 eType="#//Town"/>
581 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_daily" ordered="false"
582 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
583 defaultValueLiteral="0.0"/>
584 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_monthly" ordered="false"
585 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
586 defaultValueLiteral="0.0"/>
587 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_yearly" unique="false"
588 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
589 defaultValueLiteral="0.0"/>
590 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_daily" unique="false"
591 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
592 defaultValueLiteral="0.0"/>
593 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_monthly" unique="false"
594 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
595 defaultValueLiteral="0.0"/>
596 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_yearly" unique="false"
597 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
598 defaultValueLiteral="0.0"/>
599 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_daily" unique="false"
600 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
601 defaultValueLiteral="0.0"/>
602 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_monthly" unique="false"
603 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
604 defaultValueLiteral="0.0"/>
605 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_yearly" unique="false"
606 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
607 defaultValueLiteral="0.0"/>
608 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_invalidity_yearly"
609 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
610 defaultValueLiteral="0.0"/>
611 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_daily" unique="false"
612 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
613 defaultValueLiteral="0.0"/>
614 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_monthly" lowerBound="1"
615 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0"/>
616 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_yearly" unique="false"
617 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
618 defaultValueLiteral="0.0"/>
619 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_daily" unique="false"
620 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
621 defaultValueLiteral="0.0"/>
622 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_monthly" unique="false"
623 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
624 defaultValueLiteral="0.0"/>
625 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_yearly" unique="false"
626 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
627 defaultValueLiteral="0.0"/>
628 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_daily" unique="false"
629 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
630 defaultValueLiteral="0.0"/>
631 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_monthly" unique="false"
632 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
633 defaultValueLiteral="0.0"/>
634 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_monthly" unique="false"
635 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
636 defaultValueLiteral="0.0"/>
637 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_yearly" unique="false"
638 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
639 defaultValueLiteral="0.0"/>
640 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_daily" unique="false"
641 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
642 defaultValueLiteral="0.0"/>
643 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_monthly" unique="false"
644 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
645 defaultValueLiteral="0.0"/>
646 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_yearly" unique="false"
647 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
648 defaultValueLiteral="0.0"/>
649 <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" lowerBound="1"
650 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
651 <eStructuralFeatures xsi:type="ecore:EReference" name="income_Tax_Credit" ordered="false"
652 upperBound="-1" eType="#//Income_Tax_Credit" eOpposite="#//Income_Tax_Credit/taxation_Frame"/>
653 <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//Tax_Card"
654 eOpposite="#//Tax_Card/current_tax_card"/>
655 <eStructuralFeatures xsi:type="ecore:EReference" name="current_tax_card" eType="#//Tax_Card"
656 eOpposite="#//Tax_Card/previous"/>
657 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_yearly" ordered="false"
658 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
659 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Alimony_yearly"
660 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
661 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Debt_yearly"
662 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
663 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
664 eType="#//Income" eOpposite="#//Income/tax_card"/>
665 </eClassifiers>
666 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax_Credit">
667 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantedBy" lowerBound="1"
668 eType="#//Grantor"/>
669 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" eType="#//Tax_Payer"/>
670 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
671 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
672 <eStructuralFeatures xsi:type="ecore:EAttribute" name="yearly" lowerBound="1"
673 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
674 <eStructuralFeatures xsi:type="ecore:EAttribute" name="monthly" lowerBound="1"
675 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="25.0"/>
676 <eStructuralFeatures xsi:type="ecore:EAttribute" name="daily" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
677 defaultValueLiteral="1.0"/>
678 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id7" ordered="false" lowerBound="1"
679 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
680 <eStructuralFeatures xsi:type="ecore:EReference" name="taxation_Frame" eType="#//Tax_Card"
681 eOpposite="#//Tax_Card/income_Tax_Credit"/>
682 </eClassifiers>
683 <eClassifiers xsi:type="ecore:EClass" name="Income_Detail">
684 <eStructuralFeatures xsi:type="ecore:EAttribute" name="month" ordered="false"
685 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
686 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
687 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
688 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_worked" lowerBound="1"
689 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
690 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance" lowerBound="1"
691 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
692 <eStructuralFeatures xsi:type="ecore:EAttribute" name="worked_days" lowerBound="1"
693 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
694 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_CNS" ordered="false"
695 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
696 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_pension"
697 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
698 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
699 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
700 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
701 eType="#//Income" eOpposite="#//Income/details"/>
702 </eClassifiers>
703 <eClassifiers xsi:type="ecore:EClass" name="FromLaw">
704 <eOperations name="CE_INVALIDITY_FLAT_RATE_TYPE_E" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
705 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
706 <details key="body" value="1455"/>
707 </eAnnotations>
708 </eOperations>
709 <eOperations name="CIP_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
710 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
711 <details key="body" value="25"/>
712 </eAnnotations>
713 </eOperations>
714 <eOperations name="CIP_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
715 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
716 <details key="body" value="300"/>
717 </eAnnotations>
718 </eOperations>
719 <eOperations name="FLAT_RATE_CIP_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
720 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
721 <details key="body" value="300"/>
722 </eAnnotations>
723 </eOperations>
724 <eOperations name="FLAT_RATE_PER_UNIT" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
725 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
726 <details key="body" value="99"/>
727 </eAnnotations>
728 </eOperations>
729 <eOperations name="MAXIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
730 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
731 <details key="body" value="30"/>
732 </eAnnotations>
733 </eOperations>
734 <eOperations name="MINIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
735 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
736 <details key="body" value="4"/>
737 </eAnnotations>
738 </eOperations>
739 <eOperations name="FLAT_MAXIMUM_FD" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
740 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
741 <details key="body" value="2574"/>
742 </eAnnotations>
743 </eOperations>
744 <eOperations name="CIS_MINIMUM_INCOME_DAY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
745 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
746 <details key="body" value="3.12"/>
747 </eAnnotations>
748 </eOperations>
749 <eOperations name="CIS_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
750 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
751 <details key="body" value="78"/>
752 </eAnnotations>
753 </eOperations>
754 <eOperations name="CIS_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
755 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
756 <details key="body" value="936"/>
757 </eAnnotations>
758 </eOperations>
759 <eOperations name="FLAT_RATE_CIS_DAILY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
760 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
761 <details key="body" value="1"/>
762 </eAnnotations>
763 </eOperations>
764 <eOperations name="FLAT_RATE_CIS_MONTHLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
765 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
766 <details key="body" value="25"/>
767 </eAnnotations>
768 </eOperations>
769 <eOperations name="FLAT_RATE_CIS_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
770 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
771 <details key="body" value="300"/>
772 </eAnnotations>
773 </eOperations>
774 <eOperations name="get_A_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
775 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
776 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9; endif"/>
777 </eAnnotations>
778 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
779 </eOperations>
780 <eOperations name="get_B_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
781 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
782 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 81.9&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 105.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 132.39000&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 162.405&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 195.6&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 231.975&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 271.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 314.265&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 360.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 409.275&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 461.55&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 517.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 575.64&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 637.455&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 702.45&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 770.625&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 806.30250 &#xA;&#x9;&#x9;else 890.48583&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
783 </eAnnotations>
784 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
785 </eOperations>
786 <eOperations name="get_A_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
787 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
788 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
789 </eAnnotations>
790 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
791 </eOperations>
792 <eOperations name="get_B_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
793 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
794 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 235.5&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 297.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 362.79&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 431.205&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 502.8&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 577.575&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 655.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 736.665&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 820.98&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 908.475&#xA;&#x9;&#x9;else 938.7&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9;&#x9;endif"/>
795 </eAnnotations>
796 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
797 </eOperations>
798 <eOperations name="get_A_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
799 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
800 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
801 </eAnnotations>
802 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
803 </eOperations>
804 <eOperations name="get_B_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
805 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
806 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 157&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 202.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 254.58&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 312.91&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 377.6&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 448.65&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 526.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 609.83&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 699.96&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 796.45&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 899.3&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 1008.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 1124.08&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 1246.01&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 1374.3&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 1508.95&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 1579.455&#xA;&#x9;&#x9;else 1746.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
807 </eAnnotations>
808 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
809 </eOperations>
810 <eOperations name="get_A_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
811 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
812 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
813 </eAnnotations>
814 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
815 </eOperations>
816 <eOperations name="get_B_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
817 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
818 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 80.3&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 103.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 129.99&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 159.605&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 192.4&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 228.375&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 267.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 309.865&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 355.38&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 404.075&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 455.95&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 511.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 569.24&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 630.655&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 695.25&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 763.025&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 798.5025&#xA;&#x9;&#x9;else 882.48583&#x9;&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
819 </eAnnotations>
820 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
821 </eOperations>
822 <eOperations name="get_A_for_pension_class_1A" ordered="false" lowerBound="1"
823 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
824 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
825 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
826 </eAnnotations>
827 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
828 </eOperations>
829 <eOperations name="get_B_for_pension_class_1A" ordered="false" lowerBound="1"
830 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
831 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
832 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 233.100&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 294.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 359.190&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 427.005&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 498&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 572.175&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 649.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 730.065&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 813.780&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 900.675&#xA;&#x9;&#x9;else 930.700&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
833 </eAnnotations>
834 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
835 </eOperations>
836 <eOperations name="get_A_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
837 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
838 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
839 </eAnnotations>
840 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
841 </eOperations>
842 <eOperations name="get_B_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
843 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
844 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 155.4&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 200.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 252.18&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 310.11&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 374.4&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 445.05&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 522.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 605.43&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 695.16&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 791.25&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 893.7&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 1002.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 1117.68&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 1239.21&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 1367.1&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 1501.35&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 1571.655&#xA;&#x9;&#x9;else 1738.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
845 </eAnnotations>
846 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
847 </eOperations>
848 <eOperations name="get_A_for_other_yearly_class_1" ordered="false" lowerBound="1"
849 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
850 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
851 <details key="body" value=" if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
852 </eAnnotations>
853 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
854 </eOperations>
855 <eOperations name="get_B_for_other_yearly_class_1" ordered="false" lowerBound="1"
856 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
857 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
858 <details key="body" value="if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 901.200 &#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 1164.660&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 1466.280&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 1806.060&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 2184&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 2600.100&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 3054.360&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 3546.780 &#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 4077.360&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 4646.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 5253&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 5898.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 6581.28&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 7302.66&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 8062.2&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 8859.9&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 9277.83&#xA;&#x9;&#x9;else 10277.83&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
859 </eAnnotations>
860 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
861 </eOperations>
862 <eOperations name="get_A_for_other_yearly_class_1A" ordered="false" lowerBound="1"
863 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
864 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
865 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
866 </eAnnotations>
867 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
868 </eOperations>
869 <eOperations name="get_B_for_other_yearly_class_1A" ordered="false" lowerBound="1"
870 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
871 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
872 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 2703.600&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 3417.660&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 4169.880&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 4960.260&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 5788.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 6655.500&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 7560.360&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 8503.380&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 9484.560&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 10503.900&#xA;&#x9;&#x9;else 10856.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
873 </eAnnotations>
874 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
875 </eOperations>
876 <eOperations name="get_A_for_other_yearly_class_2" ordered="false" lowerBound="1"
877 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
878 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
879 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
880 </eAnnotations>
881 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
882 </eOperations>
883 <eOperations name="get_B_for_other_yearly_class_2" ordered="false" lowerBound="1"
884 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
885 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
886 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 1802.400 &#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 2329.320&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 2932.560&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 3612.120&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 4368.000&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 5200.200&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 6108.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 7093.560&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 8154.720&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 9292.200&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 10506.000&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 11796.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 13162.560&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 14605.320&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 16124.400&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 17719.800&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 18555.660&#xA;&#x9;&#x9;else 20555.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
887 </eAnnotations>
888 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
889 </eOperations>
890 <eOperations name="calculate_taxes_per_month" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
891 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
892 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_class_2(amount) else get_A_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_class_2(amount) else get_B_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_class_2(amount) else get_A_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_class_2(amount) else get_B_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
893 </eAnnotations>
894 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
895 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
896 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
897 </eOperations>
898 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
899 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
900 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
901 </eAnnotations>
902 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
903 </eOperations>
904 <eOperations name="round_ten_cent" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
905 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
906 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;if(p1=amount) then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let p2_temp:Real = (amount-p1) * 10 in&#xA;&#x9;&#x9;&#x9;let p2:Integer = p2_temp.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()+(p2.toString().toReal()/10.0)&#xA;&#x9;&#x9;&#x9;endif"/>
907 </eAnnotations>
908 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
909 </eOperations>
910 <eOperations name="get_A_for_salary_yearly_class_1" ordered="false" lowerBound="1"
911 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
912 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
913 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
914 </eAnnotations>
915 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
916 </eOperations>
917 <eOperations name="get_B_for_salary_yearly_class_1" ordered="false" lowerBound="1"
918 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
919 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
920 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 982.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 1266.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 1588.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 1948.8600&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 2347.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 2783.7000&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 3258.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 3771.1800&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 4322.1600&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 4911.3000&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 5538.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 6204.0600&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 6907.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 7649.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 8429.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 9247.5000&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 9675.6300&#xA;&#x9;&#x9;else 10685.8300&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
921 </eAnnotations>
922 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
923 </eOperations>
924 <eOperations name="get_A_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
925 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
926 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
927 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
928 </eAnnotations>
929 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
930 </eOperations>
931 <eOperations name="get_B_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
932 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
933 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
934 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 2826.0000&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 3570.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 4353.4800&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 5174.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 6033.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 6930.9000&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 7866.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 8839.9800&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 9851.7600&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 10901.7000&#xA;&#x9;&#x9;else 11264.4000&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
935 </eAnnotations>
936 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
937 </eOperations>
938 <eOperations name="get_A_for_salary_yearly_class_2" ordered="false" lowerBound="1"
939 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
940 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
941 <details key="body" value="if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
942 </eAnnotations>
943 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
944 </eOperations>
945 <eOperations name="get_B_for_salary_yearly_class_2" ordered="false" lowerBound="1"
946 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
947 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
948 <details key="body" value=" if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 1884.000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 2431.3200&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 3054.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 3754.9200&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 4531.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 5383.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 6312.7200&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 7317.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 8399.5200&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 9557.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 10791.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 12102.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 13488.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 14952.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 16491.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 18107.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 18953.4600&#xA;&#x9;&#x9;else 20963.6600&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
949 </eAnnotations>
950 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
951 </eOperations>
952 <eOperations name="get_A_for_pension_yearly_class_1" ordered="false" lowerBound="1"
953 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
954 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
955 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
956 </eAnnotations>
957 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
958 </eOperations>
959 <eOperations name="get_B_for_pension_yearly_class_1" ordered="false" lowerBound="1"
960 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
961 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
962 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 963.600&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 1242.660&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 1559.880&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 1915.260&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 2308.800&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 2740.500&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 3210.360&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 3718.380&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 4264.560&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 4848.900&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 5471.400&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 6132.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 6830.880&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 7567.860&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 8343.000&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 9156.300&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 9582.030&#xA;&#x9;&#x9;else 10589.830&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
963 </eAnnotations>
964 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
965 </eOperations>
966 <eOperations name="get_A_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
967 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
968 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
969 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
970 </eAnnotations>
971 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
972 </eOperations>
973 <eOperations name="get_B_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
974 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
975 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
976 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 2797.200&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 3534.660&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 4310.280&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 5124.060&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 5976.000&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 6866.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 7794.360&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 8760.780&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 9765.360&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 10808.100&#xA;&#x9;&#x9;else 11168.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
977 </eAnnotations>
978 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
979 </eOperations>
980 <eOperations name="get_A_for_pension_yearly_class_2" ordered="false" lowerBound="1"
981 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
982 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
983 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
984 </eAnnotations>
985 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
986 </eOperations>
987 <eOperations name="get_B_for_pension_yearly_class_2" ordered="false" lowerBound="1"
988 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
989 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
990 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 1864.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 2407.320&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 3026.160&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 3721.320&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 4492.800&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 5340.600&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 6264.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 7265.160&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 8341.920&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 9495.000&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 10724.400&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 12030.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 13412.160&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 14870.520&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 16405.200&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 18016.200&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 18859.860&#xA;&#x9;&#x9;else 20867.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
991 </eAnnotations>
992 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
993 </eOperations>
994 <eOperations name="calculate_taxes_per_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
995 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
996 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
997 </eAnnotations>
998 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
999 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1000 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1001 </eOperations>
1002 <eOperations name="CNS_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1003 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1004 <details key="body" value="0.0305"/>
1005 </eAnnotations>
1006 </eOperations>
1007 <eOperations name="PENSION_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1008 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1009 <details key="body" value="0.08"/>
1010 </eAnnotations>
1011 </eOperations>
1012 <eOperations name="round_lower_fifty_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1013 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1014 <details key="body" value="&#x9;&#x9;if(amount&lt;50) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if (amount>=50 and amount&lt;100) then&#xA;&#x9;&#x9;&#x9;50.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let temp_amount:Real = round_lower_euros(amount) in&#xA;&#x9;&#x9;&#x9;let ch:String=temp_amount.toString()in&#xA;&#x9;&#x9;&#x9;let temp_amount1:Real = temp_amount / 100.0 in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(temp_amount1.round() = temp_amount1.floor()) then&#xA;&#x9;&#x9;&#x9;temp_amount1.floor() * 100.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;(temp_amount1.round() * 100.0) - 50&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1015 </eAnnotations>
1016 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1017 </eOperations>
1018 <eOperations name="getTaxableIncomePerYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1019 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1020 <details key="body" value="let gross_salary_year:Real= income.income_per_year() in&#xA;&#x9;&#x9;&#x9;let type:Income_Type=income.income_type in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Employment_Income)) then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in&#xA;&#x9;&#x9;&#x9;let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- sum_deductions_year in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 | &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount &#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true)then&#xA;&#x9;&#x9;&#x9; acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9; )&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;in round_lower_fifty_euros(res)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1021 </eAnnotations>
1022 <eParameters name="income" ordered="false" lowerBound="1" eType="#//Income"/>
1023 </eOperations>
1024 <eOperations name="precision" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1025 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1026 <details key="body" value="&#x9;&#x9;let ch:String=amount.toString() in&#xA;&#x9;&#x9;&#x9;if(ch.indexOf('.')=-1)then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let pos_pt:Integer=ch.indexOf('.') in&#xA;&#x9;&#x9;&#x9;if(pos_pt+degit >=ch.size()) then&#xA;&#x9;&#x9;&#x9;amount &#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let ch1:String=ch.substring(1,pos_pt+degit) in&#xA;&#x9;&#x9;&#x9;ch1.toReal()&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1027 </eAnnotations>
1028 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1029 <eParameters name="degit" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1030 </eOperations>
1031 <eOperations name="MAXIMUM_RATE_FOR_CE_CHILDREN" ordered="false" lowerBound="1"
1032 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1033 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1034 <details key="body" value="3480"/>
1035 </eAnnotations>
1036 </eOperations>
1037 <eOperations name="MINIMUM_LEGAL_SALARY" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1038 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1039 <details key="body" value="1921.03"/>
1040 </eAnnotations>
1041 </eOperations>
1042 <eOperations name="MAXIMUM_FLAT_RATE_FOR_ALIMONY" ordered="false" lowerBound="1"
1043 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1044 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1045 <details key="body" value="&#x9;&#x9;&#x9;if(year_divorce>1997)then&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;if(year=2009 or year = 2010) then&#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;24000&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
1046 </eAnnotations>
1047 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1048 <eParameters name="year_divorce" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1049 </eOperations>
1050 <eOperations name="AEP_FLAT_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1051 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1052 <details key="body" value="4500"/>
1053 </eAnnotations>
1054 </eOperations>
1055 <eOperations name="calculate_taxes_per_year_mixed" ordered="false" lowerBound="1"
1056 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1057 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1058 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1059 </eAnnotations>
1060 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1061 <eParameters name="local_amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1062 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1063 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1064 </eOperations>
1065 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
1066 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1067 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
1068 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_law"/>
1069 </eClassifiers>
1070 <eClassifiers xsi:type="ecore:EClass" name="Fiscal_Address" eSuperTypes="#//Address"/>
1071 <eClassifiers xsi:type="ecore:EClass" name="Habitual_Address" eSuperTypes="#//Address"/>
1072 <eClassifiers xsi:type="ecore:EClass" name="Marriage_Record" eSuperTypes="#//Legal_Union_Record"/>
1073 <eClassifiers xsi:type="ecore:EClass" name="Non_Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1074 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assimilated_to_resident"
1075 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1076 defaultValueLiteral="false"/>
1077 </eClassifiers>
1078 <eClassifiers xsi:type="ecore:EClass" name="Partnership_Record" eSuperTypes="#//Legal_Union_Record"/>
1079 <eClassifiers xsi:type="ecore:EClass" name="Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1080 <eStructuralFeatures xsi:type="ecore:EAttribute" name="test" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1081 derived="true">
1082 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1083 <details key="derivation" value="self.oclAsType(Tax_Payer).from_agent.taxation_year=2014"/>
1084 </eAnnotations>
1085 </eStructuralFeatures>
1086 </eClassifiers>
1087 <eClassifiers xsi:type="ecore:EClass" name="Trade_and_Business_Income" eSuperTypes="#//Income_Type"/>
1088 <eClassifiers xsi:type="ecore:EClass" name="Agriculture_and_Forestry_Income" eSuperTypes="#//Income_Type"/>
1089 <eClassifiers xsi:type="ecore:EClass" name="Pensions_and_Annuities_Income" eSuperTypes="#//Income_Type">
1090 <eStructuralFeatures xsi:type="ecore:EAttribute" name="occasional_payement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1091 defaultValueLiteral="false"/>
1092 </eClassifiers>
1093 <eClassifiers xsi:type="ecore:EClass" name="Capital_and_Investments_Income" eSuperTypes="#//Income_Type"/>
1094 <eClassifiers xsi:type="ecore:EClass" name="Employment_Income" eSuperTypes="#//Income_Type"/>
1095 <eClassifiers xsi:type="ecore:EClass" name="Rentals_and_Leases_Income" eSuperTypes="#//Income_Type">
1096 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_periodic" lowerBound="1"
1097 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/>
1098 </eClassifiers>
1099 <eClassifiers xsi:type="ecore:EClass" name="Foreign_Income" eSuperTypes="#//Income"/>
1100 <eClassifiers xsi:type="ecore:EClass" name="Local_Income" eSuperTypes="#//Income"/>
1101 <eClassifiers xsi:type="ecore:EClass" name="CIM" eSuperTypes="#//Income_Tax_Credit"/>
1102 <eClassifiers xsi:type="ecore:EClass" name="CIP" eSuperTypes="#//Income_Tax_Credit"/>
1103 <eClassifiers xsi:type="ecore:EClass" name="CIS" eSuperTypes="#//Income_Tax_Credit"/>
1104 <eClassifiers xsi:type="ecore:EClass" name="FD" eSuperTypes="#//Professional_Expenses_Deduction">
1105 <eOperations name="compute_distance_unit_between_home_and_workpalce" lowerBound="1"
1106 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1107 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance_declared_in_january"
1108 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1109 <eStructuralFeatures xsi:type="ecore:EAttribute" name="calculated_distance" lowerBound="1"
1110 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" derived="true"/>
1111 </eClassifiers>
1112 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expenses_Deduction"/>
1113 <eClassifiers xsi:type="ecore:EClass" name="FO" eSuperTypes="#//Professional_Expenses_Deduction">
1114 <eOperations name="compute_disability_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1115 <eOperations name="compute_regular_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1116 <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate_type_for_FO" lowerBound="1"
1117 eType="#//Type_of_Rate" derived="true"/>
1118 </eClassifiers>
1119 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Permanent_Expense" eSuperTypes="#//DS">
1120 <eStructuralFeatures xsi:type="ecore:EAttribute" name="permanent_expense_category"
1121 lowerBound="1" eType="#//Category_of_Permanent_Expense"/>
1122 </eClassifiers>
1123 <eClassifiers xsi:type="ecore:EClass" name="DS">
1124 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount"
1125 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1126 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id3" ordered="false" lowerBound="1"
1127 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1128 </eClassifiers>
1129 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Permanent_Expense">
1130 <eLiterals name="MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
1131 <eLiterals name="ALIMONY" value="1" literal="ALIMONY"/>
1132 </eClassifiers>
1133 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Interest_Expense" eSuperTypes="#//DS">
1134 <eOperations name="compute_maximum_deductible_amount" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1135 <eParameters name="IN_children_with_allowances" ordered="false" upperBound="-1"
1136 eType="#//Dependent"/>
1137 <eParameters name="IN_legal_union" ordered="false" upperBound="-1" eType="#//Legal_Union_Record"/>
1138 </eOperations>
1139 </eClassifiers>
1140 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Health_and_Pension_Insurance"
1141 eSuperTypes="#//DS">
1142 <eStructuralFeatures xsi:type="ecore:EAttribute" name="insurance_category" lowerBound="1"
1143 eType="#//Category_of_Health_and_Pension_Insurances"/>
1144 </eClassifiers>
1145 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Health_and_Pension_Insurances">
1146 <eLiterals name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
1147 <eLiterals name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" value="1" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
1148 <eLiterals name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" value="2" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
1149 </eClassifiers>
1150 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Private_Insurance_and_Plan" eSuperTypes="#//DS">
1151 <eOperations name="compute_increase_for_life_insurance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1152 <eOperations name="compute_maximum_deductible_amount_for_private_insruance" lowerBound="1"
1153 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1154 <eOperations name="compute_maximum_deductible_amount_for_old_age_pension_plan"
1155 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="private_insurance_and_plan_category"
1157 lowerBound="1" eType="#//Category_of_Private_Insurance_and_Plan"/>
1158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increase_for_life_insurance"
1159 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1160 derived="true"/>
1161 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_private_insurance"
1162 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1163 derived="true"/>
1164 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_old_age_pension_plan"
1165 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1166 derived="true"/>
1167 </eClassifiers>
1168 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Private_Insurance_and_Plan">
1169 <eLiterals name="PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
1170 <eLiterals name="PRIVATE_LIFE_INSURANCE" value="1" literal="PRIVATE_LIFE_INSURANCE"/>
1171 <eLiterals name="COMPANY_MEMBERS_PRIVATE_INSURANCE" value="2" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
1172 <eLiterals name="HOUSING_SAVING_PLAN" value="3" literal="HOUSING_SAVING_PLAN"/>
1173 <eLiterals name="OLD_AGE_PENSION_PLAN" value="4" literal="OLD_AGE_PENSION_PLAN"/>
1174 </eClassifiers>
1175 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Loss_Carryforward" eSuperTypes="#//DS"/>
1176 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Donation" eSuperTypes="#//DS"/>
1177 <eClassifiers xsi:type="ecore:EClass" name="Permanent_Expense" eSuperTypes="#//Special_Expense_DS">
1178 <eOperations name="is_expense_eligible_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
1179 <eParameters name="IN_agent_response" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1180 </eOperations>
1181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1182 eType="#//Category_of_Permanent_Expense"/>
1183 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_for_deduction"
1184 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1185 defaultValueLiteral="false" derived="true"/>
1186 </eClassifiers>
1187 <eClassifiers xsi:type="ecore:EClass" name="Special_Expense_DS" eSuperTypes="#//Expense"/>
1188 <eClassifiers xsi:type="ecore:EClass" name="Interest_Expense" eSuperTypes="#//Special_Expense_DS"/>
1189 <eClassifiers xsi:type="ecore:EClass" name="Private_Insurance_and_Plan" eSuperTypes="#//Special_Expense_DS">
1190 <eOperations name="is_private_insurance_and_plan_eligible_for_deduction" lowerBound="1"
1191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1193 eType="#//Category_of_Private_Insurance_and_Plan"/>
1194 <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration_of_contract" lowerBound="1"
1195 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_private_insurance_and_plan_eligible_for_deduction"
1197 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1198 defaultValueLiteral="false" derived="true"/>
1199 </eClassifiers>
1200 <eClassifiers xsi:type="ecore:EClass" name="Health_and_Pension_Insurance" eSuperTypes="#//Special_Expense_DS">
1201 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1202 eType="#//Category_of_Health_and_Pension_Insurances"/>
1203 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_related_to_additional_salary"
1204 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1205 defaultValueLiteral="false"/>
1206 </eClassifiers>
1207 <eClassifiers xsi:type="ecore:EClass" name="Donation" eSuperTypes="#//Special_Expense_DS">
1208 <eOperations name="get_beneficiary_eligibility_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1209 <eStructuralFeatures xsi:type="ecore:EAttribute" name="beneficiary1" lowerBound="1"
1210 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1211 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_beneficiary_eligible"
1212 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1213 defaultValueLiteral="false" derived="true"/>
1214 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_donation_reported" lowerBound="1"
1215 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1216 </eClassifiers>
1217 <eClassifiers xsi:type="ecore:EClass" name="Loss_Carryforward" eSuperTypes="#//Special_Expense_DS">
1218 <eOperations name="is_accountability_regular" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1219 <eOperations name="is_compensated_by_other_means" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1220 <eOperations name="has_been_tax_payer_partner_in_business" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1221 <eOperations name="has_tax_payer_inherited_business_ownership" lowerBound="1"
1222 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1223 <eStructuralFeatures xsi:type="ecore:EAttribute" name="regular_accountability"
1224 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1225 derived="true"/>
1226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="compensation_by_other_means"
1227 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1228 derived="true"/>
1229 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_inherited_business_ownership"
1230 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1231 defaultValueLiteral="false" derived="true"/>
1232 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_been_partner_in_business"
1233 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1234 defaultValueLiteral="true" derived="true"/>
1235 </eClassifiers>
1236 <eClassifiers xsi:type="ecore:EClass" name="Spousal_Expense_AC" eSuperTypes="#//Expense"/>
1237 <eClassifiers xsi:type="ecore:EClass" name="Extraordinary_Expense_CE" eSuperTypes="#//Expense">
1238 <eOperations name="is_above_thresholded_deduction_percentage_for_CE" lowerBound="1"
1239 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1240 <eOperations name="compute_thresholded_deduction_percentage_for_CE" lowerBound="1"
1241 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1242 <eParameters name="IN_thresholded_deduction_percentage" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1243 </eOperations>
1244 <eStructuralFeatures xsi:type="ecore:EAttribute" name="thresholded_deduction_percentage"
1245 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1246 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ce_type" lowerBound="1"
1247 eType="#//CE_Type"/>
1248 </eClassifiers>
1249 <eClassifiers xsi:type="ecore:EClass" name="Travel_Expense_FD" eSuperTypes="#//Professional_Expense"/>
1250 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expense" eSuperTypes="#//Expense"/>
1251 <eClassifiers xsi:type="ecore:EClass" name="Miscellaneous_Expense_FO" eSuperTypes="#//Professional_Expense"/>
1252 <eClassifiers xsi:type="ecore:EEnum" name="Legal_Union_Types">
1253 <eLiterals name="MARIAGE"/>
1254 <eLiterals name="PARTNERSHIP" value="1"/>
1255 <eLiterals name="OTHER" value="2"/>
1256 </eClassifiers>
1257</ecore:EPackage>