fix: генератор берёт склонения из модели (интерфейса), а не пересчитывает

- {{company_full_name_genitive}} и др. теперь сначала берут готовое
  склонение из company_name_N / short_name_N (то, что пользователь
  подставил через Морфер/ИИ или ввёл вручную)
- пересчёт через pymorphy — только если поле пустое
- раньше документ всегда пересчитывал заново → расхождение с
  интерфейсом
This commit is contained in:
2026-08-03 17:34:04 +04:00
parent eb8801d78e
commit a16f5740cb
+15 -1
View File
@@ -392,7 +392,21 @@ def _resolve(source: str, ctx: Dict) -> str:
if source.startswith('decl:'):
_, field, case = source.split(':')
name = getattr(company, field, '') or ''
return dc.company_name_decline(name, case) if name else ''
case_gr = dc._normalize_case(case)
# Сначала берём ГОТОВОЕ склонение из модели (пользователь мог
# подставить через Морфер/ИИ или ввести вручную), пересчитываем
# только если поле пустое
case_idx = {'nomn': 1, 'gent': 2, 'datv': 3, 'accs': 4, 'ablt': 5, 'loct': 6}.get(case_gr)
if case_idx:
if field == 'full_name':
ready = getattr(company, f'company_name_{case_idx}', '') or ''
if ready:
return ready
elif field == 'short_name':
ready = getattr(company, f'short_name_{case_idx}', '') or ''
if ready:
return ready
return dc.company_name_decline(name, case_gr) if name else ''
# Форматы ФИО
if source.startswith('short_fio:'):