File: /var/www/airpro/migration_fix.sql
-- ============================================
-- AIRPRO CRM - MIGRATION FIX
-- Run this after initial database.sql import
-- ============================================
-- Add missing columns to fogli_lavoro
ALTER TABLE `fogli_lavoro`
ADD COLUMN IF NOT EXISTS `ora_inizio_effettiva` DATETIME NULL AFTER `ora_fine`,
ADD COLUMN IF NOT EXISTS `ora_fine_effettiva` DATETIME NULL AFTER `ora_inizio_effettiva`;
-- Add pausa_minuti to presenze
ALTER TABLE `presenze`
ADD COLUMN IF NOT EXISTS `pausa_minuti` INT DEFAULT 0 AFTER `ora_uscita`;
-- ============================================
-- EXPANDED CLIENT FIELDS
-- ============================================
-- Add new fields to clienti table
ALTER TABLE `clienti`
ADD COLUMN IF NOT EXISTS `indirizzo` VARCHAR(255) AFTER `pec`,
ADD COLUMN IF NOT EXISTS `cap` VARCHAR(10) AFTER `indirizzo`,
ADD COLUMN IF NOT EXISTS `citta` VARCHAR(100) AFTER `cap`,
ADD COLUMN IF NOT EXISTS `provincia` VARCHAR(5) AFTER `citta`,
ADD COLUMN IF NOT EXISTS `nazione` VARCHAR(100) DEFAULT 'Italia' AFTER `provincia`,
ADD COLUMN IF NOT EXISTS `sito_web` VARCHAR(255) AFTER `nazione`,
ADD COLUMN IF NOT EXISTS `facebook` VARCHAR(255) AFTER `sito_web`,
ADD COLUMN IF NOT EXISTS `instagram` VARCHAR(255) AFTER `facebook`,
ADD COLUMN IF NOT EXISTS `linkedin` VARCHAR(255) AFTER `instagram`,
ADD COLUMN IF NOT EXISTS `codice_sdi` VARCHAR(10) AFTER `linkedin`,
ADD COLUMN IF NOT EXISTS `iban` VARCHAR(34) AFTER `codice_sdi`,
ADD COLUMN IF NOT EXISTS `banca` VARCHAR(100) AFTER `iban`,
ADD COLUMN IF NOT EXISTS `condizioni_pagamento` VARCHAR(100) AFTER `banca`,
ADD COLUMN IF NOT EXISTS `giorni_pagamento` INT DEFAULT 30 AFTER `condizioni_pagamento`,
ADD COLUMN IF NOT EXISTS `sconto_default` DECIMAL(5,2) DEFAULT 0 AFTER `giorni_pagamento`,
ADD COLUMN IF NOT EXISTS `fido_max` DECIMAL(12,2) AFTER `sconto_default`,
ADD COLUMN IF NOT EXISTS `categoria` VARCHAR(50) AFTER `fido_max`,
ADD COLUMN IF NOT EXISTS `settore` VARCHAR(100) AFTER `categoria`,
ADD COLUMN IF NOT EXISTS `referente_nome` VARCHAR(100) AFTER `settore`,
ADD COLUMN IF NOT EXISTS `referente_ruolo` VARCHAR(100) AFTER `referente_nome`,
ADD COLUMN IF NOT EXISTS `referente_telefono` VARCHAR(30) AFTER `referente_ruolo`,
ADD COLUMN IF NOT EXISTS `referente_email` VARCHAR(100) AFTER `referente_telefono`,
ADD COLUMN IF NOT EXISTS `note_interne` TEXT AFTER `referente_email`,
ADD COLUMN IF NOT EXISTS `note_pagamento` TEXT AFTER `note_interne`,
ADD COLUMN IF NOT EXISTS `accesso_portale` TINYINT(1) DEFAULT 0 AFTER `note_pagamento`,
ADD COLUMN IF NOT EXISTS `portale_username` VARCHAR(50) AFTER `accesso_portale`,
ADD COLUMN IF NOT EXISTS `portale_password` VARCHAR(255) AFTER `portale_username`,
ADD COLUMN IF NOT EXISTS `portale_ultimo_accesso` DATETIME AFTER `portale_password`;
-- ============================================
-- CLIENT DOCUMENTS TABLE
-- ============================================
CREATE TABLE IF NOT EXISTS `clienti_documenti` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`cliente_id` INT UNSIGNED NOT NULL,
`nome_file` VARCHAR(255) NOT NULL,
`nome_originale` VARCHAR(255) NOT NULL,
`tipo_documento` VARCHAR(100),
`descrizione` TEXT,
`dimensione` INT UNSIGNED,
`mime_type` VARCHAR(100),
`visibile_cliente` TINYINT(1) DEFAULT 1,
`caricato_da` INT UNSIGNED,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX `idx_cliente` (`cliente_id`),
INDEX `idx_tipo` (`tipo_documento`),
FOREIGN KEY (`cliente_id`) REFERENCES `clienti`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`caricato_da`) REFERENCES `users`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ============================================
-- CLIENT ACCESS LOGS
-- ============================================
CREATE TABLE IF NOT EXISTS `clienti_accessi` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`cliente_id` INT UNSIGNED NOT NULL,
`ip_address` VARCHAR(45),
`user_agent` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX `idx_cliente` (`cliente_id`),
INDEX `idx_data` (`created_at`),
FOREIGN KEY (`cliente_id`) REFERENCES `clienti`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Verify columns exist
SHOW COLUMNS FROM fogli_lavoro LIKE 'ora_%';
SHOW COLUMNS FROM presenze LIKE 'pausa%';
SHOW COLUMNS FROM clienti LIKE 'portale%';