CREATE TABLE IF NOT EXISTS invoices ( id CHAR(36) NOT NULL PRIMARY KEY, student_id CHAR(36) NOT NULL, invoice_number VARCHAR(50) NOT NULL UNIQUE, invoice_date DATE NOT NULL, due_date DATE NOT NULL, total_amount DECIMAL(10, 2) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'Draft' CHECK (status IN ('Draft', 'Posted', 'Paid', 'Void')), journal_entry_id CHAR(36) DEFAULT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW(), FOREIGN KEY (student_id) REFERENCES students(id), FOREIGN KEY (journal_entry_id) REFERENCES journal_entries(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS invoice_lines ( id CHAR(36) NOT NULL PRIMARY KEY, invoice_id CHAR(36) NOT NULL, description VARCHAR(255) NOT NULL, amount DECIMAL(10, 2) NOT NULL, revenue_account_id CHAR(36) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW(), FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE CASCADE, FOREIGN KEY (revenue_account_id) REFERENCES accounts(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;