netgescon-day0/tests/Feature/ContabilitaRelazionaleOrdinarieTest.php

188 lines
6.2 KiB
PHP

<?php
use App\Models\Fornitore;
use App\Models\Stabile;
use App\Models\User;
use App\Models\Amministratore;
use App\Models\GestioneContabile;
use App\Models\VoceSpesa;
use App\Models\OperazioneContabile;
use App\Modules\Contabilita\Models\MovimentoBanca;
use App\Filament\Pages\Gescon\Ordinarie;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
uses(RefreshDatabase::class);
test('operazioni_contabili and movimenti_banca use relational database columns and models', function () {
$user = User::factory()->create();
$user->assignRole('super-admin');
$this->actingAs($user);
$amministratore = Amministratore::create([
'user_id' => $user->id,
'nome' => 'Admin',
'cognome' => 'Test',
'denominazione' => 'Amministrazione Test',
'codice_fiscale' => '12345678901',
]);
$stabile = Stabile::create([
'amministratore_id' => $amministratore->id,
'codice_stabile' => '0013',
'denominazione' => 'Condominio Ottaviano 105',
'codice_fiscale' => '80012345678',
'indirizzo' => 'Via Ottaviano 105',
'citta' => 'Roma',
'cap' => '00192',
'provincia' => 'RM',
'codice_destinatario_sdi' => '0000000',
]);
$gestione = GestioneContabile::create([
'tenant_id' => 'default',
'stabile_id' => $stabile->id,
'anno_gestione' => 2025,
'tipo_gestione' => 'ordinaria',
'denominazione' => 'Gestione Ordinaria 2025',
'data_inizio' => '2025-01-01',
'data_fine' => '2025-12-31',
'stato' => 'aperta',
'protocollo_prefix' => 'O2025',
]);
$fornitore = Fornitore::create([
'amministratore_id' => $amministratore->id,
'ragione_sociale' => 'GAIA CONSORZIO',
'codice_fiscale' => '01234567890',
]);
$voceSpesa = VoceSpesa::create([
'stabile_id' => $stabile->id,
'gestione_id' => $gestione->id,
'codice' => 'MANUT01',
'descrizione' => 'Spese Manutenzione Ordinaria',
'categoria' => 'ordinaria',
'tipo_gestione' => 'ordinaria',
]);
$movimentoBanca = MovimentoBanca::create([
'stabile_id' => $stabile->id,
'conto_bancario_id' => 8,
'row_hash' => md5('unique_row_hash_1'),
'data' => '2025-01-15',
'data_valuta' => '2025-01-15',
'importo' => -1416.00,
'descrizione' => 'SALDO FT N. FEP858 DEL 17/12/24',
'tipo_operazione' => 'bonifico_uscita',
'beneficiario' => 'GAIA CONSORZIO',
'rif_documento' => 'FEP858',
'rif_disposizione' => 'MB0B19323168/90370001',
'categoria_banca' => 'Servizi - Spese per manutenzione',
'fornitore_id' => $fornitore->id,
'stato_riconciliazione' => 'riconciliato',
]);
$operazione = OperazioneContabile::create([
'gestione_id' => $gestione->id,
'stabile_id' => $stabile->id,
'protocollo_numero' => 1,
'protocollo_completo' => 'O2025-001',
'data_operazione' => '2025-01-15',
'data_competenza' => '2025-01-15',
'descrizione' => 'Fattura Manutenzione GAIA Consorzio',
'dare' => 1416.00,
'avere' => 0.00,
'fornitore_id' => $fornitore->id,
'voce_spesa_id' => $voceSpesa->id,
'cod_spe' => '03',
'tabella' => 'A',
'cod_for' => '0012',
'num_fat' => 'FEP858',
'dt_fat' => '2024-12-17',
'rif_rda' => 'RDA123',
'movimento_bancario_id' => $movimentoBanca->id,
]);
expect($operazione->fornitore->ragione_sociale)->toBe('GAIA CONSORZIO');
expect($operazione->voceSpesa->descrizione)->toBe('Spese Manutenzione Ordinaria');
expect($operazione->movimentoBancario->beneficiario)->toBe('GAIA CONSORZIO');
expect($operazione->movimentoBancario->rif_documento)->toBe('FEP858');
expect($movimentoBanca->tipo_operazione)->toBe('bonifico_uscita');
});
test('gescon ordinarie page builds query and renders db relational data', function () {
config(['netgescon.modules.gescon_internal_visible' => true]);
$user = User::factory()->create();
$user->assignRole('super-admin');
$this->actingAs($user);
$amministratore = Amministratore::create([
'user_id' => $user->id,
'nome' => 'Admin',
'cognome' => 'Test',
'denominazione' => 'Amministrazione Test',
'codice_fiscale' => '12345678901',
]);
$stabile = Stabile::create([
'amministratore_id' => $amministratore->id,
'codice_stabile' => '0013',
'denominazione' => 'Condominio Ottaviano 105',
'codice_fiscale' => '80012345678',
'indirizzo' => 'Via Ottaviano 105',
'citta' => 'Roma',
'cap' => '00192',
'provincia' => 'RM',
'codice_destinatario_sdi' => '0000000',
]);
$gestione = GestioneContabile::create([
'tenant_id' => 'default',
'stabile_id' => $stabile->id,
'anno_gestione' => 2025,
'tipo_gestione' => 'ordinaria',
'denominazione' => 'Gestione Ordinaria 2025',
'data_inizio' => '2025-01-01',
'data_fine' => '2025-12-31',
'stato' => 'aperta',
'protocollo_prefix' => 'O2025',
]);
$fornitore = Fornitore::create([
'amministratore_id' => $amministratore->id,
'ragione_sociale' => 'PULIZIE SRL',
'codice_fiscale' => '09876543210',
]);
$operazione = OperazioneContabile::create([
'gestione_id' => $gestione->id,
'stabile_id' => $stabile->id,
'protocollo_numero' => 2,
'protocollo_completo' => 'O2025-002',
'data_operazione' => '2025-02-01',
'data_competenza' => '2025-02-01',
'descrizione' => 'Pulizia scale febbraio',
'dare' => 500.00,
'avere' => 0.00,
'fornitore_id' => $fornitore->id,
'cod_spe' => '01',
'tabella' => 'A',
'cod_for' => '0005',
'num_fat' => '12/2025',
'dt_fat' => '2025-01-31',
]);
session([
'current_stabile_id' => $stabile->id,
'active_anno_gestione' => 2025,
]);
Livewire::test(Ordinarie::class, ['filterAnno' => 2025])
->set('filterAnno', 2025)
->assertSuccessful()
->assertSee('Pulizia scale febbraio')
->assertSee('PULIZIE SRL');
});