Entity-Relationship Diagram Created using Mermaid
erDiagram %%{init: {'theme':'forest'}}%% FINANCIAL-STATEMENT ||--o{ BALANCE-SHEET : has-part FINANCIAL-STATEMENT { iso1477 reportingCurrency "ISO Currency Code" iso639 reportingLanguage "ISO Language Code" enumeration reportingScheme "What financial reporting scheme was used to create the report? (value from enumarated list)" string reportingStyle "Reporting style of financial reporting scheme used to create the financial report." string industrySector "Need a standard list of industry scectors!" boolean isAmmendment() boolean isValidXBRL() boolean isValidMathematically() boolean isValidReportModelStructure() boolean isValidTypesAndSubtypes() boolean isValidDisclosureMechanics() boolean isValidDisclosureChecklist() boolean isValidContinuityCrosschecks() string thirdPartyAssuranceType "None, Compilation, Review, Audit" } ASSETS }o--|| BALANCE-SHEET : has-part ASSETS { string balanceType "Debit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } LIABILITIES }o--|| BALANCE-SHEET : has-part LIABILITIES { string balanceType "Credit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } EQUITY }o--|| BALANCE-SHEET : has-part EQUITY { string balanceType "Credit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } NET-ASSETS }o--|| BALANCE-SHEET : has-part NET-ASSETS { string balanceType "Debit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } BALANCE-SHEET { structure assetsRollup structure liabilitiesAndEquityRollup boolean classified "Is the balance sheet classifed between current and noncurrent assets and liabilities?" boolean balances "Does the balance sheet balance; assetsRollup = liabilitiesAndEquityRollUp" boolean isValid() } BALANCE-SHEET ||--|| RULE-BALANCES : has-rule RULE-BALANCES { xpath rule "ASSETS = LIABILITIES + EQUITY" } INCOME-STATEMENT { structure netIncomeRollup boolean multistep "Is the income statement multistep, i.e. reports gross profit?" boolean foots "Does the income statement foot; netIncomeRollUp" boolean isValid() } INCOME-STATEMENT ||--|| REVENUES : has-part REVENUES { string balanceType "Credit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } INCOME-STATEMENT ||--|| EXPENSES : has-part EXPENSES { string balanceType "Debit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } INCOME-STATEMENT ||--|| GAINS : has-part GAINS { string balanceType "Credit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } INCOME-STATEMENT ||--|| LOSSES : has-part LOSSES { string balanceType "Debit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } COMPREHENSIVE-INCOME ||--|| REVENUES : has-part COMPREHENSIVE-INCOME { string balanceType "Credit" } COMPREHENSIVE-INCOME ||--|| EXPENSES : has-part COMPREHENSIVE-INCOME ||--|| GAINS : has-part COMPREHENSIVE-INCOME ||--|| LOSSES : has-part INCOME-STATEMENT ||--|| COMPREHENSIVE-INCOME : has-part CHANGES-IN-EQUITY { structure equityRollForward boolean reconciles "Does the changes in equity reconcile to the balance sheet; equityRollForward" boolean isValid() } CHANGES-IN-EQUITY ||--|| INVESTMENTS-BY-OWNERS : has-inflow INVESTMENTS-BY-OWNERS { string balanceType "Credit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } CHANGES-IN-EQUITY ||--|| DISTRIBUTIONS-TO-OWNERS : has-outflow DISTRIBUTIONS-TO-OWNERS { string balanceType "Debit" collection hasTypes() "Has a valid set of types organized in a specific hierarchy." } CHANGES-IN-EQUITY ||--|| COMPREHENSIVE-INCOME : has-inflow CHANGES-IN-EQUITY ||--|| RULE-EQUITY-RECONCILES : has-rule RULE-EQUITY-RECONCILES { xpath rule "EQUITY(T0) + COMPREHENSIVE-INCOME(P1) + INVESTMENTS-BY-OWNERS(P1) - DISTRIBUTIONS-TO-OWNERS = EQUITY(T1)" } ECONOMIC-ENTITY only one to zero or more FINANCIAL-STATEMENT : creates FINANCIAL-STATEMENT ||--o{ INCOME-STATEMENT : has-part FINANCIAL-STATEMENT ||--o{ CHANGES-IN-EQUITY : has-part ECONOMIC-ENTITY { string legalName enumeration legalEntityType "Corporation, LLC, Partnership, Proprietorship, etc." uri identifier PK "LEI issued by GLEIF" iso3166 domicile "ISO Country Code" }