Un ordine nasce quando il tuo cliente conferma un preventivo nel configuratore. Da quel momento è un record memorizzato e firmato, e CutOptim te ne dà notizia in due modi.
Che cos’è un ordine
Un documento d’ordine contiene l’elenco dei tagli, le lastre intere usate, la ferramenta, i pannelli incollati, il piano di taglio e il preventivo con le sue righe e i totali in unità minori intere della valuta. È firmato, quindi non può essere modificato in seguito. Inviare due volte la stessa richiesta d’ordine restituisce lo stesso ordine, mai un secondo.
Poiché il prezzo proviene sul server dalle tue regole pubblicate, il tuo negozio non si fida del browser per esso. Prima che il tuo carrello accetti una riga, il tuo server chiede a CutOptim di verificare il preventivo con la tua chiave segreta. Il modo già pronto è il plug-in WooCommerce; per gli altri negozi vedi le piattaforme personalizzate.
Consegna tramite webhook
Aggiungi un webhook all’elenco channels.webhooks della tua configurazione (categoria Advanced, editor JSON) e pubblica. Ogni voce ha un id, un url e gli events che vuoi. L’URL deve essere un indirizzo HTTPS pubblico; gli indirizzi privati, locali e interni vengono rifiutati al salvataggio e di nuovo all’invio. Vengono inviati due eventi:
- order.created quando un cliente effettua un ordine.
- order.status_changed quando porti un ordine a un nuovo stato.
Ogni consegna è una POST con un corpo JSON canonico e queste intestazioni: CutOptim-Signature, CutOptim-Event-Id, CutOptim-Event-Type, CutOptim-Delivery-Attempt e CutOptim-Delivery-Id. La firma è t=<unix seconds>,v1=<hex>, un HMAC-SHA256 di <t>.<raw body> con il segreto del ricevente. Il tuo ricevente dovrebbe:
- leggere il corpo grezzo prima di analizzarlo;
- verificare che il timestamp rientri in pochi minuti e confrontare la firma in tempo costante;
- accettare uno qualsiasi tra più valori
v1, che compaiono mentre un segreto viene ruotato; - rispondere rapidamente con uno stato 2xx e gestire un id evento una sola volta.
Il segreto del ricevente viene rivelato al tuo server da POST /cfg/v1/admin/webhooks/<id>/secret sul servizio, con la tua chiave segreta. Non viene mostrato nella console.
Una risposta non 2xx, un timeout o un reindirizzamento contano come un fallimento. I tentativi successivi attendono 1, 5, 25 e 125 minuti, poi 6 ore, e il sesto tentativo fallito contrassegna la consegna come morta. Una riconsegna ripete lo stesso id evento, così il tuo ricevente può riconoscerla. Gli altri tipi di evento presenti nella configurazione, come gli eventi di preventivo o di progetto, sono accettati ma non vengono mai inviati.
Nella sezione channels.email della tua configurazione elenchi gli indirizzi dei destinatari del negozio (tenantRecipients) e puoi attivare una copia al cliente (sendCustomerCopy). L’e-mail del negozio contiene una scheda di lavoro e un PDF di etichette; la copia al cliente parte solo se l’hai abilitata e l’ordine porta un riferimento cliente con un indirizzo registrato, e rispondere a essa raggiunge il tuo primo destinatario. L’e-mail di stato parte solo quando lo chiedi mentre cambi uno stato. Un errore di invio non blocca mai l’ordine. Una sandbox scrive solo all’indirizzo confermato del titolare e mai a un cliente.
La console degli ordini
L’area Orders della console elenca gli ordini per stato e data, e apre un ordine per mostrarne elenco dei tagli, righe di prezzo, totali e cronologia. Owner e admin vedono anche i registri di consegna di webhook ed e-mail, con un pulsante Redeliver che mette in coda una copia di una consegna conclusa, fallita o morta. Una consegna ancora in attesa o in corso non può essere riconsegnata.
Per cambiare uno stato scegli lo stato successivo, aggiungi una nota facoltativa e decidi se inviare un’e-mail al cliente. I passaggi consentiti sono:
| Da | A |
|---|---|
| ricevuto (received) | confermato (confirmed), annullato (cancelled) |
| confermato (confirmed) | in produzione (in production), annullato (cancelled) |
| in produzione (in production) | spedito (shipped), annullato (cancelled) |
| spedito (shipped) | completato (completed) |
Gli ordini completati e annullati non si spostano più. Gli ordini non vengono mai eliminati dalla console; sono documenti aziendali.
La pagina di tracking
Il link di tracking del cliente mostra il numero d’ordine, il nome del tuo negozio, i passaggi di stato con l’ora di ciascuno, il numero di pezzi e il totale, in una delle dieci lingue. Non mostra indirizzo né e-mail, né l’elenco dei tagli, né mai le tue note, e non contiene script. Il link non è indovinabile, appartiene a un solo ordine e scade 365 giorni dopo l’ordine. Se ti serve il link per una telefonata, il tuo server può richiederlo con la chiave segreta; la console non lo mostra.
File di produzione
Ogni ordine può essere scaricato come sette file dal dettaglio dell’ordine:
| File | Uso |
|---|---|
| Part list (CSV) | i pezzi con misure e quantità |
| Placements (CSV) | dove si trova ogni pezzo su ogni lastra |
| Drawing (SVG) | il piano, da visualizzare o stampare |
| CNC drawing (DXF) | per il software CNC |
| Labels (PDF) | etichette dei pezzi |
| Worksheet (PDF) | una scheda per il laboratorio |
| ERP extract (JSON) | per il tuo sistema ERP |
I PDF vengono ricostruiti dall’ordine e rifiutati quando il piano non può essere riprodotto esattamente; in tal caso gli altri file restano disponibili. I PDF sono in inglese. Non esiste un’esportazione Excel per un ordine, e gli ordini 1D o di legname non esistono ancora, quindi per essi non viene esportato nulla.
Cosa non è coperto
- Il configuratore non incassa pagamenti; pagamento ed evasione restano nel tuo negozio.
- Non esiste un cambio di stato in blocco.
- Un link di tracking non può essere revocato singolarmente; scade da solo.