@@ -697,6 +724,16 @@ async function generateLicense() {
const email = document.getElementById('gRestEmail').value.trim();
if (email) body.restrict_email = email;
+ // Dati destinatario — pre-compilano il form di registrazione
+ const rcpFirst = document.getElementById('gRcpFirst').value.trim();
+ const rcpLast = document.getElementById('gRcpLast').value.trim();
+ const rcpEmail = document.getElementById('gRcpEmail').value.trim();
+ const rcpVat = document.getElementById('gRcpVat').value.trim();
+ if (rcpFirst) body.recipient_first_name = rcpFirst;
+ if (rcpLast) body.recipient_last_name = rcpLast;
+ if (rcpEmail) body.recipient_email = rcpEmail;
+ if (rcpVat) body.recipient_vat = rcpVat;
+
const btn = document.getElementById('genBtn');
const ldr = document.getElementById('genLoading');
btn.style.display = 'none'; ldr.style.display = '';
@@ -718,20 +755,27 @@ async function generateLicense() {
function renderGenResult(invites) {
const res = document.getElementById('genResult');
const list = document.getElementById('genTokenList');
- list.innerHTML = invites.map((inv, i) => `
-
-
+ list.innerHTML = invites.map((inv, i) => {
+ const r = inv.recipient;
+ const recipientLine = r ? `
+ 👤 ${[r.first_name, r.last_name].filter(Boolean).join(' ')}${r.email ? ` <${r.email}>` : ''}${r.vat ? ` · P.IVA ${r.vat}` : ''} — form pre-compilato ✓
+
` : '';
+ return `
+
+
Licenza #${i+1} — ${inv.plan} · ${inv.duration_months} mesi · ID: ${inv.id}
-
-
${inv.token}
-
- URL:
${inv.invite_url}
· Scade invito: ${new Date(inv.expires_at).toLocaleDateString('it-IT')}
${inv.max_users_per_org ? ` · Max utenti/org: ${inv.max_users_per_org}` : ''}
${inv.price_eur ? ` · € ${inv.price_eur}` : ''}
-
- `).join('');
+
${inv.token}
+
+ ${recipientLine}
+
`;
+ }).join('');
res.classList.add('show');
res.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
@@ -757,7 +801,8 @@ function exportCsv() {
}
function resetForm() {
- ['gLabel','gIssuedTo','gReseller','gNotes','gRestVat','gRestEmail','gPrice','gMaxUsers'].forEach(id => {
+ ['gLabel','gIssuedTo','gReseller','gNotes','gRestVat','gRestEmail','gPrice','gMaxUsers',
+ 'gRcpFirst','gRcpLast','gRcpEmail','gRcpVat'].forEach(id => {
document.getElementById(id).value = '';
});
document.getElementById('gPlan').value = 'professional';
@@ -819,7 +864,7 @@ async function showDetail(id) {
Reseller
${inv.reseller_name || '—'}