Импорт из finmap (CSV)

inCash умеет принимать выгрузку из finmap.online как CSV. Скрипт переносит счета, категории, контрагентов и операции — с сохранением валют и курсов.

Подготовка

  1. Войдите в finmap.online → откройте журнал операций.
  2. Экспортируйте все операции в CSV (кнопка экспорта в фильтрах журнала).
  3. Сохраните файл как data/import.csv в корне проекта inCash.

CSV finmap содержит колонки:

| № | Колонка | Что в ней | |---|---|---| | 1 | Дата | Дата операции | | 2 | Со счёта | Имя счёта-источника (для расхода / перевода) | | 3 | На счёт | Имя счёта-получателя (для дохода / перевода) | | 4 | Сумма | В валюте операции, запятая как разделитель | | 5 | Сумма в валюте компании | Для пересчёта в базовую | | 6 | Категория | Иерархия через / | | 7 | Контрагент | Имя | | 8 | Комментарий | Свободный текст | | 9 | Проект | Опционально |

Запуск скрипта

Из корня проекта:

npx tsx scripts/import-csv.ts

Что происходит:

  1. Читается data/import.csv.
  2. Создаются недостающие сущности: счета, категории (с иерархией), контрагенты, проекты.
  3. Тип операции определяется автоматически:
    • Только «Со счёта» → EXPENSE.
    • Только «На счёт» → INCOME.
    • Оба заполнены → TRANSFER.
  4. Кросс-валютные операции получают amountInCompanyCurrency и exchangeRate из колонки 5.
  5. Балансы счетов пересчитываются с учётом конвертации.

Эвристика валют

Если имя счёта содержит «Сумы», «Сўм» или «Kapital» — валюта счёта UZS. Иначе — USD по умолчанию. Если у вас другая базовая валюта или нестандартные имена — поправьте скрипт перед запуском.

Начальные балансы

Скрипт import-csv.ts не задаёт начальные балансы. После импорта нужно либо ввести их вручную в Настройках → Счета, либо запустить:

npx tsx scripts/set-initial-balances.ts

Скрипт пересчитывает баланс с учётом начального остатка и всех операций.

Что не переносится из finmap

  • Файлы / вложения к операциям.
  • Пользователи / роли (RBAC у inCash и finmap несовместим).
  • Автоправила.
  • Счета-фактуры (модуль выключен в inCash).

Альтернатива

Если CSV из finmap не подходит — используйте Excel-импорт или JSON snapshot (например, после экспорта из тестовой компании inCash).