Оплата консалтинга
@@ -369,10 +401,47 @@ function checkPayment(){
document.getElementById("payAmount").textContent=money(left);
document.getElementById("modalAmount").textContent=money(left);
document.getElementById("payBanner").classList.add("show");
+ const btn=document.querySelector("#payBanner .pay-btn");
+ if(btn)btn.textContent=state.signed?"Оплатить →":"Подписать и оплатить →";
window.__payLeft=left;
}else document.getElementById("payBanner").classList.remove("show");
}
-function showPayModal(){document.getElementById("payModal").classList.add("show")}
+function showPayModal(){
+ // Оплата только после подписания договора
+ if(!state.signed){document.getElementById("signModal").classList.add("show");return}
+ document.getElementById("payModal").classList.add("show");
+}
+async function viewDoc(doc){
+ const dm=document.getElementById("docModal");
+ document.getElementById("docTitle").textContent="Загрузка...";document.getElementById("docText").textContent="";dm.classList.add("show");
+ try{const r=await fetch(`${API}/api/legal/${doc}`);const d=await r.json();
+ document.getElementById("docTitle").textContent=doc==="offer"?"Договор-оферта":"Соглашение об использовании ПЭП";
+ document.getElementById("docText").textContent=d.text||d.error||"Документ недоступен";
+ }catch(e){document.getElementById("docText").textContent="Ошибка: "+e.message}
+}
+async function signRequest(){
+ if(!document.getElementById("signAgree").checked){alert("Поставьте отметку о согласии с условиями");return}
+ const id=document.getElementById("signId").value.trim();
+ if(!id){alert("Укажите телефон или email");return}
+ try{const r=await fetch(`${API}/api/sign/request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token,identifier:id})});const d=await r.json();
+ if(d.error){alert("Ошибка: "+d.error);return}
+ document.getElementById("signStep1").style.display="none";
+ document.getElementById("signStep2").style.display="block";
+ document.getElementById("signCodeHint").textContent=d.demo_code?("ДЕМО-код: "+d.demo_code+" (в проде придёт по SMS/email)"):"Код отправлен на "+id;
+ }catch(e){alert("Ошибка: "+e.message)}
+}
+async function signConfirm(){
+ const code=document.getElementById("signCode").value.trim();
+ if(code.length<4){alert("Введите код");return}
+ try{const r=await fetch(`${API}/api/sign/confirm`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token,code,docs:["offer","pep"]})});const d=await r.json();
+ if(d.error){alert("Ошибка: "+d.error);return}
+ state.signed=true;
+ document.getElementById("signModal").classList.remove("show");
+ document.getElementById("signStep1").style.display="block";document.getElementById("signStep2").style.display="none";
+ alert("✓ Договор подписан\nПодписант: "+d.identifier);
+ document.getElementById("payModal").classList.add("show"); // сразу к оплате
+ }catch(e){alert("Ошибка: "+e.message)}
+}
async function payVia(method){
const amount=window.__payLeft||0;
document.getElementById("payModal").classList.remove("show");