217 lines
8.4 KiB
PHP
217 lines
8.4 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use App\Models\Stabile;
|
|
use App\Models\TabellaMillesimale;
|
|
use App\Models\DettaglioMillesimale;
|
|
use App\Models\UnitaImmobiliare;
|
|
use App\Models\RubricaUniversale;
|
|
use App\Models\DatiBancari;
|
|
|
|
class CreateSampleData extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'netgescon:sample-data';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Crea dati di esempio per testare le nuove interfacce NetGescon';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*/
|
|
public function handle()
|
|
{
|
|
$this->info('🚀 Creazione dati di esempio NetGescon...');
|
|
|
|
// 1. Verifica/Crea Stabile con tutti i dati completi
|
|
$stabileCount = Stabile::count();
|
|
$stabile = null;
|
|
|
|
if ($stabileCount == 0) {
|
|
$this->info('📋 Creazione primo stabile di esempio...');
|
|
$stabile = Stabile::create([
|
|
'codice_stabile' => 'ROM001',
|
|
'denominazione' => 'Condominio Via Roma 123',
|
|
'indirizzo' => 'Via Roma 123',
|
|
'citta' => 'Roma',
|
|
'cap' => '00100',
|
|
'provincia' => 'RM',
|
|
'amministratore_id' => 2, // admin@example.com
|
|
'stato' => 'attivo'
|
|
]);
|
|
$this->info("✅ Stabile creato: {$stabile->denominazione}");
|
|
} else {
|
|
// Usa l'ultimo stabile per creare i dati associati
|
|
$stabile = Stabile::latest()->first();
|
|
$this->info("📋 Uso stabile esistente: {$stabile->denominazione}");
|
|
}
|
|
|
|
// 2. Crea Tabella Millesimale se non esiste
|
|
$tabella = $stabile->tabelleMillesimali()->first();
|
|
if (!$tabella) {
|
|
$this->info('📊 Creazione tabella millesimale...');
|
|
$tabella = $stabile->tabelleMillesimali()->create([
|
|
'nome_tabella' => 'Spese Generali',
|
|
'codice_tabella' => 'TAB.A',
|
|
'denominazione' => 'Spese Generali',
|
|
'tipo_tabella' => 'proprieta',
|
|
'stato_tabella' => 'attiva',
|
|
'totale_millesimi' => 0,
|
|
'creato_da' => 1
|
|
]);
|
|
$this->info("✅ Tabella creata: {$tabella->codice_tabella}");
|
|
} else {
|
|
$this->info("📊 Tabella esistente: {$tabella->codice_tabella}");
|
|
}
|
|
|
|
// 3. Crea dettagli millesimali se non esistono
|
|
$dettagliCount = $tabella->dettagli()->count();
|
|
if ($dettagliCount == 0) {
|
|
$this->info('🏠 Creazione dettagli millesimali...');
|
|
|
|
// Prima verifica se ci sono unità immobiliari
|
|
$unitaImmobiliari = $stabile->unitaImmobiliari()->take(5)->get();
|
|
|
|
if ($unitaImmobiliari->count() == 0) {
|
|
$this->info('⚠️ Nessuna unità immobiliare trovata nello stabile.');
|
|
$this->info('📋 Creazione unità immobiliari di esempio...');
|
|
|
|
// Crea alcune unità immobiliari di esempio
|
|
$unitaData = [
|
|
['interno' => '1', 'scala' => 'A', 'piano' => '0', 'superficie' => 85.00],
|
|
['interno' => '2', 'scala' => 'A', 'piano' => '1', 'superficie' => 92.00],
|
|
['interno' => '3', 'scala' => 'A', 'piano' => '2', 'superficie' => 95.00],
|
|
['interno' => '4', 'scala' => 'A', 'piano' => '3', 'superficie' => 120.00],
|
|
['interno' => '5', 'scala' => 'B', 'piano' => '0', 'superficie' => 80.00]
|
|
];
|
|
|
|
foreach ($unitaData as $unita) {
|
|
$unitaImmobiliari[] = $stabile->unitaImmobiliari()->create([
|
|
'interno' => $unita['interno'],
|
|
'scala' => $unita['scala'],
|
|
'piano' => $unita['piano'],
|
|
'superficie' => $unita['superficie'],
|
|
'stato' => 'attiva',
|
|
'created_by' => 1
|
|
]);
|
|
}
|
|
|
|
$this->info("✅ Create " . count($unitaData) . " unità immobiliari");
|
|
}
|
|
|
|
// Ora crea i dettagli millesimali
|
|
$millesimi = [89.5000, 92.3000, 95.1000, 120.5000, 80.0000];
|
|
$totaleMillesimi = 0;
|
|
|
|
foreach ($unitaImmobiliari as $index => $unita) {
|
|
$millesimiValue = $millesimi[$index] ?? (80.0 + ($index * 5.0));
|
|
|
|
DettaglioMillesimale::create([
|
|
'tabella_id' => $tabella->id,
|
|
'unita_immobiliare_id' => $unita->id,
|
|
'millesimi' => $millesimiValue,
|
|
'creato_da' => 1
|
|
]);
|
|
|
|
$totaleMillesimi += $millesimiValue;
|
|
}
|
|
|
|
// Aggiorna il totale della tabella
|
|
$tabella->update(['totale_millesimi' => $totaleMillesimi]);
|
|
|
|
$this->info("✅ Creati " . $unitaImmobiliari->count() . " dettagli millesimali");
|
|
$this->info("📊 Totale millesimi: {$totaleMillesimi}");
|
|
} else {
|
|
$this->info("🏠 Dettagli esistenti: {$dettagliCount}");
|
|
}
|
|
|
|
// 4. Crea contatti rubrica universale
|
|
$banche = RubricaUniversale::categoria('banca')->count();
|
|
if ($banche == 0) {
|
|
$this->info('🏦 Creazione contatti banche...');
|
|
|
|
$bancheData = [
|
|
[
|
|
'ragione_sociale' => 'Banca Intesa SanPaolo S.p.A.',
|
|
'tipo_contatto' => 'persona_giuridica',
|
|
'categoria' => 'banca',
|
|
'partita_iva' => '06854851004',
|
|
'indirizzo' => 'Piazza San Carlo 156',
|
|
'citta' => 'Torino',
|
|
'cap' => '10121',
|
|
'provincia' => 'TO',
|
|
'telefono_ufficio' => '+39 011 555 1111',
|
|
'email' => 'condomini@intesasanpaolo.it',
|
|
'stato' => 'attivo'
|
|
],
|
|
[
|
|
'ragione_sociale' => 'UniCredit S.p.A.',
|
|
'tipo_contatto' => 'persona_giuridica',
|
|
'categoria' => 'banca',
|
|
'partita_iva' => '02008110222',
|
|
'indirizzo' => 'Piazza Gae Aulenti 3',
|
|
'citta' => 'Milano',
|
|
'cap' => '20154',
|
|
'provincia' => 'MI',
|
|
'telefono_ufficio' => '+39 02 888 2222',
|
|
'email' => 'condomini@unicredit.it',
|
|
'stato' => 'attivo'
|
|
]
|
|
];
|
|
|
|
foreach ($bancheData as $banca) {
|
|
RubricaUniversale::create($banca + ['creato_da' => 1]);
|
|
}
|
|
|
|
$this->info("✅ Creati " . count($bancheData) . " contatti banca");
|
|
} else {
|
|
$this->info("🏦 Banche esistenti: {$banche}");
|
|
}
|
|
|
|
// 5. Crea dati bancari se non esistono
|
|
$contiBancari = $stabile->datiBancari()->count();
|
|
if ($contiBancari == 0) {
|
|
$this->info('💳 Creazione dati bancari...');
|
|
|
|
$banca = RubricaUniversale::categoria('banca')->first();
|
|
if ($banca) {
|
|
DatiBancari::create([
|
|
'stabile_id' => $stabile->id,
|
|
'contatto_id' => $banca->id,
|
|
'tipo_conto' => 'corrente',
|
|
'denominazione_banca' => $banca->ragione_sociale,
|
|
'iban' => 'IT60 X054 2811 1010 0000 0123 456',
|
|
'intestazione_conto' => 'Condominio ' . $stabile->denominazione,
|
|
'data_saldo_iniziale' => '2025-01-01',
|
|
'saldo_iniziale' => 15000.00,
|
|
'valuta' => 'EUR',
|
|
'stato_conto' => 'attivo',
|
|
'creato_da' => 1
|
|
]);
|
|
$this->info("✅ Conto bancario creato presso {$banca->ragione_sociale}");
|
|
}
|
|
} else {
|
|
$this->info("💳 Conti bancari esistenti: {$contiBancari}");
|
|
}
|
|
|
|
$this->info('');
|
|
$this->info('🎉 Dati di esempio creati con successo!');
|
|
$this->info('📋 Ora puoi testare le nuove interfacce:');
|
|
$this->info(' • Tabelle Millesimali (vista Excel)');
|
|
$this->info(' • Dati Bancari (con rubrica universale)');
|
|
$this->info(' • Documenti Collegati (con protocolli)');
|
|
|
|
return 0;
|
|
}
|
|
}
|