feat: финансовые показатели организации + балансовая стоимость объекта
- модели: Company.profit (сумма прибыли), Company.profit_tax (налог с прибыли),
InformationSystem.balance_value (балансовая стоимость объекта КИИ)
- импорт из опросника: «Сумма прибыли за предыдущий год» и «Сумма налога с прибыли»
(Общие сведения) → profit/profitTax; «Балансовая стоимость объекта КИИ в рублях»
(каждый ОБЪЕКТ-лист) → balanceValue, больше не падает в описание
- UI: блок «Финансовые показатели» во вкладке «Организация»; поле
«Балансовая стоимость (руб.)» в объекте КИИ; маппинги collect/select/copy/import
- генератор: {{company_profit}}, {{company_profit_tax}}, {{item.balance_value}}
This commit is contained in:
@@ -326,6 +326,20 @@ class DokoGenApp:
|
||||
ttk.Entry(f4, textvariable=self.doc_date_var, width=25).grid(
|
||||
row=1, column=1, padx=10, sticky=tk.W)
|
||||
|
||||
# --- Финансовые показатели (опросник) ---
|
||||
f_fin = ttk.LabelFrame(left, text="Финансовые показатели", padding=10)
|
||||
f_fin.pack(fill=tk.X, pady=5)
|
||||
fin_fields = [
|
||||
("Сумма прибыли за предыдущий год (руб.):", "profit"),
|
||||
("Сумма налога с прибыли (руб.):", "profit_tax"),
|
||||
]
|
||||
for i, (label, key) in enumerate(fin_fields):
|
||||
ttk.Label(f_fin, text=label).grid(row=i, column=0, sticky=tk.W, pady=2)
|
||||
entry = ttk.Entry(f_fin, width=50)
|
||||
entry.grid(row=i, column=1, padx=10, sticky=tk.EW, pady=1)
|
||||
self._company_entries[key] = entry
|
||||
f_fin.columnconfigure(1, weight=1)
|
||||
|
||||
# --- Правая панель: проверка данных ---
|
||||
right = ttk.LabelFrame(main, text="Проверка данных", padding=10)
|
||||
right.pack(side=tk.RIGHT, fill=tk.Y, padx=(10, 0))
|
||||
@@ -776,6 +790,11 @@ class DokoGenApp:
|
||||
ttk.Radiobutton(cat_frame, text=val, variable=self.is_category_var,
|
||||
value=val).pack(side=tk.LEFT, padx=3)
|
||||
|
||||
ttk.Label(fields_frame, text="Балансовая стоимость (руб.):").grid(
|
||||
row=3, column=0, sticky=tk.W, pady=2)
|
||||
self.is_balance_entry = ttk.Entry(fields_frame, width=60)
|
||||
self.is_balance_entry.grid(row=3, column=1, padx=10, sticky=tk.EW, pady=2)
|
||||
|
||||
fields_frame.columnconfigure(1, weight=1)
|
||||
|
||||
# ---- Вложенные вкладки ----
|
||||
@@ -1282,6 +1301,8 @@ class DokoGenApp:
|
||||
if hasattr(self, 'is_software_entry'):
|
||||
isys.software = self.is_software_entry.get().strip()
|
||||
isys.category = self.is_category_var.get()
|
||||
if hasattr(self, 'is_balance_entry'):
|
||||
isys.balance_value = self.is_balance_entry.get().strip()
|
||||
# Поля 236 приказа
|
||||
for attr, model_field in [
|
||||
('is_purpose_entry', 'purpose'),
|
||||
@@ -1515,6 +1536,9 @@ class DokoGenApp:
|
||||
self.is_software_entry.delete(0, tk.END)
|
||||
self.is_software_entry.insert(0, isys.software or "")
|
||||
self.is_category_var.set(isys.category or "без категории")
|
||||
if hasattr(self, 'is_balance_entry'):
|
||||
self.is_balance_entry.delete(0, tk.END)
|
||||
self.is_balance_entry.insert(0, isys.balance_value or "")
|
||||
|
||||
# Поля 236 приказа
|
||||
for attr, model_field in [
|
||||
@@ -1610,6 +1634,7 @@ class DokoGenApp:
|
||||
hw_sw=src.hw_sw,
|
||||
os_sw=src.os_sw,
|
||||
app_sw=src.app_sw,
|
||||
balance_value=src.balance_value,
|
||||
attacker_category=src.attacker_category,
|
||||
threats=src.threats,
|
||||
incidents=src.incidents,
|
||||
@@ -2694,6 +2719,13 @@ class DokoGenApp:
|
||||
if data.get('contractDate'):
|
||||
self.doc_date_var.set(data['contractDate'])
|
||||
|
||||
# Финансовые показатели (прибыль, налог)
|
||||
for entry_key, data_keys in [('profit', 'profit'), ('profit_tax', 'profitTax')]:
|
||||
entry = self._company_entries.get(entry_key)
|
||||
if entry and data.get(data_keys):
|
||||
entry.delete(0, tk.END)
|
||||
entry.insert(0, data[data_keys])
|
||||
|
||||
# Наименование структурного подразделения по безопасности
|
||||
if data.get('ispdnDepartment'):
|
||||
self.model.security_department = data['ispdnDepartment']
|
||||
@@ -2767,6 +2799,7 @@ class DokoGenApp:
|
||||
hw_sw=is_data.get('hw_sw', ''),
|
||||
os_sw=is_data.get('os_sw', ''),
|
||||
app_sw=is_data.get('app_sw', ''),
|
||||
balance_value=is_data.get('balanceValue', is_data.get('balance_value', '')),
|
||||
attacker_category=is_data.get('attacker_category', ''),
|
||||
threats=is_data.get('threats', ''),
|
||||
incidents=is_data.get('incidents', ''),
|
||||
|
||||
Reference in New Issue
Block a user