zayavlenie-o-vozbuzhdenie-na/make_doc.py

262 lines
22 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""Генерация заявления в прокуратуру (docx) и предпросмотра (preview.html)."""
from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_TAB_ALIGNMENT
from docx.enum.table import WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
import html as _html
FONT = "Times New Roman"
SZ = pt = Pt(12)
RIGHT_TAB = Cm(16.5)
def set_font(run, name=FONT, size=SZ, bold=False):
run.font.name = name
run.font.size = size
run.font.bold = bold
rPr = run._element.get_or_add_rPr()
rFonts = rPr.find(qn("w:rFonts"))
if rFonts is None:
rFonts = rPr.makeelement(qn("w:rFonts"), {})
rPr.append(rFonts)
rFonts.set(qn("w:ascii"), name)
rFonts.set(qn("w:hAnsi"), name)
rFonts.set(qn("w:cs"), name)
def base_para(doc, spacing_after=5, first_line=None, align=None):
p = doc.add_paragraph()
pf = p.paragraph_format
pf.space_after = Pt(spacing_after)
pf.space_before = Pt(0)
pf.line_spacing = 1.15
if first_line is not None:
pf.first_line_indent = Cm(1.25)
if align is not None:
pf.alignment = align
return p
def text_para(doc, text, bold=False, first_line=True, spacing_after=5):
p = base_para(doc, spacing_after, first_line)
r = p.add_run(text)
set_font(r, bold=bold)
return p
def header_block(doc):
# строка 1: получатель справа
p = doc.add_paragraph()
p.paragraph_format.tab_stops.add_tab_stop(RIGHT_TAB, WD_TAB_ALIGNMENT.RIGHT)
r = p.add_run("\tПрокурору города Алматы")
set_font(r)
# строка 2: от кого (две строки)
p = doc.add_paragraph()
p.paragraph_format.tab_stops.add_tab_stop(RIGHT_TAB, WD_TAB_ALIGNMENT.RIGHT)
r = p.add_run("\tот АО «Казахтелеком»")
set_font(r)
p = doc.add_paragraph()
p.paragraph_format.tab_stops.add_tab_stop(RIGHT_TAB, WD_TAB_ALIGNMENT.RIGHT)
r = p.add_run("\tот 25.09.2026")
set_font(r)
def signatory_lines(doc):
"""Сайханова — подпись; Байгелова — без подписи."""
data = [
("Представители по доверенности: ", [
("Сайханова Назира Сағатбековна,", False),
("тел.: +7 707 806 38 07,", False),
("эл. почта: saikhanova.n@telecom.kz", False),
("Сайханова Н.С.", True),
]),
("", [
("Байгелова Индира Булуткызы,", False),
("тел.: +7 771 400 53 27 (WhatsApp),", False),
("эл. почта: baigelova.i@telecom.kz", False),
]),
]
for first, lines in data:
for i, (line, bold) in enumerate(lines):
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(0 if i < len(lines) - 1 else 6)
p.paragraph_format.space_before = Pt(0)
p.paragraph_format.line_spacing = 1.15
if first and i == 0:
r0 = p.add_run(first)
set_font(r0)
r = p.add_run(line)
set_font(r, bold=bold)
BODY = [
("center", "ЗАЯВЛЕНИЕ"),
("center", "(об уголовном правонарушении)"),
("text", "Специализированным межрайонным экономическим судом города Алматы по делу № 7527-23-00-2/5541 вынесено решение от 9 октября 2023 года, которым исковые требования Коммунального государственного учреждения «Управление государственных активов города Алматы» (далее — КГУ) к АО «Казахтелеком» (далее — Общество) удовлетворены в полном объёме. Указанным судебным актом на Общество возложена обязанность возвратить КГУ по акту приёма-передачи 21 объект кабельной канализации общей протяжённостью труб 122 577,66 метра с приложением технической документации. Решение вступило в законную силу 17 января 2024 года на основании постановления Алматинского городского суда."),
("text", "АО «Казахтелеком» сообщает об обстоятельствах, которые могут свидетельствовать о наличии признаков уголовно наказуемых деяний при строительстве и вводе в эксплуатацию объектов, построенных за счёт бюджетных средств, а именно: об отсутствии фактически объектов, построенных за счёт бюджетных средств и принятых по документам, что свидетельствует о возможных признаках хищения либо злоупотребления полномочиями при строительстве и вводе объектов в эксплуатацию."),
("h", "I. Обстоятельства дела"),
("text", "1. Фактическое отсутствие части объектов. Во исполнение вступившего в законную силу судебного решения Обществом совместно с ТОО «Предприятие капитального строительства» акимата города Алматы (далее — ПКС) проведены выездные обследования и инвентаризация объектов. По результатам инвентаризации от 17 декабря 2024 года установлено:"),
("text", "1) фактически существуют 14 из 21 объекта кабельной канализации;", True),
("text", "2) 4 объекта являются воздушными линиями связи и их комплектующими, то есть не относятся к объектам кабельной канализации;", True),
("text", "3) 3 объекта не обнаружены, не построены, не введены в эксплуатацию, техническая документация на них отсутствует.", True),
("text", "Таким образом, фактически отсутствуют 7 объектов, тогда как судебным решением предусмотрена передача исключительно объектов кабельной канализации, а не воздушных линий связи."),
("text", "2. История формирования спорного имущества. В период с 2014 по 2022 годы КГУ «Управление городской мобильности» (ранее — Управление автомобильных дорог) осуществляло строительство и реконструкцию автомобильных дорог и транспортных развязок на территории города Алматы. В местах прохождения инженерных коммуникаций выполнялся вынос линий связи АО «Казахтелеком» по выданным Обществом техническим условиям. После завершения дорожных работ Управлением мобильности осуществлялось строительство кабельной канализации для прокладки линий связи. Построенное имущество поэтапно передавалось в коммунальную собственность города Алматы на основании постановлений акимата города Алматы (2014–2022 годы), после чего 21 объект линий связи и кабельной канализации был безвозмездно передан АО «Казахтелеком» (ДЭСД «Алматытелеком») в качестве вклада в уставный капитал, то есть фактически возвращён Обществу после строительства и реконструкции."),
("text", "3. Изменение правового режима имущества и судебные споры. Постановлением акимата города Алматы от 9 ноября 2022 года № 4/586 положения о передаче 22 объектов кабельной канализации в собственность АО «Казахтелеком» были исключены. После этого КГУ потребовало возврата имущества в коммунальную собственность. Обществом предпринимались попытки судебного оспаривания указанного постановления, однако иск в Специализированный административный суд города Алматы был оставлен без удовлетворения по формальным основаниям (пропуск срока обращения) несмотря на то, что с текстом постановления Общество было ознакомлено позднее. В дальнейшем КГУ обратилось в Специализированный межрайонный экономический суд города Алматы с иском о возврате сетей, который был удовлетворён, несмотря на доводы Общества об отсутствии части объектов и несоответствии части имущества предмету иска."),
("text", "4. Бездействие КГУ и риски принудительного исполнения. После проведения инвентаризации Общество неоднократно инициировало рабочие встречи с представителями КГУ и ПКС, в том числе с участием заместителей акима города Алматы. Протокольно поручалось оформить акты отсутствия по 3 объектам и рассмотреть возможность принятия на баланс ПКС 4 воздушных линий связи. Однако данные поручения фактически исполнены не были."),
("text", "Вместо урегулирования ситуации 15 декабря 2025 года АО «Казахтелеком» было включено в реестр должников в связи с неисполнением судебного решения. Впоследствии путём переговоров включение в реестр было отменено, однако КГУ продолжает требовать передачи 21 объекта кабельной канализации, несмотря на фактическое наличие лишь 14."),
("text", "Возобновление исполнительного производства повлечёт включение Общества в реестр должников, возможный арест счетов и иные меры принудительного исполнения, что приведёт к блокированию участия в государственных закупках и парализации финансово-хозяйственной деятельности Национальной компании — субъекта критически важных объектов информационно-коммуникационной инфраструктуры Республики Казахстан и последующей невозможности сопровождения и обслуживания СОРМ, что может привести к возникновению угрозы национальной безопасности Республики Казахстан."),
("h", "II. Признаки уголовно наказуемых деяний"),
("text", "Фактическое отсутствие объектов, построенных за счёт бюджетных средств и принятых по документам, в совокупности с установленными обстоятельствами свидетельствует о наличии возможных признаков хищения имущества, а также злоупотребления должностными полномочиями при строительстве и вводе объектов в эксплуатацию."),
("text", "В настоящее время Обществом проводится служебное расследование по указанным фактам."),
("h", "III. Просительная часть"),
("text", "На основании изложенного, руководствуясь статьями 180, 181 Уголовно-процессуального кодекса Республики Казахстан, а также в целях сохранения объектов критической телекоммуникационной инфраструктуры, прошу:"),
("text", "1) содействовать приостановлению исполнительных действий, связанных с передачей объектов кабельной канализации, до установления судьбы фактически отсутствующих объектов;", True),
("text", "2) принять меры по недопущению нарушения прав и законных интересов АО «Казахтелеком» как национальной компании — субъекта квазигосударственного сектора;", True),
("text", "3) принять меры реагирования в пределах прокурорского надзора по недопущению передачи объектов критической телекоммуникационной инфраструктуры лицам, не обладающим необходимыми полномочиями и ресурсами;", True),
("text", "4) содействовать восстановлению нарушенных прав АО «Казахтелеком», в том числе путём принятия мер, направленных на подтверждение права Общества на объекты кабельной канализации и недопущение их передачи третьим лицам в рамках исполнения решения суда по существу отсутствующему имуществу;", True),
("text", "5) зарегистрировать настоящее заявление в Едином реестре досудебных расследований;", True),
("text", "6) в случае выявления признаков уголовно наказуемого деяния — принять меры по возбуждению уголовного дела и проведению досудебного расследования.", True),
("text", "Приложения (на копиях документов, удостоверяющих изложенные обстоятельства):",),
("text", "1) письмо ТОО «Предприятие капитального строительства» акимата города Алматы — на 2 листах;", True),
("text", "2) письмо КГУ «Управление государственных активов города Алматы» — на 1 листе;", True),
("text", "3) протокол личного приёма граждан заместителя акима города Алматы — на 1 листе;", True),
("text", "4) письмо КГУ «Управление государственных активов города Алматы» — на 2 листах;", True),
("text", "5) протокол сверки 21 объекта — на 7 листах;", True),
("text", "6) решение Специализированного межрайонного экономического суда города Алматы от 9.10.2023 — на 10 листах.", True),
]
def build_docx(path):
doc = Document()
for section in doc.sections:
section.left_margin = Cm(3)
section.right_margin = Cm(1.5)
section.top_margin = Cm(2)
section.bottom_margin = Cm(2)
# базовый стиль
st = doc.styles["Normal"]
st.font.name = FONT
st.font.size = SZ
st.font.bold = False
rPr = st.element.get_or_add_rPr()
rFonts = rPr.find(qn("w:rFonts"))
if rFonts is None:
rFonts = rPr.makeelement(qn("w:rFonts"), {})
rPr.append(rFonts)
rFonts.set(qn("w:ascii"), FONT)
rFonts.set(qn("w:hAnsi"), FONT)
header_block(doc)
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(4)
for kind, text, *rest in BODY:
bold = rest[0] if rest and isinstance(rest[0], bool) else False
if kind == "center":
p = base_para(doc, 2, None, WD_ALIGN_PARAGRAPH.CENTER)
r = p.add_run(text)
set_font(r, bold=True)
elif kind == "h":
p = base_para(doc, 5)
r = p.add_run(text)
set_font(r, bold=True)
else:
p = base_para(doc, 5)
r = p.add_run(text)
set_font(r)
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(2)
signatory_lines(doc)
doc.save(path)
def build_preview(path):
title = "ЗАЯВЛЕНИЕ (об уголовном правонарушении)"
body_html = []
for kind, text, *rest in BODY:
bold = rest[0] if rest and isinstance(rest[0], bool) else False
esc = _html.escape(text)
if kind == "center":
body_html.append(f'<p class="c b">{esc}</p>')
elif kind == "h":
body_html.append(f'<p class="h">{esc}</p>')
else:
cls = "item" if bold else "t"
body_html.append(f'<p class="{cls}">{esc}</p>')
sign = "<p class='t'><b>Представители по доверенности:</b></p>"
sign += "<p class='t'>Сайханова Назира Сағатбековна,<br>тел.: +7 707 806 38 07,<br>эл. почта: saikhanova.n@telecom.kz</p>"
sign += "<p class='t b'>Сайханова Н.С.</p>"
sign += "<p class='t'>Байгелова Индира Булуткызы,<br>тел.: +7 771 400 53 27 (WhatsApp),<br>эл. почта: baigelova.i@telecom.kz</p>"
page = f"""<!DOCTYPE html>
<html lang="ru"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Заявление (об уголовном правонарушении)</title>
<link rel="stylesheet" href="design-system/kt-ai-fonts.css">
<link rel="stylesheet" href="design-system/kt-ai-tokens.css">
<link rel="stylesheet" href="design-system/kt-ai-components.css">
<link rel="stylesheet" href="design-system/kt-ai-page.css">
<link rel="stylesheet" href="design-system/vibe-theme.css">
<style>
body {{ margin:0; background:var(--kt-ai-bg, #fafaf9); }}
.docbar {{ padding:10px 16px; background:#fff; border-bottom:1px solid var(--kt-ai-line, #e8e6e5); display:flex; gap:10px; align-items:center; flex-wrap:wrap; }}
.docbar b {{ font-size:14px; color:var(--kt-ai-text, #0c0a09); }}
.doc {{ background:#fff; font-family: 'Times New Roman', Times, serif; font-size:13px; line-height:1.45; color:#111;
border:1px solid var(--kt-ai-line, #e8e6e5); box-shadow: 0 1px 3px rgba(0,0,0,.05);
max-width:720px; margin:24px auto 40px; padding:40px 48px; }}
.doc .r {{ display:flex; justify-content:flex-end; }}
.doc .r div {{ font-size:13px; }}
.doc .c {{ text-align:center; padding:6px 0; }}
.doc .b {{ font-weight:bold; }}
.doc .h {{ font-weight:bold; margin-top:10px; }}
.doc .t {{ text-align:justify; margin:6px 0; }}
.doc .item {{ text-align:justify; margin:0 0 0 2em; }}
.doc .sign {{ margin-top:14px; }}
</style></head>
<body>
<header class="kt-ai-pagehead">
<div class="kt-ai-wrap kt-ai-pagehead-in">
<strong>Заявление (об уголовном правонарушении) — предпросмотр</strong>
<span class="kt-ai-spacer"></span>
</div>
</header>
<div class="docbar">
<b>Готовое заявление</b>
<span style="color:#78716c;font-size:13px">Файл: <code>zayavlenie.docx</code> — скачать во вкладке «Файлы». Ниже — предпросмотр текста; в Word поля подписи пустые.</span>
</div>
<div class="doc">
<div class="r"><div>Прокурору города Алматы<br>от АО «Казахтелеком»<br>от 25.09.2026</div></div>
{''.join(body_html)}
<div class="sign">{sign}</div>
</div>
</body></html>
"""
with open(path, "w", encoding="utf-8") as f:
f.write(page)
if __name__ == "__main__":
build_docx("zayavlenie.docx")
build_preview("index.html")
print("OK: zayavlenie.docx + index.html")