@@ -11,7 +11,7 @@ type CommercialPropertyInsurance {
1111 string Cause_Of_Loss = ["Broad", "Special", "Basic"];
1212
1313 @(closeRelation=true, propagateUp=true)
14- relation commerciallocationclass : CommercialLocationClass[0..10 ] {
14+ relation commerciallocationclass : CommercialLocationClass[0..2 ] {
1515 locationCaStateCount = count(State == "CA");
1616 locationTxStateCount = count(State == "TX");
1717 @(defaultValue = 0)
@@ -22,24 +22,27 @@ type CommercialPropertyInsurance {
2222 locationMaxBuildingCovLimit = max(Location.commercialBuildingCovLimit);
2323 @(defaultValue = 0)
2424 locationMaxWarehouseCovLimit = max(Location.warehouseBuildingCovLimit);
25+ @(defaultValue = 0)
2526 locationSumBuildingEquipVal = sum(Location.buildingSumEquipValue);
2627 }
2728
2829 rule(Agreed_Value > 10000, "hide", "attribute", "SIC_Code");
2930
30- @(closeRelation=true)
3131 relation generalliabilitycoverage : GeneralLiabilityCoverage[0..1];
32-
3332 int childCommBuildCovLimit = commerciallocationclass.locationMaxBuildingCovLimit;
3433 int childWarehouseBuildCovLimit = commerciallocationclass.locationMaxWarehouseCovLimit;
3534 int childLocBuildAge6Count = commerciallocationclass.commLocBuildAge6Count;
3635 int childLocBuildEquipGoodCount = commerciallocationclass.commLocBuildEquipGoodCount;
3736 int childCommercialEquipmentValueSum = commerciallocationclass.locationSumBuildingEquipVal;
37+
38+
39+
40+ require(childLocBuildAge6Count > 0 && childLocBuildEquipGoodCount > 0, generalliabilitycoverage[GeneralLiabilityCoverage], "General Liability coverage is required when Building age is 6 and Equipment condition is Good");
41+ int generalLiabilityLimit = generalliabilitycoverage[GeneralLiabilityCoverage].General_Liability_Limit;
42+
43+ require(commerciallocationclass.locationMaxWarehouseCovLimit == 50000 && commerciallocationclass.locationMaxBuildingCovLimit == 50000, generalliabilitycoverage[GeneralLiabilityCoverage] {General_Liability_Limit = 50000});
3844
39- require(childLocBuildAge6Count > 0 && childLocBuildEquipGoodCount > 0, generalliabilitycoverage[GeneralLiabilityCoverage] {General_Liability_Limit = 50000}, "General Liability coverage is required when Building age is 6 and Equipment condition is Good");
40- boolean glLimitCondition = commerciallocationclass.locationTxStateCount == 0 && (childWarehouseBuildCovLimit < 20000 && childCommBuildCovLimit < 50000) && childCommercialEquipmentValueSum > 100000 && generalliabilitycoverage[GeneralLiabilityCoverage] == 1;
4145
42- int generalLiabilityLimit = [1000, 2000, 5000, 10000, 25000, 50000];
4346}
4447
4548type GeneralLiabilityCoverage {
@@ -60,7 +63,7 @@ type CommercialLocationClass {
6063
6164type Location : CommercialLocationClass {
6265 @(closeRelation=true, propagateUp=true)
63- relation commercialbuildingclass : CommercialBuildingClass[0..10 ] {
66+ relation commercialbuildingclass : CommercialBuildingClass[0..2 ] {
6467 @(defaultValue = 0)
6568 buildingAge6Count = count(Building_Age == 6);
6669 @(defaultValue = 0)
@@ -77,13 +80,12 @@ type Location : CommercialLocationClass {
7780
7881 string locationProdState = State;
7982
80- int locBuildAge6Count = ( commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass .buildingAge6Count : 0 ;
81- int locBuildEquipGoodCountInt = ( commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass .locBuildEquipGoodCount : 0 ;
82- int commercialBuildingCovLimit = ( commercialbuildingclass[Building] > 0) ? commercialbuildingclass .maxBuildCovLimit : 0 ;
83- int warehouseBuildingCovLimit = ( commercialbuildingclass[Warehouse] > 0) ? commercialbuildingclass .maxWarehouseCovLimit : 0 ;
84- int buildingSumEquipValue = ( commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass .sumBuildingEquipVal : 0 ;
83+ int locBuildAge6Count = commercialbuildingclass.buildingAge6Count;
84+ int locBuildEquipGoodCountInt = commercialbuildingclass.locBuildEquipGoodCount;
85+ int commercialBuildingCovLimit = commercialbuildingclass.maxBuildCovLimit;
86+ int warehouseBuildingCovLimit = commercialbuildingclass.maxWarehouseCovLimit;
87+ int buildingSumEquipValue =commercialbuildingclass.sumBuildingEquipVal;
8588
86- /* Set attribute value rule */
8789 constraint(City == "Boston" -> State == "MA", "State must be MA if City is set to Boston");
8890 constraint(City == "San Francisco" -> State == "CA", "State must be CA if City is set to San Francisco");
8991}
@@ -101,46 +103,44 @@ type CommercialBuildingClass {
101103
102104type Building : CommercialBuildingClass {
103105 @(closeRelation = true, propagateUp=true)
104- relation commercialequipmentclass : CommercialEquipmentClass[0..20 ] {
106+ relation commercialequipmentclass : CommercialEquipmentClass[0..2 ] {
105107 equipMakeLawnMowerCount = count(Equipment_Make == "Lawnmower");
106108 equipMakeFridgeCount = count(Equipment_Make == "Refrigerator");
107109 equipGoodConditionCount = count(Equipment_Condition == "Good");
108110 equipValueSum = sum(Equipment_Value);
109111 }
110112
111- @(closeRelation=true)
113+ @(closeRelation=true, propagateUp=true )
112114 relation burglarycoverage : BurglaryCoverage[0..1];
113115
114- @(closeRelation=true)
116+ @(closeRelation=true, propagateUp=true )
115117 relation vandalismcoverage : VandalismCoverage[0..1];
116-
117- string parentLocationProdState = parent(locationProdState);
118118 string parentLocationState = parent(State);
119119 int genLiabilityLimit = parent(genLimit);
120120
121- int commercialBurglaryCovLimit = ( burglarycoverage[BurglaryCoverage] > 0) ? burglarycoverage .Burglary_Limit : 0 ;
122- int buildingEquipValSum = ( commercialequipmentclass[Equipment] > 0) ? commercialequipmentclass .equipValueSum : 0 ;
123- int buildEquipGoodConditionCount = ( commercialequipmentclass[Equipment] > 0) ? commercialequipmentclass .equipGoodConditionCount : 0 ;
121+ int commercialBurglaryCovLimit = burglarycoverage.Burglary_Limit;
122+ int buildingEquipValSum = commercialequipmentclass.equipValueSum;
123+ int buildEquipGoodConditionCount = commercialequipmentclass.equipGoodConditionCount;
124124
125125 boolean equipmentGoodBuildingAgeCondition = buildEquipGoodConditionCount > 0 && Building_Age == 6;
126126 rule(buildEquipGoodConditionCount > 0 && Building_Age == 6, "hide", "attribute", "Sprinklers");
127127}
128128
129129type Warehouse : CommercialBuildingClass {
130130 @(closeRelation = true, propagateUp=true)
131- relation warehousecommercialequipmentclass : CommercialEquipmentClass[0..20 ];
131+ relation warehousecommercialequipmentclass : CommercialEquipmentClass[0..2 ];
132132
133133 @(closeRelation=true, propagateUp=true)
134134 relation warehouseburglarycoverage : BurglaryCoverage[0..1];
135135
136- @(closeRelation=true,sequence = 3 )
136+ @(closeRelation=true)
137137 relation warehousevandalismcoverage : VandalismCoverage[0..1];
138138
139139 int warehouseBurglaryCovLimit = warehouseburglarycoverage.Burglary_Limit;
140140}
141141
142142type CommercialEquipmentClass {
143- @(defaultValue = "Good", sequence=1 )
143+ @(defaultValue = "Good")
144144 string Equipment_Condition = ["Good", "Very Good", "New"];
145145
146146 @(defaultValue = "5")
0 commit comments