================ DaData Connector ================ .. |badge1| image:: https://img.shields.io/badge/maturity-Production-green.png :target: https://odoo-community.org/page/development-status |badge1| Модуль интеграции с сервисом `DaData `_ для автоматического заполнения реквизитов контрагентов по ИНН или ОГРН. **Возможности:** - Поиск юридических лиц и ИП по ИНН через API DaData - Автоматическое заполнение реквизитов партнёра: название, адрес, КПП, ОКПО, ОКВЭД, ОГРН, организационно-правовая форма - Создание контактного лица (руководителя) при наличии данных об управлении - Виджет поиска ``dadata_search`` на полях ``vat`` и ``ogrn`` в форме партнёра - Настройка токена DaData через Настройки → Общие настройки → Интеграции **Таблица содержания** .. contents:: :local: Использование ============= 1. Перейдите в **Настройки → Общие настройки → Интеграции** и укажите токен DaData. 2. Откройте форму контрагента. 3. Введите ИНН в поле **Tax ID** (или ОГРН в поле **ОГРН**). 4. Нажмите кнопку с лупой рядом с полем. 5. В открывшемся диалоге проверьте найденные данные и нажмите **Да** для применения. Конфигурация ============ Токен DaData задаётся через системный параметр ``dadata_connector.dadata_token`` или через интерфейс настроек. Получить токен можно в личном кабинете `dadata.ru `_. Известные ограничения ===================== - Поиск работает только для российских юридических лиц и ИП. - Требуется установленная Python-библиотека ``dadata==21.10.1``. - Модуль зависит от ``l10n_ru_doc`` для отображения российских реквизитов. Тесты ===== Запуск:: python odoo-bin -d --test-tags dadata_connector **common.py** — базовый класс ``DadataConnectorCommon`` и фикстуры: - ``DADATA_LEGAL_RESPONSE`` — эталонный ответ API для юридического лица (ПАО) - ``DADATA_INDIVIDUAL_RESPONSE`` — эталонный ответ API для индивидуального предпринимателя - ``DadataConnectorCommon.setUpClass`` — создаёт тестового партнёра и прописывает тестовый токен в системные параметры **test_res_partner.py** — тесты модели ``res.partner``: - ``test_get_dadata_token_returns_token`` — токен возвращается, если системный параметр задан - ``test_get_dadata_token_raises_when_missing`` — ``ValidationError`` при отсутствии токена - ``test_parse_legal_entity_basic_fields`` — парсинг ИНН, ОГРН, КПП, ОКПО, ОКВЭД, названия, города, индекса и улицы для юрлица - ``test_parse_legal_entity_company_form`` — код ОПФ ``12300`` маппится в ``plc`` - ``test_parse_legal_entity_wizard_data`` — данные для wizard: статус, тип организации, название, адрес - ``test_parse_legal_entity_management`` — извлечение имени и должности руководителя - ``test_parse_legal_entity_fts_registration`` — серия и номер свидетельства ФНС склеиваются через пробел - ``test_parse_legal_entity_country_and_state`` — страна резолвится по ISO-коду из ``res.country`` - ``test_parse_individual_name`` — ФИО ИП собирается из частей ``fio`` - ``test_parse_individual_no_kpp`` — КПП не попадает в результат для ИП - ``test_parse_individual_no_management`` — ключ ``management`` отсутствует, если данных нет - ``test_parse_individual_no_fts_registration`` — ``sp_register_number`` отсутствует при ``fts_registration: null`` - ``test_get_legal_entity_data_returns_action`` — при ``widget=True`` возвращается ``ir.actions.act_window`` с wizard (DaData замокан) - ``test_get_legal_entity_data_returns_dict_when_no_widget`` — при ``widget=False`` возвращается словарь с реквизитами - ``test_get_legal_entity_data_raises_when_empty`` — ``ValidationError`` при пустом ответе DaData - ``test_get_legal_entity_data_raises_on_http_error`` — ``ValidationError`` при ``HTTPStatusError`` от DaData - ``test_get_view_sets_dadata_search_widget_on_vat`` — ``_get_view`` проставляет ``widget="dadata_search"`` на поле ``vat`` **test_wizard.py** — тесты ``res.partner.auto_data.wizard``: - ``test_wizard_creation`` — wizard создаётся с корректными значениями полей - ``test_button_yes_returns_close_action`` — ``button_yes`` возвращает ``act_window_close`` с флагом ``update: True`` - ``test_wizard_status_selection_values`` — все пять значений статуса принимаются без ошибок - ``test_wizard_organization_type_individual`` — тип ``individual`` сохраняется корректно Авторы ====== * MK.lab Разработчики ============ * MK.lab Changelog ========= 19.0.2026.04.10 ~~~~~~~~~~~~~~~ * Портирование на Odoo 19 * Замена ``_lt`` на ``_t`` (убран в Odoo 18+) * Виджет переименован в ``dadata_search`` во избежание конфликтов * Переопределение ``_get_view`` для перекрытия ``partner_autocomplete`` * Удалено поле ``psrn_sp`` из логики парсинга