feat: загрузка доходов организации из DaData (показатель 8)
- verify.py: get_company_finance_dadata(inn, token) — findById/party,
возвращает finance (последний отчётный год) + finance_history (по годам)
- ui.py: кнопка «🌐 Загрузить доходы из DaData (по ИНН)» в блоке
«Доходы за 5 лет (показатель 8)» — по ИНН организации подтягивает
доходы за последние 5 лет и заполняет income_year_1..5
- если в тарифе DaData нет финансовой отчётности — понятное сообщение,
доходы заполняются вручную
This commit is contained in:
@@ -251,6 +251,38 @@ def check_declension_morpher(text):
|
||||
# ============================================================
|
||||
# DADATA — проверка организации по ИНН (нужен API-ключ)
|
||||
# ============================================================
|
||||
def get_company_finance_dadata(inn, token):
|
||||
"""Доходы организации по годам через DaData (findById/party → finance/finance_history).
|
||||
|
||||
Возвращает (dict, ошибка): dict вида
|
||||
{'finance': {...}, 'history': [{'year': 2023, 'income': 123456, ...}, ...]}
|
||||
finance — показатели за последний отчётный год;
|
||||
history — история по годам (если доступна в тарифе DaData).
|
||||
"""
|
||||
if not token:
|
||||
return None, "Не задан API-ключ DaData (Файл → Настройки → API)"
|
||||
inn = (inn or '').replace(' ', '')
|
||||
if not inn or not inn.isdigit():
|
||||
return None, "Введите ИНН для загрузки доходов"
|
||||
headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': f'Token {token}',
|
||||
}
|
||||
js, err = _http_json(DADATA_URL, data={'query': inn}, headers=headers)
|
||||
if err:
|
||||
return None, err
|
||||
suggestions = (js or {}).get('suggestions') or []
|
||||
if not suggestions:
|
||||
return None, f"DaData: организация с ИНН {inn} не найдена"
|
||||
d = suggestions[0].get('data') or {}
|
||||
return {
|
||||
'finance': d.get('finance') or {},
|
||||
'history': d.get('finance_history') or [],
|
||||
'inn': d.get('inn', inn),
|
||||
'name': (d.get('name') or {}).get('short_with_opf') or suggestions[0].get('value', ''),
|
||||
}, None
|
||||
|
||||
|
||||
def check_company_dadata(inn, token):
|
||||
"""Проверка организации по ИНН/ОГРН через DaData.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user