L'idea di realizzare questo esempio di applicazione in P4A è nata per comparare i tempi di sviluppo in un ambiente
RAD di tipo WYSIWYG (MS Visual Basic) che genera desktop applications e un framework PHP che genera web applications. Dei vantaggi delle applicazioni web ho già scritto in un precedente articolo.
Il progetto è molto semplice: un programma che gestisce la fatturazione di una ditta che fa servizi, quindi senza magazzino.
Ho scelto questo progetto perché la realizzazione non presenta grosse difficoltà e può essere utile a qualcuno, ed anche perché ci sono dentro diversi aspetti
che ricorrono anche in applicazioni più grandi, come ad esempio la gestione di tabelle master-detail e lo sviluppo di un report personalizzato in pdf.
Inoltre lo schema del database è pressoché identico a quello di un tutorial per l'approccio ai dati con Visual Basic .Net 2005
(Visual Basic 2005 passo-passo: Accesso ai dati),
in questo modo sarà più facile effettuare il confronto.
Va detto che non ho ancora realizzato l'equivalente in VB.Net, ma avendo una certa esperienza di VB6 posso dire quanto tempo avrei
impiegato a realizzarlo: diciamo 2 giorni al massimo. Ebbene, considerando che la documentazione di P4A è piuttosto scarsa, che il framework non ha un'interfaccia grafica WYSIWYG con strumenti drag'n'drop e wizard per la creazione dei report,
e infine, che non ho una conoscenza dello stesso paragonabile all'esperienza che ho con Visual Basic, mi sarei aspettato di impiegare come minimo il doppio del tempo, invece l'applicazione completa è stata realizzata in soli 2 giorni di lavoro nemmeno troppo assiduo (non c'erano clienti col fiato sul collo!).
Avessi voluto usare solo PHP e javascript, ci avrei messo davvero molto di più...!
Un buon risultato, visto che sappiamo quanto sia importante produrre applicazioni in breve tempo per tenere bassi i costi ed accontentare clienti sempre meno disposti ad investire grosse cifre sul software.
Quali sono le caratteristiche dell'esempio?
- Una maschera per la gestione dell'intestazione della ditta
- Una maschera per la gestione dell'anagrafica clienti (con ricerca per nome)
- Una maschera per la gestione delle fatture divisa in dati fattura e dettaglio prestazioni
- Una procedura di stampa della fattura in formato pdf
- Una maschera per il riepilogo delle fatture emesse e la possibilità di filtraggio per periodo
Qualche screenshot...
Note tecniche:
Ho provato l'applicazione sia con P4A 2.1.7 che con l'ultima release 2.2.2. Il funzionamento è corretto sia con PHP4.x e MySQL4.x che con PHP5.2.4 e MySQL5.0.x, in quest'ultimo caso però è necessario impostare la direttiva del php.ini: memory_limit = 64M, il default è 8M. All'interno del pacchetto, nella directory '_private' ci sono i dump .sql del database MySQL effettuati con phpMyAdmin e con Heidi, il nome del database deve essere: 'base_app_invoices'. Infine per la generazione del report in pdf, ho utilizzato la classe R&OS (pdf-php su Sourceforge), conosciuta anche come ezPdf e licenza di tipo Public Domain
Download:
Pacchetto zip completo di librerie R&OS
Conclusioni:
Se il rapporto 1:1 dei tempi di sviluppo con queste differenti tecnologie rimane lo stesso anche per applicazioni complesse, e constatato il vantaggio delle applicazioni web, è da considerare seriamente l'adozione di questo framework PHP fra i propri strumenti di lavoro.
Riferimenti ed approfondimenti:








Ho aggiornato il pacchetto base_app_invoice.zip correggendo un bug riscontrato nella modifica dell'intestazione della ditta, e alcuni 'notice' nella generazione del pdf.
Hi Mario,
I download you 'Invoices Manager' app and try to install in my box using the last p4a version (2.99.8) but the apps crashed every time...
There are some incompatibility with this version of p4a or, probably, is something I doing wrong ?
TIA,
blas
@ Blas Lopez
Hi Blas, yes! Invoices manager is not compatible with P4A 3. This is due to the strong changes made in P4A 3. Basically, all P4A 2 apps are not compatible with P4A 3. Anyway, I have just finished the translation of the code for running invoices manager on the new framework. I will publish a short post and all the new code very soon!