{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"be.reports.general_ledger","type":"object","additionalProperties":false,"required":["letter","entity","period","ledger_accounts"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["date","reference"],"properties":{"date":{"type":"string","format":"date"},"reference":{"type":"string","minLength":1}}},"entity":{"type":"object","additionalProperties":false,"required":["name","bce","vat"],"properties":{"name":{"type":"string","minLength":1},"bce":{"type":"string","pattern":"^0[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$"},"vat":{"type":"string","pattern":"^BE0[0-9]{9}$"},"address":{"type":"string"},"city":{"type":"string"}}},"period":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"ledger_accounts":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["pcmn_code","account_label","opening_balance","ledger_entries","closing_balance"],"properties":{"pcmn_code":{"type":"string","pattern":"^[0-9]{3,7}$"},"account_label":{"type":"string","minLength":1},"pcmn_class":{"type":"string","enum":["1","2","3","4","5","6","7"]},"opening_balance":{"type":"number"},"ledger_entries":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["entry_date","entry_description","journal_ref","debit_amount","credit_amount","running_balance"],"properties":{"entry_date":{"type":"string","format":"date"},"entry_description":{"type":"string","minLength":1},"journal_ref":{"type":"string","minLength":1},"counterpart_pcmn":{"type":"string"},"debit_amount":{"type":"number","minimum":0},"credit_amount":{"type":"number","minimum":0},"running_balance":{"type":"number"}}}},"closing_balance":{"type":"number"},"total_debit":{"type":"number","minimum":0},"total_credit":{"type":"number","minimum":0}}}},"grand_totals":{"type":"object","additionalProperties":false,"properties":{"total_debit":{"type":"number","minimum":0},"total_credit":{"type":"number","minimum":0},"balanced":{"type":"boolean"}}},"notes":{"type":"string"}}}