BlockSpark Automotive DMS (PHP + MySQL)

UPLOAD (cPanel):
1) Create subdomain dms.blockspark.pt pointing to /public_html/dms/public
2) Upload this project to /public_html/dms (keep /public as document root)
3) Create storage folder: /home/blockera/blockspark_storage
4) Ensure permissions: storage 750, files 640
5) Import SQL: /sql/schema.sql into DB blockera_blockspark_dms
6) Create admin user in table users with password_hash()

Create admin (example):
INSERT INTO users (name,email,password_hash,role) VALUES
('Admin','admin@blockspark.pt', '<PASTE password_hash output>', 'admin');

To generate password hash:
Run in PHP:
echo password_hash('YourPassword', PASSWORD_DEFAULT);

TCPDF:
Upload TCPDF library into /vendor/tcpdf/


V2:
- Upload logo para /assets/blockspark_logo.jpg
- Menu dinâmico por role
- KPIs no dashboard
- Helper: /create_admin.php?email=...&pass=... (usar 1x e APAGAR)


V3:
- Login glass + dark mode + animação
- Dashboard executivo (aging + top margens + capital imobilizado)
- Header com símbolo transparente
- Login com logo completo transparente


V6 DB migration:
- Import /sql/migration_v6.sql (adds vehicles.ready_date)
- Depois podes preencher 'Data disponível' em cada viatura para KPIs de preparação.


V7:
- Import /sql/migration_v7.sql (sales.final_channel, sales.days_to_sell, sales.lead_id)
- Nova página: /sale_close.php?vehicle_id=ID para fechar venda e bloquear canal
- Dashboard: funil 90 dias + days-to-sell por canal/viatura


V8:
- Import /sql/migration_v8.sql (lead_stage_events)
- Nova página lead_edit.php para mudar stage e criar eventos
- PDF: report_monthly.php?month=YYYY-MM (requer TCPDF em /vendor/tcpdf/)
