blob: 66ae728e833fe52c8c8cea00e0f0d64479ca420a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/case.study.a.model/model/Taxation.ecore'
package Taxation
--context Income inv inv8:
--if(not self.income_type.oclIsTypeOf(Employment_Income)) then
--self.details->forAll(d| d.distance = 0)
--else
--self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100)
--endif
--
--context Legal_Union_Record inv inv490:
--self.individual_A.oclIsKindOf(Tax_Payer)
--
--context Legal_Union_Record inv inv491:
--self.individual_B->forAll(i | i.oclIsKindOf(Physical_Person) )
--
--context Legal_Union_Record inv inv492:
--self.individual_B->forAll(i | not i.oclIsTypeOf(Dependent) )
--
--context Legal_Union_Record inv inv493:
--self.individual_A <> self.individual_B
--
--context Tax_Payer inv inv13:
-- self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ)
--implies
-- self.oclIsTypeOf(Resident_Tax_Payer)
context Income inv inv7:
let val:Real =self.details->asOrderedSet()->first().distance in
self.details->forAll(d: Income_Detail|d.distance = val)
--context External_Allowance inv inv15:
--let child:Dependent = self.person in
--let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in
--let t1:Set(Physical_Person) = Set{h.parents.individual_A}->union(h.parents.individual_B)->select(oclIsKindOf(Tax_Payer)) in
--if(t1->size()=1) then
--self.reciver = t1->asOrderedSet()->first()
--else
--self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1)
--endif
endpackage
|