Главная › Библиотека › Поставщики услуг

Поставщики услуг

Справочник поставщиков коммунальных услуг

Что такое поставщики услуг?

Поставщики услуг - это компании, предоставляющие коммунальные и другие услуги для недвижимости (управляющие компании, поставщики электроэнергии, воды, интернета и т.д.).

Особенности по странам

Украина

  • ЕГРПОУ - идентификатор юридического лица: Уникальный 8-значный идентификатор юридического лица
  • Украина (UA): Единый государственный реестр предприятий и организаций Украины
  • МФО - идентификатор банка (6 цифр): Используется для банковских реквизитов

Примеры поставщиков

  • Энергоснабжение: Киевэнерго, Львовоблэнерго
  • Водоснабжение: Киевводоканал, Львовводоканал
  • Интернет: Киевстар, Укртелеком
  • Управляющие компании: ЖЭКИ, ОСМДы
  • Другое: вывоз мусора, охрана, обслуживание

Ограничения базы данных

База данных содержит основные поставщики услуг, но может быть неполной для вашего города/района.

Решение Если вашего поставщика нет в базе - создайте пользовательского контрагента.

Пользовательские контрагенты

Пользовательские контрагенты - это компании и физические лица, с которыми вы работаете (арендаторы, поставщики услуг, подрядчики и т.д.).

Поля контрагента

Обязательные поля

  • Название - Полное название (обязательно)

Дополнительные поля

  • Краткое название - Краткое название
  • Организационно-правовая форма - Организационно-правовая форма (ООО, ФЛП, ЧП и т.д.)
  • ИНН/ОГРН - ИНН/ЕГРПОУ
  • НДС номер
  • Система налогообложения - Система налогообложения
  • IBAN - IBAN счёт
  • Название банка
  • МФО банка - МФО банка (6 цифр)
  • SWIFT код - SWIFT код банка
  • Email
  • Телефон
  • Веб-сайт
  • ФИО директора
  • Контактное лицо
  • Дата регистрации
  • Юридический адрес
  • Фактический адрес
  • Примечания

