Тестирование M2M: после изменения количества отправка заблокирована до пересчёта сверки; количество — в подтверждении отправки

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-16 16:07:02 +03:00
parent e4e262de9e
commit 2601d29018
@@ -74,7 +74,7 @@
<td>{{if .Bad}}<span class="pill pill-bad">🔴</span>{{else}}<span class="pill pill-ok">🟢</span>{{end}}</td> <td>{{if .Bad}}<span class="pill pill-bad">🔴</span>{{else}}<span class="pill pill-ok">🟢</span>{{end}}</td>
<td><code>{{.ISIN}}</code>{{if ne .Code .ISIN}} · {{.Code}}{{end}}</td> <td><code>{{.ISIN}}</code>{{if ne .Code .ISIN}} · {{.Code}}{{end}}</td>
<td>{{.Name}}{{if .Bad}} <span class="muted" style="font-size:12px;color:#b3261e">— неверная для этого кейса</span>{{end}}</td> <td>{{.Name}}{{if .Bad}} <span class="muted" style="font-size:12px;color:#b3261e">— неверная для этого кейса</span>{{end}}</td>
<td>{{if $.WeInitiate}}<input type="text" name="qty_{{.ISIN}}" value="{{.Qty}}" form="m2m-qty" inputmode="decimal" style="width:90px">{{else}}{{.Qty}}{{end}}</td> <td>{{if $.WeInitiate}}<input type="text" name="qty_{{.ISIN}}" value="{{.Qty}}" data-checked="{{.Qty}}" class="m2m-qty-in" form="m2m-qty" inputmode="decimal" style="width:90px">{{else}}{{.Qty}}{{end}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
@@ -83,8 +83,21 @@
<form id="m2m-qty" method="get" action="/admin/m2m-testing/preview" style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px"> <form id="m2m-qty" method="get" action="/admin/m2m-testing/preview" style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px">
<input type="hidden" name="id" value="{{.Case.ID}}"> <input type="hidden" name="id" value="{{.Case.ID}}">
<button type="submit" class="btn">↻ Пересчитать сверку с этим количеством</button> <button type="submit" class="btn">↻ Пересчитать сверку с этим количеством</button>
<span class="muted" style="font-size:12px">Количество можно изменить (по плану — как в таблице кейсов); сверка DEPO и отправка берут то, что указано здесь после пересчёта.</span> <span class="muted" style="font-size:12px">Количество можно изменить; сверка DEPO и отправка берут то, что указано здесь после пересчёта.</span>
</form> </form>
<div id="m2m-qty-stale" hidden style="margin-top:8px;padding:8px 12px;border-radius:9px;font-size:13px;font-weight:600;background:color-mix(in srgb,#d97706 14%,var(--card));color:#9a6b12">Количество изменено — нажмите «Пересчитать сверку». Отправка заблокирована, пока сверка DEPO не пересчитана с новым количеством.</div>
<script>
(function(){
var ins = document.querySelectorAll('.m2m-qty-in');
function stale(){
var changed = false;
ins.forEach(function(i){ if(i.value.trim() !== i.getAttribute('data-checked')) changed = true; });
var b = document.getElementById('m2m-qty-stale'); if(b) b.hidden = !changed;
document.querySelectorAll('.m2m-send-btn').forEach(function(btn){ btn.disabled = changed; });
}
ins.forEach(function(i){ i.addEventListener('input', stale); });
})();
</script>
{{end}} {{end}}
{{end}} {{end}}
@@ -122,10 +135,10 @@
<div style="display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:18px"> <div style="display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:18px">
{{if .WeInitiate}} {{if .WeInitiate}}
<form method="post" action="/admin/m2m-testing/initiate" onsubmit="return confirm('{{if .AlreadySent}}Отправить кейс {{.Case.ID}} ЗАНОВО? Уйдёт новая заявка с новым GUID (НРД примет как новую). Контрагент увидит ещё один перевод.{{else}}Отправить кейс {{.Case.ID}} контрагенту? Уйдёт реальный пакет в НРД (TEST3).{{end}}');"> <form method="post" action="/admin/m2m-testing/initiate" onsubmit="return confirm('{{if .AlreadySent}}Отправить кейс {{.Case.ID}} ЗАНОВО? Уйдёт новая заявка с новым GUID (НРД примет как новую). Контрагент увидит ещё один перевод.{{else}}Отправить кейс {{.Case.ID}} контрагенту? Уйдёт реальный пакет в НРД (TEST3).{{end}} Количество: {{range $i, $s := .Secs}}{{if $i}}, {{end}}{{$s.Code}} × {{$s.Qty}}{{end}}.');">
<input type="hidden" name="id" value="{{.Case.ID}}"> <input type="hidden" name="id" value="{{.Case.ID}}">
{{range .Secs}}<input type="hidden" name="qty_{{.ISIN}}" value="{{.Qty}}">{{end}} {{range .Secs}}<input type="hidden" name="qty_{{.ISIN}}" value="{{.Qty}}">{{end}}
<button type="submit" class="btn {{if .AlreadySent}}{{else}}btn-ok{{end}}">{{if .AlreadySent}}▶ Отправить заново (новый GUID){{else}}▶ Подтвердить и отправить в НРД{{end}}</button> <button type="submit" class="m2m-send-btn btn {{if .AlreadySent}}{{else}}btn-ok{{end}}">{{if .AlreadySent}}▶ Отправить заново (новый GUID){{else}}▶ Подтвердить и отправить в НРД{{end}}</button>
</form> </form>
<a href="/admin/m2m-testing" class="btn">Отмена</a> <a href="/admin/m2m-testing" class="btn">Отмена</a>
{{else}} {{else}}