297 lines
14 KiB
PHP
Executable File
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
|