ZipBooks: time tracking, gestione clienti, commesse e stampa fatture .. tutto gratis

Ci sono molti software che promettono di essere gratuiti e alla portata di tutti, questa settimana ho provato ZipBooks: gratuito, aperto tramite API, essenziale ed estremamente efficace.

  
a-
+
Spesso mi capita di dover tener traccia delle ore dedicate a un particolare cliente, in modo da poterle raggruppare e a fine mese staccare una fattura.

E' il classico lavoro del consulente: tanti progetti aperti, tante ore fatturate su un numero sempre crescente di clienti, tanti pezzi di carta, fogli di calcolo, note, eventi a calendario che girano fra scrivania e computer.

Siamo nel 2015 (quasi 2016) e ormai i contatti avvengono in molti modi diversi: telefonata, chat, email, social network, sessioni di coworking, trasferte, riunioni e così via.

Per mia scelta, per non aumentare il livello di entropia del mio lavoro, ho deciso di non impazzire con le consuntivazioni e gestire semplicemente una lista di ore lavorate e di attività fatte: cliente, data, durata e descrizione del lavoro. Nulla che non si possa risolvere con un foglio di calcolo.

Da foglio di calcolo locale è ben presto diventato un foglio di calcolo online, in modo da poterlo gestire anche in mobilità.

La soluzione era semplice, ma sicuramente non ottimale. Per questo motivo questa settimana ho cercato qualcosa di semplice, magari opensource, che potesse fare al caso mio.

Durante questa ricerca mi sono imbattuto in questo prodotto: ZipBooks

Non è nulla di eccezionale, nel senso che paragonato ad altri prodotti del genere non fa molto. Quello che permette di fare è però esattamente quello che serve:

* Anagrafica clienti
* Time tracking diviso per progetti e clienti
* Consuntivazioni da parte di un team di persone
* Gestione dei preventivi
* Creazione e generazione fatture e relativo invio ai clienti
* Utilizzo da pc o smartphone

Dal mio punto di vista, anche troppo rispetto a quanto facevo adesso.

Per curiosità ho provato ad adottare questo prodotto, inserendo dei dati consolidati, in modo da capire quanto fosse complesso e adatto al mio scopo.

Tutto è andato in modo abbastanza lineare: ho trovato dei punti in cui avrei inserito qualche funzionalità in più, ma quello che c'era ha fatto il suo sporco lavoro.

Cose che avrei aggiunto
Ci sono delle funzionalità che, in questo momento, sento mancare al prodotto:

* Traduzione in italiano: l'interfaccia è tutta in inglese, e questo non è un grosso problema, ma preventivi e soprattutto fatture sono anche loro in inglese: in questo caso è sicuramente un problema, speriamo in un prossimo aggiornamento.
* L'unico modo per estrarre i dati dall'interfaccia, è quello di stampare una fattura: mi sarei aspettato qualche estrazione in CSV delle varie liste clienti, ore lavorate etc

Cosa mi è piaciuto
Alcune cose invece mi sono piaciute molto:

* Il fatto che è completamente gratuito: non costa nulla, basta registrarsi col proprio account Google, Facebook o LinkedIn
* Tutto quello che viene fatto dall'interfaccia è replicabile via API. Un utente finale potrebbe dire: "e quindi?", un programmatore vede però questa apertura molto importante perché permette: da un lato di integrare il prodotto con altri flussi esterni, da un'altra parte di poter estrarre i dati in qualsiasi momento: un backup "extra piattaforma" fa sempre comodo .. non si sa mai che il servizio cessi dalla sera alla mattina
* L'assistenza tramite chat risponde entro 30 minuti ... non è male direi.

Interessante: ma tu cosa ci hai fatto?
Giusto per far capire di cosa parlo quando parlo di API aperte, voglio farvi vedere il batch che ho realizzato per esportare l'elenco delle ore lavorare da ZipBooks, in modo da comprendere quanto sia semplice interfacciarlo, anche da un non programmatore

Prima di tutto, per evitare che il batch risulti del tutto incomprensibile, indicherò subito i programmi che ho utilizzato per prendere e inviare dati verso ZipBooks e soprattutto per interpretare quanto ricevuto.

Il primo programma è Curl. Curl permette di scaricare una pagina da Internet e, nel nostro caso, di invocare le API JSON/REST fornite da ZipBooks.

Il secondo programma è JQ. Questa volta si tratta di un programma non molto conosciuto, ma estremamente necessario in questa situazione. JQ è un programma in grado di manipolare file JSON.

Perché mi è servito questo programma? Semplicemente perché le API fornite funzionano tramite JSON.

Bene non resta ora che utilizzare questi due programmi per fare accesso al sito ed estrarre la lista delle ore lavorate.

Un po' di API
La prima chiamata necessaria per il nostro scopo è quella di autenticazione al servizio:

https://api.zipbooks.com/v1/auth/login

Login riceve come parametri l'utente e la password col quale ci si è registrati e restituisce un JSON di informazioni, nelle quali è presente un TOKEN da utilizzare in ogni chiamata successiva. Il TOKEN è in grado di mantenere una sessione fra il client chiamante e il server e ci evita di ripetere continuamente l'invio di login e password al sistema.


set email=completare a piacere
set password=la vostra password

curl --insecure https://api.zipbooks.com/v1/auth/login --data "email=%email%&password=%password%" > login.json


Una volta invocato il login, ho proceduto a redirigere l'output di curl su un file : login.json.
In questo modo potevo, sia analizzare il contenuto del file per assicurarmi che tutto fosse andato come doveva, ma soprattutto potevo passare il file a jq in modo da estrarre il token che avevo ricevuto dalla prima chiamata


jq -r ".token" login.json > token


A sua volta il token era scritto in un secondo file chiamato "token", in modo da poterlo rileggere all'interno di una variabile


set /p token=< token


Ora che avevo in memoria la variabile "token", potevo riutilizzarla per tutte le estrazioni successive, come appunto quella con l'elenco delle entri del Time Tracking


curl --insecure https://api.zipbooks.com/v1/time_entries?token=%token% > time.json


Infine, per non farmi mancare nulla, ho invocato nuovamente jq per produrre un foglio di calcolo dal json ricevuto


jq -r ". | map(.duration), map(.date), map(.note) | @csv" time.json


Questo semplice batch mi permette quindi di esportare i dati inseriti nel programma e tutelarmi doppiamente: da un lato ho un backup giornaliero delle consuntivazioni, facilmente trasformabile in foglio di calcolo, da un altro punto di vista, se ZipBooks dovesse chiudere dalla sera alla mattina, non perderei neppure un giorno di lavoro.

Conclusioni
A volte le soluzioni semplici fanno esattamente quello che serve. Per un consulente che deve solo tenere traccia dei minuti lavorati e staccare fattura a fine mese, ZipBooks potrebbe essere già il programma giusto.
Leggi QUI il post completo