Skip to content

Commit

Permalink
Update v19 Approved (#682)
Browse files Browse the repository at this point in the history
* For IFRS taxonomy updated for Auditor Name

Added auditor name for exceptions to rule 33 for IFRS.

* Updated rule 135 for tolerance

* Update version.xule

* Updated V19

Updated for change to 138

* Updated rule 132 to handle financ

* Updated to handle pension issue for 135

* Updated version number

* Updated V19

Updated for issue in rule 135.

* Updated 136 to exclude nils

* Updated V19

* Fixed message to show max absolute value.

* Updated V19 for changes

* Updated tolerance to 20

* Updated for tolerance

* Updated rule 134 for Short Term and Fixed Maturites Member

* Updating Committing V19

* Update dqc_0135 rule submission form

* Updated 140 to fix xule error

* Update version.xule

* Compiled V19

* Update requirements.txt and .travis.yml

Update .travis.yml

- add unit tests for dqc_0140
- update requirements for Arelle 2.0.0

Update requirements.txt

Update requirements.txt

Update travis-run.sh

Update travis-run.sh

Update travis-run.sh

* Update unit tests for rule changes

- dqc_0134, dqc_0135, dqc_0136 (add from v18)

Co-authored-by: Campbell
  • Loading branch information
davidtauriello committed Oct 21, 2022
1 parent 581ae0b commit cbf0643
Show file tree
Hide file tree
Showing 41 changed files with 345 additions and 1,628 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ tests/esef
tests/v18
plugin/
*/dqc-esef-*ruleset.zip
/guidance
5 changes: 3 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,9 @@ env:
- INFILES='[{"file":"https://www.sec.gov/Archives/edgar/data/1476963/000155837022003452/htbx-20211231x10k.htm", "xule_run_only":"DQC.US.0133.9831"},{"file":"https://www.sec.gov/Archives/edgar/data/780571/000078057122000004/itri-20211231.htm", "xule_run_only":"DQC.US.0133.9831"},{"file":"https://www.sec.gov/Archives/edgar/data/1514705/000151470522000004/sxc-20211231.htm", "xule_run_only":"DQC.US.0133.9831"},{"file":"https://www.sec.gov/Archives/edgar/data/1463972/000155837022002641/vuzi-20211231x10k.htm", "xule_run_only":"DQC.US.0133.9831"}]' EXFILES=$EXPECTED/DQC.US.0133.9831_hbtx-us-2021.xml,$EXPECTED/DQC.US.0133.9831_itri-us-2021.xml,$EXPECTED/DQC.US.0133.9831_sxc-us-2021.xml,$EXPECTED/DQC.US.0133.9831_vuzi-us-2021.xml
- INFILES='[{"file":"https://www.sec.gov/Archives/edgar/data/1615346/000156459021040509/lmrk-10q_20210630.htm", "xule_run_only":"DQC.US.0133.9832"},{"file":"https://www.sec.gov/Archives/edgar/data/1615346/000156459021040509/lmrk-10q_20210630.htm", "xule_run_only":"DQC.US.0133.9833"},{"file":"https://www.sec.gov/Archives/edgar/data/1552000/000155200021000034/mplx-20210630.htm", "xule_run_only":"DQC.US.0133.9833"},{"file":"https://www.sec.gov/Archives/edgar/data/936395/000093639521000054/cien-20211030.htm", "xule_run_only":"DQC.US.0134.9834"}]' EXFILES=$EXPECTED/DQC.US.0133.9832_lmrk-us-2020.xml,$EXPECTED/DQC.US.0133.9833_lmrk-us-2020.xml,$EXPECTED/DQC.US.0133.9833_mplx-us-2021.xml,$EXPECTED/DQC.US.0134.9834_cien-us-2021.xml
- INFILES='[{"file":"https://www.sec.gov/Archives/edgar/data/1694426/000169442622000048/dk-20211231_htm.xml", "xule_run_only":"DQC.US.0135.9835"},{"file":"https://www.sec.gov/Archives/edgar/data/72333/000007233322000060/jwn-20220129_htm.xml", "xule_run_only":"DQC.US.0135.9835"},{"file":"https://www.sec.gov/Archives/edgar/data/715787/000071578722000005/tile-20220102_htm.xml", "xule_run_only":"DQC.US.0135.9835"},{"file":"https://www.sec.gov/Archives/edgar/data/926282/000095017022002054/adtn-20211231_htm.xml", "xule_run_only":"DQC.US.0135.9836"}]' EXFILES=$EXPECTED/DQC.US.0135.9835_dk-us-2021.xml,$EXPECTED/DQC.US.0135.9835_jwn-us-2021.xml,$EXPECTED/DQC.US.0135.9835_tile-us-2021.xml,$EXPECTED/DQC.US.0135.9836_adtn-us-2021.xml
- INFILES='[{"file":"http://www.sec.gov/Archives/edgar/data/764401/000143774921017350/iiin20210703_10q.htm", "xule_run_only":"DQC.US.0137.9838"}]' EXFILES=$EXPECTED/DQC.US.0137.9838_iiin-us-2021.xml
- INFILES='[{"file":"http://www.sec.gov/Archives/edgar/data/1130144/000155837022003269/bsrr-20211231x10k.htm", "xule_run_only":"DQC.US.0139.9855"},{"file":"http://www.sec.gov/Archives/edgar/data/1118004/000111800422000015/banc-20211231.htm", "xule_run_only":"DQC.US.0139.9858"},{"file":"http://www.sec.gov/Archives/edgar/data/1053352/000155837022002901/htbk-20211231x10k.htm", "xule_run_only":"DQC.US.0139.9859"},{"file":"http://www.sec.gov/Archives/edgar/data/101382/000156459022006546/umbf-10k_20211231.htm", "xule_run_only":"DQC.US.0139.9860"}]' EXFILES=$EXPECTED/DQC.US.0139.9855_bsrr-us-2021.xml,$EXPECTED/DQC.US.0139.9858_banc-us-2021.xml,$EXPECTED/DQC.US.0139.9859_bhtbk-us-2021.xml,$EXPECTED/DQC.US.0139.9860_umbf-us-2021.xml
- INFILES='[{"file":"https://www.sec.gov/Archives/edgar/data/1338749/000095017022013477/pch-20220630.htm", "xule_run_only":"DQC.US.0136.9837"},{"file":"http://www.sec.gov/Archives/edgar/data/764401/000143774921017350/iiin20210703_10q.htm", "xule_run_only":"DQC.US.0137.9838"}]' EXFILES=$EXPECTED/DQC.US.0136.9837_pch-us-2021.xml,$EXPECTED/DQC.US.0137.9838_iiin-us-2021.xml
- INFILES='[{"file":"http://www.sec.gov/Archives/edgar/data/1130144/000155837022003269/bsrr-20211231x10k.htm", "xule_run_only":"DQC.US.0139.9855"},{"file":"http://www.sec.gov/Archives/edgar/data/1118004/000111800422000015/banc-20211231.htm", "xule_run_only":"DQC.US.0139.9858"},{"file":"http://www.sec.gov/Archives/edgar/data/1053352/000155837022002901/htbk-20211231x10k.htm", "xule_run_only":"DQC.US.0139.9859"},{"file":"http://www.sec.gov/Archives/edgar/data/101382/000156459022006546/umbf-10k_20211231.htm", "xule_run_only":"DQC.US.0139.9860"}]' EXFILES=$EXPECTED/DQC.US.0139.9855_bsrr-us-2021.xml,$EXPECTED/DQC.US.0139.9858_banc-us-2021.xml,$EXPECTED/DQC.US.0139.9859_bhtbk-us-2021.xml,$EXPECTED/DQC.US.0139.9860_umbf-us-2021.xml
- INFILES='[{"file":"http://www.sec.gov/Archives/edgar/data/1331520/000133152022000015/homb-20211231.htm", "xule_run_only":"DQC.US.0140.9861"},"file":"http://www.sec.gov/Archives/edgar/data/1039828/000103982822000022/ael-20211231.htm", "xule_run_only":"DQC.US.0140.9862"}]' EXFILES=$EXPECTED/DQC.US.0140.9861_homb-us-2021.xml,$EXPECTED/DQC.US.0140.9862_ael-us-2021.xml
- INFILES='[{"file":"http://www.sec.gov/Archives/edgar/data/1108134/000110813422000004/bhlb-20211231.htm", "xule_run_only":"DQC.US.0141.9863"}]' EXFILES=$EXPECTED/DQC.US.0141.9863_bhlb-us-2021.xml
install:
- pip install -r requirements.txt
Expand Down
18 changes: 11 additions & 7 deletions docs/DQC_US_0135/DQC_0135.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ Release date: June 29, 2022
Effective date: September 1, 2022

## Rule function
The FASB has defined a number of elements that if reported and are not included in the face financial statements, filers need to indicate which financial statement caption the amounts appear (these elements have been identified in the US GAAP taxonomy as extensible enumeration elements). This rule has two components. The first component identifies an error if the company has made a disclosure and has not included the caption where the amount appears in the financial statements. The second reports an error for a fact that includes the Balance Sheet and Income Statement Location axis and does not have an associated extensible enumeration using the same dimensions.
The FASB has defined a number of elements that if reported and are not included in the face financial statements, filers need to indicate which financial statement captions the amounts appear (these elements have been identified in the US GAAP taxonomy as extensible enumeration elements). This rule has two components. The first component identifies an error if the company has made a disclosure and has not included the caption where the amount appears in the financial statements. The second reports an error for a fact that includes the Balance Sheet and Income Statement Location axis and does not have an associated extensible enumeration using the same dimensions.

These two checks only apply to 10-K’s and 20-F’s and amendments thereto.

#### Component 1
The intention of this component is to identify those elements where a filer has reported an amount but has not included the caption where that amount appears in the face financial statements. This rule checks if each of these elements exist in the filings. If the defined element is used and is not in the face-financial statements the rule checks that an extensible enumeration element is used that relates to the amount reported. If no related extensible enumeration is reported then the rule reports a single error for the element irrespective of how many facts are reported.
The intention of this component is to identify those elements where a filer has reported an amount but has not included the caption where that amount appears in the face financial statements. This rule checks if each of these elements exist in the filings. If the defined element is used and is not in the face-financial statements the rule checks that an extensible enumeration element is used that relates to the amount reported. If no related extensible enumeration is reported then the rule reports a single error for the element irrespective of how many facts are reported.

The rule identifies those elements on the face of the financial statements by identifying the elements that appear in the extended link roles that are defined with the word “ - Statement -” in the description. The rule then identifies all the calculation descendants of these statement elements as and treats them as if they were also on the face financials. This is performed because in many cases companies will define a breakdown of the elements in the financial statements in a supporting note. These elements are treated as if they are in the financial statements and do not need an extensible enumeration element to be defined.
The rule identifies those elements on the face of the financial statements by identifying the elements that appear in the extended link roles that are defined with the word “ Statement -” in the description. The rule then identifies all the calculation descendants of these statement elements and treats them as if they were also reported on the face financials. This is performed because in many cases companies will define a breakdown of the elements in the financial statements in a supporting note. These elements are treated as if they are in the financial statements and do not need an extensible enumeration element to be defined.

The rule excludes lease items as they are handled by separate rules. The rule also excludes items that do not require a caption under FASB standards.
The rule excludes lease items as they are handled by separate rules. The rule also excludes items that do not require a caption under FASB standards.

If the amount reported in the notes has calculation ancestors defined in the notes these are identified and compared to the face financial statement line items. If there is commonality between these ancestors and statement elements then the rule will not run, as a calculation subtotal shown in the notes with the aggregate total appearing in the face financials gives a clear indication in which caption the amount appears.
If the amount reported in the notes has calculation ancestors defined in the notes these are identified and compared to the face financial statement line items. If there is commonality between these ancestors and statement elements then the rule will not run, as a calculation subtotal shown in the notes with the aggregate total appearing in the face financials gives a clear indication in which caption the amount appears.

If the ancestor elements do not appear in the calculation comprising a face financial item, the rule checks if any of these ancestor items have an extensible enumeration associated with them. If they do then the rule will not run.
If the ancestor elements do not appear in the calculation comprising a face financial item, the rule checks if any of these ancestor items have an extensible enumeration associated with them. If they do then the rule will not run.

Finally the rule checks that if the amount reported is a pension cost element and the aggregate pension extensible enumeration is reported then the rule will not run. This is the element DefinedBenefitPlanNetPeriodicBenefitCostCreditExcludingServiceCostStatementOfIncomeOrComprehensiveIncomeExtensibleList.
Finally the rule checks that if the amount reported is a pension cost element and the aggregate pension extensible enumeration is reported then the rule will not run. This is the element DefinedBenefitPlanNetPeriodicBenefitCostCreditExcludingServiceCostStatementOfIncomeOrComprehensiveIncomeExtensibleList. In relation to pensions if the element NetPeriodicDefinedBenefitsExpenseReversalOfExpenseExcludingServiceCostComponent appears on the financial statements then the pension cost elements in the notes will not be checked for the existence of the extensible item. The pension cost items not to check is determined by using the calculation descendants of NetPeriodicDefinedBenefitsExpenseReversalOfExpenseExcludingServiceCostComponent defined in the US-GAAP taxonomy.

After the above steps are performed and there is no relationship between the element reported and where it appears in the financial statements then an error is reported.

In some cases companies will not report the values reported in a financial statement caption because they are immaterial. The rule identifies the largest value in the notes and compares it against a tolerance of 20 multiplied by the scale factor of the financial statements. If the financials are reported in millions of dollars, then any values in the notes under or equal to 20 million will not be identified as an error and any elements with a value greater than 20 million will be identified as an error.

#### Component 2
The second component of the rule operates in a similar manner to the first component. This rule evaluates if the filer has used the IncomeStatementLocationAxis or the BalanceSheetLocationAxis with an element that has a matching extensible enumeration element. If an element has used the Statement Location Axis to disaggregate a value the rule checks that the filer has used the corresponding extensible enumeration element to indicate the statement caption. This is done because there is no method to link the member name on the statement location axis to the actual element used in the financial statements.

Expand Down
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.
3 changes: 3 additions & 0 deletions dqc_us_rules/source/ifrs/2019/DQC_IFRS_0033.xule
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ $exceptions_to_dei = set(qname($dei_namespace,'EntityCommonStockSharesOutstandin
, qname($dei_namespace,'EntityPublicFloat')
, qname($dei_namespace,'DocumentPeriodEndDate')
, qname($dei_namespace,'EntityNumberOfEmployees')
, qname($dei_namespace,'AuditorLocation')
, qname($dei_namespace,'AuditorName')
, qname($dei_namespace,'AuditorFirmId')
, qname($dei_namespace,'EntityListingDepositoryReceiptRatio'));
$document_period = first(list({covered @concept.local-name = 'DocumentPeriodEndDate'}));
$document_period_end_date = $document_period.period.end;
Expand Down
3 changes: 3 additions & 0 deletions dqc_us_rules/source/ifrs/2020/DQC_IFRS_0033.xule
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ $exceptions_to_dei = set(qname($dei_namespace,'EntityCommonStockSharesOutstandin
, qname($dei_namespace,'EntityPublicFloat')
, qname($dei_namespace,'DocumentPeriodEndDate')
, qname($dei_namespace,'EntityNumberOfEmployees')
, qname($dei_namespace,'AuditorLocation')
, qname($dei_namespace,'AuditorName')
, qname($dei_namespace,'AuditorFirmId')
, qname($dei_namespace,'EntityListingDepositoryReceiptRatio'));
$document_period = first(list({covered @concept.local-name = 'DocumentPeriodEndDate'}));
$document_period_end_date = $document_period.period.end;
Expand Down
3 changes: 3 additions & 0 deletions dqc_us_rules/source/ifrs/2021/DQC_IFRS_0033.xule
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ $exceptions_to_dei = set(qname($dei_namespace,'EntityCommonStockSharesOutstandin
, qname($dei_namespace,'EntityPublicFloat')
, qname($dei_namespace,'DocumentPeriodEndDate')
, qname($dei_namespace,'EntityNumberOfEmployees')
, qname($dei_namespace,'AuditorLocation')
, qname($dei_namespace,'AuditorName')
, qname($dei_namespace,'AuditorFirmId')
, qname($dei_namespace,'EntityListingDepositoryReceiptRatio'));
$document_period = first(list({covered @concept.local-name = 'DocumentPeriodEndDate'}));
$document_period_end_date = $document_period.period.end;
Expand Down
3 changes: 3 additions & 0 deletions dqc_us_rules/source/ifrs/2022/DQC_IFRS_0033.xule
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ $exceptions_to_dei = set(qname($dei_namespace,'EntityCommonStockSharesOutstandin
, qname($dei_namespace,'EntityPublicFloat')
, qname($dei_namespace,'DocumentPeriodEndDate')
, qname($dei_namespace,'EntityNumberOfEmployees')
, qname($dei_namespace,'AuditorLocation')
, qname($dei_namespace,'AuditorName')
, qname($dei_namespace,'AuditorFirmId')
, qname($dei_namespace,'EntityListingDepositoryReceiptRatio'));
$document_period = first(list({covered @concept.local-name = 'DocumentPeriodEndDate'}));
$document_period_end_date = $document_period.period.end;
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.0'
constant $ruleVersion = '19.0.1'

/** 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_0132.xule
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ for $extension in $extension_qname
and $extension.local-name.lower-case.contains('lease')
and $extension.local-name.lower-case.contains('rightofuseasset')
and ($extension.local-name.lower-case.contains('expense') or $extension.local-name.lower-case.contains('amortiz') or $extension.local-name.lower-case.contains('depreci'))
and not ($extension.local-name.lower-case.contains('finance'))
and not ($extension.local-name.lower-case.contains('financ'))
and not ($extension.local-name.lower-case.contains('increasedecrease'))
and not ($extension.local-name.lower-case.contains('excluding'))
and not ($extension.local-name.lower-case.contains('relatedparty'))
Expand Down
4 changes: 3 additions & 1 deletion dqc_us_rules/source/us/2020/DQC_0134.xule
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ assert US.0134.9834 satisfied

$rule_id = (rule-name().split('.'))[rule-name().split('.').length];

$AllowableMembersOnInvestmentTypeAxis = list(FixedMaturitiesMember, ShortTermInvestmentsMember)

$ComponentAmount = {@concept in list(AvailableForSaleDebtSecuritiesAmortizedCostBasis,
DebtSecuritiesAvailableForSaleAmortizedCostCurrent,
DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent,
AvailableForSaleSecuritiesDebtSecurities,
AvailableForSaleSecuritiesDebtSecuritiesCurrent,
AvailableForSaleSecuritiesDebtSecuritiesNoncurrent)};
AvailableForSaleSecuritiesDebtSecuritiesNoncurrent) @InvestmentTypeAxis not in $AllowableMembersOnInvestmentTypeAxis};

$Dimensions = filter $ComponentAmount.dimensions.keys returns $item.name;

Expand Down
5 changes: 4 additions & 1 deletion dqc_us_rules/source/us/2020/DQC_0140.xule
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ $minDecimals = min(list(for $x in $Decimals
if $x == none
skip
else
$x.decimals));
if $x.decimals == none
skip
else
$x.decimals));

$fairValueCalc = $AmortizedCostAfterCreditLoss <+> $gain - $loss

Expand Down
2 changes: 1 addition & 1 deletion dqc_us_rules/source/us/2021/DQC_0132.xule
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ for $extension in $EXTENSION_QNAME
and $extension.local-name.lower-case.contains('lease')
and $extension.local-name.lower-case.contains('rightofuseasset')
and ($extension.local-name.lower-case.contains('expense') or $extension.local-name.lower-case.contains('amortiz') or $extension.local-name.lower-case.contains('depreci'))
and not ($extension.local-name.lower-case.contains('finance'))
and not ($extension.local-name.lower-case.contains('financ'))
and not ($extension.local-name.lower-case.contains('increasedecrease'))
and not ($extension.local-name.lower-case.contains('excluding'))
and not ($extension.local-name.lower-case.contains('relatedparty'))
Expand Down
4 changes: 3 additions & 1 deletion dqc_us_rules/source/us/2021/DQC_0134.xule
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ $ruleId = (rule-name().split('.'))[rule-name().split('.').length];

/** Updated for public comment by using other concepts that are used for amortized cost**/

$AllowableMembersOnInvestmentTypeAxis = list(FixedMaturitiesMember, ShortTermInvestmentsMember)

$ComponentAmount = {@concept in list(AvailableForSaleDebtSecuritiesAmortizedCostBasis,
DebtSecuritiesAvailableForSaleAmortizedCostCurrent,
DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent,
Expand All @@ -30,7 +32,7 @@ AvailableForSaleSecuritiesDebtSecuritiesCurrent,
AvailableForSaleSecuritiesDebtSecuritiesNoncurrent,
DebtSecuritiesAvailableForSaleExcludingAccruedInterest,
DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent,
DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent)};
DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent) @InvestmentTypeAxis not in $AllowableMembersOnInvestmentTypeAxis};

$Dimensions = filter $ComponentAmount.dimensions.keys returns $item.name;

Expand Down
Loading

0 comments on commit cbf0643

Please sign in to comment.