3b8694cd4c
Task 3.3a — SalesClientsController наполняет earned_rub через SalesEarningsService (был null-заглушкой): - index: доход по каждому клиенту за период по снимку тарифа привязки; клиент без привязки (начальник видит незакреплённых) → null. - show (kpi): доход по одному клиенту. - overview (totals): сумма комиссии по всем привязкам в scope (без оклада). Тесты Фазы 1 обновлены под реальные значения (percent_oborot 10/20% от засеянного оборота → 500/5/10000 ₽; привязка без тарифа → 0.0; без привязки → null). Попутно исправлен ключ params тест-тарифа (percent→rate, движок читает rate). Sales-набор 132/132, Larastan 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>