Commit 55e34c49 authored by Mahmoud Aglan's avatar Mahmoud Aglan

Add Invoice Correction Wizard for superadmins

4-step wizard: search participant → select invoice → enter correction
(new amount, description, reason) → creates remainder invoice if needed.
Full audit log trace via Log::channel('audit') and invoice metadata.
Accessible from SuperAdmin panel, gated by super_admin.access permission.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent 98d2b625
This diff is collapsed.
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"/></svg> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"/></svg>
{{ __('تسوية المشتركين') }} {{ __('تسوية المشتركين') }}
</a> </a>
<a href="{{ route('admin.invoice-correction') }}" class="inline-flex items-center gap-2 px-4 py-2 bg-red-50 border border-red-200 text-red-800 text-sm font-medium rounded-lg hover:bg-red-100 transition">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"/></svg>
{{ __('تصحيح فاتورة') }}
</a>
</div> </div>
<!-- Stats Cards --> <!-- Stats Cards -->
......
...@@ -494,6 +494,8 @@ ...@@ -494,6 +494,8 @@
->middleware('permission:super_admin.access'); ->middleware('permission:super_admin.access');
Route::get('/admin/reconciliation', \App\Livewire\Admin\ReconciliationWizard::class)->name('admin.reconciliation') Route::get('/admin/reconciliation', \App\Livewire\Admin\ReconciliationWizard::class)->name('admin.reconciliation')
->middleware('permission:super_admin.access'); ->middleware('permission:super_admin.access');
Route::get('/admin/invoice-correction', \App\Livewire\Admin\InvoiceCorrectionWizard::class)->name('admin.invoice-correction')
->middleware('permission:super_admin.access');
// Exports // Exports
Route::get('/export/report', [\App\Http\Controllers\ExportController::class, 'report']) Route::get('/export/report', [\App\Http\Controllers\ExportController::class, 'report'])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment