-- Jalankan file ini pada database cPanel yang SUDAH DIPILIH jika Anda memakai versi awal.
-- Backup database terlebih dahulu.
ALTER TABLE users ADD COLUMN phone VARCHAR(40) NULL AFTER role, ADD COLUMN avatar VARCHAR(255) NULL AFTER phone, ADD COLUMN last_login DATETIME NULL AFTER is_active;
ALTER TABLE members ADD COLUMN gender ENUM('L','P','') NOT NULL DEFAULT '' AFTER address, ADD COLUMN birth_date DATE NULL AFTER gender, ADD COLUMN member_level VARCHAR(50) NOT NULL DEFAULT 'Regular' AFTER birth_date, ADD COLUMN discount_percent DECIMAL(5,2) NOT NULL DEFAULT 0 AFTER member_level, ADD COLUMN notes TEXT NULL AFTER points, ADD COLUMN join_date DATE NULL AFTER notes, ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER created_at;
UPDATE members SET join_date=DATE(created_at) WHERE join_date IS NULL;
ALTER TABLE members MODIFY join_date DATE NOT NULL;
ALTER TABLE services ADD COLUMN code VARCHAR(40) NULL UNIQUE AFTER id, ADD COLUMN category VARCHAR(80) NOT NULL DEFAULT 'Barber Service' AFTER code, ADD COLUMN duration_minutes INT NOT NULL DEFAULT 30 AFTER name;
ALTER TABLE transactions ADD COLUMN subtotal_amount DECIMAL(15,2) NOT NULL DEFAULT 0 AFTER transaction_date, ADD COLUMN discount_amount DECIMAL(15,2) NOT NULL DEFAULT 0 AFTER subtotal_amount, ADD COLUMN paid_amount DECIMAL(15,2) NOT NULL DEFAULT 0 AFTER total_amount, ADD COLUMN change_amount DECIMAL(15,2) NOT NULL DEFAULT 0 AFTER paid_amount;
ALTER TABLE transactions MODIFY payment_status ENUM('paid','unpaid','partial') NOT NULL DEFAULT 'paid';
UPDATE transactions SET subtotal_amount=total_amount,paid_amount=IF(payment_status='paid',total_amount,0) WHERE subtotal_amount=0;
ALTER TABLE bonuses ADD COLUMN status ENUM('unpaid','paid') NOT NULL DEFAULT 'unpaid' AFTER description, ADD COLUMN paid_at DATETIME NULL AFTER status;
ALTER TABLE expenses ADD COLUMN payment_method VARCHAR(50) NOT NULL DEFAULT 'Cash' AFTER amount;
ALTER TABLE activity_logs ADD COLUMN user_agent VARCHAR(255) NULL AFTER ip_address;
CREATE TABLE import_logs (id BIGINT AUTO_INCREMENT PRIMARY KEY,file_name VARCHAR(255) NOT NULL,total_rows INT NOT NULL DEFAULT 0,inserted_rows INT NOT NULL DEFAULT 0,updated_rows INT NOT NULL DEFAULT 0,skipped_rows INT NOT NULL DEFAULT 0,imported_by INT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY(imported_by) REFERENCES users(id)) ENGINE=InnoDB;
INSERT INTO settings(setting_key,setting_value) VALUES
('brand_tagline','Professional Grooming Management System'),('brand_primary','#172554'),('brand_accent','#d4af37'),('invoice_prefix','TRX'),('whatsapp_country_code','62'),('thermal_paper','80'),('point_divisor','10000')
ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value);
