netgescon-day0/resources/views/admin/piano-conti-millesimi/index.blade.php

297 lines
14 KiB
PHP
Executable File

@extends('layouts.app')
@section('title', 'Piano dei Conti e Millesimi')
@section('content')
<div class="container-fluid">
<!-- Header con filtri -->
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h4 class="mb-0">
<i class="fas fa-calculator text-primary me-2"></i>
Piano dei Conti e Tabelle Millesimali
</h4>
@if($gestioneId)
<a href="{{ route('admin.piano-conti-millesimi.create', ['gestione_id' => $gestioneId]) }}"
class="btn btn-success">
<i class="fas fa-plus me-2"></i>Nuova Tabella
</a>
@endif
</div>
<div class="card-body">
<!-- Filtri -->
<form method="GET" class="row g-3">
<div class="col-md-4">
<label class="form-label">Stabile</label>
<select name="stabile_id" class="form-select" onchange="this.form.submit()">
<option value="">Seleziona Stabile</option>
@foreach($stabili as $stabile)
<option value="{{ $stabile->id }}"
{{ $stabileId == $stabile->id ? 'selected' : '' }}>
{{ $stabile->denominazione }}
</option>
@endforeach
</select>
</div>
@if($gestioni->count() > 0)
<div class="col-md-4">
<label class="form-label">Gestione</label>
<select name="gestione_id" class="form-select" onchange="this.form.submit()">
<option value="">Seleziona Gestione</option>
@foreach($gestioni as $gestione)
<option value="{{ $gestione->id }}"
{{ $gestioneId == $gestione->id ? 'selected' : '' }}>
{{ $gestione->descrizione }} ({{ $gestione->periodo }})
</option>
@endforeach
</select>
</div>
@endif
<div class="col-md-4 d-flex align-items-end gap-2">
@if($stabileId)
<a href="{{ route('admin.piano-conti-millesimi.report', ['stabile_id' => $stabileId]) }}"
class="btn btn-info">
<i class="fas fa-chart-bar me-2"></i>Report
</a>
@endif
</div>
</form>
</div>
</div>
</div>
</div>
@if($tabelle->count() > 0)
<!-- Tabelle Millesimali -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
Tabelle della Gestione: {{ $gestioni->find($gestioneId)->descrizione }}
</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover" id="tabelleMillesimali">
<thead class="table-light">
<tr>
<th>Codice</th>
<th>Descrizione</th>
<th>Intestazione</th>
<th>Calcolo</th>
<th>Tipo</th>
<th>Totale Mill.</th>
<th>Voci Spesa</th>
<th>Unità</th>
<th>Azioni</th>
</tr>
</thead>
<tbody>
@foreach($tabelle as $tabella)
<tr>
<td>
<code class="bg-primary text-white px-2 py-1 rounded">
{{ $tabella->codice }}
</code>
</td>
<td>{{ $tabella->descrizione }}</td>
<td><small class="text-muted">{{ $tabella->intestazione_colonne }}</small></td>
<td>
<span class="badge bg-{{ $tabella->calcolo === 'M' ? 'success' : ($tabella->calcolo === 'A' ? 'info' : 'warning') }}">
{{ $tabella->calcolo }}
</span>
</td>
<td>
<span class="badge bg-{{ $tabella->gestione_tipo === 'O' ? 'primary' : 'danger' }}">
{{ $tabella->gestione_tipo === 'O' ? 'Ordinaria' : 'Riscaldamento' }}
</span>
</td>
<td>
<strong>{{ number_format($tabella->totale_millesimi, 2, ',', '.') }}</strong>
<small class="d-block text-muted">{{ $tabella->unita_misura }}</small>
</td>
<td>
<span class="badge bg-secondary">
{{ $tabella->vociSpesa->count() }}
</span>
</td>
<td>
<span class="badge bg-info">
{{ $tabella->millesimi->count() }}
</span>
</td>
<td>
<div class="btn-group" role="group">
<a href="{{ route('admin.piano-conti-millesimi.show', $tabella) }}"
class="btn btn-sm btn-outline-primary" title="Dettagli">
<i class="fas fa-eye"></i>
</a>
<button class="btn btn-sm btn-outline-success"
data-bs-toggle="modal"
data-bs-target="#millesimiModal{{ $tabella->id }}"
title="Gestisci Millesimi">
<i class="fas fa-percentage"></i>
</button>
<button class="btn btn-sm btn-outline-warning"
data-bs-toggle="modal"
data-bs-target="#vociSpesaModal{{ $tabella->id }}"
title="Voci di Spesa">
<i class="fas fa-list-ul"></i>
</button>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@elseif($gestioneId)
<!-- Nessuna tabella per la gestione selezionata -->
<div class="row">
<div class="col-12">
<div class="alert alert-info text-center">
<i class="fas fa-info-circle fa-2x mb-3"></i>
<h5>Nessuna tabella millesimale trovata</h5>
<p>Non ci sono tabelle millesimali per la gestione selezionata.</p>
<a href="{{ route('admin.piano-conti-millesimi.create', ['gestione_id' => $gestioneId]) }}"
class="btn btn-success">
<i class="fas fa-plus me-2"></i>Crea Prima Tabella
</a>
</div>
</div>
</div>
@else
<!-- Messaggio iniziale -->
<div class="row">
<div class="col-12">
<div class="alert alert-primary text-center">
<i class="fas fa-building fa-3x mb-3"></i>
<h4>Gestione Piano dei Conti e Tabelle Millesimali</h4>
<p class="mb-4">
Sistema integrato per la gestione del Piano dei Conti e delle Tabelle Millesimali.<br>
Collega le voci di spesa alle unità immobiliari attraverso i millesimi di proprietà.
</p>
<div class="row text-start">
<div class="col-md-4">
<div class="card border-primary h-100">
<div class="card-body">
<h6 class="card-title text-primary">
<i class="fas fa-sitemap me-2"></i>Piano dei Conti
</h6>
<p class="card-text small">
Struttura gerarchica:<br>
<strong>MASTRO</strong> (3 caratteri)<br>
<strong>CONTO</strong> (8 caratteri)<br>
<strong>SOTTOCONTO</strong> (5 caratteri)
</p>
<div class="mt-3">
<small class="text-muted">Es: TAB.A A00 GESTIONE FISCALE</small>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card border-success h-100">
<div class="card-body">
<h6 class="card-title text-success">
<i class="fas fa-table me-2"></i>Tabelle Millesimali
</h6>
<p class="card-text small">
Ripartizione per tipologia:<br>
<strong>TAB.A</strong> - Proprietà generale<br>
<strong>TAB.B</strong> - Scale (A,B,C)<br>
<strong>TAB.C</strong> - Ascensori<br>
<strong>RISC.</strong> - Riscaldamento
</p>
<div class="mt-3">
<small class="text-muted">Totali millesimi variabili: 1000,00 o personalizzati</small>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card border-warning h-100">
<div class="card-body">
<h6 class="card-title text-warning">
<i class="fas fa-cogs me-2"></i>Gestioni
</h6>
<p class="card-text small">
Tipologie disponibili:<br>
<strong>Ordinaria</strong> (annuale)<br>
<strong>Riscaldamento</strong> (stagionale)<br>
<strong>Straordinaria</strong> (progetti)
</p>
<div class="mt-3">
<small class="text-muted">Es: ORD2024, RISC2024-25, STRA2023</small>
</div>
</div>
</div>
</div>
</div>
<div class="mt-4">
<p><strong>Inizia selezionando uno stabile dal menu sopra.</strong></p>
</div>
</div>
</div>
</div>
@endif
</div>
@endsection
@push('styles')
<style>
.table th {
font-size: 0.875rem;
font-weight: 600;
}
.badge {
font-size: 0.75rem;
}
code {
font-size: 0.875rem;
}
.btn-group .btn {
border-radius: 0.25rem;
margin: 0 1px;
}
.card {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
</style>
@endpush
@push('scripts')
<script>
$(document).ready(function() {
// Inizializza DataTable se presente
if ($('#tabelleMillesimali').length) {
$('#tabelleMillesimali').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.13.7/i18n/it-IT.json'
},
pageLength: 25,
order: [[0, 'asc']],
columnDefs: [
{ orderable: false, targets: -1 } // Disabilita ordinamento su colonna azioni
]
});
}
});
</script>
@endpush