Skip to content

Commit

Permalink
Merge for v19.0.10 Approved (#720)
Browse files Browse the repository at this point in the history
* Updated 118 to exclude pledged axis

* Updated functions for rule 118 error.

* updated V19

Co-authored-by: Campbell
  • Loading branch information
davidtauriello committed Jan 23, 2023
1 parent 44374f0 commit 85409f7
Show file tree
Hide file tree
Showing 15 changed files with 64 additions and 58 deletions.
Binary file modified dqc_us_rules/dqc-ifrs-2018-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-ifrs-2019-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-ifrs-2020-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-ifrs-2021-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-ifrs-2022-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-us-2018-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-us-2019-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-us-2020-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-us-2021-V19-ruleset.zip
Binary file not shown.
Binary file modified dqc_us_rules/dqc-us-2022-V19-ruleset.zip
Binary file not shown.
114 changes: 60 additions & 54 deletions dqc_us_rules/source/lib/functions.xule
Original file line number Diff line number Diff line change
Expand Up @@ -721,38 +721,41 @@ function getDimensionSums($concept, $cube, $dimensions_of_sum, $parentConcept)
/** Handles case where we have 2 dimensions in the financial statements **/

$dimensionList = $dimensions.to-list
$dim = $dimensionList[1].name
$dim2 = $dimensionList[2].name

$members = navigate dimensions descendants from $dim drs-role $cube.drs-role returns target-name
$members2 = navigate dimensions descendants from $dim2 drs-role $cube.drs-role returns target-name
if $dimensionList.length == 0
skip
else
$dim = $dimensionList[1].name
$dim2 = $dimensionList[2].name

$members = navigate dimensions descendants from $dim drs-role $cube.drs-role returns target-name
$members2 = navigate dimensions descendants from $dim2 drs-role $cube.drs-role returns target-name

$domain = navigate dimensions dimension-domain descendants from $dim drs-role $cube.drs-role returns set target-name
$domain2 = navigate dimensions dimension-domain descendants from $dim2 drs-role $cube.drs-role returns set target-name
$domain = navigate dimensions dimension-domain descendants from $dim drs-role $cube.drs-role returns set target-name
$domain2 = navigate dimensions dimension-domain descendants from $dim2 drs-role $cube.drs-role returns set target-name

/** Get a set of the unique members **/
$member_descendants = $members.to-set - $domain;
$member_descendants2 = $members2.to-set - $domain2;
/** Get a set of the unique members **/
$member_descendants = $members.to-set - $domain;
$member_descendants2 = $members2.to-set - $domain2;

/** Generate a list of the member values to sum. It excludes member values that are included as a subtotal, by checking if a members ancestor has a value. If yes, then the value is excluded.**/
/** Generate a list of the member values to sum. It excludes member values that are included as a subtotal, by checking if a members ancestor has a value. If yes, then the value is excluded.**/

$valid_facts = list(for $member in $member_descendants.to-list.sort
$ancestors_list = (navigate dimensions domain-member ancestors from $member drs-role $cube.drs-role returns set (target-name)) - $domain;
for $member2 in $member_descendants2.to-list.sort
$ancestors_list2 = (navigate dimensions domain-member ancestors from $member2 drs-role $cube.drs-role returns set (target-name)) - $domain2;
if ($ancestors_list.length > 0 or $ancestors_list2.length > 0) and list([nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim in $ancestors_list @$dim2 = $ancestors_list2]).length > 0
skip
else
[nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim = $member @$dim2 = $member2]
);
$valid_facts = list(for $member in $member_descendants.to-list.sort
$ancestors_list = (navigate dimensions domain-member ancestors from $member drs-role $cube.drs-role returns set (target-name)) - $domain;
for $member2 in $member_descendants2.to-list.sort
$ancestors_list2 = (navigate dimensions domain-member ancestors from $member2 drs-role $cube.drs-role returns set (target-name)) - $domain2;
if ($ancestors_list.length > 0 or $ancestors_list2.length > 0) and list([nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim in $ancestors_list @$dim2 = $ancestors_list2]).length > 0
skip
else
[nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim = $member @$dim2 = $member2]
);

/** where not $fact.dimensions().keys.name.local-name.contains('LegalEntityAxis') **/
/** If there are no member facts the rule ends otherwise the subtotal is evaluated **/
if $valid_facts.length == 0
skip
else
/** aggregate the fact values on the axis **/
sum($valid_facts)
/** where not $fact.dimensions().keys.name.local-name.contains('LegalEntityAxis') **/
/** If there are no member facts the rule ends otherwise the subtotal is evaluated **/
if $valid_facts.length == 0
skip
else
/** aggregate the fact values on the axis **/
sum($valid_facts)

/**
** getDimensionNames
Expand Down Expand Up @@ -821,38 +824,41 @@ function getDimensionNames($concept, $cube, $dimensions_of_sum, $parentConcept)
/** Handles case where we have 2 dimensions in the financial statements **/

$dimensionList = $dimensions.to-list
$dim = $dimensionList[1].name
$dim2 = $dimensionList[2].name

$members = navigate dimensions descendants from $dim drs-role $cube.drs-role returns target-name
$members2 = navigate dimensions descendants from $dim2 drs-role $cube.drs-role returns target-name
if $dimensionList.length == 0
skip
else
$dim = $dimensionList[1].name
$dim2 = $dimensionList[2].name

$members = navigate dimensions descendants from $dim drs-role $cube.drs-role returns target-name
$members2 = navigate dimensions descendants from $dim2 drs-role $cube.drs-role returns target-name

$domain = navigate dimensions dimension-domain descendants from $dim drs-role $cube.drs-role returns set target-name
$domain2 = navigate dimensions dimension-domain descendants from $dim2 drs-role $cube.drs-role returns set target-name
$domain = navigate dimensions dimension-domain descendants from $dim drs-role $cube.drs-role returns set target-name
$domain2 = navigate dimensions dimension-domain descendants from $dim2 drs-role $cube.drs-role returns set target-name

/** Get a set of the unique members **/
$member_descendants = $members.to-set - $domain;
$member_descendants2 = $members2.to-set - $domain2;
/** Get a set of the unique members **/
$member_descendants = $members.to-set - $domain;
$member_descendants2 = $members2.to-set - $domain2;

/** Generate a list of the member values to sum. It excludes member values that are included as a subtotal, by checking if a members ancestor has a value. If yes, then the value is excluded.**/
/** Generate a list of the member values to sum. It excludes member values that are included as a subtotal, by checking if a members ancestor has a value. If yes, then the value is excluded.**/

$valid_facts = list(for $member in $member_descendants.to-list.sort
$ancestors_list = (navigate dimensions domain-member ancestors from $member drs-role $cube.drs-role returns set (target-name)) - $domain;
for $member2 in $member_descendants2.to-list.sort
$ancestors_list2 = (navigate dimensions domain-member ancestors from $member2 drs-role $cube.drs-role returns set (target-name)) - $domain2;
if ($ancestors_list.length > 0 or $ancestors_list2.length > 0) and list([nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim in $ancestors_list @$dim2 = $ancestors_list2]).length > 0
skip
else
[nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim = $member @$dim2 = $member2]
);
$valid_facts = list(for $member in $member_descendants.to-list.sort
$ancestors_list = (navigate dimensions domain-member ancestors from $member drs-role $cube.drs-role returns set (target-name)) - $domain;
for $member2 in $member_descendants2.to-list.sort
$ancestors_list2 = (navigate dimensions domain-member ancestors from $member2 drs-role $cube.drs-role returns set (target-name)) - $domain2;
if ($ancestors_list.length > 0 or $ancestors_list2.length > 0) and list([nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim in $ancestors_list @$dim2 = $ancestors_list2]).length > 0
skip
else
[nonils @concept = $concept @cube.drs-role = $cube.drs-role @$dim = $member @$dim2 = $member2]
);

/** where not $fact.dimensions().keys.name.local-name.contains('LegalEntityAxis') **/
/** If there are no member facts the rule ends otherwise the subtotal is evaluated **/
if $valid_facts.length == 0
skip
else
/** aggregate the fact values on the axis **/
list($dim.local-name,sum($valid_facts),$valid_facts)
/** where not $fact.dimensions().keys.name.local-name.contains('LegalEntityAxis') **/
/** If there are no member facts the rule ends otherwise the subtotal is evaluated **/
if $valid_facts.length == 0
skip
else
/** aggregate the fact values on the axis **/
list($dim.local-name,sum($valid_facts),$valid_facts)

/**
* most_frequent
Expand Down
2 changes: 1 addition & 1 deletion dqc_us_rules/source/lib/version.xule
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ DQC Rules

/** Define the rule version **/

constant $ruleVersion = '19.0.9'
constant $ruleVersion = '19.0.10'

/** Define Additional Attribute types that can be associated with a rule **/

Expand Down
2 changes: 1 addition & 1 deletion dqc_us_rules/source/us/2020/DQC_0118.xule
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ for $cube in $STATEMENT_CUBES.sort
for $concept_item in $calcNetworkSource
/**Add to AxisNotToCheck any fact total we do not want to check adds because it has an axis that will not apply across all children of the calc **/
$AxisNotToCheck = set(PledgedStatusAxis)
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys)),set()) intersect $AxisNotToCheck).length > 0
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys.name)),set()) intersect $AxisNotToCheck).length > 0
if $concept_item == none or (length(first-value($calcNetworkSource,set()).intersect($conceptsInCube.to-set))==0) or $TotalsWithAxisNotToCheckFlag
skip
else
Expand Down
2 changes: 1 addition & 1 deletion dqc_us_rules/source/us/2021/DQC_0118.xule
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ for $cube in $STATEMENT_CUBES.sort
/**Add to AxisNotToCheck any fact total we do not want to check adds because it has an axis that will not apply across all children of the calc **/
$AxisNotToCheck = set(PledgedStatusAxis)
/** first value is used to eliminate none value **/
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys)),set()) intersect $AxisNotToCheck).length > 0
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys.name)),set()) intersect $AxisNotToCheck).length > 0
if $concept_item == none or (length(first-value($calcNetworkSource,set()).intersect($conceptsInCube.to-set))==0) or $TotalsWithAxisNotToCheckFlag
skip
else
Expand Down
2 changes: 1 addition & 1 deletion dqc_us_rules/source/us/2022/DQC_0118.xule
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ for $cube in $STATEMENT_CUBES.sort
/**Add to AxisNotToCheck any fact total we do not want to check adds because it has an axis that will not apply across all children of the calc **/
$AxisNotToCheck = set(PledgedStatusAxis)
/** first value is used to eliminate none value **/
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys)),set()) intersect $AxisNotToCheck).length > 0
$TotalsWithAxisNotToCheckFlag = (first-value(sum(set({covered nonils @concept = $concept_item @cube.drs-role = $cube.drs-role }.dimensions.keys.name)),set()) intersect $AxisNotToCheck).length > 0
if $concept_item == none or (length(first-value($calcNetworkSource,set()).intersect($conceptsInCube.to-set))==0) or $TotalsWithAxisNotToCheckFlag
skip
else
Expand Down

0 comments on commit 85409f7

Please sign in to comment.