Files
Bridge-and-Join-s/internal/lkgateway/web/templates/part_nsd.html
T
fontvielle 317bf85778 Настройки: карточки по своим разделам, подтверждения у опасных действий
- НРД: «Шлюз НРД» (установка, контуры, папки) и «Регистрация участника» —
  над «Перенастроить», а не внутри; «Рабочее время» — из «Сервера» в «НРД»
- Zabbix — из «Диагностики» в «Оповещения»
- заголовок «Лицензия» — у своего раздела (стоял в конце «Экспорта QUIK»)
- подтверждения: режим «bj сам / Оператор», приём ИИС, «Обновить канал»
  (перезапуск шлюза), «Установить шлюз заново»

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
2026-10-21 23:54:35 +03:00

81 lines
11 KiB
HTML

{{/* Раздел «НРД» — общие блоки «Настройки» и мастера (данные — SetupData или данные мастера: нужны .Settings, .Suggest). */}}
{{/* Депозитарные реквизиты в НРД: поля — в форме организации (org-form), одна кнопка «Сохранить». */}}
{{define "nsdRequisites"}}
<div class="card" id="nsd-req" style="margin-top:12px">
<h2><span class="dot {{if and .Settings.NSD.DeponentCode .Settings.NSD.AccountID .Settings.NSD.SectionID}}ok{{else}}err{{end}}"></span>Депозитарные реквизиты в НРД</h2>
<p class="muted" style="margin:0 0 8px">Где в НРД учитываются бумаги организации — из договора с НРД{{if .Settings.Fancy.Server}} или кнопкой «Определить из DEPO»{{end}}.</p>
{{if .Suggest}}{{if .Suggest.AccountID}}<div class="help-block" style="margin:0 0 8px"><strong>Найдено в DEPO:</strong> счёт {{.Suggest.AccountID}}, код {{.Suggest.DeponentCode}}, раздел {{.Suggest.SectionID}}.{{range .Suggest.Notes}}<br><span class="muted">⚠ {{.}}</span>{{end}}</div>{{end}}{{end}}
<div style="display:grid;gap:10px;max-width:680px">{{/* поля — в общей форме шага (org-form): одна кнопка «Сохранить» */}}
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px">
<label style="margin:0">Депозитарный код<input type="text" name="deponent_code" form="org-form" value="{{if .Settings.NSD.DeponentCode}}{{.Settings.NSD.DeponentCode}}{{else if .Suggest}}{{.Suggest.DeponentCode}}{{end}}" placeholder="MC0000000000" style="width:100%;margin-top:4px"></label>
<label style="margin:0">Депозитарный счёт<input type="text" name="account_id" form="org-form" value="{{if .Settings.NSD.AccountID}}{{.Settings.NSD.AccountID}}{{else if .Suggest}}{{.Suggest.AccountID}}{{end}}" placeholder="HL000000000C" style="width:100%;margin-top:4px"></label>
<label style="margin:0">Раздел счёта<input type="text" name="section_id" form="org-form" value="{{if .Settings.NSD.SectionID}}{{.Settings.NSD.SectionID}}{{else if .Suggest}}{{.Suggest.SectionID}}{{end}}" placeholder="36MC0000000000F00" style="width:100%;margin-top:4px"></label>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap"><button type="submit" class="btn" form="org-form">Сохранить</button>{{if .Settings.Fancy.Server}}<button type="submit" class="btn btn-secondary" form="org-form" formaction="/admin/setup/fancy/detect">Определить из DEPO</button>{{end}}</div>
</div>
</div>
{{end}}
{{/* Кто отвечает на переводы M2M: bj сам (автоматический режим) или оператор. Вход: withRet <данные> <куда вернуться>. */}}
{{define "m2mAutoCard"}}{{$a := .D.Settings.M2MAuto}}
<div class="card" id="m2m-auto">
<h2><span class="dot {{if $a.Enabled}}ok{{else}}warn{{end}}"></span>Кто отвечает на переводы M2M</h2>
<form method="post" action="/admin/setup/m2m-auto" id="m2m-auto-form" class="dq">
{{if .Ret}}<input type="hidden" name="return_to" value="{{.Ret}}">{{end}}<input type="hidden" name="section" value="m2m-auto">
<div class="dq-tiles">
<label class="dq-tile"><input type="radio" name="mode" value="auto" {{if $a.Enabled}}checked{{end}}><span><b>bj сам — автоматически</b><small>Основной режим: bj отвечает на входящие переводы по сверке с DEPO и подаёт поручения в НРД без оператора, сроки НРД соблюдаются. Всё видно в журнале.</small></span></label>
<label class="dq-tile"><input type="radio" name="mode" value="manual" {{if not $a.Enabled}}checked{{end}}><span><b>Оператор</b><small>Запасной режим — например, на время разбора сбоя: bj сверяет перевод с DEPO и подсказывает решение, а отвечает и подаёт поручения оператор кнопками в карточке перевода.</small></span></label>
</div>
<p class="dq-note" id="m2m-auto-st" aria-live="polite">Выбор сохраняется сразу.{{if not $a.ChangedAt.IsZero}} {{if $a.Enabled}}Включён{{else}}Выключен{{end}} {{msk $a.ChangedAt}}{{with $a.ChangedBy}}{{if eq . "по умолчанию"}} — по умолчанию{{else}} · {{.}}{{end}}{{end}}.{{end}}{{if .D.Settings.Quik.Emulate}}{{if devOn}} Шаги QUIK МНП — в режиме имитации.{{else}} Записи в QUIK МНП сейчас не выполняются.{{end}}{{end}}</p>
<noscript><button type="submit" class="btn">Сохранить</button></noscript>
</form>
<details style="margin-top:6px"><summary style="cursor:pointer;color:var(--accent);font-size:13px">Что bj делает сам в автоматическом режиме</summary>
<ul class="muted" style="font-size:13px;line-height:1.5;margin:8px 0 0;padding-left:18px">
<li><b>Входящие переводы</b> — отвечает по свежей сверке с DEPO, по каждой бумаге отдельно (возможен частичный приём). Переводы на ИИС — только ЦЕЛИКОМ (если включён приём ИИС ниже: все бумаги на ИИС-счёт клиента, иначе отказ по всему переводу; выключено — отказ M2M06). Бумага для квалифицированных инвесторов, а у клиента нет квалификации, — отказ M2M08.</li>
<li><b>Поручение 16/1</b> — подаёт, как только НРД пришлёт черновик после нашего согласия.</li>
<li><b>Исходящие переводы</b> — поручение 16 подаёт после согласия контрагента.</li>
<li>Если DEPO или шлюз НРД недоступны, bj повторяет каждые 3 минуты и шлёт оповещение; без сверки ничего не принимается.</li>
<li>При включении берутся переводы, пришедшие не раньше чем за сутки до этого. Кнопки в карточках остаются для ручной работы.</li>
</ul>
</details>
<form method="post" action="/admin/setup/accept-iis" id="accept-iis-form" class="dq" style="margin-top:10px;border-top:1px solid var(--border,#e5e7eb);padding-top:10px">
<label style="display:flex;gap:8px;align-items:flex-start;cursor:pointer">
<input type="checkbox" name="enabled" value="1" {{if .D.Settings.AcceptIIS}}checked{{end}} style="margin-top:3px">
<span><b>Принимать входящие переводы на ИИС</b><br><small class="muted">ИИС принимается только ЦЕЛИКОМ: все бумаги зачисляются на ИИС-счёт клиента, иначе отказ по всему переводу — частичного ИИС (двух ИИС у клиента с потерей льгот) не бывает. Выключено — любой перевод на ИИС отклоняется (M2M06).</small></span>
</label>
<p class="dq-note" id="accept-iis-st" aria-live="polite">{{if .D.Settings.AcceptIIS}}Включено: ИИС принимается целиком.{{else}}Выключено: переводы на ИИС отклоняются.{{end}}</p>
<noscript><button type="submit" class="btn">Сохранить</button></noscript>
</form>
</div>
<script>(function(){
var fi=document.getElementById("accept-iis-form"), si=document.getElementById("accept-iis-st");
if(fi&&window.fetch){
fi.addEventListener("change", function(e){
var cb=fi.querySelector("input[name=enabled]");
if(cb && !confirm(cb.checked ? "Принимать входящие переводы на ИИС? Перевод на ИИС принимается только целиком." : "Перестать принимать переводы на ИИС? Такие переводы bj будет отклонять.")){ cb.checked=!cb.checked; return; }
fetch(fi.action,{method:"POST",body:new URLSearchParams(new FormData(fi)),headers:{"Content-Type":"application/x-www-form-urlencoded","X-BJ-Ajax":"1"},cache:"no-store"})
.then(function(r){ return r.text().then(function(t){ si.textContent=(r.ok?"\u2713 ":"\u2717 ")+t; }); })
.catch(function(){ si.textContent="\u2717 Не сохранилось — обновите страницу."; });
});
fi.addEventListener("submit", function(e){ e.preventDefault(); });
}
})();</script>
<script>(function(){
var f=document.getElementById('m2m-auto-form'), st=document.getElementById('m2m-auto-st'); if(!f||!window.fetch) return;
var was=(f.querySelector('input[name=mode]:checked')||{}).value;
f.addEventListener('change', function(e){
var v=(f.querySelector('input[name=mode]:checked')||{}).value;
if(v!==was && !confirm(v==='manual'
? 'Перейти в режим «Оператор»? bj перестанет сам отвечать на входящие переводы и подавать поручения — каждый перевод нужно будет обработать вручную в срок, иначе НРД отклонит его.'
: 'Включить режим «bj сам»? bj начнёт сам отвечать на входящие переводы по сверке с DEPO и подавать поручения (переводы, пришедшие не раньше чем за сутки).')){
var r=f.querySelector('input[name=mode][value="'+was+'"]'); if(r) r.checked=true; return; }
was=v;
fetch(f.action,{method:'POST',body:new URLSearchParams(new FormData(f)),headers:{'Content-Type':'application/x-www-form-urlencoded','X-BJ-Ajax':'1'},cache:'no-store'})
.then(function(r){ return r.text().then(function(t){ st.textContent=(r.ok?'✓ ':'✗ ')+t; }); })
.catch(function(){ st.textContent='✗ Не сохранилось — обновите страницу и выберите ещё раз.'; });
});
f.addEventListener('submit', function(e){ e.preventDefault(); });
})();</script>
{{end}}