prepare($s);$st->execute($a);} function one(PDO $p,string $s,array $a=[]){$st=$p->prepare($s);$st->execute($a);return $st->fetch(PDO::FETCH_ASSOC);} $NOW='2026-06-20 17:30:00'; $TODAY='2026-06-20'; $ORGID=996003; $DPO=4; // Cristiano Benassati /* 1) Anagrafica: P.IVA / codice fiscale */ ex($pdo,"UPDATE organizations SET vat_number='07776161213', fiscal_code='07776161213', updated_at=? WHERE id=?",[$NOW,$ORGID]); echo "ORG: P.IVA 07776161213 (IT) impostata\n"; /* 2) Benassati membro dell'org (auditor = oversight DPO) */ if(!one($pdo,"SELECT id FROM user_organizations WHERE user_id=? AND organization_id=?",[$DPO,$ORGID])){ ex($pdo,"INSERT INTO user_organizations (user_id,organization_id,role,is_primary,joined_at) VALUES (?,?, 'auditor',0,?)",[$DPO,$ORGID,$NOW]); echo " membership + Cristiano Benassati (auditor/DPO)\n"; } else echo " membership = già presente\n"; /* 3) Ruolo DPO nell'organigramma (org_roles) + isms_roles */ ex($pdo,"UPDATE org_roles SET holder_user_id=?, description='Presidio GDPR e ISO 27018 (dati personali nel cloud), DPIA, gestione richieste interessati. DPO affidato a CONSULENTE ESTERNO: Cristiano Benassati (nominato dalla Direzione il 20/06/2026).', updated_at=? WHERE organization_id=? AND role_name LIKE 'Referente Protezione Dati%'",[$DPO,$NOW,$ORGID]); ex($pdo,"UPDATE isms_roles SET user_id=? WHERE isms_model_id=3 AND role_name LIKE '%Privacy%'",[$DPO]); echo "DPO nominato: Cristiano Benassati (org_role + isms_role)\n"; /* 4) Manuale (id 37): nome del DPO + snapshot */ $b=$pdo->query("SELECT body_html FROM isms_documents WHERE id=37")->fetchColumn(); $nb=str_replace('Consulente esterno (da nominare)','Consulente esterno: Cristiano Benassati',$b,$c); if($c){ ex($pdo,"UPDATE isms_documents SET body_html=?, updated_at=? WHERE id=37",[$nb,$NOW]); $vid=$pdo->query("SELECT id FROM isms_document_versions WHERE document_id=37 AND version='2.0' ORDER BY id DESC LIMIT 1")->fetchColumn(); if($vid) ex($pdo,"UPDATE isms_document_versions SET body_html=? WHERE id=?",[$nb,$vid]); echo "MANUALE: DPO nominato (Cristiano Benassati) — $c sostituzione/i + snapshot\n"; } else echo " (stringa DPO nel Manuale non trovata, salto)\n"; /* 5) Chiudi NCR-9005 (DPO) + CAPA-5010 */ ex($pdo,"UPDATE non_conformities SET status='closed', actual_close_date=?, root_cause_analysis='Ruolo DPO ora coperto: nominato dalla Direzione il 20/06/2026 il consulente esterno Cristiano Benassati. NC risolta.', updated_at=? WHERE id=20",[$TODAY,$NOW]); ex($pdo,"UPDATE capa_actions SET status='completed', completion_date=?, is_effective=1, effectiveness_review='DPO esterno nominato (Cristiano Benassati); ruolo assegnato in organigramma e SGSI.', updated_at=? WHERE id=7",[$TODAY,$NOW]); echo "NCR-9005 (DPO) CHIUSA + CAPA-5010 completata\n"; /* riepilogo NC */ $open=$pdo->query("SELECT COUNT(*) FROM non_conformities WHERE organization_id=$ORGID AND status NOT IN('closed','cancelled')")->fetchColumn(); echo "\nNC ancora aperte: $open\nFASE 11 OK\n";