317bf85778
- НРД: «Шлюз НРД» (установка, контуры, папки) и «Регистрация участника» — над «Перенастроить», а не внутри; «Рабочее время» — из «Сервера» в «НРД» - Zabbix — из «Диагностики» в «Оповещения» - заголовок «Лицензия» — у своего раздела (стоял в конце «Экспорта QUIK») - подтверждения: режим «bj сам / Оператор», приём ИИС, «Обновить канал» (перезапуск шлюза), «Установить шлюз заново» Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
81 lines
11 KiB
HTML
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}}
|