414 lines
19 KiB
PHP
414 lines
19 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('title', 'Dashboard GESCON Import')
|
|
|
|
@section('content')
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="page-title-box">
|
|
<h4 class="page-title">Dashboard GESCON Import</h4>
|
|
<div class="page-title-right">
|
|
<ol class="breadcrumb m-0">
|
|
<li class="breadcrumb-item"><a href="{{ route('dashboard') }}">NetGescon</a></li>
|
|
<li class="breadcrumb-item active">GESCON Import</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistiche principali -->
|
|
<div class="row">
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-calendar-multiple widget-icon bg-success-lighten text-success"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Anni Gestione</h5>
|
|
<h3 class="mt-3 mb-3">{{ $stats['anni_gestione'] }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.anni-gestione') }}" class="text-success">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-home-group widget-icon bg-info-lighten text-info"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Stabili</h5>
|
|
<h3 class="mt-3 mb-3">{{ $stats['stabili'] }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.stabili') }}" class="text-info">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-account-group widget-icon bg-warning-lighten text-warning"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Condomini</h5>
|
|
<h3 class="mt-3 mb-3">{{ number_format($stats['condomini']) }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.condomini') }}" class="text-warning">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-domain widget-icon bg-primary-lighten text-primary"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Fornitori</h5>
|
|
<h3 class="mt-3 mb-3">{{ $stats['fornitori'] }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.fornitori') }}" class="text-primary">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Seconda riga di statistiche -->
|
|
<div class="row">
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-receipt widget-icon bg-danger-lighten text-danger"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Rate Emesse</h5>
|
|
<h3 class="mt-3 mb-3">{{ number_format($stats['rate_emesse']) }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.rate-emesse') }}" class="text-danger">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-cash-multiple widget-icon bg-success-lighten text-success"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Incassi</h5>
|
|
<h3 class="mt-3 mb-3">{{ number_format($stats['incassi']) }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.incassi') }}" class="text-success">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-file-document widget-icon bg-info-lighten text-info"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Fatture</h5>
|
|
<h3 class="mt-3 mb-3">{{ number_format($stats['fatture']) }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.fatture') }}" class="text-info">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
<div class="card widget-flat">
|
|
<div class="card-body">
|
|
<div class="float-end">
|
|
<i class="mdi mdi-account-multiple widget-icon bg-warning-lighten text-warning"></i>
|
|
</div>
|
|
<h5 class="text-muted font-weight-normal mt-0">Assemblee</h5>
|
|
<h3 class="mt-3 mb-3">{{ $stats['assemblee'] }}</h3>
|
|
<p class="mb-0 text-muted">
|
|
<a href="{{ route('gescon.assemblee') }}" class="text-warning">
|
|
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Ultimi stabili importati -->
|
|
<div class="col-xl-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="dropdown float-end">
|
|
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="mdi mdi-dots-vertical"></i>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end">
|
|
<a href="{{ route('gescon.stabili') }}" class="dropdown-item">Visualizza tutti</a>
|
|
</div>
|
|
</div>
|
|
<h4 class="header-title mb-3">Ultimi Stabili Importati</h4>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table table-sm table-centered">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Codice</th>
|
|
<th>Denominazione</th>
|
|
<th>Comune</th>
|
|
<th>Condomini</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($ultimiStabili as $stabile)
|
|
<tr>
|
|
<td>
|
|
<a href="{{ route('gescon.stabile-dettaglio', $stabile->id) }}" class="text-body fw-semibold">
|
|
{{ $stabile->codice_stabile }}
|
|
</a>
|
|
</td>
|
|
<td>{{ $stabile->denominazione }}</td>
|
|
<td>{{ $stabile->comune->comune ?? $stabile->comune }}</td>
|
|
<td>
|
|
<span class="badge bg-light text-dark">{{ $stabile->num_condomini }}</span>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="4" class="text-center text-muted py-3">Nessun stabile importato</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Rate scadute -->
|
|
<div class="col-xl-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="dropdown float-end">
|
|
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="mdi mdi-dots-vertical"></i>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end">
|
|
<a href="{{ route('gescon.rate-emesse', ['scadute' => 1]) }}" class="dropdown-item">Visualizza tutte</a>
|
|
</div>
|
|
</div>
|
|
<h4 class="header-title mb-3">Rate Scadute</h4>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table table-sm table-centered">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Rata N°</th>
|
|
<th>Condomino</th>
|
|
<th>Importo</th>
|
|
<th>Scadenza</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($rateScadute as $rata)
|
|
<tr>
|
|
<td>{{ $rata->numero_rata }}</td>
|
|
<td>
|
|
<small class="text-muted">{{ $rata->stabile->denominazione }}</small><br>
|
|
{{ $rata->condomino->nome_completo }}
|
|
</td>
|
|
<td>
|
|
<span class="text-danger fw-semibold">€ {{ number_format($rata->importo_residuo, 2) }}</span>
|
|
</td>
|
|
<td>
|
|
<span class="badge bg-danger">{{ $rata->data_scadenza->format('d/m/Y') }}</span>
|
|
<small class="text-muted d-block">{{ $rata->giorni_ritardo }} gg</small>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="4" class="text-center text-muted py-3">Nessuna rata scaduta</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Ultimi condomini -->
|
|
<div class="col-xl-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="dropdown float-end">
|
|
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="mdi mdi-dots-vertical"></i>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end">
|
|
<a href="{{ route('gescon.condomini') }}" class="dropdown-item">Visualizza tutti</a>
|
|
</div>
|
|
</div>
|
|
<h4 class="header-title mb-3">Ultimi Condomini Importati</h4>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table table-sm table-centered">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Nome</th>
|
|
<th>Stabile</th>
|
|
<th>Unità</th>
|
|
<th>Millesimi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($ultimiCondomini as $condomino)
|
|
<tr>
|
|
<td>
|
|
<strong>{{ $condomino->nome_completo }}</strong><br>
|
|
<small class="text-muted">{{ $condomino->codice_condomino }}</small>
|
|
</td>
|
|
<td>{{ $condomino->stabile->denominazione }}</td>
|
|
<td>{{ $condomino->indirizzo_completo }}</td>
|
|
<td>
|
|
<span class="badge bg-light text-dark">{{ number_format($condomino->totale_millesimi, 3) }}</span>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="4" class="text-center text-muted py-3">Nessun condomino importato</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Incassi da riconciliare -->
|
|
<div class="col-xl-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="dropdown float-end">
|
|
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="mdi mdi-dots-vertical"></i>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end">
|
|
<a href="{{ route('gescon.incassi', ['riconciliato' => 0]) }}" class="dropdown-item">Visualizza tutti</a>
|
|
</div>
|
|
</div>
|
|
<h4 class="header-title mb-3">Incassi da Riconciliare</h4>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table table-sm table-centered">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Data</th>
|
|
<th>Condomino</th>
|
|
<th>Importo</th>
|
|
<th>Modalità</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($incassiDaRiconciliare as $incasso)
|
|
<tr>
|
|
<td>{{ $incasso->data_incasso->format('d/m/Y') }}</td>
|
|
<td>
|
|
<small class="text-muted">{{ $incasso->stabile->denominazione }}</small><br>
|
|
{{ $incasso->condomino->nome_completo }}
|
|
</td>
|
|
<td>
|
|
<span class="text-success fw-semibold">€ {{ number_format($incasso->importo, 2) }}</span>
|
|
</td>
|
|
<td>
|
|
<span class="badge bg-info">{{ $incasso->modalita_pagamento_label }}</span>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="4" class="text-center text-muted py-3">Tutti gli incassi sono riconciliati</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Azioni rapide -->
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h4 class="header-title mb-3">Azioni Rapide</h4>
|
|
<div class="row">
|
|
<div class="col-md-3">
|
|
<a href="{{ route('gescon.reports') }}" class="btn btn-outline-primary w-100 mb-2">
|
|
<i class="mdi mdi-chart-line me-1"></i>Report Completi
|
|
</a>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<a href="{{ route('gescon.rate-emesse', ['scadute' => 1]) }}" class="btn btn-outline-danger w-100 mb-2">
|
|
<i class="mdi mdi-alert-circle me-1"></i>Rate Scadute
|
|
</a>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<a href="{{ route('gescon.incassi', ['riconciliato' => 0]) }}" class="btn btn-outline-warning w-100 mb-2">
|
|
<i class="mdi mdi-bank me-1"></i>Riconciliazione
|
|
</a>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<a href="{{ route('gescon.fatture', ['scadute' => 1]) }}" class="btn btn-outline-info w-100 mb-2">
|
|
<i class="mdi mdi-file-document-outline me-1"></i>Fatture Scadute
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('scripts')
|
|
<script>
|
|
$(document).ready(function() {
|
|
// Auto-refresh della dashboard ogni 5 minuti
|
|
setInterval(function() {
|
|
location.reload();
|
|
}, 300000);
|
|
});
|
|
</script>
|
|
@endsection
|