- Тултип «Динамики НДС»: порядок Начислено за месяц → Вычет за месяц → К уплате за месяц
→ Накоплено за квартал; линии переименованы с уточнением «за месяц»
- «Контроль квартала»: высота таблицы ~5 строк с вертикальной прокруткой (как у трекера),
убран список «Оплачено, аванс не висячий»
- Динамика НДС (месяц): поверх столбцов «к уплате за месяц»/«накоплено за квартал»
добавлены линии «Начислено» и «Вычет»
- Трекер авансовых УПД: без лимита 15 (все ждущие), настоящая table с фиксированными
колонками (table-fixed, truncate+title), видимы первые ~5 строк, дальше скролл
внутри блока, шапка прилипает (sticky)
- Контроль квартала: главная таблица и «Показать все» — то же оформление table + скролл
- Новый GET /api/di2/nds/advance-vat-tracker (nds_advance_vat_tracker): KPI «сколько можем
сбавить НДС» (оценка сверху 22/122) + топ-15 поставщиков без авансовой УПД; карточка
сразу после «Динамики НДС» с обязательными оговорками из спеки
- Новый GET /api/di2/nds/quarter-control: redHanging / redNoAdvance («проверить зачёт») /
totals / byMarker / ?all=1 — по правкам виджета из спеки
- График «Динамика НДС» (месяц): два столбца «К уплате за месяц» и «Накоплено за квартал»,
кварталы выделены фоновыми полосами (ReferenceArea)
- Виджет «Контроль квартала»: легенда с подписями маркеров, итог «N договоров, сумма
авансов X», кнопка «Показать все» (полный список с маркерами), отдельный список
«Оплачено, аванс не висячий», полный год в датах договоров, overflow-x для таблиц
- summary: без фильтров дат период = весь доступный диапазон nds_monthly (с 2025-01)
- «К уплате» теперь всегда квартальный: квартал выбранного периода, если он внутри одного
квартала, иначе квартал последнего месяца в данных (НДС не копится между кварталами)
- карточки KPI: «Начислено»/«Вычет» за период с подписью, «К уплате» с меткой квартала
По решению владельца цвета серий (категории, контрагенты, классы просрочки,
прибыль/убыток) должны быть стабильными: одинаковый цвет = одни и те же данные.
Возвращены исходные палитры DI2 (до рестайла 968010c):
- income/expenses-overview, salary: 20 цветов hex (#2563eb, #e11d48, ...)
- calculations: income/expense/profit/tax/toPay/cumulative + HIGHLIGHT_COLORS
- debt: OVERDUE_COLORS по классам (cls0..cls365plus), ДЗ/ПДЗ, фолбэк #94a3b8
- planning: PIE_COLORS hsl, paid/debt, totalDebt/totalOverdue, прогноз/факт, легенда
- profitability: income/expense/profit (hsl из оригинала)
- income-categories: TAG_COLORS (8 hex)
- dashboard: палитра из исходной темы DI2 (hsl(210 85% 42%) и т.д.), долг hsl(0 72% 51%)
Не тронуты: цвета текста/осей/сеток/тултипов/фонов (семантические токены скина).
- vite.config.di2.ts + client-di2/tsconfig.json: алиас @skin → client/src/themes (tokens, skins, generated-skins.css — единый источник токенов)
- client-di2/src/themes/Di2ThemeProvider.tsx: порт логики ThemeProvider основного клиента (localStorage['skin'] → скин организации → 'iistwin'; runtime CSS кастомных скинов через generateSkinCss; data-skin/data-theme/class light|dark на <html>; контекст с toggleTheme). Ключи 'skin'/'theme' общие с iistwin — выбор синхронизируется между приложениями
- main.tsx: обёртка <Di2ThemeProvider> вокруг App
- tailwind.config.ts DI2: цвета hsl(var(--x) / <alpha-value>) → var(--x), радиусы → var(--radius) с каскадом calc, добавлены warning/success/info
- client-di2/src/index.css: собственные HSL-тройки заменены fallback-блоками основного клиента (до гидратации), первой строкой @import общего generated-skins.css; DI2-only переменные (--card-border, --popover-border, *-border, --button-outline, --badge-outline) переопределены через color-mix от семантических токенов; удалены --opaque-button-border-intensity и hsl(from ...) relative-color вычисления; жёсткие --font-sans: Open Sans убраны (шрифты эмитит generateSkinCss из токенов скина)
- client-di2/index.html: lang=ru, viewport без maximum-scale + interactive-widget=resizes-content, мега-link Google Fonts (23 семейства) заменён на Inter + DM Mono как в основном клиенте
- Alpha-модификаторы семантических цветов (166 мест: bg-muted/50, border-primary/30 и т.п.) заменены на arbitrary values color-mix(in oklab, var(--x) NN%, transparent) — Tailwind v3 молча не генерирует /NN для var()-цветов; палитровые цвета (green-500/10 и т.п.) не тронуты
DI2-роутер регистрируется перед основным dashboard.routes.ts и перехватывал
GET /api/dashboard (403 без finance.manage и неверный JSON — live-регрессия
главного дашборда CRM). Роут переименован, в DI2_PREFIXES /api/dashboard
заменён на /api/di2, клиент client-di2 ходит на новый путь (fetch + queryKey
+ prefetch в app-sidebar). Форматы старого модуля финансов не тронуты.