netgescon-day0/docs/00-IMPORT/03-SCRIPTS/extract-gescon-complete.sh

186 lines
6.9 KiB
Bash
Executable File

#!/bin/bash
# Script per analisi completa struttura GESCON
# Estrae tutte le tabelle principali da tutti i database MDB
# Posizione: /home/michele/netgescon/docs/000-IMPORT/03-SCRIPTS/extract-gescon-complete.sh
GESCON_ROOT="/home/michele/netgescon/docs/02-architettura-laravel/Gescon"
OUTPUT_DIR="/home/michele/netgescon/docs/000-IMPORT/02-CSV-ESTRATTI"
ANALYSIS_DIR="/home/michele/netgescon/docs/000-IMPORT/04-ANALISI"
# Crea directory di output
mkdir -p "$OUTPUT_DIR"/{CENTRALI,STABILI,ANNI}
mkdir -p "$ANALYSIS_DIR"
echo "=== ESTRAZIONE COMPLETA GESCON ==="
echo "Root: $GESCON_ROOT"
echo "Output: $OUTPUT_DIR"
echo
# FASE 1: Database centrali
echo "=== FASE 1: DATABASE CENTRALI ==="
echo "Estraendo Stabili.csv..."
cp "$GESCON_ROOT/Stabili.csv" "$OUTPUT_DIR/CENTRALI/"
STABILI_COUNT=$(wc -l < "$GESCON_ROOT/Stabili.csv")
echo "$STABILI_COUNT record stabili"
echo "Estraendo Fornitori.csv..."
cp "$GESCON_ROOT/Fornitori.csv" "$OUTPUT_DIR/CENTRALI/"
FORNITORI_COUNT=$(wc -l < "$GESCON_ROOT/Fornitori.csv")
echo "$FORNITORI_COUNT record fornitori"
echo "Estraendo database centrali MDB..."
if [ -f "$GESCON_ROOT/dbc/Stabili.mdb" ]; then
mdb-export "$GESCON_ROOT/dbc/Stabili.mdb" Stabili > "$OUTPUT_DIR/CENTRALI/Stabili_MDB.csv"
echo " → Stabili.mdb estratto"
fi
if [ -f "$GESCON_ROOT/dbc/Fornitori.mdb" ]; then
mdb-export "$GESCON_ROOT/dbc/Fornitori.mdb" Fornitori > "$OUTPUT_DIR/CENTRALI/Fornitori_MDB.csv"
echo " → Fornitori.mdb estratto"
fi
# FASE 2: Analisi directory stabili
echo
echo "=== FASE 2: DIRECTORY STABILI ==="
# Leggi elenco stabili dal CSV
tail -n +2 "$GESCON_ROOT/Stabili.csv" | while IFS=';' read -r id_interno cod_stabile denominazione indirizzo cap citta provincia cf_cond cf_amm scale interni codice_dir resto; do
echo "Elaborando Stabile: $cod_stabile - $codice_dir ($denominazione)"
STABILE_DIR="$GESCON_ROOT/$codice_dir"
OUTPUT_STABILE="$OUTPUT_DIR/STABILI/$codice_dir"
if [ -d "$STABILE_DIR" ]; then
mkdir -p "$OUTPUT_STABILE"/{GENERALE,ANNI}
# Estrai generale_stabile.mdb
if [ -f "$STABILE_DIR/generale_stabile.mdb" ]; then
echo " → Estraendo generale_stabile.mdb"
# Tabelle principali già identificate
TABELLE_GENERALI=("anni" "Fatture" "emes_gen" "emes_det" "F24" "Elenco_destinatari_email" "Elenco_destinatari_PEC" "Corrisp_inviata")
for tabella in "${TABELLE_GENERALI[@]}"; do
mdb-export "$STABILE_DIR/generale_stabile.mdb" "$tabella" > "$OUTPUT_STABILE/GENERALE/${tabella}.csv" 2>/dev/null
RECORDS=$(tail -n +2 "$OUTPUT_STABILE/GENERALE/${tabella}.csv" 2>/dev/null | wc -l)
if [ $RECORDS -gt 0 ]; then
echo "$tabella: $RECORDS record"
fi
done
fi
# Estrai anni specifici
for anno_dir in "$STABILE_DIR"/[0-9]*; do
if [ -d "$anno_dir" ] && [ -f "$anno_dir/singolo_anno.mdb" ]; then
ANNO_CODE=$(basename "$anno_dir")
echo " → Estraendo anno $ANNO_CODE"
mkdir -p "$OUTPUT_STABILE/ANNI/$ANNO_CODE"
# Tabelle principali per anno
TABELLE_ANNO=("condomin" "rate" "incassi" "Assemblee" "rendite_condominiali" "Detrazioni_fiscali" "foglio_riscossioni")
for tabella in "${TABELLE_ANNO[@]}"; do
mdb-export "$anno_dir/singolo_anno.mdb" "$tabella" > "$OUTPUT_STABILE/ANNI/$ANNO_CODE/${tabella}.csv" 2>/dev/null
RECORDS=$(tail -n +2 "$OUTPUT_STABILE/ANNI/$ANNO_CODE/${tabella}.csv" 2>/dev/null | wc -l)
if [ $RECORDS -gt 0 ]; then
echo "$tabella: $RECORDS record"
fi
done
# Estrai anche anni.csv se presente
if [ -f "$anno_dir/../anni.csv" ]; then
cp "$anno_dir/../anni.csv" "$OUTPUT_STABILE/ANNI/"
fi
fi
done
else
echo " → Directory $STABILE_DIR non trovata"
fi
echo
done
# FASE 3: Crea analisi riassuntiva
echo "=== FASE 3: ANALISI RIASSUNTIVA ==="
# Conta totali
echo "Creando report analisi..."
{
echo "# REPORT ESTRAZIONE COMPLETA GESCON"
echo "Data: $(date)"
echo
echo "## TOTALI ESTRATTI"
echo
echo "### Database Centrali:"
echo "- Stabili: $STABILI_COUNT record"
echo "- Fornitori: $FORNITORI_COUNT record"
echo
echo "### Per Stabile:"
TOTAL_FATTURE=0
TOTAL_RATE=0
TOTAL_CONDOMINI=0
TOTAL_INCASSI=0
for stabile_dir in "$OUTPUT_DIR/STABILI"/*; do
if [ -d "$stabile_dir" ]; then
STABILE_CODE=$(basename "$stabile_dir")
echo "#### Stabile $STABILE_CODE:"
# Conta fatture
if [ -f "$stabile_dir/GENERALE/Fatture.csv" ]; then
FATTURE=$(tail -n +2 "$stabile_dir/GENERALE/Fatture.csv" | wc -l)
echo " - Fatture: $FATTURE"
TOTAL_FATTURE=$((TOTAL_FATTURE + FATTURE))
fi
# Conta rate e condomini per anno
for anno_dir in "$stabile_dir/ANNI"/*; do
if [ -d "$anno_dir" ]; then
ANNO_CODE=$(basename "$anno_dir")
if [ -f "$anno_dir/rate.csv" ]; then
RATE=$(tail -n +2 "$anno_dir/rate.csv" | wc -l)
echo " - Rate $ANNO_CODE: $RATE"
TOTAL_RATE=$((TOTAL_RATE + RATE))
fi
if [ -f "$anno_dir/condomin.csv" ]; then
CONDOMINI=$(tail -n +2 "$anno_dir/condomin.csv" | wc -l)
echo " - Condomini $ANNO_CODE: $CONDOMINI"
TOTAL_CONDOMINI=$((TOTAL_CONDOMINI + CONDOMINI))
fi
if [ -f "$anno_dir/incassi.csv" ]; then
INCASSI=$(tail -n +2 "$anno_dir/incassi.csv" | wc -l)
echo " - Incassi $ANNO_CODE: $INCASSI"
TOTAL_INCASSI=$((TOTAL_INCASSI + INCASSI))
fi
fi
done
echo
fi
done
echo "## TOTALI SISTEMA:"
echo "- Stabili totali: $STABILI_COUNT"
echo "- Fornitori totali: $FORNITORI_COUNT"
echo "- Fatture totali: $TOTAL_FATTURE"
echo "- Rate totali: $TOTAL_RATE"
echo "- Condomini totali: $TOTAL_CONDOMINI"
echo "- Incassi totali: $TOTAL_INCASSI"
echo
echo "Volume dati stimato: $((TOTAL_RATE + TOTAL_INCASSI + TOTAL_FATTURE + TOTAL_CONDOMINI)) record"
} > "$ANALYSIS_DIR/REPORT-ESTRAZIONE-COMPLETA.md"
echo "=== ESTRAZIONE COMPLETATA ==="
echo "Report salvato in: $ANALYSIS_DIR/REPORT-ESTRAZIONE-COMPLETA.md"
echo "Dati estratti in: $OUTPUT_DIR"