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"
}