MOLTI ENTI E SOCIETA’ PUBBLICHE PRODUTTRICI DI SOFTWARE ISTITUZIONALE PER WINDOWS NON HANNO FINORA RITENUTO DI PUBBLICARE VERSIONI ANCHE PER GNU/LINUX O MULTIPIATTAFORMA, ESCLUDENDO DI FATTO PRIVATI CITTADINI, IMPRENDITORI E PROFESSIONISTI DALL’ACCESSO LIBERO AI SISTEMI INFORMATICI DELLA PUBBLICA AMMINISTRAZIONE, PER FAR FRONTE AD ADEMPIMENTI BUROCRATICI E GIURIDICI OBBLIGATORI; PER ESSI INFATTI SONO RICONOSCIUTI, IN MODO ILLEGITTIMO, SOLO SISTEMI OPERATIVI MICROSOFT WINDOWS.
L’AUTORE CONDANNA FERMAMENTE QUESTO SCANDALOSO COMPORTAMENTO DELLA P.A., E SI AUGURA CHE QUESTI ENTI E SOCIETA’ RENDANO FINALMENTE DISPONIBILE L’ACCESSO AI CITTADINI CHE, DI PIENO DIRITTO, UTILIZZANO INVECE SISTEMI OPERATIVI ALTERNATIVI A MS WINDOWS (CHIUSO E PROPRIETARIO).
GLI UTENTI SONO CALOROSAMENTE INVITATI A SOLLECITARE LE AMMINISTRAZIONI PUBBLICHE A CONSENTIRE IL LIBERO ACCESSO ALLE LORO PROCEDURE CON SISTEMI ALTERNATIVI A WINDOWS, NONCHE’ AD UTILIZZARE IN PRIMA BATTUTA, LADDOVE DISPONIBILE, SOFTWARE RILASCIATO ANCHE PER GNU/LINUX.
LA GUIDA SEGUENTE SI RIFERISCE INFATTI A “TRUCCHI” NON UFFICIALI PER I QUALI NON E’ MAI GARANTITA AL 100% LA COMPATIBILITA’ CON LA PROCEDURA UFFICIALE PER WINDOWS STABILITA DAL PRODUTTORE DEL SOFTWARE, NE’ CON IL RISULTATO IN TERMINI DI FORMATO E/O DI CONTENUTO DELLA PROCEDURA IN AMBIENTE WINDOWS, E CHE NON POSSONO MAI CON CERTEZZA E COMPLETEZZA SOSTITUIRE A TUTTI GLI EFFETTI L’AMBIENTE PER I QUALI SONO ORIGINARIAMENTE CONCEPITI.
.
.
Continuo questa volta con una guida passo-passo per il programma di creazione dei flussi F24 telematici denominato F24Intermediari (nella versione corrente, la 115 116 117 1.1.8 del 29/10/2007 1.1.9 del 07/11/2007 1.2.0 del 03/12/2007 1.2.2 del 19/05/2008).
Si tratta di un programma, anche qui prodotto da Agenzia delle Entrate e SO.GE.I. solo per piattaforma Windows e MacOS, che dovrà essere adattato in qualche modo per farlo funzionare con il nostro sistema operativo.
N.B. Questo programma non è disponibile per tutti, ma è riservato i SOLI professionisti/intermediari abilitati alla trasmissione telematica delle dichiarazioni e dei modelli ad uso fiscale per mezzo dell’applicazione ENTRATEL.
Prima di continuare la lettura si prega di prendere conoscenza delle CONDIZIONI DI UTILIZZO ed accettarle.
.
.
- PREPARAZIONE
Creiamo una sotto-directory temporanea, preferibilmente nella directory $HOME, di nome p.es. $HOME/tmp/F24intermediari
Una volta autenticati con il proprio codice utente e password sul sito dell’Agenzia delle Entrate ENTRATEL scarichiamo in questa directory il file f24intermediari_122.exe, disponibile nella sezione Software – Software per Intermediari.
Il programma per Windows è binario, con licenza proprietaria, senza disponibilità quindi di sorgenti. Esso utilizza una macchina virtuale Java della serie 1.3.x 1.5.x
Servono altri utensili per scompattare il contenuto dell’applicazione, al fine di renderlo usabile per GNU/Linux:
upx (che serve a decomprimere un eseguibile, si consiglia la versione più recente)
unzip (che serve a scompattare il contenuto dell’eseguibile decompresso; si consiglia la versione più recente)
Verificare che siano installati nel proprio sistema.
Decomprimere l’eseguibile con upx -k -d f24intermediari_122.exe (con l’opzione -k si mantiene una copia di sicurezza con lo stesso nome e l’estensione .ex~)
Scompattare l’eseguibile con unzip f24intermediari_122.exe
I file prodotti dallo scompattamento sono questi:
InstallerData/IAClasses.zip
InstallerData/laxmanifest.txt
InstallerData/uninstallmanifest.txt
InstallerData/Disk1/InstData/MediaId.properties
InstallerData/Disk1/InstData/Resource1.zip
InstallerData/Execute.zip
InstallerData/InstalledMedias.properties
InstallerData/MediaFiles.properties
Windows/F24Interm.exe
Windows/F24Interm.lax
Windows/resource/iawin32.dll
Windows/resource/jdglue.zip
Windows/resource/remove.exe
Windows/resource/ZGWin32LaunchHelper.exe
Windows/unicows.dll
.
.
- JAVA
Se si è già installato un altro programma dell’Agenzia delle Entrate/SO.GE.I. è probabile che questo passo sia già stato completato, in tal caso si può passare direttamente al successivo.
Altrimenti è opportuno leggere la guida software per Java
.
.
- INSTALLAZIONE
Ritornando all’interno della directory temporanea creare, come utente, uno script testuale di shell (es. installaF24INT.sh), da rendere poi eseguibile, con questo contenuto:
1 #!/bin/sh
2export J2REDIR=/opt/jre1.3.1_20/
export J2REDIR=/opt/jre1.5.0_14/
3 export PATH=$J2REDIR/bin:$PATH
4 export MANPATH=$J2REDIR/man:$MANPATH
5 export CLASSPATH=$J2REDIR/lib:$CLASSPATH
6 export JAVA_HOME=$J2REDIR
7 LD_LIBRARY_PATH=$J2REDIR java -classpath “InstallerData/IAClasses.zip: Windows/resource/jdglue.zip:InstallerData/Execute.zip: Windows/InstallerData/Execute.zip: InstallerData:Windows/InstallerData: InstallerData/Disk1/InstData/Resource1.zip” com.zerog.lax.LAX “Windows/F24Interm.lax”
Note: a) I numeri in corrispondenza delle righe servono solo a far capire il cambio di riga, e NON vanno riportati nello script.
b) la directory in corrispondenza di J2REDIR è quella dove abbiamo installato la macchina virtuale java della serie 1.3.x 1.5.x
c) il comando che inizia con “LD_LIBRARY_PATH” (fino alla fine) deve essere collocato tutto su una riga o convenientemente posizionato su più righe ognuna delle quali (a parte l’ultima) termina con un carattere di escape (“\”) e un ritorno a capo.
Nella directory temporanea eseguiamo lo script con ./installaF24INT.sh, seguiamo le istruzioni e indichiamo come directory di destinazione dell’installazione, una sotto-directory della propria home (preferibilmente $HOME/UnicoOnLine), e proseguiamo in avanti fino al termine dell’installazione.
La scelta di questa directory è motivata dal fatto che è meglio distanziarsi il meno possibile dalle scelte operative della SO.GE.I., al fine di prevenire malfunzionamenti, dato che F24Intermediari è strettamente connesso a F24OnLine e UnicoOnLine, e che nella versione Windows sono collocati tutti e tre in questa sotto-directory comune.
Nella directory di installazione $HOME/UnicoOnLine creare, come utente, uno script testuale di shell (es. avviaF24INT.sh), da rendere poi eseguibile, con questo contenuto:
1 #!/bin/sh
2export J2REDIR=/opt/jre1.3.1_20/
export J2REDIR=/opt/jre1.5.0_14/
3 export PATH=$J2REDIR/bin:$PATH
4 export MANPATH=$J2REDIR/man:$MANPATH
5 export CLASSPATH=$J2REDIR/lib:$CLASSPATH
6 export JAVA_HOME=$J2REDIR
7 LD_LIBRARY_PATH=$J2REDIR java -classpath “F24Prog/BQJBQ100.jar:F24Prog/etymon.jar:./lax.jar” sogei.BQJBQ130.pannelli.FrmMain “./F24_On_Line_per_Intermediari.lax”
Note: a) I numeri in corrispondenza delle righe servono solo a far capire il cambio di riga, e NON vanno riportati nello script.
b) la directory in corrispondenza di J2REDIR è quella dove abbiamo installato la macchina virtuale java della serie 1.3.x 1.5.x
c) il comando che inizia con “LD_LIBRARY_PATH” (fino alla fine) deve essere collocato tutto su una riga o convenientemente posizionato su più righe ognuna delle quali (a parte l’ultima) termina con un carattere di escape (“\”) e un ritorno a capo.
Bene, abbiamo installato F24Intermediari su GNU/Linux!
NOTA: per usufruire della visualizzazione in tempo reale delle distinte e modelli in formato .pdf l’Agenzia consiglia di installare Acrobat Reader; oppure dovrebbe bastare la creazione, con i privilegi di root, di un link simbolico ad un programma analogo per GNU/Linux (come kpdf, evince, ecc.), p.es., se quest’ultimo sta in /usr/bin, con il comando ln -s /usr/bin/kpdf /usr/bin/acroread
.
.
- AVVIO
Recandoci nella directory di installazione $HOME/UnicoOnLine, eseguiamo lo script con ./avviaF24INT.sh.
L’applicazione è pronta all’uso.
.
- AVVERTENZE
Ho provato ad utilizzare come macchina virtuale java, una serie e versione più recente della Sun, precisamente una della serie 1.5.x e una della 1.6.0. Se da un lato il programma parte e sembra funzionare regolarmente, con le versioni superiori alla serie 1.3.x 1.5.x ci sono delle problematiche irrisolte che impedisco l’utilizzo completo del programma rendendolo di fatto inidoneo allo scopo; tra gli altri appare un errore quando si preme su crea flusso:
Exception occurred during event dispatching:
java.lang.IllegalStateException: Attempt to mutate in notification
at javax.swing.text.AbstractDocument.writeLock(Unknown Source)
at javax.swing.text.AbstractDocument.remove(Unknown Source)
at sogei.BQJAA000.models.BaseDoc.checkLunghezza(BaseDoc.java:43)
at sogei.BQJAA000.models.StringaDoc.insertUpdate(StringaDoc.java:115)
at javax.swing.text.AbstractDocument.fireInsertUpdate(Unknown Source)
at javax.swing.text.AbstractDocument.handleInsertString(Unknown Source)
at javax.swing.text.AbstractDocument.insertString(Unknown Source)
at javax.swing.text.PlainDocument.insertString(Unknown Source)
at javax.swing.text.AbstractDocument.replace(Unknown Source)
at javax.swing.text.JTextComponent.replaceSelection(Unknown Source)
at javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at sogei.BQJBQ130.pannelli.FrmMain.AzioniMenu(FrmMain.java:285)
at sogei.BQJBQ130.pannelli.FrmMain$4.actionPerformed(FrmMain.java:611)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


