fix: transactions edited so it matches the powerpoint overview

This commit is contained in:
2025-11-10 11:25:18 +01:00
parent 6331785fda
commit 175aebffa5
@@ -350,165 +350,7 @@ Transaction::STATUS_CLEARED => __('Keine Auffälligkeiten. Dokumentieren und arc
</div>
</section>
@if (! empty($actionChecklist))
<section class="rounded-3xl border border-slate-200/70 bg-gradient-to-br from-white via-indigo-50/40 to-slate-100/50 p-6 shadow-sm shadow-slate-900/10 backdrop-blur dark:border-slate-800/60 dark:bg-slate-950/95 dark:from-slate-950/90 dark:via-indigo-900/60 dark:to-slate-900/80">
<div class="flex flex-wrap items-center justify-between gap-4">
<div class="space-y-2">
<p class="inline-flex items-center gap-2 rounded-full border border-indigo-200/60 bg-indigo-500/10 px-3 py-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-indigo-700 shadow-sm dark:border-white/15 dark:bg-white/10 dark:text-slate-200">
{{ __('Review-Checkliste') }}
</p>
<h3 class="text-lg font-semibold text-slate-900 dark:text-slate-100">{{ $checklistIntro }}</h3>
<p class="text-xs text-slate-600 dark:text-slate-300">
{{ __('Priorisieren Sie die Kernaufgaben, um den Fallabschluss revisionssicher vorzubereiten.') }}
</p>
</div>
<span class="inline-flex items-center rounded-full border border-indigo-200/60 bg-white/90 px-3 py-1 text-[11px] font-semibold uppercase tracking-wide text-indigo-700 shadow-sm dark:border-white/20 dark:bg-white/10 dark:text-slate-100">
{{ count($actionChecklist) }} {{ __('Schritte') }}
</span>
</div>
<div class="mt-5 overflow-x-auto">
<ol class="flex min-w-full gap-4">
@foreach ($actionChecklist as $index => $item)
<li class="group flex min-w-[240px] flex-1 items-start gap-3 rounded-2xl border border-indigo-100/70 bg-white/95 p-4 text-sm shadow-sm transition hover:-translate-y-0.5 hover:border-indigo-300/70 hover:bg-white hover:shadow-lg hover:shadow-indigo-500/15 dark:border-white/15 dark:bg-white/5 dark:hover:bg-white/10">
<span class="mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-indigo-200/70 bg-indigo-500/10 text-xs font-semibold text-indigo-700 shadow-sm dark:border-white/40 dark:bg-white/10 dark:text-slate-100">
{{ sprintf('%02d', $index + 1) }}
</span>
<div class="space-y-1 text-slate-700 dark:text-slate-100">
<p class="font-semibold tracking-wide text-slate-900 transition group-hover:text-indigo-700 dark:text-slate-100 dark:group-hover:text-indigo-200">{{ $item['title'] }}</p>
<p class="text-[11px] leading-relaxed text-slate-500 transition group-hover:text-slate-600 dark:text-slate-300 dark:group-hover:text-slate-200">{{ $item['description'] }}</p>
</div>
</li>
@endforeach
</ol>
</div>
</section>
@endif
<div class="grid gap-6 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,1.85fr)]">
<div class="space-y-4">
<div class="rounded-3xl border border-zinc-200/70 bg-white/95 p-6 shadow-sm backdrop-blur dark:border-zinc-700/70 dark:bg-zinc-900/90">
<div class="flex flex-wrap items-center justify-between gap-4">
<div>
<h2 class="text-lg font-semibold text-zinc-900 dark:text-zinc-100">{{ __('Transaktionsliste') }}</h2>
<p class="text-sm text-zinc-500 dark:text-zinc-400">{{ __('Filtern Sie nach Status und Kanal, um relevante Vorgänge für dieses Unternehmen zu analysieren.') }}</p>
</div>
<flux:badge variant="outline">
{{ $transactions->total() }} {{ __('Ergebnisse') }}
</flux:badge>
</div>
<div class="mt-4 flex flex-wrap items-center gap-3">
<flux:select wire:model.live="status">
@foreach ($statusOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</flux:select>
<flux:select wire:model.live="channel">
@foreach ($channelOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</flux:select>
</div>
<div class="mt-6 space-y-3">
@forelse ($transactions as $transaction)
<button
wire:click="selectTransaction({{ $transaction->id }})"
wire:key="txn-{{ $transaction->id }}"
@class([ 'w-full rounded-2xl border p-4 text-left transition focus:outline-none focus:ring-2 focus:ring-indigo-500/80' , 'border-zinc-200/70 bg-white shadow-sm backdrop-blur dark:border-zinc-700/60 dark:bg-zinc-900/80'=> $selected?->id !== $transaction->id,
'border-indigo-300/70 bg-indigo-50/80 shadow-md ring-2 ring-indigo-200/60 dark:border-indigo-500/40 dark:bg-indigo-900/50 dark:ring-indigo-500/30' => $selected?->id === $transaction->id,
])>
<div class="flex flex-wrap items-start justify-between gap-4">
<div class="space-y-1">
<p class="text-sm font-semibold text-zinc-800 dark:text-zinc-100">
{{ $transaction->counterparty }}
</p>
<p class="text-xs text-zinc-500 dark:text-zinc-400">
{{ $transaction->counterparty_country }} {{ $transaction->executed_at?->format('d.m.Y H:i') }}
</p>
</div>
<div class="flex flex-col items-end gap-2">
<span class="text-lg font-semibold text-zinc-900 dark:text-zinc-100">
{{ $formatAmount($transaction->amount, $transaction->currency) }}
</span>
<span class="inline-flex items-center gap-2 rounded-full px-3 py-1 text-xs font-semibold {{ $statusStyles[$transaction->status] ?? 'bg-zinc-500/10 text-zinc-600 border border-zinc-500/20' }}">
{{ $transaction->statusLabel() }}
</span>
</div>
</div>
<div class="mt-3 flex flex-wrap items-center gap-2 text-xs text-zinc-500 dark:text-zinc-400">
<span class="inline-flex items-center gap-1 rounded-md bg-slate-100/60 px-2 py-1 font-semibold text-slate-700 dark:bg-slate-800/80 dark:text-slate-200">
Risiko {{ $transaction->risk_score }}
</span>
<span>{{ $transaction->channel }}</span>
<span></span>
<span class="font-mono">{{ $transaction->reference }}</span>
<flux:link
:href="route('company.transactions', ['company' => $company->id, 'transaction' => $transaction->id])"
wire:navigate
class="inline-flex items-center gap-1 font-medium text-indigo-600 transition hover:text-indigo-800 dark:text-indigo-300 dark:hover:text-indigo-200">
{{ __('Fallansicht öffnen') }}
<flux:icon name="arrow-top-right-on-square" class="h-4 w-4" />
</flux:link>
</div>
</button>
@empty
<div class="rounded-2xl border border-dashed border-zinc-300/70 bg-zinc-50/70 p-6 text-center text-sm text-zinc-500 dark:border-zinc-600/50 dark:bg-zinc-900/70 dark:text-zinc-300">
{{ __('Keine Transaktionen für die aktuellen Filter gefunden.') }}
</div>
@endforelse
</div>
@if ($transactions->hasPages())
<div class="mt-4 flex items-center justify-between gap-3 border-t border-zinc-200/70 bg-zinc-50/70 px-4 py-3 text-sm text-zinc-500 dark:border-zinc-700/60 dark:bg-zinc-900/70 dark:text-zinc-300">
<button
wire:click="previousPage"
wire:loading.attr="disabled"
@disabled($transactions->onFirstPage())
class="inline-flex items-center gap-2 rounded-full border border-zinc-300/70 bg-white/70 px-4 py-1.5 font-medium text-zinc-700 transition hover:bg-white dark:border-zinc-600/70 dark:bg-zinc-800/80 dark:text-zinc-200 dark:hover:bg-zinc-800/60"
>
{{ __('Zurück') }}
</button>
<span class="text-xs font-medium uppercase tracking-wide text-zinc-500 dark:text-zinc-400">
{{ __('Seite') }} {{ $transactions->currentPage() }} {{ __('von') }} {{ $transactions->lastPage() }}
</span>
<button
wire:click="nextPage"
wire:loading.attr="disabled"
@disabled(! $transactions->hasMorePages())
class="inline-flex items-center gap-2 rounded-full border border-zinc-300/70 bg-white/70 px-4 py-1.5 font-medium text-zinc-700 transition hover:bg-white dark:border-zinc-600/70 dark:bg-zinc-800/80 dark:text-zinc-200 dark:hover:bg-zinc-800/60"
>
{{ __('Weiter') }}
</button>
</div>
@endif
</div>
<div class="rounded-3xl border border-zinc-200/70 bg-white/95 p-6 shadow-sm backdrop-blur dark:border-zinc-700/70 dark:bg-zinc-900/90">
<h3 class="text-sm font-semibold uppercase tracking-wide text-zinc-500 dark:text-zinc-400">{{ __('Neueste Alerts') }}</h3>
<ul class="mt-4 space-y-3 text-sm text-zinc-600 dark:text-zinc-300">
@forelse ($recentAlerts as $alert)
<li class="flex items-start justify-between gap-3 rounded-2xl border border-zinc-100/70 bg-zinc-50/70 p-3 dark:border-zinc-700/70 dark:bg-zinc-800/70">
<div>
<p class="font-semibold text-zinc-900 dark:text-zinc-100">{{ $alert->counterparty }}</p>
<p class="text-xs text-zinc-500 dark:text-zinc-400">{{ $alert->executed_at?->format('d.m.Y H:i') }} {{ $alert->channel }}</p>
</div>
<span class="inline-flex items-center gap-2 rounded-full px-3 py-1 text-xs font-semibold {{ $statusStyles[$alert->status] ?? 'bg-zinc-500/10 text-zinc-600 border border-zinc-500/20' }}">
{{ $alert->statusLabel() }}
</span>
</li>
@empty
<li class="rounded-2xl border border-dashed border-zinc-300/60 bg-zinc-50/60 p-4 text-center text-xs text-zinc-500 dark:border-zinc-600/50 dark:bg-zinc-900/60">
{{ __('Aktuell liegen keine offenen Alerts vor.') }}
</li>
@endforelse
</ul>
</div>
</div>
<div class="space-y-6">
<div class="space-y-6">
@if ($selected)
@php
$badgeStyle = $statusStyles[$selected->status] ?? 'bg-zinc-500/10 text-zinc-600 border border-zinc-500/20';