Completamento automatico di una form anagrafica azienda

In questo tutorial ti mostreremo come a partire da una Partita IVA possiamo ottenere l'anagrafica dell'azienda, per poter per esempio auto completare i dati all'interno dei moduli del tuo CRM. 

Vedremo come ottenere ragione sociale, settore ATECO di appartenenza, natura giuridica, sede legale, ricavi, dipendenti, sito web, contatti email e telefonici, ma il codice si può facilmente adattare per ottenere qualsiasi dato delle API a cui tu abbia accesso.

Risorse

  • Documentazione delle API di Company Search che utilizzeremo 
  • Codice completo (Js Fiddle) il riquadro in basso a destra è funzionante, inserisci il tuo token, clicca....et-voilà!. HTML e CSS non sono molto interessanti, solo lo stretto indispensabile per rendere il tutto utilizzabile. Il codice Javascript invece esegue la chiamata alla API e popola i risultati.
  • Qui puoi controllare i crediti disponibili e consumati sul tuo token, e qui trovi informazioni più dettagliate sui crediti

Iniziamo

Quando si clicca sul pulsante, viene eseguito questo handler:

$('#vai').click(function() {
    let token = $('#token').val(),
        piva = $('#piva').val(),
        url = `https://api.atoka.io/v2/companies?token=${token}`;

    $.post(url, {
        vat: piva,
        packages: 'base,economics,contacts,web'
    }).done(displayData);

    return false;
});


Vengono letti token e partita IVA e generato l’URL delle API. Da notare che il token è inserito nella query string e non nel body della chiamata.

Viene eseguita una chiamata AJAX in modalità POST, passando i parametri vat e packages. Per ottenere i dati desiderati avremo bisogno di base, economics, contacts e web. E’ necessario usare il metodo POST per aggirare i controlli di sicurezza CORS.

Il risultato della chiamata viene gestito dalla funzione displayData, di cui riportiamo un estratto:

function displayData(data) {
    let azienda = data.items[0];
    console.log('Atoka data:', azienda);

    $('#ragioneSociale').html(azienda.name);
    $('#sedeLegale').html(azienda.fullAddress);
    $('#ateco').html(
        azienda.base.ateco[0].code + ': ' + 
        azienda.base.ateco[0].description
    );

    // ecc

    if (azienda.contacts.phones) {
        $('#telefono').html(
            azienda.contacts.phones[0].number +
            ' (' + azienda.contacts.phones.length + ' in totale)'
        );
    }
}


... che non fa altro che usare il JSON per mettere i vari pezzi al loro posto.

Il risultato di questo endpoint è comunque un array di items (aziende), ma visto che filtriamo per partita IVA possiamo essere sicuri che il risultato sia uno solo (o nessuno, se la partita IVA non esiste), il primo elemento dell’array data.items[0].

Da notare l’ultimo blocco con l’if: prima di stampare il numero di telefono verifichiamo che azienda.contacts.phones sia truthy, cioè presente nell’oggetto. Inoltre, essendo phones un array, possiamo decidere se mostrarli tutti o solo il più significativo (il primo) e dare semplicemente visibilità del loro numero complessivo.
 

Quanto mi costa

Per ogni azienda con almeno un pacchetto dati consumiamo 1 credito companies:*. Nell'esempio chiediamo al massimo 10 aziende (valore di default del parametro limit) per ogni ricerca, quindi potenzialmente ogni chiamata ci costerà 10 crediti.

Atoka Trick

In questo esempio utilizziamo sempre e solo i dati della prima azienda restituita dalla ricerca, e ignoriamo le successive. In questo caso per risparmiare crediti, possiamo utilizzare il parametro limit per avere solo un'azienda nei risultati, e quindi consumare al massimo 1 credito per ricerca.

$('#vai').click(function() {
    let token = $('#token').val(),
        piva = $('#piva').val(),
        url = `https://api.atoka.io/v2/companies?token=${token}`;

    $.post(url, {
        vat: piva,
        packages: 'base,economics,contacts,web',
        limit: 1,
    }).done(displayData);

    return false;
});