
    def setup_accounts(self) -> list[Account]:
        """Creates and returns a list of accounts useful for bookkeeping
            using common account codes.
        """
        return [
            Account({
                'name': 'Sales - Taxable',
                'type': AccountType.CREDIT_BALANCE,
                'ledger_id': self.id,
                'code': '310',
                'category': 'Income',
            }),
            Account({
                'name': 'Sales - Exempt',
                'type': AccountType.CREDIT_BALANCE,
                'ledger_id': self.id,
                'code': '320',
                'category': 'Income',
            }),
            Account({
                'name': 'Materials & Supplies',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '410',
                'category': 'Cost of Goods Sold',
            }),
            Account({
                'name': 'Other Direct Costs',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '450',
                'category': 'Cost of Goods Sold',
            }),
            Account({
                'name': 'Wages',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '503',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Officers\' Salaries',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '503',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Payroll Taxes',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '510',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Advertising',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '520',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Auto Expense',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '530',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Entertainment',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '570',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Interest Expense',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '600',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Office Expense',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '615',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Professional Fees',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '625',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Rent',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '630',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Repairs & Maintenance',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '635',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Telephone',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '655',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Travel',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '660',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Utilities',
                'type': AccountType.DEBIT_BALANCE,
                'ledger_id': self.id,
                'code': '670',
                'category': 'Expenses',
            }),
            Account({
                'name': 'Cash - Operating',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '110',
                'category': 'Current Assets',
            }),
            Account({
                'name': 'Accounts Receivable',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '120',
                'category': 'Current Assets',
            }),
            Account({
                'name': 'Inventory',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '130',
                'category': 'Current Assets',
            }),
            Account({
                'name': 'Vehicles',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '150',
                'category': 'Fixed Assets',
            }),
            Account({
                'name': 'Equipment',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '151',
                'category': 'Fixed Assets',
            }),
            Account({
                'name': 'Accumulated Depreciation',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '160',
                'category': 'Fixed Assets',
            }),
            Account({
                'name': 'Rental Deposit',
                'type': AccountType.ASSET,
                'ledger_id': self.id,
                'code': '196',
                'category': 'Other Assets',
            }),
            Account({
                'name': 'Credit Card Payable',
                'type': AccountType.LIABILITY,
                'ledger_id': self.id,
                'code': '210',
                'category': 'Current Liabilities',
            }),
            Account({
                'name': 'Payroll Liabilities',
                'type': AccountType.LIABILITY,
                'ledger_id': self.id,
                'code': '220',
                'category': 'Current Liabilities',
            }),
            Account({
                'name': 'Sales Tax',
                'type': AccountType.LIABILITY,
                'ledger_id': self.id,
                'code': '240',
                'category': 'Current Liabilities',
            }),
            Account({
                'name': 'Credit Line Payable',
                'type': AccountType.LIABILITY,
                'ledger_id': self.id,
                'code': '250',
                'category': 'Long Term Liabilities',
            }),
            Account({
                'name': 'Note Payable - Bank',
                'type': AccountType.LIABILITY,
                'ledger_id': self.id,
                'code': '255',
                'category': 'Long Term Liabilities',
            }),
            Account({
                'name': 'Retained Earnings',
                'type': AccountType.EQUITY,
                'ledger_id': self.id,
                'code': '280',
                'category': 'Equity',
            }),
            Account({
                'name': 'Dividends - Cash',
                'type': AccountType.EQUITY,
                'ledger_id': self.id,
                'code': '282',
                'category': 'Equity',
            }),
        ]
