Come creare un Web Form per inserire richieste di preventivo in SferaNET

Introduzione

Il meccanismo si basa sul semplice form action e redirect.

Il form viene inviato al seguente endpoint:

http://facilews3.partnersolution.it/Api/Form/OpportunitaLead/{codiceAgenzia}?redirect={redirectUrl}

Con i seguenti parametri:

  • redirectUrl è l’indirizzo al quale reindirizzare il client dopo l’invio dei dati
  • codiceAgenzia è il codice assegnato al cliente (codice sandbox “DEMO2”)
  • Key chiave di sicurezza fornita da Partnersolution

Note redirectUrl: la richiesta viene quindi elaborata e viene restituito al client l’url specificato nel parametro “redirectUrl” seguito dai messaggi indicati più avanti nel paragrafo “Risultato”. Nel caso in cui si necessiti di una risposta json basta lasciare vuoto il parametro redirectUrl, a quel punto il risultato dell operazione verrà mostrato in una struttura json senza alcun redirect.

Come impostare il form

  • Impostare l'attributo method="POST"
  • Impostare action con l’edpoint compilato con gli appositi parametri
  • Popolare il form con i seguenti campi

Visibili anche in (http://facilews3.partnersolution.it/opportunita-e-lead/)

    • Campi legati all'entità "Lead"
      • Cognome (*)
      • Nome(*)
      • EmailComunicazioni (*)
      • NazioneNascitaID
      • ProvinciaNascitaID
      • FlagPersonaFisica
      • DataNascita
      • LocalitaNascitaCitta
      • CodiceFiscale
      • PartitaIVA
      • NazioneID
      • ProvinciaID
      • CAP
      • LocalitaResidenzaCitta
      • Indirizzo1
      • Indirizzo2
      • TelefonoCasa
      • TelefonoUfficio
      • Fax
      • NumeroCivico
      • ComuneNascitaID
      • Sesso
      • AccountID
      • NazioneNascita
      • ProvinciaNascita
      • NazioneResidenza
      • ProvinciaResidenza
      • AccountLoginIDForLookup
      • QuestionarioTestataID

 

    • Campi legati all'entità "Opportunità"
      • FonteOpportunita
      • Destinazione
      • PaxViaggio
      • TipoViaggio
      • AnnotazioniGenerali
      • NoteInterne
      • AccountLoginAssignedID
      • DataPresaInCarico
      • Stato
      • DataChiusura
      • MotivazioneChiusuraNoSucc
      • AccountLoginUltMod
      • Destinatario
      • PuntoDiPartenza
      • PasseggeriDettagli**
      • Trattamento
      • Sistemazione
      • Budget
      • Itinerario
      • CampiOpzionali**

NOTE:

  • I campi segnati con (*) sono campi obbligatori.
  • I campi dell’entità "Opportunità" sono tutti opzionali, questo significa che l'opportunità stessa è opzionale. Se lasciati tutti vuoti, l'opportunità non verrà creata. Questa eventualità è associabile all’ipotesi in cui la form sia utilizzata per recuperare solamente il lead (es. Iscrizione a newsletter)
  • Le date devono essere tutte valorizzate in una delle seguenti forme:
    • gg/mm/aaaa oo:mm:ss (Es. 01/01/2020 08:05:05):
    • Gg/mm/aaaa (Es. 01/01/2020)

Dove:

    • oo indica l'ora del giorno nella forma “08“
    • mm indica i minuti dell'ora nella forma “05”
    • ss indica i secondi del minuto nella forma “05”

 

  • Campi opzionali: i campi opzionali devono iniziare con opt_ seguito dal nome del campo e servono per gestire qualsiasi altro campo diverso da quelli previsti nella struttura precedente. La finalità è quella di poter raccogliere informazioni dal form, senza dover modificare il servizio

  • PasseggeriDettagli è un campo opzionale atteso come json per includere le informazioni dei dettagli passeggeri

Esempio:

Opt_categoria_struttura

I valori così passati, verranno aggregati tutti nel campo “Opzioni” della richiesta stessa, per poi poter essere successivamente gestiti per ricerche o altri scopi gestionali.

  • Campi “Fonte opportunità” e “Destinatario”: questi 2 campi vengono utilizzati per marchiare le richieste rispettivamente come provenienti da una determinata fonte (es. Portale A, Portale B, ecc..) e indirizzate ad un determinato destinatario (es. reparti specifici dell’azienda). Normalmente non sono campi visibili all’utente finale, ma sono rilevanti per il tracking delle richieste e per poter poi eseguire nel gestionale controlli di visibilità per utente (ACL).

 

Esempio di Form

<form

    action=' http://facilews3.partnersolution.it/Api/Form/OpportunitaLead/demo1?redirect=https://www.partnersolution.it'

    method='POST'

    <input placeholder="NazioneNascitaID" type="text" name="NazioneNascitaID"/><br />

    <input placeholder="ProvinciaNascitaID" type="text" name="ProvinciaNascitaID"/><br />

    <input placeholder="FlagPersonaFisica" type="checkbox" id="FlagPersonaFisica" name="FlagPersonaFisica"/> <label for="FlagPersonaFisica">FlagPersonaFisica</label><br />

    <input placeholder="Cognome" type="text" name="Cognome"/><br />

    <input placeholder="Nome" type="text" name="Nome"/><br />

    <input placeholder="DataNascita" type="text" name="DataNascita"/><br />

    <input placeholder="LocalitaNascitaCitta" type="text" name="LocalitaNascitaCitta"/><br />

    <input placeholder="CodiceFiscale" type="text" name="CodiceFiscale"/><br />

    <input placeholder="PartitaIVA" type="text" name="PartitaIVA"/><br />

    <input placeholder="NazioneID" type="text" name="NazioneID"/><br />

    <input placeholder="ProvinciaID" type="text" name="ProvinciaID"/><br />

    <input placeholder="CAP" type="text" name="CAP"/><br />

    <input placeholder="LocalitaResidenzaCitta" type="text" name="LocalitaResidenzaCitta"/><br />

    <input placeholder="Indirizzo1" type="text" name="Indirizzo1"/><br />

    <input placeholder="Indirizzo2" type="text" name="Indirizzo2"/><br />

    <input placeholder="TelefonoCasa" type="text" name="TelefonoCasa"/><br />

    <input placeholder="TelefonoUfficio" type="text" name="TelefonoUfficio"/><br />

    <input placeholder="Fax" type="text" name="Fax"/><br />

    <input placeholder="EmailComunicazioni" type="text" name="EmailComunicazioni"/><br />

    <input placeholder="NumeroCivico" type="text" name="NumeroCivico"/><br />

    <input placeholder="ComuneNascitaID" type="text" name="ComuneNascitaID"/><br />

    <input placeholder="Sesso" type="text" name="Sesso"/><br />

    <input placeholder="AccountID" type="text" name="AccountID"/><br />

    <input placeholder="NazioneNascita" type="text" name="NazioneNascita"/><br />

    <input placeholder="ProvinciaNascita" type="text" name="ProvinciaNascita"/><br />

    <input placeholder="NazioneResidenza" type="text" name="NazioneResidenza"/><br />

    <input placeholder="ProvinciaResidenza" type="text" name="ProvinciaResidenza"/><br />

    <input placeholder="AccountLoginIDForLookup" type="text" name="AccountLoginIDForLookup"/><br />

    <input placeholder="QuestionarioTestataID" type="text" name="QuestionarioTestataID"/><br />

    <hr/>

    <input placeholder="FonteOpportunita" type="text" name="FonteOpportunita"/><br />

    <input placeholder="Destinazione" type="text" name="Destinazione"/><br />

    <input placeholder="PaxViaggio" type="text" name="PaxViaggio"/><br />

    <input placeholder="TipoViaggio" type="text" name="TipoViaggio"/><br />

    <input placeholder="AnnotazioniGenerali" type="text" name="AnnotazioniGenerali"/><br />

    <input placeholder="NoteInterne" type="text" name="NoteInterne"/><br />

    <input placeholder="AccountLoginAssignedID" type="text" name="AccountLoginAssignedID"/><br />

    <input placeholder="DataPresaInCarico" type="text" name="DataPresaInCarico"/><br />

    <input placeholder="Stato" type="text" name="Stato"/><br />

    <input placeholder="DataChiusura" type="text" name="DataChiusura"/><br />

    <input placeholder="MotivazioneChiusuraNoSucc" type="text" name="MotivazioneChiusuraNoSucc"/><br />

    <input placeholder="AccountLoginUltMod" type="text" name="AccountLoginUltMod"/><br />

<input placeholder="Destinatario" type="text" name="Destinatario"/><br />        <input placeholder="Campo Personalizzato 1" type="text" name="opt_campo_personalizzato_1"/><br />   

<input placeholder="Campo Personalizzato 2" type="text" name="opt_campo_personalizzato_2"/><br />

 

    <input type="submit" value="Salva"/>

</form>



Risultato

Dopo aver inviato il form, il server eseguirà un redirect verso l'indirizzo specificato nella query string url, aggiungendo 2 query string all'url:

  • status che può valere ok per indicare che il salvataggio è avvenuto correttamente oppure ko per indicare che c'è stato un errore.
  • In Caso di errore, lo status vale ko, la seconda query string verrà valorizzata: message.
    Questa query string contiene un breve messaggio per descrivere il tipo di errore.

La seguente è la lista dei possibili messaggi di Errore:

    • manca-{nome del campo} Questo messaggio comunica che il form ha inviato un valore vuoto o non ha inviato il valore per un campo obbligatorio.
    • valore-{nome del campo}-non-valido Questo messaggio comunica che il form ha inviato un valore non valido per un campo. Il campo in question non deve essere necessariamente un campo obbligatorio, per esempio il campo DataPresaInCarico non è un campo obbligatorio, perciò può essere lasciato vuoto, ma se viene valorizzato, è obbligatorio rispettare il formato data (indicato sopra).
    • agenzia-non-trovata l'agenzia indicata non è stata trovata sul server.
    • errore-interno-trasferimento c'è stato un errore interno al server durante la comunicazione tra php e inde.
    • token-interno-non-trovato il server php non è stato in grado di recuperare il token dell'utente dei servizi.
    • errore-interno-salvataggio-lead il server inde non è stato in grado di inserire il lead nel database.

Dove {nome del campo} è il nome di un campo del form. (esempio “manca-EmailComunicazioni”)


Ti potrebbe interessare anche...