fix: генератор берёт склонения из модели (интерфейса), а не пересчитывает
- {{company_full_name_genitive}} и др. теперь сначала берут готовое
склонение из company_name_N / short_name_N (то, что пользователь
подставил через Морфер/ИИ или ввёл вручную)
- пересчёт через pymorphy — только если поле пустое
- раньше документ всегда пересчитывал заново → расхождение с
интерфейсом
This commit is contained in:
+15
-1
@@ -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:'):
|
||||
|
||||
Reference in New Issue
Block a user