📋 AGGIUNTE PRINCIPALI: - Sistema contabile partita doppia con gestioni multiple - Documentazione implementazione completa - Models Laravel: GestioneContabile, MovimentoPartitaDoppia - Controller ContabilitaAvanzataController - Migration sistema contabile completo - Scripts automazione e trasferimento - Manuali utente e checklist implementazione 📊 FILES PRINCIPALI: - docs/10-IMPLEMENTAZIONE-CONTABILITA-PARTITA-DOPPIA-GESTIONI.md - SPECIFICHE-SISTEMA-CONTABILE-COMPLETO.md - netgescon-laravel/database/migrations/2025_07_20_100000_create_complete_accounting_system.php - netgescon-laravel/app/Models/GestioneContabile.php ✅ CHECKPOINT SICURO PER ROLLBACK
216 lines
8.1 KiB
Bash
Executable File
216 lines
8.1 KiB
Bash
Executable File
#!/bin/bash
|
||
# 🔧 SCRIPT AUTOMATICO: MIGRAZIONE SISTEMA CONTABILE NETGESCON
|
||
# File: scripts/setup-contabilita-condominiale.sh
|
||
|
||
set -e # Exit on any error
|
||
|
||
# 🎨 Colors for output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 📋 Configuration
|
||
LARAVEL_PATH="/var/www/netgescon"
|
||
BACKUP_PATH="/home/michele/netgescon/backup/database"
|
||
DATE=$(date +"%Y%m%d_%H%M%S")
|
||
|
||
echo -e "${BLUE}🏢 ===== SETUP SISTEMA CONTABILE CONDOMINIALE NETGESCON =====${NC}"
|
||
echo ""
|
||
|
||
# ✅ 1. VERIFICA PREREQUISITI
|
||
echo -e "${YELLOW}📋 1. Verifica prerequisiti...${NC}"
|
||
|
||
if [ ! -d "$LARAVEL_PATH" ]; then
|
||
echo -e "${RED}❌ Directory Laravel non trovata: $LARAVEL_PATH${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
cd $LARAVEL_PATH
|
||
|
||
if [ ! -f ".env" ]; then
|
||
echo -e "${RED}❌ File .env non trovato${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
if ! php artisan --version > /dev/null 2>&1; then
|
||
echo -e "${RED}❌ Laravel Artisan non disponibile${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${GREEN}✅ Prerequisiti verificati${NC}"
|
||
|
||
# ✅ 2. BACKUP DATABASE
|
||
echo -e "${YELLOW}💾 2. Backup database corrente...${NC}"
|
||
|
||
mkdir -p $BACKUP_PATH
|
||
|
||
DB_NAME=$(php artisan tinker --execute="echo config('database.connections.mysql.database');" 2>/dev/null | tail -1)
|
||
DB_USER=$(php artisan tinker --execute="echo config('database.connections.mysql.username');" 2>/dev/null | tail -1)
|
||
DB_PASS=$(php artisan tinker --execute="echo config('database.connections.mysql.password');" 2>/dev/null | tail -1)
|
||
|
||
if [ -n "$DB_NAME" ] && [ -n "$DB_USER" ]; then
|
||
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "${BACKUP_PATH}/netgescon_pre_contabilita_${DATE}.sql"
|
||
echo -e "${GREEN}✅ Backup creato: netgescon_pre_contabilita_${DATE}.sql${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ Impossibile creare backup automatico - verifica configurazione DB${NC}"
|
||
fi
|
||
|
||
# ✅ 3. CREA MIGRATIONS SISTEMA CONTABILE
|
||
echo -e "${YELLOW}🗃️ 3. Creazione migrations sistema contabile...${NC}"
|
||
|
||
# Gestioni Contabili
|
||
php artisan make:migration create_gestioni_contabili_table --quiet
|
||
|
||
# Piano Conti
|
||
php artisan make:migration create_piano_conti_mastri_table --quiet
|
||
php artisan make:migration create_piano_conti_conti_table --quiet
|
||
php artisan make:migration create_piano_conti_sottoconti_table --quiet
|
||
|
||
# Registrazioni Contabili
|
||
php artisan make:migration create_registrazioni_contabili_table --quiet
|
||
php artisan make:migration create_movimenti_contabili_partita_doppia_table --quiet
|
||
php artisan make:migration create_ripartizioni_condomini_table --quiet
|
||
|
||
echo -e "${GREEN}✅ Migrations create${NC}"
|
||
|
||
# ✅ 4. CREA MODELS
|
||
echo -e "${YELLOW}🏗️ 4. Creazione Models...${NC}"
|
||
|
||
php artisan make:model GestioneContabile --quiet
|
||
php artisan make:model PianoContiMastro --quiet
|
||
php artisan make:model PianoContiConto --quiet
|
||
php artisan make:model PianoContiSottoconto --quiet
|
||
php artisan make:model RegistrazioneContabile --quiet
|
||
php artisan make:model MovimentoContabilePartitaDoppia --quiet
|
||
php artisan make:model RipartizioneCondomino --quiet
|
||
|
||
echo -e "${GREEN}✅ Models creati${NC}"
|
||
|
||
# ✅ 5. CREA SEEDER PIANO CONTI
|
||
echo -e "${YELLOW}🌱 5. Creazione Seeder Piano Conti...${NC}"
|
||
|
||
php artisan make:seeder PianoContiCondominaleSeeder --quiet
|
||
|
||
echo -e "${GREEN}✅ Seeder creato${NC}"
|
||
|
||
# ✅ 6. CREA COMMANDS AUTOMAZIONE
|
||
echo -e "${YELLOW}⚙️ 6. Creazione Commands automazione...${NC}"
|
||
|
||
php artisan make:command SetupSistemaContabile --quiet
|
||
php artisan make:command VerificaPartitaDoppia --quiet
|
||
php artisan make:command ChiudiGestioneContabile --quiet
|
||
php artisan make:command RicalcolaTotaliGestione --quiet
|
||
|
||
echo -e "${GREEN}✅ Commands creati${NC}"
|
||
|
||
# ✅ 7. CREA CONTROLLERS
|
||
echo -e "${YELLOW}🎛️ 7. Creazione Controllers...${NC}"
|
||
|
||
php artisan make:controller Admin/GestioniContabiliController --resource --quiet
|
||
php artisan make:controller Admin/RegistrazioniContabiliController --resource --quiet
|
||
php artisan make:controller Admin/PianoContiController --resource --quiet
|
||
php artisan make:controller Api/ContabilitaController --api --quiet
|
||
|
||
echo -e "${GREEN}✅ Controllers creati${NC}"
|
||
|
||
# ✅ 8. VERIFICA MIGRAZIONI ESISTENTI
|
||
echo -e "${YELLOW}🔍 8. Verifica stato migrazioni esistenti...${NC}"
|
||
|
||
php artisan migrate:status
|
||
|
||
echo ""
|
||
echo -e "${YELLOW}⚠️ ATTENZIONE: Verificare e risolvere eventuali migrazioni duplicate prima di continuare${NC}"
|
||
echo ""
|
||
|
||
# ✅ 9. RICHIESTA CONFERMA ESECUZIONE MIGRAZIONI
|
||
read -p "🤔 Eseguire le nuove migrazioni sistema contabile? (y/N): " confirm
|
||
|
||
if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
|
||
echo -e "${YELLOW}📊 9. Esecuzione migrazioni...${NC}"
|
||
|
||
if php artisan migrate --force; then
|
||
echo -e "${GREEN}✅ Migrazioni eseguite con successo${NC}"
|
||
else
|
||
echo -e "${RED}❌ Errore durante l'esecuzione delle migrazioni${NC}"
|
||
echo -e "${YELLOW}🔄 Tentativo di ripristino backup...${NC}"
|
||
|
||
if [ -f "${BACKUP_PATH}/netgescon_pre_contabilita_${DATE}.sql" ]; then
|
||
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" < "${BACKUP_PATH}/netgescon_pre_contabilita_${DATE}.sql"
|
||
echo -e "${GREEN}✅ Database ripristinato da backup${NC}"
|
||
fi
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}⏸️ Migrazioni saltate - sistema configurato ma non attivato${NC}"
|
||
fi
|
||
|
||
# ✅ 10. POPOLA PIANO CONTI STANDARD
|
||
read -p "🌱 Popolare il piano conti standard condominiale? (y/N): " confirm_seed
|
||
|
||
if [[ $confirm_seed == [yY] || $confirm_seed == [yY][eE][sS] ]]; then
|
||
echo -e "${YELLOW}🌱 10. Popolamento piano conti standard...${NC}"
|
||
|
||
if php artisan db:seed --class=PianoContiCondominaleSeeder --force; then
|
||
echo -e "${GREEN}✅ Piano conti popolato${NC}"
|
||
else
|
||
echo -e "${RED}❌ Errore durante il popolamento piano conti${NC}"
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}⏸️ Piano conti non popolato${NC}"
|
||
fi
|
||
|
||
# ✅ 11. CONFIGURAZIONE CONDOMINI
|
||
echo -e "${YELLOW}🏢 11. Configurazione gestioni per condomini esistenti...${NC}"
|
||
|
||
php artisan tinker --execute="
|
||
\$condominii = App\Models\Stabile::all();
|
||
echo '📊 Condomini trovati: ' . \$condominii->count() . PHP_EOL;
|
||
|
||
foreach (\$condominii as \$condominio) {
|
||
echo ' - ' . \$condominio->id . ': ' . \$condominio->denominazione . PHP_EOL;
|
||
}
|
||
" 2>/dev/null
|
||
|
||
echo ""
|
||
echo -e "${BLUE}🤔 Per configurare le gestioni contabili per ciascun condominio:${NC}"
|
||
echo -e "${BLUE} php artisan contabilita:setup {condominio_id} {anno}${NC}"
|
||
|
||
# ✅ 12. VERIFICA FINALE
|
||
echo -e "${YELLOW}✅ 12. Verifica finale installazione...${NC}"
|
||
|
||
# Conta tabelle create
|
||
TABELLE_CONTABILI=$(mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "SHOW TABLES LIKE '%contabil%'" | wc -l 2>/dev/null || echo "0")
|
||
TABELLE_PIANO=$(mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "SHOW TABLES LIKE '%piano_conti%'" | wc -l 2>/dev/null || echo "0")
|
||
TABELLE_GESTIONI=$(mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "SHOW TABLES LIKE '%gestioni%'" | wc -l 2>/dev/null || echo "0")
|
||
|
||
echo -e "${BLUE}📊 Riepilogo installazione:${NC}"
|
||
echo -e "${GREEN} ✅ Tabelle contabili: $TABELLE_CONTABILI${NC}"
|
||
echo -e "${GREEN} ✅ Tabelle piano conti: $TABELLE_PIANO${NC}"
|
||
echo -e "${GREEN} ✅ Tabelle gestioni: $TABELLE_GESTIONI${NC}"
|
||
|
||
# ✅ 13. ISTRUZIONI FINALI
|
||
echo ""
|
||
echo -e "${BLUE}🎉 ===== INSTALLAZIONE COMPLETATA =====${NC}"
|
||
echo ""
|
||
echo -e "${GREEN}📋 PROSSIMI PASSI:${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}1️⃣ Configurare gestioni per ogni condominio:${NC}"
|
||
echo -e " ${BLUE}php artisan contabilita:setup 1 2024${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}2️⃣ Verificare partita doppia periodicamente:${NC}"
|
||
echo -e " ${BLUE}php artisan contabilita:verifica${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}3️⃣ Accedere al portale per iniziare registrazioni:${NC}"
|
||
echo -e " ${BLUE}http://192.168.0.200:8000/admin/gestioni-contabili${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}4️⃣ Consultare i manuali:${NC}"
|
||
echo -e " ${BLUE}docs/07-SISTEMA-CONTABILE-CONDOMINIALE.md${NC}"
|
||
echo -e " ${BLUE}docs/08-IMPLEMENTAZIONE-SISTEMA-CONTABILE-PRATICO.md${NC}"
|
||
echo ""
|
||
echo -e "${GREEN}🎯 Il sistema contabile condominiale è ora pronto per l'uso!${NC}"
|
||
echo -e "${GREEN}💎 Controllo totale di ogni centesimo garantito dalla partita doppia.${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}📞 Per supporto: consultare i manuali tecnici nella directory docs/${NC}"
|