fdf0ddd498
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
36 lines
3.3 KiB
HTML
36 lines
3.3 KiB
HTML
{{define "accPrefix"}}
|
|
<div class="acc-prefix" style="border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:10px 0;max-width:680px">
|
|
<div style="font-weight:600;margin-bottom:4px">Торговые счета клиентов в DEPO</div>
|
|
<p class="muted" style="font-size:12.5px;margin:0 0 8px">По началу номера счёта в <code>OD_CLIENTS</code> bj находит счёт инвестора: при проверке перевода, в цикле QUIK и при ручном вводе. Если префикс неверный, все входящие переводы получат отказ «нет счёта».</p>
|
|
<form class="acc-form" style="display:flex;gap:8px;align-items:center;flex-wrap:wrap" onsubmit="return false">
|
|
<input name="account_prefix" list="acc-cands" placeholder="{{depoAccPrefix}}" style="width:160px;padding:6px 8px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px">
|
|
<datalist id="acc-cands"></datalist>
|
|
<button type="button" class="btn acc-save" style="padding:5px 12px">Сохранить</button>
|
|
<span class="acc-out" style="font-size:13px"></span>
|
|
</form>
|
|
<div class="acc-cands muted" style="font-size:12.5px;margin-top:6px"></div>
|
|
</div>
|
|
<script>
|
|
(function(){
|
|
var box=document.currentScript.previousElementSibling, f=box.querySelector('.acc-form'), out=box.querySelector('.acc-out'), cl=box.querySelector('.acc-cands'), dl=box.querySelector('datalist');
|
|
function esc(s){return String(s).replace(/[&<>"]/g,function(c){return{'&':'&','<':'<','>':'>','"':'"'}[c]})}
|
|
function show(d){
|
|
if(!d.ok){ out.innerHTML='<span style="color:var(--err)">✗ '+esc(d.error)+'</span>'; return; }
|
|
f.account_prefix.value=d.set?d.prefix:'';
|
|
f.account_prefix.placeholder=d.prefix;
|
|
if(d.error){ out.innerHTML='<span style="color:var(--warn)">учёт недоступен: '+esc(d.error)+'</span>'; return; }
|
|
if(d.count===undefined){ out.textContent='сейчас: '+d.prefix+'…'; return; }
|
|
out.innerHTML=d.count>0?'<span style="color:var(--ok)">✓ «'+esc(d.prefix)+'…» — открытых счетов: '+d.count+'</span>':'<span style="color:var(--err)">✗ открытых счетов «'+esc(d.prefix)+'…» в учёте нет — выберите префикс ниже</span>';
|
|
var c=d.candidates||[];
|
|
dl.innerHTML=c.map(function(x){return '<option value="'+esc(x.prefix)+'">'}).join('');
|
|
cl.innerHTML=c.length?('Префиксы открытых счетов в учёте: '+c.map(function(x){return '<a href="#" data-p="'+esc(x.prefix)+'"><code>'+esc(x.prefix)+'</code></a> — '+x.count}).join(', ')):'';
|
|
cl.querySelectorAll('a[data-p]').forEach(function(a){ a.onclick=function(e){ e.preventDefault(); f.account_prefix.value=a.dataset.p; f.account_prefix.focus(); }; });
|
|
}
|
|
function load(body){ out.textContent=body?'сохраняю…':'проверяю учёт…';
|
|
fetch('/admin/setup/fancy/acc-prefix',{method:body?'POST':'GET',body:body,cache:'no-store'}).then(function(r){return r.json()}).then(show).catch(function(){ out.textContent='не удалось проверить'; }); }
|
|
box.querySelector('.acc-save').onclick=function(){ var p=new URLSearchParams(); p.set('account_prefix',f.account_prefix.value.trim()); load(p); };
|
|
load();
|
|
})();
|
|
</script>
|
|
{{end}}
|