2026-05-10 04:46:14 +03:00
|
|
|
|
/**
|
2026-05-16 08:07:57 +03:00
|
|
|
|
* Форматтеры биллинга — BillingView + TransactionsTable + InvoicesTable.
|
2026-05-16 07:56:22 +03:00
|
|
|
|
*
|
|
|
|
|
|
* Sprint 2 Plan C: status/format-функции (statusChipColor/statusLabel/
|
|
|
|
|
|
* formatLabel/formatIcon) удалены — real-API транзакции не имеют статуса
|
|
|
|
|
|
* (append-only ledger), счета — отдельный формат. txAmountClass
|
|
|
|
|
|
* перетипизирован под знак суммы.
|
2026-05-10 04:46:14 +03:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/** «5000» → «5 000 ₽» (без знака). */
|
|
|
|
|
|
export function formatPlain(cost: number): string {
|
|
|
|
|
|
return new Intl.NumberFormat('ru-RU').format(cost) + ' ₽';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Знаковый формат: «+ 5 000 ₽» / «− 6 600 ₽» / «0 ₽». */
|
|
|
|
|
|
export function formatCost(cost: number): string {
|
|
|
|
|
|
const sign = cost > 0 ? '+ ' : cost < 0 ? '− ' : '';
|
|
|
|
|
|
return sign + new Intl.NumberFormat('ru-RU').format(Math.abs(cost)) + ' ₽';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-16 07:56:22 +03:00
|
|
|
|
/** CSS-класс суммы транзакции по знаку. */
|
|
|
|
|
|
export function txAmountClass(amount: number): string {
|
|
|
|
|
|
if (amount > 0) return 'tx-amount-up';
|
|
|
|
|
|
if (amount < 0) return 'tx-amount-down';
|
2026-05-10 04:46:14 +03:00
|
|
|
|
return 'tx-amount-neutral';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-16 07:32:59 +03:00
|
|
|
|
/** Человекочитаемые лейблы для feature-слагов tariff_plans.features. */
|
|
|
|
|
|
export const FEATURE_LABELS: Record<string, string> = {
|
|
|
|
|
|
webhook: 'Webhook',
|
|
|
|
|
|
kanban: 'Канбан',
|
|
|
|
|
|
basic_analytics: 'Базовая аналитика',
|
|
|
|
|
|
advanced_analytics: 'Расширенная аналитика',
|
|
|
|
|
|
api: 'API',
|
|
|
|
|
|
'2fa': 'Двухфакторная аутентификация',
|
|
|
|
|
|
custom_domain: 'Свой домен',
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/** Лейбл feature-слага; неизвестный слаг возвращается как есть. */
|
|
|
|
|
|
export function featureLabel(slug: string): string {
|
|
|
|
|
|
return FEATURE_LABELS[slug] ?? slug;
|
|
|
|
|
|
}
|