72f6a6ae89
Task 5.1a — SalesInvoiceController (index, markPaid), только head. - index: список saas_invoices (структура 1:1 с AdminInvoiceController — фильтры status/search, пагинация). - markPaid: делегирует InvoicePaymentService::markPaid (идемпотентный claim issued→paid + зачисление баланса + акт + письмо) — логика НЕ дублируется. Head-гейт перед обоими методами (менеджер → 403 до обращения к сервису). Тесты 7/7 (вкл. пополнение баланса и идемпотентность повторной отметки), sales-набор 158/158, Larastan 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>