OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
if ( self.disability_percentage >= 0.25 and self.disability_percentage < 0.35) then
150
else if ( self.disability_percentage >= 0.35 and self.disability_percentage < 0.45) then
225
else if ( self.disability_percentage >=0.45 and self.disability_percentage <0.55) then
375
else if ( self.disability_percentage >= 0.55 and self.disability_percentage < 0.65 ) then
450
else if ( self.disability_percentage >= 0.65 and self.disability_percentage < 0.75) then
525
else if ( self.disability_percentage >=0.75 and self.disability_percentage < 0.85) then
585
else if ( self.disability_percentage >=0.85 and self.disability_percentage< 0.95) then
645
else if ( self.disability_percentage >= 0.95 and self.disability_percentage<=1)then
735 else 0 endif endif endif endif endif endif endif endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
false
else
lasted_union.separation_cause=seperation_type
endif
endif
OCL
self.birth_year
OCL
if(birth_year>=year )then
0
else
year-birth_year
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in
if(legel_unions->size()=0) then
false
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
true
else
false
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in
if(legel_unions->size()=0) then
-1
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.oclIsUndefined()) then
-1
else
if(lasted_union.end_year=-1)then
-1
else
lasted_union.end_year
endif
endif
endif
OCL
let sep_year:Integer=self.getSeperationYear(year) in
if(sep_year=-1)then
false
else
if( (sep_year <= year and sep_year >= (year -3))=false) then
false
else
let past_sep_year:Integer=self.getSeperationYear(year-5) in
if(past_sep_year=-1)then
true
else
false
endif
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
if(union.oclIsInvalid())then
invalid
else
if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
if(lasted_union.individual_A=self)then
lasted_union.individual_B
else
lasted_union.individual_A
endif
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
if(lasted_union.end_year=-1)then
lasted_union
else
invalid
endif
endif
OCL
let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
if(legel_unions->size()=0) then
invalid
else
let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year<=year)in
let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
lasted_union
endif
OCL
if(dep_age>=6 and dep_age<=11) then
round_lower_euros(base + 16.17)
else if (dep_age>=12) then round_lower_euros(base + 48.52) else
if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
OCL
if(dep_age>=6 and dep_age<=11) then
(base + 16.17).round()
else if (dep_age>=12) then (base + 48.52).round() else
if(is_disabled) then(base + 185.60).round() else base endif endif endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
non_null_amounts->collect(amount)->min()

operation def
OCL
self.details->select(is_worked)->size()
operation def
OCL
let a:Set(Income_Detail)=self.details->select(is_worked) in
a.worked_days->sum().mod(25)
OCL
let nb_months:Integer=self.prorata_worked_months()in
let nb_days:Integer=self.prorata_worked_days()in
if(nb_months=12) then
1
else
nb_months/12 + nb_days/300
endif
operation deft
operation deft
operation deft
OCL
let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
involved_details.amount->sum()
OCL
if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
if(start_year.oclIsUndefined())then
-1
else
let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in
if(res<0) then
0
else
res
endif
endif
else
-1
endif
OCL
deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly
OCL
credit_CIS_yearly+credit_CIP_yearly
OCL
1455
OCL
25
OCL
300
OCL
300
OCL
99
OCL
30
OCL
4
OCL
2574
OCL
3.12
OCL
78
OCL
936
OCL
1
OCL
25
OCL
300
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 0.08
else if(revenu <= 1340) then 0.1
else if(revenu <= 1500) then 0.12
else if(revenu <= 1655) then 0.14
else if(revenu <= 1815) then 0.16
else if(revenu <= 1975) then 0.18
else if(revenu <= 2135) then 0.2
else if(revenu <= 2295) then 0.22
else if(revenu <= 2450) then 0.24
else if(revenu <= 2610) then 0.26
else if(revenu <= 2770) then 0.28
else if(revenu <= 2930) then 0.3
else if(revenu <= 3090) then 0.32
else if(revenu <= 3245) then 0.34
else if(revenu <= 3405) then 0.36
else if(revenu <= 3565) then 0.38
else if(revenu <= 8415) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1020) then 0
else if(revenu <= 1180) then 81.9
else if(revenu <= 1340) then 105.555
else if(revenu <= 1500) then 132.39000
else if(revenu <= 1655) then 162.405
else if(revenu <= 1815) then 195.6
else if(revenu <= 1975) then 231.975
else if(revenu <= 2135) then 271.53
else if(revenu <= 2295) then 314.265
else if(revenu <= 2450) then 360.18
else if(revenu <= 2610) then 409.275
else if(revenu <= 2770) then 461.55
else if(revenu <= 2930) then 517.005
else if(revenu <= 3090) then 575.64
else if(revenu <= 3245) then 637.455
else if(revenu <= 3405) then 702.45
else if(revenu <= 3565) then 770.625
else if(revenu <= 8415) then 806.30250
else 890.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 0.12
else if(revenu <= 2170) then 0.15
else if(revenu <= 2280) then 0.18
else if(revenu <= 2385) then 0.21
else if(revenu <= 2490) then 0.24
else if(revenu <= 2595) then 0.27
else if(revenu <= 2700) then 0.3
else if(revenu <= 2810) then 0.33
else if(revenu <= 2915) then 0.36
else if(revenu <= 3020) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2065) then 235.5
else if(revenu <= 2170) then 297.555
else if(revenu <= 2280) then 362.79
else if(revenu <= 2385) then 431.205
else if(revenu <= 2490) then 502.8
else if(revenu <= 2595) then 577.575
else if(revenu <= 2700) then 655.53
else if(revenu <= 2810) then 736.665
else if(revenu <= 2915) then 820.98
else if(revenu <= 3020) then 908.475
else 938.7
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 0.08
else if(revenu <= 2595) then 0.1
else if(revenu <= 2915) then 0.12
else if(revenu <= 3230) then 0.14
else if(revenu <= 3550) then 0.16
else if(revenu <= 3870) then 0.18
else if(revenu <= 4185) then 0.2
else if(revenu <= 4505) then 0.22
else if(revenu <= 4820) then 0.24
else if(revenu <= 5140) then 0.26
else if(revenu <= 5460) then 0.28
else if(revenu <= 5775) then 0.3
else if(revenu <= 6095) then 0.32
else if(revenu <= 6410) then 0.34
else if(revenu <= 6730) then 0.36
else if(revenu <= 7050) then 0.38
else if(revenu <= 16750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1960) then 0
else if(revenu <= 2280) then 157
else if(revenu <= 2595) then 202.61
else if(revenu <= 2915) then 254.58
else if(revenu <= 3230) then 312.91
else if(revenu <= 3550) then 377.6
else if(revenu <= 3870) then 448.65
else if(revenu <= 4185) then 526.06
else if(revenu <= 4505) then 609.83
else if(revenu <= 4820) then 699.96
else if(revenu <= 5140) then 796.45
else if(revenu <= 5460) then 899.3
else if(revenu <= 5775) then 1008.51
else if(revenu <= 6095) then 1124.08
else if(revenu <= 6410) then 1246.01
else if(revenu <= 6730) then 1374.3
else if(revenu <= 7050) then 1508.95
else if(revenu <= 16750) then 1579.455
else 1746.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 0.08
else if(revenu <= 1320) then 0.1
else if(revenu <= 1480) then 0.12
else if(revenu <= 1635) then 0.14
else if(revenu <= 1795) then 0.16
else if(revenu <= 1955) then 0.18
else if(revenu <= 2115) then 0.2
else if(revenu <= 2275) then 0.22
else if(revenu <= 2430) then 0.24
else if(revenu <= 2590) then 0.26
else if(revenu <= 2750) then 0.28
else if(revenu <= 2910) then 0.3
else if(revenu <= 3070) then 0.32
else if(revenu <= 3225) then 0.34
else if(revenu <= 3385) then 0.36
else if(revenu <= 3545) then 0.38
else if(revenu <= 8395) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1000) then 0
else if(revenu <= 1160) then 80.3
else if(revenu <= 1320) then 103.555
else if(revenu <= 1480) then 129.99
else if(revenu <= 1635) then 159.605
else if(revenu <= 1795) then 192.4
else if(revenu <= 1955) then 228.375
else if(revenu <= 2115) then 267.53
else if(revenu <= 2275) then 309.865
else if(revenu <= 2430) then 355.38
else if(revenu <= 2590) then 404.075
else if(revenu <= 2750) then 455.95
else if(revenu <= 2910) then 511.005
else if(revenu <= 3070) then 569.24
else if(revenu <= 3225) then 630.655
else if(revenu <= 3385) then 695.25
else if(revenu <= 3545) then 763.025
else if(revenu <= 8395) then 798.5025
else 882.48583
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 0.12
else if(revenu <= 2150) then 0.15
else if(revenu <= 2260) then 0.18
else if(revenu <= 2365) then 0.21
else if(revenu <= 2470) then 0.24
else if(revenu <= 2575) then 0.27
else if(revenu <= 2680) then 0.3
else if(revenu <= 2790) then 0.33
else if(revenu <= 2895) then 0.36
else if(revenu <= 3000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2045) then 233.100
else if(revenu <= 2150) then 294.555
else if(revenu <= 2260) then 359.190
else if(revenu <= 2365) then 427.005
else if(revenu <= 2470) then 498
else if(revenu <= 2575) then 572.175
else if(revenu <= 2680) then 649.53
else if(revenu <= 2790) then 730.065
else if(revenu <= 2895) then 813.780
else if(revenu <= 3000) then 900.675
else 930.700
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 0.08
else if(revenu <= 2575) then 0.1
else if(revenu <= 2895) then 0.12
else if(revenu <= 3210) then 0.14
else if(revenu <= 3530) then 0.16
else if(revenu <= 3850) then 0.18
else if(revenu <= 4165) then 0.2
else if(revenu <= 4485) then 0.22
else if(revenu <= 4800) then 0.24
else if(revenu <= 5120) then 0.26
else if(revenu <= 5440) then 0.28
else if(revenu <= 5755) then 0.3
else if(revenu <= 6075) then 0.32
else if(revenu <= 6390) then 0.34
else if(revenu <= 6710) then 0.36
else if(revenu <= 7030) then 0.38
else if(revenu <= 16730) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 1940) then 0
else if(revenu <= 2260) then 155.4
else if(revenu <= 2575) then 200.61
else if(revenu <= 2895) then 252.18
else if(revenu <= 3210) then 310.11
else if(revenu <= 3530) then 374.4
else if(revenu <= 3850) then 445.05
else if(revenu <= 4165) then 522.06
else if(revenu <= 4485) then 605.43
else if(revenu <= 4800) then 695.16
else if(revenu <= 5120) then 791.25
else if(revenu <= 5440) then 893.7
else if(revenu <= 5755) then 1002.51
else if(revenu <= 6075) then 1117.68
else if(revenu <= 6390) then 1239.21
else if(revenu <= 6710) then 1367.1
else if(revenu <= 7030) then 1501.35
else if(revenu <= 16730) then 1571.655
else 1738.97166
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 0.08
else if(revenu <= 15050) then 0.1
else if(revenu <= 16950) then 0.12
else if(revenu <= 18850) then 0.14
else if(revenu <= 20800) then 0.16
else if(revenu <= 22700) then 0.18
else if(revenu <= 24600) then 0.2
else if(revenu <= 26500) then 0.22
else if(revenu <= 28400) then 0.24
else if(revenu <= 30300) then 0.26
else if(revenu <= 32250) then 0.28
else if(revenu <= 34150) then 0.3
else if(revenu <= 36050) then 0.32
else if(revenu <= 37950) then 0.34
else if(revenu <= 39850) then 0.36
else if(revenu <= 41750) then 0.38
else if(revenu <= 100000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 11250) then 0
else if(revenu <= 13150) then 901.200
else if(revenu <= 15050) then 1164.660
else if(revenu <= 16950) then 1466.280
else if(revenu <= 18850) then 1806.060
else if(revenu <= 20800) then 2184
else if(revenu <= 22700) then 2600.100
else if(revenu <= 24600) then 3054.360
else if(revenu <= 26500) then 3546.780
else if(revenu <= 28400) then 4077.360
else if(revenu <= 30300) then 4646.100
else if(revenu <= 32250) then 5253
else if(revenu <= 34150) then 5898.060
else if(revenu <= 36050) then 6581.28
else if(revenu <= 37950) then 7302.66
else if(revenu <= 39850) then 8062.2
else if(revenu <= 41750) then 8859.9
else if(revenu <= 100000) then 9277.83
else 10277.83
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 0.12
else if(revenu <= 25050) then 0.15
else if(revenu <= 26300) then 0.18
else if(revenu <= 27600) then 0.21
else if(revenu <= 28850) then 0.24
else if(revenu <= 30150) then 0.27
else if(revenu <= 31400) then 0.3
else if(revenu <= 32700) then 0.33
else if(revenu <= 33950) then 0.36
else if(revenu <= 35250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 23800) then 2703.600
else if(revenu <= 25050) then 3417.660
else if(revenu <= 26300) then 4169.880
else if(revenu <= 27600) then 4960.260
else if(revenu <= 28850) then 5788.800
else if(revenu <= 30150) then 6655.500
else if(revenu <= 31400) then 7560.360
else if(revenu <= 32700) then 8503.380
else if(revenu <= 33950) then 9484.560
else if(revenu <= 35250) then 10503.900
else 10856.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 0.08
else if(revenu <= 30150) then 0.1
else if(revenu <= 33950) then 0.12
else if(revenu <= 37750) then 0.14
else if(revenu <= 41600) then 0.16
else if(revenu <= 45400) then 0.18
else if(revenu <= 49200) then 0.2
else if(revenu <= 53050) then 0.22
else if(revenu <= 56850) then 0.24
else if(revenu <= 60650) then 0.26
else if(revenu <= 64500) then 0.28
else if(revenu <= 68300) then 0.3
else if(revenu <= 72100) then 0.32
else if(revenu <= 75950) then 0.34
else if(revenu <= 79750) then 0.36
else if(revenu <= 83550) then 0.38
else if(revenu <= 200000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<=22500) then 0
else if(revenu <= 26300) then 1802.400
else if(revenu <= 30150) then 2329.320
else if(revenu <= 33950) then 2932.560
else if(revenu <= 37750) then 3612.120
else if(revenu <= 41600) then 4368.000
else if(revenu <= 45400) then 5200.200
else if(revenu <= 49200) then 6108.720
else if(revenu <= 53050) then 7093.560
else if(revenu <= 56850) then 8154.720
else if(revenu <= 60650) then 9292.200
else if(revenu <= 64500) then 10506.000
else if(revenu <= 68300) then 11796.120
else if(revenu <= 72100) then 13162.560
else if(revenu <= 75950) then 14605.320
else if(revenu <= 79750) then 16124.400
else if(revenu <= 83550) then 17719.800
else if(revenu <= 200000) then 18555.660
else 20555.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
let p1:Integer = amount.floor() in
p1.toString().toReal()
OCL
let p1:Integer = amount.floor() in
if(p1=amount) then
amount
else
let p2_temp:Real = (amount-p1) * 10 in
let p2:Integer = p2_temp.floor() in
p1.toString().toReal()+(p2.toString().toReal()/10.0)
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 0.08
else if(revenu <= 16100) then 0.1
else if(revenu <= 18000) then 0.12
else if(revenu <= 19900) then 0.14
else if(revenu <= 21800) then 0.16
else if(revenu <= 23700) then 0.18
else if(revenu <= 25600) then 0.2
else if(revenu <= 27500) then 0.22
else if(revenu <= 29450) then 0.24
else if(revenu <= 31350) then 0.26
else if(revenu <= 33250) then 0.28
else if(revenu <= 35150) then 0.3
else if(revenu <= 37050) then 0.32
else if(revenu <= 38950) then 0.34
else if(revenu <= 40900) then 0.36
else if(revenu <= 42800) then 0.38
else if(revenu <= 101000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12250) then 0
else if(revenu <= 14150) then 982.8000
else if(revenu <= 16100) then 1266.6600
else if(revenu <= 18000) then 1588.6800
else if(revenu <= 19900) then 1948.8600
else if(revenu <= 21800) then 2347.2000
else if(revenu <= 23700) then 2783.7000
else if(revenu <= 25600) then 3258.3600
else if(revenu <= 27500) then 3771.1800
else if(revenu <= 29450) then 4322.1600
else if(revenu <= 31350) then 4911.3000
else if(revenu <= 33250) then 5538.6000
else if(revenu <= 35150) then 6204.0600
else if(revenu <= 37050) then 6907.6800
else if(revenu <= 38950) then 7649.4600
else if(revenu <= 40900) then 8429.4000
else if(revenu <= 42800) then 9247.5000
else if(revenu <= 101000) then 9675.6300
else 10685.8300
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 0.12
else if(revenu <= 26050) then 0.15
else if(revenu <= 27350) then 0.18
else if(revenu <= 28600) then 0.21
else if(revenu <= 29900) then 0.24
else if(revenu <= 31150) then 0.27
else if(revenu <= 32450) then 0.3
else if(revenu <= 33700) then 0.33
else if(revenu <= 34950) then 0.36
else if(revenu <= 36250) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23500) then 0
else if(revenu <= 24800) then 2826.0000
else if(revenu <= 26050) then 3570.6600
else if(revenu <= 27350) then 4353.4800
else if(revenu <= 28600) then 5174.4600
else if(revenu <= 29900) then 6033.6000
else if(revenu <= 31150) then 6930.9000
else if(revenu <= 32450) then 7866.3600
else if(revenu <= 33700) then 8839.9800
else if(revenu <= 34950) then 9851.7600
else if(revenu <= 36250) then 10901.7000
else 11264.4000
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 0.08
else if(revenu <= 31150) then 0.1
else if(revenu <= 34950) then 0.12
else if(revenu <= 38800) then 0.14
else if(revenu <= 42600) then 0.16
else if(revenu <= 46400) then 0.18
else if(revenu <= 50250) then 0.2
else if(revenu <= 54050) then 0.22
else if(revenu <= 57850) then 0.24
else if(revenu <= 61700) then 0.26
else if(revenu <= 65500) then 0.28
else if(revenu <= 69300) then 0.3
else if(revenu <= 73150) then 0.32
else if(revenu <= 76950) then 0.34
else if(revenu <= 80750) then 0.36
else if(revenu <= 84600) then 0.38
else if(revenu <= 201000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23550) then 0
else if(revenu <= 27350) then 1884.000
else if(revenu <= 31150) then 2431.3200
else if(revenu <= 34950) then 3054.9600
else if(revenu <= 38800) then 3754.9200
else if(revenu <= 42600) then 4531.2000
else if(revenu <= 46400) then 5383.8000
else if(revenu <= 50250) then 6312.7200
else if(revenu <= 54050) then 7317.9600
else if(revenu <= 57850) then 8399.5200
else if(revenu <= 61700) then 9557.4000
else if(revenu <= 65500) then 10791.6000
else if(revenu <= 69300) then 12102.1200
else if(revenu <= 73150) then 13488.9600
else if(revenu <= 76950) then 14952.1200
else if(revenu <= 80750) then 16491.6000
else if(revenu <= 84600) then 18107.4000
else if(revenu <= 201000) then 18953.4600
else 20963.6600
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 0.08
else if(revenu <= 15850) then 0.1
else if(revenu <= 17750) then 0.12
else if(revenu <= 19650) then 0.14
else if(revenu <= 21550) then 0.16
else if(revenu <= 23450) then 0.18
else if(revenu <= 25400) then 0.2
else if(revenu <= 27300) then 0.22
else if(revenu <= 29200) then 0.24
else if(revenu <= 31100) then 0.26
else if(revenu <= 33000) then 0.28
else if(revenu <= 34900) then 0.3
else if(revenu <= 36800) then 0.32
else if(revenu <= 38750) then 0.34
else if(revenu <= 40650) then 0.36
else if(revenu <= 42550) then 0.38
else if(revenu <= 100750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 12000) then 0
else if(revenu <= 13950) then 963.600
else if(revenu <= 15850) then 1242.660
else if(revenu <= 17750) then 1559.880
else if(revenu <= 19650) then 1915.260
else if(revenu <= 21550) then 2308.800
else if(revenu <= 23450) then 2740.500
else if(revenu <= 25400) then 3210.360
else if(revenu <= 27300) then 3718.380
else if(revenu <= 29200) then 4264.560
else if(revenu <= 31100) then 4848.900
else if(revenu <= 33000) then 5471.400
else if(revenu <= 34900) then 6132.060
else if(revenu <= 36800) then 6830.880
else if(revenu <= 38750) then 7567.860
else if(revenu <= 40650) then 8343.000
else if(revenu <= 42550) then 9156.300
else if(revenu <= 100750) then 9582.030
else 10589.830
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 0.12
else if(revenu <= 25850) then 0.15
else if(revenu <= 27100) then 0.18
else if(revenu <= 28350) then 0.21
else if(revenu <= 29650) then 0.24
else if(revenu <= 30900) then 0.27
else if(revenu <= 32200) then 0.3
else if(revenu <= 33450) then 0.33
else if(revenu <= 34750) then 0.36
else if(revenu <= 36000) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 24550) then 2797.200
else if(revenu <= 25850) then 3534.660
else if(revenu <= 27100) then 4310.280
else if(revenu <= 28350) then 5124.060
else if(revenu <= 29650) then 5976.000
else if(revenu <= 30900) then 6866.100
else if(revenu <= 32200) then 7794.360
else if(revenu <= 33450) then 8760.780
else if(revenu <= 34750) then 9765.360
else if(revenu <= 36000) then 10808.100
else 11168.400
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 0.08
else if(revenu <= 30900) then 0.1
else if(revenu <= 34750) then 0.12
else if(revenu <= 38550) then 0.14
else if(revenu <= 42350) then 0.16
else if(revenu <= 46200) then 0.18
else if(revenu <= 50000) then 0.2
else if(revenu <= 53800) then 0.22
else if(revenu <= 57650) then 0.24
else if(revenu <= 61450) then 0.26
else if(revenu <= 65250) then 0.28
else if(revenu <= 69100) then 0.3
else if(revenu <= 72900) then 0.32
else if(revenu <= 76700) then 0.34
else if(revenu <= 80550) then 0.36
else if(revenu <= 84350) then 0.38
else if(revenu <= 200750) then 0.39
else 0.4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(revenu<= 23300) then 0
else if(revenu <= 27100) then 1864.800
else if(revenu <= 30900) then 2407.320
else if(revenu <= 34750) then 3026.160
else if(revenu <= 38550) then 3721.320
else if(revenu <= 42350) then 4492.800
else if(revenu <= 46200) then 5340.600
else if(revenu <= 50000) then 6264.720
else if(revenu <= 53800) then 7265.160
else if(revenu <= 57650) then 8341.920
else if(revenu <= 61450) then 9495.000
else if(revenu <= 65250) then 10724.400
else if(revenu <= 69100) then 12030.120
else if(revenu <= 72900) then 13412.160
else if(revenu <= 76700) then 14870.520
else if(revenu <= 80550) then 16405.200
else if(revenu <= 84350) then 18016.200
else if(revenu <= 200750) then 18859.860
else 20867.660
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif
OCL
0.0305
OCL
0.08
OCL
if(amount<50) then
0
else
if (amount>=50 and amount<100) then
50.0
else
let temp_amount:Real = round_lower_euros(amount) in
let ch:String=temp_amount.toString()in
let temp_amount1:Real = temp_amount / 100.0 in
if(temp_amount1.round() = temp_amount1.floor()) then
temp_amount1.floor() * 100.0
else
(temp_amount1.round() * 100.0) - 50
endif
endif
endif
OCL
let gross_salary_year:Real= income.income_per_year() in
let type:Income_Type=income.income_type in
if(type.oclIsTypeOf(Employment_Income)) then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in
let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in
let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in
round_lower_fifty_euros(taxable_income)
else
if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then
let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in
let taxable_income:Real= gross_salary_year- sum_deductions_year in
round_lower_fifty_euros(taxable_income)
else
let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in
let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 |
if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount
else
if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
if(elem.is_contributing_CNS=true)then
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())
else
acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE())
endif
endif
endif
)
in round_lower_fifty_euros(res)
endif
endif
OCL
let ch:String=amount.toString() in
if(ch.indexOf('.')=-1)then
amount
else
let pos_pt:Integer=ch.indexOf('.') in
if(pos_pt+degit >=ch.size()) then
amount
else
let ch1:String=ch.substring(1,pos_pt+degit) in
ch1.toReal()
endif
endif
OCL
3480
OCL
1921.03
OCL
if(year_divorce>1997)then
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
if(year=2009 or year = 2010) then
23400
else
24000
endif
endif
endif
else
if(year <=2007) then
20400
else
if(year=2008) then
21600
else
23400
endif
endif
endif
OCL
4500
OCL
if(income_type='Employment') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
if(income_type='Pension') then
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
else
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
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
let res:Real = round_lower_euros(a * local_amount - b) in
let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in
if(amount<max) then
let final_res:Real= round_lower_euros(res*1.07) in
if(final_res<12)then
0
else
final_res
endif
else
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
let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in
if(final_res<12)then
0
else
final_res
endif
endif
endif
endif