prepare("INSERT INTO ragioni_sociali (denominazione, codice_fiscale, email_amministrazione, telefono_fisso, cellulare, whatsapp, indirizzo_postale) VALUES (:denom, :cf, :email, :fisso, :cell, :wa, :ind)"); $stmt->execute([ 'denom' => $denominazione, 'cf' => $cf, 'email' => $email, 'fisso' => $fisso, 'cell' => $cell, 'wa' => $wa_clean, 'ind' => $indirizzo ]); $new_id = $pdo->lastInsertId(); header("Location: ragioni_sociali.php?action=scadenze&id=" . $new_id . "&msg=created"); exit; } else { // MODIFICA ESISTENTE $stmt = $pdo->prepare("UPDATE ragioni_sociali SET denominazione = :denom, codice_fiscale = :cf, email_amministrazione = :email, telefono_fisso = :fisso, cellulare = :cell, whatsapp = :wa, indirizzo_postale = :ind WHERE id = :id"); $stmt->execute([ 'denom' => $denominazione, 'cf' => $cf, 'email' => $email, 'fisso' => $fisso, 'cell' => $cell, 'wa' => $wa_clean, 'ind' => $indirizzo, 'id' => $id_azienda_mod ]); $messaggio = "
Dati anagrafici aggiornati con successo!
"; } } catch (PDOException $e) { $messaggio = "
Errore nel salvataggio: " . htmlspecialchars($e->getMessage()) . "
"; } } else { $messaggio = "
Denominazione e Codice Fiscale/P.IVA sono obbligatori.
"; } } // 2. SALVATAGGIO CONFIGURAZIONE SCADENZE CON PULIZIA FILE ORFANI if (isset($_POST['azione']) && $_POST['azione'] === 'salva_scadenze') { try { $pdo->beginTransaction(); $scadenze_attuali_raw = $pdo->prepare("SELECT id_tipologia_scadenza, id FROM scadenze WHERE id_ragione_sociale = :id_az"); $scadenze_attuali_raw->execute(['id_az' => $id_azienda]); $mappa_attuali = $scadenze_attuali_raw->fetchAll(PDO::FETCH_KEY_PAIR); $tipologie_post = isset($_POST['scadenza_attiva']) ? array_keys($_POST['scadenza_attiva']) : []; // A. Rimuovi file e record solo delle spunte disattivate foreach ($mappa_attuali as $id_tip_esistente => $id_scadenza) { if (!in_array($id_tip_esistente, $tipologie_post)) { $stmt_files = $pdo->prepare("SELECT percorso_file FROM documenti_scadenze WHERE id_scadenza = ?"); $stmt_files->execute([$id_scadenza]); foreach ($stmt_files->fetchAll(PDO::FETCH_COLUMN) as $f) { if (!empty($f)) @unlink(__DIR__ . '/uploads/' . $f); } $pdo->prepare("DELETE FROM documenti_scadenze WHERE id_scadenza = ?")->execute([$id_scadenza]); $pdo->prepare("DELETE FROM scadenze WHERE id = ?")->execute([$id_scadenza]); } } // B. Aggiorna o inserisci quelle attive foreach ($tipologie_post as $id_tipologia) { $data_scad = !empty($_POST['data_scadenza'][$id_tipologia]) ? $_POST['data_scadenza'][$id_tipologia] : null; $id_forn = !empty($_POST['id_fornitore'][$id_tipologia]) ? $_POST['id_fornitore'][$id_tipologia] : null; $note = trim($_POST['note'][$id_tipologia] ?? ''); if (isset($mappa_attuali[$id_tipologia])) { $stmt_upd = $pdo->prepare("UPDATE scadenze SET data_scadenza = :data, id_fornitore = :id_forn, note = :note WHERE id = :id_scad"); $stmt_upd->execute(['data' => $data_scad, 'id_forn' => $id_forn, 'note' => $note, 'id_scad' => $mappa_attuali[$id_tipologia]]); } else { $stmt_ins = $pdo->prepare("INSERT INTO scadenze (id_ragione_sociale, id_tipologia_scadenza, id_fornitore, data_scadenza, note) VALUES (:id_az, :id_tip, :id_forn, :data, :note)"); $stmt_ins->execute(['id_az' => $id_azienda, 'id_tip' => $id_tipologia, 'id_forn' => $id_forn, 'data' => $data_scad, 'note' => $note]); } } $pdo->commit(); header("Location: ragioni_sociali.php?msg=updated"); exit; } catch (PDOException $e) { $pdo->rollBack(); $messaggio = "
Errore nel salvataggio dello scadenziario: " . htmlspecialchars($e->getMessage()) . "
"; } } // 3. CANCELLAZIONE RAGIONE SOCIALE CON PULIZIA TOTALE FILE if (isset($_POST['azione']) && $_POST['azione'] === 'elimina_azienda') { $id_del = (int)($_POST['id_azienda'] ?? 0); try { $pdo->beginTransaction(); $stmt_files = $pdo->prepare(" SELECT ds.percorso_file FROM documenti_scadenze ds JOIN scadenze s ON ds.id_scadenza = s.id WHERE s.id_ragione_sociale = :id "); $stmt_files->execute(['id' => $id_del]); $files_da_cancellare = $stmt_files->fetchAll(PDO::FETCH_COLUMN); foreach ($files_da_cancellare as $file) { if (!empty($file)) { $file_path = __DIR__ . '/uploads/' . $file; if (file_exists($file_path)) { @unlink($file_path); } } } $pdo->prepare("DELETE FROM documenti_scadenze WHERE id_scadenza IN (SELECT id FROM scadenze WHERE id_ragione_sociale = :id)")->execute(['id' => $id_del]); $pdo->prepare("DELETE FROM scadenze WHERE id_ragione_sociale = :id")->execute(['id' => $id_del]); $pdo->prepare("DELETE FROM ragioni_sociali WHERE id = :id")->execute(['id' => $id_del]); $pdo->commit(); $messaggio = "
Ragione Sociale, scadenze e file fisici eliminati con successo!
"; } catch (Exception $e) { $pdo->rollBack(); $messaggio = "
Errore durante la cancellazione.
"; } } } if (isset($_GET['msg'])) { if ($_GET['msg'] === 'created') $messaggio = "
Anagrafica creata! Configura ora le sue scadenze tramite i Check Web qui sotto.
"; if ($_GET['msg'] === 'updated') $messaggio = "
Scadenziario aziendale aggiornato con successo!
"; } ?> Ragioni Sociali - NEXT_GEN
query("SELECT * FROM ragioni_sociali ORDER BY denominazione ASC")->fetchAll(); ?>

Elenco Società

Nuova Ragione Sociale
Denominazione / C.F. Contatti Amministrazione Indirizzo Azioni
Nessuna ragione sociale in archivio.
Torna alla lista

Registra Nuova Ragione Sociale

0): $az = $pdo->prepare("SELECT denominazione FROM ragioni_sociali WHERE id = ?"); $az->execute([$id_azienda]); $azienda = $az->fetch(); $categorie = $pdo->query("SELECT * FROM categorie_scadenze ORDER BY nome_categoria ASC")->fetchAll(); $tipologie = $pdo->query("SELECT * FROM tipologie_scadenze ORDER BY nome_scadenza ASC")->fetchAll(); $fornitori = $pdo->query("SELECT id, nome_o_ragione_sociale, ruolo FROM fornitori ORDER BY ruolo ASC, nome_o_ragione_sociale ASC")->fetchAll(); $scad_salvate_raw = $pdo->prepare("SELECT * FROM scadenze WHERE id_ragione_sociale = ?"); $scad_salvate_raw->execute([$id_azienda]); $scad_salvate = []; foreach ($scad_salvate_raw->fetchAll() as $s) { $scad_salvate[$s['id_tipologia_scadenza']] = $s; } ?>
Torna alla lista

Configurazione Scadenze per:

Attiva le scadenze desiderate tramite i check. Puoi compilare la data e il fornitore in un secondo momento.

>
Scadenza
Nessuna tipologia definita in questa categoria.