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:'):
|
if source.startswith('decl:'):
|
||||||
_, field, case = source.split(':')
|
_, field, case = source.split(':')
|
||||||
name = getattr(company, field, '') or ''
|
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:'):
|
if source.startswith('short_fio:'):
|
||||||
|
|||||||
Reference in New Issue
Block a user