feat: максимальная автоматизация ПП 127
- после автозаполнения категория пересчитывается сразу (по наивысшей из выбранных) - подсказка для ΔДоходов: балансовая стоимость объекта как ориентир - итоговое сообщение показывает, какие показатели остались незаполненными (нет данных для расчёта) — оператор видит, что именно добить вручную
This commit is contained in:
+16
-3
@@ -2368,10 +2368,16 @@ class DokoGenApp:
|
|||||||
profit = _num2(getattr(self.model, 'profit', '') or '')
|
profit = _num2(getattr(self.model, 'profit', '') or '')
|
||||||
tax = _num2(getattr(self.model, 'profit_tax', '') or '')
|
tax = _num2(getattr(self.model, 'profit_tax', '') or '')
|
||||||
if profit and tax:
|
if profit and tax:
|
||||||
|
# Подсказка: балансовая стоимость объекта как ориентир для ΔДоходов
|
||||||
|
_hint = ''
|
||||||
|
_bv = getattr(isys, 'balance_value', '') or ''
|
||||||
|
_bvn = _num2(_bv)
|
||||||
|
if _bvn:
|
||||||
|
_hint = f"\n(балансовая стоимость объекта: {_bvn:,.0f} руб. — можно использовать как ориентир)"
|
||||||
dincome = simpledialog.askfloat(
|
dincome = simpledialog.askfloat(
|
||||||
"Показатель 9 — ущерб бюджетам",
|
"Показатель 9 — ущерб бюджетам",
|
||||||
"Снижение уровня доходов субъекта КИИ ΔДоходов (руб.):\n"
|
"Снижение уровня доходов субъекта КИИ ΔДоходов (руб.):\n"
|
||||||
"(наихудший сценарий компьютерной атаки на объект)",
|
"(наихудший сценарий компьютерной атаки на объект)" + _hint,
|
||||||
parent=dialog, minvalue=0)
|
parent=dialog, minvalue=0)
|
||||||
if dincome is None:
|
if dincome is None:
|
||||||
continue
|
continue
|
||||||
@@ -2411,12 +2417,19 @@ class DokoGenApp:
|
|||||||
else:
|
else:
|
||||||
justify_txt.insert('1.0', full)
|
justify_txt.insert('1.0', full)
|
||||||
filled.append(f"п. {num}: №9 = {val:.6f}% → {cat or '—'}")
|
filled.append(f"п. {num}: №9 = {val:.6f}% → {cat or '—'}")
|
||||||
|
# Что осталось незаполненным (применимые, без значения)
|
||||||
|
left = []
|
||||||
|
for num, name, values, var, applicable_here in rows:
|
||||||
|
if applicable_here and not var.get().strip():
|
||||||
|
left.append(num)
|
||||||
|
_calc() # пересчитать категорию сразу
|
||||||
messagebox.showinfo(
|
messagebox.showinfo(
|
||||||
"⚡ Автозаполнение ПП 127",
|
"⚡ Автозаполнение ПП 127",
|
||||||
"Заполнено автоматически (рекомендации):\n" +
|
"Заполнено автоматически (рекомендации):\n" +
|
||||||
("\n".join(filled) if filled else "— нет") +
|
("\n".join(filled) if filled else "— нет") +
|
||||||
"\n\nОстальные применимые показатели заполните вручную.\n"
|
(f"\n\nОсталось заполнить вручную (нет данных для расчёта): {', '.join(left)}"
|
||||||
"Категория объекта будет рассчитана по наивысшей из выбранных.")
|
if left else "\n\nВсе применимые показатели заполнены!") +
|
||||||
|
"\n\nКатегория объекта пересчитана по наивысшей из выбранных.")
|
||||||
|
|
||||||
def _open_calc_dialog(num, name, var, combo):
|
def _open_calc_dialog(num, name, var, combo):
|
||||||
"""Авторасчёт показателя 8 или 9 по «Рекомендациям по оценке показателей
|
"""Авторасчёт показателя 8 или 9 по «Рекомендациям по оценке показателей
|
||||||
|
|||||||
Reference in New Issue
Block a user