Правила валидации

  • Название: Название должно содержать минимум 3 символа
  • ИНН/ОГРН: Неверный формат ИНН/ОГРН (должно быть 8-12 цифр)
  • IBAN: Некорректный формат IBAN
  • МФО банка: Неверный формат МФО (должно быть 6 цифр)
  • SWIFT код: Некорректный формат SWIFT кода
  • Email: Неверный формат email
  • Телефон: Неверный формат телефона (7-20 символов: цифры, пробелы, +, -, (, ))
  • Веб-сайт: Неверный формат URL (должен начинаться с http:// или https://)
  • Дата регистрации: Дата регистрации не может быть в будущем

Доступ к контрагентам

Создание и управление контрагентами

REST API

API для работы с поставщиками

API предоставляет доступ только для чтения. Изменение данных поставщиков возможно только через административную панель.

Конечные точки API

GET /api/v1/service-providers              # List all active providers
GET /api/v1/service-providers/{id}         # Get specific provider details

Параметры запроса

  • page (integer, optional) - Page number, starts from 1. Default: 1
  • limit (integer, optional) - Items per page, max 100. Default: 50
  • search (string, optional) - Search by company name or EDRPOU code
  • region (string, optional) - Filter by region (exact match)

Примеры запросов

Пример 1: Получить первых 50 активных поставщиков

Случай использования: начальная загрузка списка поставщиков услуг

GET /api/v1/service-providers

Пример 2: Поиск по названию компании

Случай использования: пользователь вводит название компании в поле поиска. Возвращает поставщиков, соответствующих поисковому запросу в полях названия или короткого названия.

GET /api/v1/service-providers?search=Kyiv Energy Company

Пример 3: Поиск по коду ЕДРПОУ

Случай использования: пользователь вводит 8-значный код ЕДРПОУ из платежки. Возвращает точное совпадение, если поставщик существует в базе данных.

GET /api/v1/service-providers?search=00131305

Пример 4: Фильтр по region с пагинацией

Случай использования: показать поставщиков только из конкретного региона, 20 на страницу. Полезно для фильтрации местных коммунальных компаний.

GET /api/v1/service-providers?region=Kyiv&page=1&limit=20

Пример 5: Получить детали конкретного поставщика

Случай использования: пользователь нажимает на поставщика из списка, чтобы увидеть полную информацию. Возвращает полную информацию включая временные метки.

GET /api/v1/service-providers/1

Пример ответа со списком

{
  "items": [
    {
      "id": 1,
      "edrpou": "00131305",
      "name": "Public Joint Stock Company Kyiv Energy",
      "short_name": "Kyiv Energy JSC",
      "legal_address": "Kyiv, Sakharov St, 139",
      "region": "Kyiv",
      "website": "https://kyivenergo.ua",
      "description": "Electricity distribution company serving Kyiv",
      "phone": "+380 44 467 0067",
      "email": "[email protected]",
      "is_active": true,
      "country": {
        "id": 1,
        "code": "UA",
        "name": {
          "uk": "Україна",
          "en": "Ukraine",
          "ru": "Украина",
          "pl": "Ukraina",
          "de": "Ukraine"
        }
      }
    }
  ],
  "total": 1234,
  "pages": 25
}

Поля ответа:

  • items - Массив объектов поставщиков (максимум 100 элементов на страницу)
  • total - Общее количество поставщиков, соответствующих вашим критериям
  • pages - Общее количество страниц (вычисляется как: ceil(total / limit))

Пример детального ответа

{
  "id": 1,
  "edrpou": "00131305",
  "name": "Public Joint Stock Company Kyiv Energy",
  "website": "https://kyivenergo.ua",
  "description": "Electricity distribution company serving Kyiv",
  "phone": "+380 44 467 0067",
  "country": {
    "id": 1,
    "code": "UA",
    "name": {
      "uk": "Україна",
      "en": "Ukraine",
      "ru": "Украина",
      "pl": "Ukraina",
      "de": "Ukraine"
    }
  },
  "created_at": "2024-01-15T10:30:00+02:00",
  "updated_at": "2024-06-20T14:45:00+02:00"
}

Дополнительные поля в детальном просмотре:

  • created_at - Когда запись была добавлена в базу данных (формат ISO 8601)
  • updated_at - Последний раз, когда запись была изменена (формат ISO 8601)

Ошибки

404 Not Found - Поставщик не существует или неактивен

{
  "error": "Service provider not found"
}

Случай использования: неверный ID или поставщик был деактивирован в базе данных

API для контрагентов

Полная документация по работе с API контрагентов доступна в интерактивной документации Swagger.

Конечные точки API

GET    /api/v1/user/custom-contragents           # List all user contragents
POST   /api/v1/user/custom-contragents           # Create new contragent
GET    /api/v1/user/custom-contragents/{id}      # Get contragent details
PUT    /api/v1/user/custom-contragents/{id}      # Update contragent
DELETE /api/v1/user/custom-contragents/{id}      # Delete contragent

Требуется аутентификация: Все конечные точки требуют аутентификации пользователя. Вы можете управлять только своими контрагентами.

Примеры запросов

Пример 1: Получить список ваших контрагентов

Случай использования: отображение всех пользовательских контрагентов в выпадающем списке формы расходов или на странице управления.

GET /api/v1/user/custom-contragents

Пример 2: Создать нового контрагента

Случай использования: пользователь добавляет новую компанию, которой нет в официальной базе данных. Обязательно только поле названия, все остальные поля опциональные, но валидируются если предоставлены.

POST /api/v1/user/custom-contragents
Content-Type: application/json

{
  "name": "Example Company LLC",
  "short_name": "Example Co",
  "legal_form": "LLC",
  "tax_number": "12345678",
  "vat_number": "123456789012",
  "iban": "UA123456789012345678901234567",
  "bank_name": "PrivatBank",
  "bank_mfo": "305299",
  "swift": "PBANUA2X",
  "email": "[email protected]",
  "phone": "+380 44 123 4567",
  "website": "https://example.com",
  "director_name": "John Doe",
  "legal_address": "Kyiv, Khreshchatyk St, 1",
  "registration_date": "2020-01-15"
}

Пример 3: Получить детали контрагента

Случай использования: отображение полной информации о конкретном контрагенте на странице деталей.

GET /api/v1/user/custom-contragents/01a06b0b-5f36-7d8b-b211-b03c9c7d9a24

Пример 4: Обновить контрагента

Случай использования: пользователь редактирует информацию контрагента. Отправляйте только поля, которые нужно обновить. Все правила валидации применяются.

PUT /api/v1/user/custom-contragents/01a06b0b-5f36-7d8b-b211-b03c9c7d9a24
Content-Type: application/json

{
  "phone": "+380 44 999 8888",
  "email": "[email protected]",
  "website": "https://new-website.com"
}

Пример 5: Удалить контрагента

Случай использования: пользователь удаляет контрагента, который больше не нужен. Невозможно удалить, если контрагент используется в расходах.

DELETE /api/v1/user/custom-contragents/01a06b0b-5f36-7d8b-b211-b03c9c7d9a24

Пример ответа со списком

{
  "contragents": [
    {
      "id": 1,
      "name": "Example Company LLC",
      "short_name": "Example Co",
      "legal_form": "LLC",
      "tax_number": "12345678",
      "vat_number": "123456789012",
      "iban": "UA123456789012345678901234567",
      "bank_name": "PrivatBank",
      "bank_mfo": "305299",
      "swift": "PBANUA2X",
      "email": "[email protected]",
      "phone": "+380 44 123 4567",
      "website": "https://example.com",
      "director_name": "John Doe",
      "contact_person": "Jane Smith",
      "legal_address": "Kyiv, Khreshchatyk St, 1",
      "actual_address": "Kyiv, Khreshchatyk St, 1",
      "registration_date": "2020-01-15",
      "notes": "Primary utility provider",
      "created_at": "2024-01-15T10:30:00+02:00",
      "updated_at": "2024-06-20T14:45:00+02:00"
    }
  ]
}

Ответ на создание/обновление

{
  "id": 1,
  "name": "Example Company LLC",
  "message": "Contragent created successfully"
}

Ответ на удаление

{
  "message": "Contragent deleted successfully"
}

Ошибки валидации

Возвращается с HTTP 400, когда валидация не пройдена. Содержит названия полей и сообщения об ошибках.

{
  "error": "Validation failed",
  "violations": {
    "name": "Name must be at least 3 characters long",
    "tax_number": "Tax number must be 8-12 digits",
    "iban": "Invalid IBAN format",
    "email": "Invalid email address"
  }
}

403 Запрещено - Доступ запрещён

Возвращается при попытке доступа или изменения контрагента, который принадлежит другому пользователю.

{
  "error": "Access denied"
}

404 Не найдено - Контрагент не найден

Возвращается, когда контрагент с указанным ID не существует.

{
  "error": "Contragent not found"
}

409 Конфликт - Невозможно удалить

Возвращается при попытке удалить контрагента, который используется в расходах или других записях.

{
  "error": "Cannot delete contragent. It is used in 5 expense records."
}

Swagger / OpenAPI

Полная документация API доступна в Swagger UI:

Поставщики из базы данных

Просмотр активных поставщиков услуг из базы данных системы

Загрузка...