Associamo a un ordine le coordinate gps


 

In questo post vedremo come recuperare la posizione geografica durante il salvataggio di un ordine creato con PocketSell. Naturalmente questa procedura rimane valida per tutti i database creati da Nios4.

Il recupero della posizione gps potrà essere eseguito solamente dalle versioni Android e Ios, visto che sono gli unici dispositivi che possiedono un navigatore.

Per visualizzare la posizione dell'ordine creeremo una sezione di tipo mappa sfruttando la nuova feature della versione 1.0.2.0 che permette di utilizzare due campi numerici per salvare la latitudine e la longitudine, evitando di dover creare per forza un campo di tipo "posizione geografica"

 

 

 

Iniziamo aggiungendo i campi necessari. Andiamo su opzioni, campi, e creiamo due campi di tipo numero con  virgola sulla tabella ordini. Uno verrà chiamagto latitudine e l'altro longitudine. Togliamo i permessi di visuaizzazione dei campi, visyto che verranno gestiti direttamente dal programma e quindi non è necessario cbe l'utente li visualizzi sulla scheda.

Andiamo sulla sezione degli script e aggiungiamo un nuovo script di tipo "pre salvataggio" della scheda e selezioniamo la taberlla ordini. La procedura viene eseguita prima del salvataggio in modo da poter recuperare le coordinate e poi farle salvare direttamente dal programma. Se fosse stato scelto il "post salvataggio" sarebbe occorso forzare il risalvataggio per non perdere i valori appena recuperati.

Imposteremo lo script in modo che venga lanciato solo se il dispositivo è Android e Ios e apriamo l'editor.

 

-- recupera le coordinate GPS
local coord = program.geolocation()
local curr_lat = 0
local curr_lon = 0

curr_lat = coord[1]
curr_lon = coord[2]

 

Procediamo interrogando il navigatore per recuperare il punto. Ricordatevi che se non vengono dati i permessi sul telefono non sarà possibile recuperare il valore. In caso non ci fosse copertura o non si abbiano i permessi la funzione ritornerà una coppia di zeri., Quando il valore è latitudine = 0 e longitudine = 0 significa che il valore è nullo. Creando una sezione di tipo mappa questi valori verranno ignorati e non comparirà nessun segnalino.

 

dataview.setvalue("latitudine",curr_lat)
dataview.setvalue("longitudine",curr_lon)

 

Recuperati i valori imposteremo i campi creati precedentemente di latitudine e longitudine. In questo caso prima di impostare i valori abbiamo controllato che questi non siano stati già compilati, precedentemente. Per evitare di riscrivere il valore originale.

 

    if dataview.getavalue("stato_documento") == "Chiuso" then

        .......

    end

 

In questa fase naturalmente possiamo aggiungere le condizioni che vogliamo. Ad esempio fissare il punto solo se l'ordine risulta "chiuso" o se siamo a una distanza massima rispetto all'indirzzo del cliente per garantire che quando la posizione è stata letta si era nelle vicinanze (ricordate sempre che un gps ha una tolleranza di circa 50 metri)

Recuperati il valore lo script terminerà e il programma procederà al salvataggio.

 

 

 

Ora creeremo la sezione mappa. Compiliamo i valori di base e impostiamo il campo latitudine e longitudine selezionando i suoi ominimi.,

A questo punto verranno visualizzati sulla mappa tutti gli ordini che hanno correttamente recuperato il valore dal gps.

Commenti