CREATE TABLE IF NOT EXISTS payments ( id CHAR(36) NOT NULL PRIMARY KEY, student_id CHAR(36) NOT NULL, payment_date DATE NOT NULL, amount_received DECIMAL(10, 2) NOT NULL, payment_method VARCHAR(50) NOT NULL CHECK (payment_method IN ('Cash', 'Bank Transfer', 'Mobile Money', 'Other')), reference_number VARCHAR(255) NULL, 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 payment_lines ( id CHAR(36) NOT NULL PRIMARY KEY, payment_id CHAR(36) NOT NULL, invoice_id CHAR(36) NOT NULL, amount_applied DECIMAL(10, 2) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW(), FOREIGN KEY (payment_id) REFERENCES payments(id) ON DELETE CASCADE, FOREIGN KEY (invoice_id) REFERENCES invoices(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;