April 2026 waren Wirtschaft Feedback
This commit is contained in:
parent
02f2a4c23e
commit
9ce711d6b2
167 changed files with 25278 additions and 8518 deletions
|
|
@ -2,275 +2,284 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
<style>
|
||||
/* Optimierte Reminder Badge Styles */
|
||||
.reminder-badge {
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
}
|
||||
<style>
|
||||
/* Optimierte Reminder Badge Styles */
|
||||
.reminder-badge {
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.reminder-badge:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 8px rgba(0,0,0,0.15);
|
||||
}
|
||||
.reminder-badge:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.reminder-badge.badge-warning {
|
||||
background: linear-gradient(45deg, #ffc107, #ffb300);
|
||||
border: 1px solid #ffa000;
|
||||
}
|
||||
.reminder-badge.badge-warning {
|
||||
background: linear-gradient(45deg, #ffc107, #ffb300);
|
||||
border: 1px solid #ffa000;
|
||||
}
|
||||
|
||||
.reminder-badge.badge-danger {
|
||||
background: linear-gradient(45deg, #dc3545, #c82333);
|
||||
border: 1px solid #bd2130;
|
||||
}
|
||||
.reminder-badge.badge-danger {
|
||||
background: linear-gradient(45deg, #dc3545, #c82333);
|
||||
border: 1px solid #bd2130;
|
||||
}
|
||||
|
||||
.reminder-badge.badge-dark {
|
||||
background: linear-gradient(45deg, #343a40, #23272b);
|
||||
border: 1px solid #1d2124;
|
||||
}
|
||||
.reminder-badge.badge-dark {
|
||||
background: linear-gradient(45deg, #343a40, #23272b);
|
||||
border: 1px solid #1d2124;
|
||||
}
|
||||
|
||||
.reminder-badge.badge-light {
|
||||
background: linear-gradient(45deg, #f8f9fa, #e9ecef);
|
||||
border: 1px solid #dee2e6;
|
||||
color: #6c757d !important;
|
||||
}
|
||||
.reminder-badge.badge-light {
|
||||
background: linear-gradient(45deg, #f8f9fa, #e9ecef);
|
||||
border: 1px solid #dee2e6;
|
||||
color: #6c757d !important;
|
||||
}
|
||||
|
||||
/* Tooltip Verbesserungen */
|
||||
.tooltip-inner {
|
||||
background-color: #343a40;
|
||||
color: white;
|
||||
border-radius: 6px;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
/* Tooltip Verbesserungen */
|
||||
.tooltip-inner {
|
||||
background-color: #343a40;
|
||||
color: white;
|
||||
border-radius: 6px;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.tooltip.bs-tooltip-top .arrow::before {
|
||||
border-top-color: #343a40;
|
||||
}
|
||||
.tooltip.bs-tooltip-top .arrow::before {
|
||||
border-top-color: #343a40;
|
||||
}
|
||||
|
||||
.tooltip.bs-tooltip-bottom .arrow::before {
|
||||
border-bottom-color: #343a40;
|
||||
}
|
||||
.tooltip.bs-tooltip-bottom .arrow::before {
|
||||
border-bottom-color: #343a40;
|
||||
}
|
||||
|
||||
/* Reminder Datum Styling */
|
||||
.reminder-date {
|
||||
font-size: 11px;
|
||||
opacity: 0.8;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
/* Reminder Datum Styling */
|
||||
.reminder-date {
|
||||
font-size: 11px;
|
||||
opacity: 0.8;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.reminder-date:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.reminder-date:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Countdown Styling */
|
||||
.countdown-info {
|
||||
font-size: 10px;
|
||||
font-weight: 500;
|
||||
padding: 2px 6px;
|
||||
border-radius: 12px;
|
||||
background: rgba(0,0,0,0.05);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
/* Countdown Styling */
|
||||
.countdown-info {
|
||||
font-size: 10px;
|
||||
font-weight: 500;
|
||||
padding: 2px 6px;
|
||||
border-radius: 12px;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.countdown-info:hover {
|
||||
background: rgba(0,0,0,0.1);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
.countdown-info:hover {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.countdown-info.text-info {
|
||||
background: rgba(23, 162, 184, 0.1);
|
||||
border: 1px solid rgba(23, 162, 184, 0.2);
|
||||
}
|
||||
.countdown-info.text-info {
|
||||
background: rgba(23, 162, 184, 0.1);
|
||||
border: 1px solid rgba(23, 162, 184, 0.2);
|
||||
}
|
||||
|
||||
.countdown-info.text-danger {
|
||||
background: rgba(220, 53, 69, 0.1);
|
||||
border: 1px solid rgba(220, 53, 69, 0.2);
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
.countdown-info.text-danger {
|
||||
background: rgba(220, 53, 69, 0.1);
|
||||
border: 1px solid rgba(220, 53, 69, 0.2);
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
|
||||
.countdown-info.text-success {
|
||||
background: rgba(40, 167, 69, 0.1);
|
||||
border: 1px solid rgba(40, 167, 69, 0.2);
|
||||
}
|
||||
.countdown-info.text-success {
|
||||
background: rgba(40, 167, 69, 0.1);
|
||||
border: 1px solid rgba(40, 167, 69, 0.2);
|
||||
}
|
||||
|
||||
.countdown-days {
|
||||
font-weight: bold;
|
||||
color: #17a2b8;
|
||||
}
|
||||
.countdown-days {
|
||||
font-weight: bold;
|
||||
color: #17a2b8;
|
||||
}
|
||||
|
||||
/* Pulse Animation für fällige Erinnerungen */
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.7);
|
||||
}
|
||||
70% {
|
||||
box-shadow: 0 0 0 10px rgba(220, 53, 69, 0);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0);
|
||||
}
|
||||
}
|
||||
/* Pulse Animation für fällige Erinnerungen */
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.7);
|
||||
}
|
||||
|
||||
/* Responsive Anpassungen */
|
||||
@media (max-width: 768px) {
|
||||
.reminder-badge {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
.reminder-date {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.countdown-info {
|
||||
font-size: 9px;
|
||||
padding: 1px 4px;
|
||||
}
|
||||
|
||||
.countdown-days {
|
||||
font-size: 9px;
|
||||
}
|
||||
}
|
||||
70% {
|
||||
box-shadow: 0 0 0 10px rgba(220, 53, 69, 0);
|
||||
}
|
||||
|
||||
/* Info Box Styling */
|
||||
.info-box {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin-bottom: 30px;
|
||||
color: white;
|
||||
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0);
|
||||
}
|
||||
}
|
||||
|
||||
.info-box h5 {
|
||||
color: white;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 600;
|
||||
}
|
||||
/* Responsive Anpassungen */
|
||||
@media (max-width: 768px) {
|
||||
.reminder-badge {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
.info-box .feature-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.reminder-date {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.info-box .feature-list li {
|
||||
padding: 8px 0;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.countdown-info {
|
||||
font-size: 9px;
|
||||
padding: 1px 4px;
|
||||
}
|
||||
|
||||
.info-box .feature-list li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.countdown-days {
|
||||
font-size: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box .feature-list li i {
|
||||
margin-right: 10px;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
/* Info Box Styling */
|
||||
.info-box {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
border-radius: 10px;
|
||||
padding: 20px;
|
||||
margin-bottom: 30px;
|
||||
color: white;
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.info-box .workflow-steps {
|
||||
background: rgba(255,255,255,0.1);
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
.info-box h5 {
|
||||
color: white;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.info-box .workflow-steps h6 {
|
||||
color: white;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.info-box .feature-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.info-box .step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.info-box .feature-list li {
|
||||
padding: 8px 0;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.info-box .step-number {
|
||||
background: rgba(255,255,255,0.2);
|
||||
border-radius: 50%;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 10px;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
}
|
||||
.info-box .feature-list li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.info-box .cron-info {
|
||||
background: rgba(255,255,255,0.1);
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin-top: 15px;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
}
|
||||
.info-box .feature-list li i {
|
||||
margin-right: 10px;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.info-box .cron-info code {
|
||||
background: rgba(0,0,0,0.3);
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
color: #ffd700;
|
||||
}
|
||||
</style>
|
||||
.info-box .workflow-steps {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.info-box .workflow-steps h6 {
|
||||
color: white;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.info-box .step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.info-box .step-number {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 10px;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.info-box .cron-info {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin-top: 15px;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.info-box .cron-info code {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
color: #ffd700;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">
|
||||
<i class="fas fa-envelope"></i> Erinnerungen
|
||||
</h4>
|
||||
<div class="float-right">
|
||||
<a href="{{ route('admin_payments_reminder_create') }}" class="btn btn-sm btn-primary">
|
||||
<span class="far fa-plus-circle"></span> Erinnerung hinzufügen
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="card-datatable table-responsive pt-2">
|
||||
<table class="datatables-style table table-striped table-bordered" id="datatable-pay-credit">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{__('Titel')}}</th>
|
||||
<th>{{__('Interval') }}</th>
|
||||
<th>{{__('Typ') }}</th>
|
||||
<th>{{__('Action') }}</th>
|
||||
<th>{{__('Aktiv') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach($reminders as $reminder)
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ route('admin_payments_reminder_edit', $reminder->id) }}" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>
|
||||
</td>
|
||||
<td>{{ $reminder->title }}</td>
|
||||
<td>{{ $reminder->interval }}</td>
|
||||
<td>{{ $reminder->getClearingtype() }}</td>
|
||||
<td>{{ $reminder->action }}</td>
|
||||
<td>{!! get_active_badge($reminder->active) !!}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">
|
||||
<i class="fas fa-envelope"></i> Erinnerungen
|
||||
</h4>
|
||||
<div class="float-right">
|
||||
<a href="{{ route('admin_payments_reminder_create') }}" class="btn btn-sm btn-primary">
|
||||
<span class="far fa-plus-circle"></span> Erinnerung hinzufügen
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="card-datatable table-responsive pt-2">
|
||||
<table class="datatables-style table table-striped table-bordered" id="datatable-pay-credit">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('Titel') }}</th>
|
||||
<th>{{ __('Interval') }}</th>
|
||||
<th>{{ __('Typ') }}</th>
|
||||
<th>{{ __('Action') }}</th>
|
||||
<th>{{ __('Aktiv') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach ($reminders as $reminder)
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ route('admin_payments_reminder_edit', $reminder->id) }}"
|
||||
class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>
|
||||
</td>
|
||||
<td>{{ $reminder->title }}</td>
|
||||
<td>{{ $reminder->interval }}</td>
|
||||
<td>{{ $reminder->getClearingtype() }}</td>
|
||||
<td>{{ $reminder->action }}</td>
|
||||
<td>{!! get_active_badge($reminder->active) !!}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class=" px-3" <p>Das Intervall bezieht sich immer auf das Datum der Bestellung, bzw. wann wurde die letzen
|
||||
Erinnerung gesendet und
|
||||
die Differenz zum nächtem Intervall.<br>
|
||||
<i>(Beispiel: 2. Zahlungserinnerung am 01.10, 2.Zahlsintervall 30 - 3.Zahlsintervall 50 = 20 Tage, nächste
|
||||
Erinnerung am 20.10 in 19 Tagen)</i>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="col-12">
|
||||
|
|
@ -282,7 +291,8 @@
|
|||
</h4>
|
||||
<div class="card-tools">
|
||||
<span class="badge badge-primary">{{ $totalPayments }} offene Zahlungen</span>
|
||||
<span class="badge badge-warning">{{ number_format($totalAmount, 2, ',', '.') }} € Gesamtbetrag</span>
|
||||
<span class="badge badge-warning">{{ number_format($totalAmount, 2, ',', '.') }} €
|
||||
Gesamtbetrag</span>
|
||||
</div>
|
||||
<div class="float-right">
|
||||
<a href="{{ route('admin_payments_reminder_logs') }}" class="btn btn-sm btn-info mr-2">
|
||||
|
|
@ -291,8 +301,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Detaillierte Tabelle -->
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped" id="payment-reminders-table">
|
||||
|
|
@ -312,127 +322,129 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
@forelse($detailedData as $payment)
|
||||
<tr>
|
||||
<td data-order="{{ $payment['order_id'] }}">
|
||||
|
||||
|
||||
<a class="btn btn-sm btn-outline-primary" href="{{ route('admin_sales_detail', $payment['order_id']) }}" target="_blank">
|
||||
<i class="fa fa-eye"></i> {{ $payment['order_id'] }}
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<span class="text-danger font-weight-bold">
|
||||
{{ number_format($payment['amount']/100, 2, ',', '.') }} €
|
||||
</span>
|
||||
</td>
|
||||
<td>{{ $payment['created_at'] }}</td>
|
||||
<td>
|
||||
@if($payment['days_old'] > 30)
|
||||
<span class="badge badge-danger">{{ $payment['days_old'] }} Tage</span>
|
||||
@elseif($payment['days_old'] > 14)
|
||||
<span class="badge badge-warning">{{ $payment['days_old'] }} Tage</span>
|
||||
@else
|
||||
<span class="badge badge-info">{{ $payment['days_old'] }} Tage</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $payment['name'] }}</td>
|
||||
<td>{{ $payment['email'] }}</td>
|
||||
<td>
|
||||
@if($payment['clearingtype'] == 'fnc')
|
||||
<span class="badge badge-primary">{{ $payment['clearingtype_name'] }}</span>
|
||||
@else
|
||||
<span class="badge badge-warning">{{ $payment['clearingtype_name'] }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{!! $payment['shipped'] !!}</td>
|
||||
<td>
|
||||
@if($payment['reminder'] > 0)
|
||||
<div class="d-flex flex-column align-items-start">
|
||||
<!-- Reminder Badge mit verbesserter Darstellung -->
|
||||
<span class="badge badge-pill reminder-badge badge-{{ $payment['reminder'] == 1 ? 'warning' : ($payment['reminder'] == 2 ? 'danger' : 'dark') }} mb-1"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="{{ $payment['reminder'] }}. Zahlungserinnerung gesendet">
|
||||
<i class="fas fa-envelope-open-text mr-1"></i>
|
||||
<strong>{{ $payment['reminder'] }}.</strong>
|
||||
@if($payment['reminder'] == 1)
|
||||
<i class="fas fa-exclamation-triangle ml-1"></i>
|
||||
@elseif($payment['reminder'] >= 2)
|
||||
<i class="fas fa-exclamation-circle ml-1"></i>
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<!-- Datum mit verbesserter Formatierung -->
|
||||
@if($payment['reminder_date'])
|
||||
<small class="text-muted reminder-date"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom"
|
||||
title="Letzte Erinnerung gesendet">
|
||||
<i class="far fa-clock mr-1"></i>
|
||||
{{ \Carbon\Carbon::parse($payment['reminder_date'])->diffForHumans() }}
|
||||
</small>
|
||||
@endif
|
||||
|
||||
<!-- Countdown für nächste Erinnerung -->
|
||||
@if(isset($payment['countdown']) && $payment['countdown'])
|
||||
@if($payment['countdown']['type'] == 'countdown')
|
||||
<small class="text-info countdown-info mt-1"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom"
|
||||
title="Nächste Erinnerung am {{ \Carbon\Carbon::parse($payment['countdown']['next_reminder_date'])->format('d.m.Y') }}">
|
||||
<i class="fas fa-hourglass-half mr-1"></i>
|
||||
<span class="countdown-days">{{ $payment['countdown']['days_left'] }}</span> Tage
|
||||
</small>
|
||||
@elseif($payment['countdown']['type'] == 'overdue')
|
||||
<small class="text-danger countdown-info mt-1"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom"
|
||||
title="Nächste Erinnerung war fällig am {{ \Carbon\Carbon::parse($payment['countdown']['next_reminder_date'])->format('d.m.Y') }}">
|
||||
<i class="fas fa-exclamation-triangle mr-1"></i>
|
||||
Fällig!
|
||||
</small>
|
||||
@elseif($payment['countdown']['type'] == 'completed')
|
||||
<small class="text-success countdown-info mt-1"
|
||||
data-toggle="tooltip"
|
||||
data-placement="bottom"
|
||||
title="Alle verfügbaren Erinnerungen wurden gesendet">
|
||||
<i class="fas fa-check-circle mr-1"></i>
|
||||
Alle gesendet
|
||||
</small>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
@else
|
||||
<span class="badge badge-pill reminder-badge badge-light text-muted"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="Noch keine Erinnerung gesendet">
|
||||
<i class="fas fa-envelope mr-1"></i>
|
||||
0
|
||||
<tr>
|
||||
<td data-order="{{ $payment['order_id'] }}">
|
||||
|
||||
|
||||
<a class="btn btn-sm btn-outline-primary"
|
||||
href="{{ route('admin_sales_detail', $payment['order_id']) }}"
|
||||
target="_blank">
|
||||
<i class="fa fa-eye"></i> {{ $payment['order_id'] }}
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<span class="text-danger font-weight-bold">
|
||||
{{ number_format($payment['amount'] / 100, 2, ',', '.') }} €
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="{{ route('admin_payments_reminder_action', ['action' => 'send_reminder', 'id' => $payment['payment_id']]) }}" class="btn btn-sm btn-outline-primary"
|
||||
</td>
|
||||
<td>{{ $payment['created_at'] }}</td>
|
||||
<td>
|
||||
@if ($payment['days_old'] > 30)
|
||||
<span class="badge badge-danger">{{ $payment['days_old'] }} Tage</span>
|
||||
@elseif($payment['days_old'] > 14)
|
||||
<span class="badge badge-warning">{{ $payment['days_old'] }} Tage</span>
|
||||
@else
|
||||
<span class="badge badge-info">{{ $payment['days_old'] }} Tage</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $payment['name'] }}</td>
|
||||
<td>{{ $payment['email'] }}</td>
|
||||
<td>
|
||||
@if ($payment['clearingtype'] == 'fnc')
|
||||
<span
|
||||
class="badge badge-primary">{{ $payment['clearingtype_name'] }}</span>
|
||||
@else
|
||||
<span
|
||||
class="badge badge-warning">{{ $payment['clearingtype_name'] }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>{!! $payment['shipped'] !!}</td>
|
||||
<td>
|
||||
@if ($payment['reminder'] > 0)
|
||||
<div class="d-flex flex-column align-items-start">
|
||||
<!-- Reminder Badge mit verbesserter Darstellung -->
|
||||
<span
|
||||
class="badge badge-pill reminder-badge badge-{{ $payment['reminder'] == 1 ? 'warning' : ($payment['reminder'] == 2 ? 'danger' : 'dark') }} mb-1"
|
||||
data-toggle="tooltip" data-placement="top"
|
||||
title="{{ $payment['reminder'] }}. Zahlungserinnerung gesendet">
|
||||
<i class="fas fa-envelope-open-text mr-1"></i>
|
||||
<strong>{{ $payment['reminder'] }}.</strong>
|
||||
@if ($payment['reminder'] == 1)
|
||||
<i class="fas fa-exclamation-triangle ml-1"></i>
|
||||
@elseif($payment['reminder'] >= 2)
|
||||
<i class="fas fa-exclamation-circle ml-1"></i>
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<!-- Datum mit verbesserter Formatierung -->
|
||||
@if ($payment['reminder_date'])
|
||||
<small class="text-muted reminder-date" data-toggle="tooltip"
|
||||
data-placement="bottom" title="Letzte Erinnerung gesendet">
|
||||
<i class="far fa-clock mr-1"></i>
|
||||
{{ \Carbon\Carbon::parse($payment['reminder_date'])->diffForHumans() }}
|
||||
</small>
|
||||
@endif
|
||||
|
||||
<!-- Countdown für nächste Erinnerung -->
|
||||
@if (isset($payment['countdown']) && $payment['countdown'])
|
||||
@if ($payment['countdown']['type'] == 'countdown')
|
||||
<small class="text-info countdown-info mt-1"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="Nächste Erinnerung am {{ \Carbon\Carbon::parse($payment['countdown']['next_reminder_date'])->format('d.m.Y') }}">
|
||||
<i class="fas fa-hourglass-half mr-1"></i>
|
||||
<span
|
||||
class="countdown-days">{{ $payment['countdown']['days_left'] }}</span>
|
||||
Tage
|
||||
</small>
|
||||
@elseif($payment['countdown']['type'] == 'overdue')
|
||||
<small class="text-danger countdown-info mt-1"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="Nächste Erinnerung war fällig am {{ \Carbon\Carbon::parse($payment['countdown']['next_reminder_date'])->format('d.m.Y') }}">
|
||||
<i class="fas fa-exclamation-triangle mr-1"></i>
|
||||
Fällig!
|
||||
</small>
|
||||
@elseif($payment['countdown']['type'] == 'completed')
|
||||
<small class="text-success countdown-info mt-1"
|
||||
data-toggle="tooltip" data-placement="bottom"
|
||||
title="Alle verfügbaren Erinnerungen wurden gesendet">
|
||||
<i class="fas fa-check-circle mr-1"></i>
|
||||
Alle gesendet
|
||||
</small>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
@else
|
||||
<span class="badge badge-pill reminder-badge badge-light text-muted"
|
||||
data-toggle="tooltip" data-placement="top"
|
||||
title="Noch keine Erinnerung gesendet">
|
||||
<i class="fas fa-envelope mr-1"></i>
|
||||
0
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="{{ route('admin_payments_reminder_action', ['action' => 'send_reminder', 'id' => $payment['payment_id']]) }}"
|
||||
class="btn btn-sm btn-outline-primary"
|
||||
onclick="return confirm('Möchten Sie wirklich eine Zahlungserinnerung senden?')">
|
||||
<i class="fas fa-envelope"></i> Erinnerung senden
|
||||
</a>
|
||||
<a href="{{ route('admin_payments_reminder_action', ['action' => 'no_payment', 'id' => $payment['payment_id']]) }}" class="btn btn-sm btn-outline-danger"
|
||||
<i class="fas fa-envelope"></i> Erinnerung senden
|
||||
</a>
|
||||
<a href="{{ route('admin_payments_reminder_action', ['action' => 'no_payment', 'id' => $payment['payment_id']]) }}"
|
||||
class="btn btn-sm btn-outline-danger"
|
||||
onclick="return confirm('Soll die Zahlung als nicht bezahlt markiert werden?')">
|
||||
<i class="fas fa-trash"></i> keine Zahlung
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<i class="fas fa-trash"></i> keine Zahlung
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9" class="text-center text-muted">
|
||||
<i class="fas fa-check-circle"></i> Keine offenen Zahlungen gefunden
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="9" class="text-center text-muted">
|
||||
<i class="fas fa-check-circle"></i> Keine offenen Zahlungen gefunden
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -445,7 +457,7 @@
|
|||
|
||||
|
||||
|
||||
{{-- <div class="info-box mt-4">
|
||||
{{-- <div class="info-box mt-4">
|
||||
<h5><i class="fas fa-info-circle mr-2"></i>Zahlungserinnerungen System - Übersicht & Funktionsweise</h5>
|
||||
|
||||
<div class="row">
|
||||
|
|
@ -527,56 +539,54 @@
|
|||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Tooltips initialisieren
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
// DataTable für Payment Reminder Einstellungen
|
||||
$('#payment-reminders-settings-table').DataTable({
|
||||
"language": {
|
||||
"url": "//cdn.datatables.net/plug-ins/1.10.24/i18n/German.json"
|
||||
},
|
||||
"pageLength": 25,
|
||||
"responsive": true
|
||||
});
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Tooltips initialisieren
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
// DataTable für offene Zahlungen
|
||||
$('#payment-reminders-table').DataTable({
|
||||
"language": {
|
||||
"url": "//cdn.datatables.net/plug-ins/1.10.24/i18n/German.json"
|
||||
},
|
||||
"order": [[3, "desc"]], // Sortiere nach "Tage alt" absteigend
|
||||
"pageLength": 50,
|
||||
"responsive": true,
|
||||
"columnDefs": [
|
||||
{
|
||||
"targets": [8], // Reminder Spalte
|
||||
"orderable": true,
|
||||
"searchable": false
|
||||
// DataTable für Payment Reminder Einstellungen
|
||||
$('#payment-reminders-settings-table').DataTable({
|
||||
"language": {
|
||||
"url": "//cdn.datatables.net/plug-ins/1.10.24/i18n/German.json"
|
||||
},
|
||||
"pageLength": 25,
|
||||
"responsive": true
|
||||
});
|
||||
|
||||
// DataTable für offene Zahlungen
|
||||
$('#payment-reminders-table').DataTable({
|
||||
"language": {
|
||||
"url": "//cdn.datatables.net/plug-ins/1.10.24/i18n/German.json"
|
||||
},
|
||||
"order": [
|
||||
[3, "desc"]
|
||||
], // Sortiere nach "Tage alt" absteigend
|
||||
"pageLength": 50,
|
||||
"responsive": true,
|
||||
"columnDefs": [{
|
||||
"targets": [8], // Reminder Spalte
|
||||
"orderable": true,
|
||||
"searchable": false
|
||||
}]
|
||||
});
|
||||
|
||||
// Tooltips nach DataTable-Initialisierung neu initialisieren
|
||||
$('#payment-reminders-table').on('draw.dt', function() {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
});
|
||||
|
||||
function sendReminder(paymentId) {
|
||||
if (confirm('Möchten Sie wirklich eine Zahlungserinnerung senden?')) {
|
||||
// TODO: Implementiere Erinnerung senden
|
||||
alert('Erinnerung für Payment ID ' + paymentId + ' würde gesendet werden');
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// Tooltips nach DataTable-Initialisierung neu initialisieren
|
||||
$('#payment-reminders-table').on('draw.dt', function() {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function sendReminder(paymentId) {
|
||||
if (confirm('Möchten Sie wirklich eine Zahlungserinnerung senden?')) {
|
||||
// TODO: Implementiere Erinnerung senden
|
||||
alert('Erinnerung für Payment ID ' + paymentId + ' würde gesendet werden');
|
||||
}
|
||||
}
|
||||
|
||||
function viewDetails(paymentId) {
|
||||
// TODO: Implementiere Detail-Ansicht
|
||||
alert('Details für Payment ID ' + paymentId + ' würden angezeigt werden');
|
||||
}
|
||||
</script>
|
||||
function viewDetails(paymentId) {
|
||||
// TODO: Implementiere Detail-Ansicht
|
||||
alert('Details für Payment ID ' + paymentId + ' würden angezeigt werden');
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue