netgescon-master/scripts/setup-contabilita-condominiale.sh
Michele Windows e68ee85a18 🚀 CHECKPOINT STABILE - Sistema Contabile Avanzato
📋 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
2025-07-26 15:11:19 +02:00

216 lines
8.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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}"