ALTER TABLE members
  MODIFY COLUMN email VARCHAR(191) NULL,
  MODIFY COLUMN password_hash VARCHAR(255) NULL,
  ADD COLUMN address VARCHAR(255) NULL AFTER phone,
  ADD COLUMN account_name VARCHAR(150) NULL AFTER address,
  ADD COLUMN account_number VARCHAR(20) NULL AFTER account_name,
  ADD COLUMN bank_name VARCHAR(100) NULL AFTER account_number,
  ADD COLUMN registration_type ENUM('full', 'profile_only') NOT NULL DEFAULT 'full' AFTER registration_source;

CREATE TABLE IF NOT EXISTS contribution_plan_months (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  contribution_plan_id INT UNSIGNED NOT NULL,
  month_number TINYINT UNSIGNED NOT NULL,
  amount DECIMAL(12,2) NOT NULL DEFAULT 0,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_plan_month (contribution_plan_id, month_number),
  CONSTRAINT fk_cpm_plan FOREIGN KEY (contribution_plan_id)
    REFERENCES contribution_plans (id) ON DELETE CASCADE,
  CHECK (month_number BETWEEN 1 AND 12)
);
