command->error('Nessuno stabile trovato. Crea prima uno stabile.'); return; } // 1. CREA GESTIONI CONDOMINIALI $gestioneOrdinaria = GestioneCondominiale::create([ 'stabile_id' => $stabile->id, 'codice' => 'ORD2024', 'descrizione' => 'Gestione Ordinaria 2024', 'tipo' => 'ORDINARIA', 'anno_inizio' => 2024, 'data_inizio' => '2024-01-01', 'stato' => 'ATTIVA' ]); $gestioneRiscaldamento = GestioneCondominiale::create([ 'stabile_id' => $stabile->id, 'codice' => 'RISC2024-25', 'descrizione' => 'Gestione Riscaldamento 2024-2025', 'tipo' => 'RISCALDAMENTO', 'anno_inizio' => 2024, 'anno_fine' => 2025, 'data_inizio' => '2024-10-01', 'data_fine' => '2025-04-30', 'stato' => 'ATTIVA' ]); // 2. CREA TABELLE MILLESIMALI $tabelle = [ ['TAB.A', 'Tabella di Proprieta\'', 'TAB.A', 'M', 'O', 1000.00], ['TAB.A1', 'Tabella di Prop. scala A', 'TAB.A1', 'M', 'O', 1000.00], ['TAB.A2', 'Tabella di Prop. scala B', 'TAB.A2', 'M', 'O', 1000.00], ['TAB.A3', 'Tabella di Prop. scala C', 'TAB.A3', 'M', 'O', 1000.00], ['TAB.A4', 'Tabella di Prop. particolare', 'TAB.A4', 'M', 'O', 1000.00], ['TAB.A5', 'Tabella portiere', 'TAB.A5', 'M', 'O', 1000.00], ['TAB.B1', 'Tabella scale A', 'TAB.B1', 'M', 'O', 1000.00], ['TAB.B2', 'Tabella scala B', 'TAB.B2', 'M', 'O', 1000.00], ['TAB.B3', 'Tabella scala C', 'TAB.B3', 'M', 'O', 1000.00], ['TAB.C1', 'Tabella ascensore scala A', 'TAB.C1', 'M', 'O', 1000.00], ['TAB.C2', 'Tabella ascensore scala B', 'TAB.C2', 'M', 'O', 992.52], ['TAB.C3', 'Tabella ascensore scala C', 'TAB.C3', 'M', 'O', 1000.00], ['RISC.', 'Riscaldamento', 'RISC.', 'M', 'R', 1000.00], ['RISC.L', 'RISCALDAMENTO (in base alle letture)', 'Risc.a lettura', 'A', 'R', 0.00], ['RENDIT', 'Rendite condominiali', 'RENDIT', 'M', 'O', 1000.00], ['QUOTAU', 'Rimborso quota uffici', 'QUOTAU', 'M', 'O', 6.00], ['ACQUA', 'Consumi idrici individuali', 'ACQUA', 'A', 'O', 0.00], ['REND.A', 'Contributo immobili uso non abitativo sc.A', 'REND.A', 'M', 'O', 838.84], ['REND.B', 'Contributo immobili uso non abitativo sc.B', 'REND.B', 'M', 'O', 708.51], ['REND.C', 'Contributo immobili uso non abitativo sc.C', 'REND.C', 'M', 'O', 877.04], ['RIPARC', 'Ripartizioni spese Condominio', 'RIPARC', 'M', 'O', 1000.00], ['RIPARR', 'Ripartizioni spese Riscaldamento', 'RIPARR', 'M', 'R', 1000.00], ['RI.ASS', 'RIMBORSI ASSICURATIVI', 'RI.ASS', 'M', 'O', 1000.00], ]; $tabelleCreate = []; foreach ($tabelle as $tab) { $gestione = ($tab[4] === 'R') ? $gestioneRiscaldamento : $gestioneOrdinaria; $tabella = TabellaMillesimaleConti::create([ 'gestione_id' => $gestione->id, 'codice' => $tab[0], 'descrizione' => $tab[1], 'intestazione_colonne' => $tab[2], 'calcolo' => $tab[3], 'gestione_tipo' => $tab[4], 'decimali' => 2, 'unita_misura' => ($tab[3] === 'A' && $tab[0] === 'ACQUA') ? 'Cons.' : 'mill.', 'totale_millesimi' => $tab[5], 'attiva' => true ]); $tabelleCreate[$tab[0]] = $tabella; } // 3. CREA VOCI DI SPESA - Solo alcune di esempio per TAB.A $vociSpesaTabA = [ ['A00', 'GESTIONE FISCALE'], ['A01', 'Assicurazione fabbricato'], ['A02', 'Tassa occ. spazi Via vai (COSAP)'], ['A03', 'Quota associativa Prop.Edilizia (ARPE)'], ['A04', 'Fondo spese acqua'], ['A05', 'Manutenzione ordinaria e Lampade'], ['A06', 'DISINFESTAZIONI E DERATTIZZAZIONE'], ['A07', 'Fotocopie, cancelleria e telefono'], ['A08', 'Spese Postali generali'], ['A09', 'Riparazioni / lavori'], ['A10', 'Spese e bollo su CCP'], ['A11', 'Tasse condominiali (TOSAP, ETC)'], ['A12', 'Ritnuta d\'acconto anni precedenti'], ['A13', 'Compenso amministratore'], ['A14', 'Tasse e Imposte su compensi'], ['A15', 'Materiale di pulizia'], ['A16', 'Postali Condominiali'], ['A17', 'IMU LOCALI CONDOMINIALI'], ['A18', 'SPESE CONDOMINIALI LOCALI'], ['A26', 'DICHIARAZIONI DETRAZIONI FISCALI E CU FORNITORI'], ['A27', 'PULIZIA POZZETTI'], ['A28', 'Documento Valutazione Rischi'], ['A29', 'Sala per Assemblee'], ['A30', 'Manutenzione Estintore Guardiola'], ['A33', 'Compenso Amministratore Attuale'], ]; foreach ($vociSpesaTabA as $voce) { VoceSpesaMillesimale::create([ 'tabella_millesimale_id' => $tabelleCreate['TAB.A']->id, 'codice_voce' => $voce[0], 'descrizione' => $voce[1], 'importo_preventivo' => rand(500, 5000), 'attiva' => true ]); } // Voci per TAB.A5 (Portiere) $vociPortiere = [ ['P01', 'Salario, 13 mensilita\' e ferie'], ['P02', 'Assicurazione TFR (Sig.Giorgi)'], ['P03', 'Contributi sociali INPS/INAIL'], ['P04', 'Propr. Edilizia per conteggi'], ['P05', 'Materiali Pulizie'], ['P06', 'Acqua Portineria'], ['P07', 'Varie e postali'], ['P08', 'Ore permesso non usufruite'], ['P09', 'Indennita esazione'], ['P10', 'Spese riscaldamento'], ['P11', 'Ritenute IRPEF PORTIERE'], ['P14', 'Servizi di Pulizia e sostituzione del Portiere'], ['P16', 'Quota annuale TFR portiere da aggiungere al FONDO TFR'], ]; foreach ($vociPortiere as $voce) { VoceSpesaMillesimale::create([ 'tabella_millesimale_id' => $tabelleCreate['TAB.A5']->id, 'codice_voce' => $voce[0], 'descrizione' => $voce[1], 'importo_preventivo' => rand(1000, 8000), 'attiva' => true ]); } $this->command->info('✅ Tabelle millesimali e voci di spesa create con successo!'); // 4. CREA ALCUNE UNITÀ DI ESEMPIO E MILLESIMI $this->creaUnitaEMillesimi($stabile, $tabelleCreate); }); } private function creaUnitaEMillesimi($stabile, $tabelleCreate) { // Trova o crea palazzina $palazzina = $stabile->palazzine()->first(); if (!$palazzina) { $this->command->warn('Nessuna palazzina trovata. Creazione delle unità saltata.'); return; } // Dati di esempio dalle tue tabelle - Solo alcune unità per test $unitaConMillesimi = [ ['A', '1', 'PAOLETTI CORRADO', [ 'TAB.A' => 7.62, 'TAB.A1' => 39.99, 'TAB.A4' => 7.49, 'TAB.A5' => 7.80, 'TAB.B1' => 21.96, 'TAB.C1' => 16.00, 'RISC.' => 7.62, 'RENDIT' => 16.00, 'RI.ASS' => 16.00 ]], ['A', '2', 'CAPONI ALESSIA', [ 'TAB.A' => 12.17, 'TAB.A1' => 63.90, 'TAB.A4' => 11.98, 'TAB.A5' => 12.49, 'TAB.B1' => 35.09, 'TAB.C1' => 25.56, 'RISC.' => 11.436, 'RENDIT' => 12.17, 'RI.ASS' => 25.56 ]], ['B', '1', 'SOC SAVEL', [ 'TAB.A' => 16.24, 'TAB.A2' => 38.24, 'TAB.A4' => 15.97, 'TAB.A5' => 16.63, 'TAB.B2' => 20.93, 'TAB.C2' => 15.30, 'RISC.' => 21.236, 'RENDIT' => 16.24, 'RI.ASS' => 15.30 ]], ['C', '1', 'ERRIGO ANTONIO', [ 'TAB.A' => 24.66, 'TAB.A3' => 76.30, 'TAB.A4' => 24.26, 'TAB.A5' => 25.27, 'TAB.B3' => 42.95, 'TAB.C3' => 29.306, 'RISC.' => 24.66, 'RI.ASS' => 24.66 ]], ]; foreach ($unitaConMillesimi as $datiUnita) { [$scala, $interno, $proprietario, $millesimi] = $datiUnita; // Crea o trova l'unità immobiliare $unita = UnitaImmobiliare::firstOrCreate([ 'palazzina_id' => $palazzina->id, 'scala' => $scala, 'piano' => '1', // Assumiamo piano 1 per semplicità 'interno' => $interno, ], [ 'tipologia' => 'appartamento', 'superficie_commerciale' => rand(60, 120), 'stato_occupazione' => 'occupata_proprietario', 'proprietario_nome' => $proprietario, 'attiva' => true ]); // Inserisci i millesimi per questa unità foreach ($millesimi as $codiceTabella => $valoreMillesimi) { if (isset($tabelleCreate[$codiceTabella])) { MillesimiUnita::updateOrCreate([ 'unita_immobiliare_id' => $unita->id, 'tabella_millesimale_id' => $tabelleCreate[$codiceTabella]->id, ], [ 'millesimi' => $valoreMillesimi ]); } } } $this->command->info('✅ Unità immobiliari e millesimi di esempio creati!'); } }