[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 544.   SQL-Ledger: introduzione

SQL-Ledger (1) è un applicativo per la gestione di una contabilità, realizzato in forma di programmi CGI Perl (capitolo 237) e basato su una base di dati PostgreSQL (parte lxxix), o eventualmente Oracle.

L'installazione e l'uso di questo applicativo sono relativamente semplici, purché si sappia configurare PostgreSQL; in particolare, l'accesso attraverso programmi CGI rende il tutto molto pratico. L'unico difetto dell'applicativo sta nella sua estrema semplicità sul piano contabile, che dovrebbe consentirgli di essere compatibile con qualunque tipo di contabilità in partita doppia, ma che manca di dettagli richiesti dalla normativa italiana. Tuttavia, volendo, l'adattamento alle esigenze italiane dovrebbe essere possibile senza troppe difficoltà, proprio per la sua struttura semplificata. Per la precisione, ciò che di significativo manca a questo applicativo è una stampa del libro giornale e dei registri IVA secondo la forma prevista.

Nonostante le carenze che può avere SQL-Ledger, si tratta comunque di un programma importante, che allo stato attuale può essere utilizzato almeno nella didattica.

544.1   Preparazione di PostgreSQL

Prima di pensare all'installazione e configurazione di SQL-Ledger è necessario predisporre PostgreSQL e un servente HTTP in grado di eseguire programmi CGI. Generalmente, il servente HTTP viene messo in funzione nello stesso elaboratore che ospita PostgreSQL con le basi di dati, pertanto è sufficiente garantire l'accesso alle basi di dati dallo stesso elaboratore locale.

È necessario definire un utente nell'ambito della gestione di PostgreSQL (non serve che questo utente esista anche per il sistema operativo), a cui sia concesso di creare delle basi di dati. Di solito si agisce così:

su postgres[Invio]

createuser -d sql-ledger[Invio]

Shall the new user be allowed to create new users? (y/n) n[Invio]

CREATE USER

L'opzione -d serve esattamente per concedere all'utente di creare delle basi di dati, mentre come si vede dall'esempio, si evita di dare a questo utente la facoltà di creare altri utenti. Il nome attribuito all'utente è libero, ma la scelta di sql-ledger è conforme agli esempi della documentazione originale.

Dal momento che l'accesso alle basi di dati avviene normalmente nell'ambito dello stesso elaboratore locale, di solito non conviene attribuire all'utente una parla d'ordine o altre limitazioni di accesso. Eventualmente si deve avere cura che l'accesso non sia consentito dall'esterno.

Si può verificare di avere creato l'utente sql-ledger con l'aiuto di psql, aprendo la base di dati template1:

psql template1 sql-ledger[Invio]

Welcome to psql 7.3.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

template1=> 

In questo caso tutto è andato bene e basta concludere con il comando \q:

template1=> \q[Invio]

544.2   Installazione di SQL-Ledger

È probabile che la propria distribuzione GNU/Linux non disponga di un pacchetto già pronto per SQL-Ledger, tuttavia la sua installazione è relativamente semplice, anche partendo dal pacchetto originale scaricato seguendo i riferimenti che partono da sito di questo progetto: <http://www.sql-ledger.org>.

Supponendo di avere scaricato il file sql-ledger-2.0.9.tar.gz nella directory /tmp/, volendo installare il pacchetto a partire dalla directory /opt/, si può procedere nel modo seguente:

cd /opt[Invio]

tar xzvf /tmp/sql-ledger-2.0.9.tar.gz[Invio]

Si ottiene la directory /opt/sql-ledger/, all'interno della quale si trova il file sql-ledger.conf.default, che va copiato in modo da ottenere il file sql-ledger.conf, che eventualmente può essere modificato (normalmente non c'è questa necessità):

cd /opt/sql-ledger[Invio]

cp sql-ledger.conf.default sql-ledger.conf[Invio]

Infine, occorre cambiare la proprietà di alcune directory contenute a partire da /opt/sql-ledger/, in modo da consentire l'accesso al programma che offre il servizio HTTP (il servente HTTP), che è indispensabile per interagire con SQL-Ledger.

Bisogna controllare qual è il nome dell'utente e del gruppo usati dal programma che funziona come servente HTTP. In una distribuzione GNU/Linux Debian si tratta di www-data, sia l'utente, sia il gruppo:

cd /opt/sql-ledger[Invio]

chown -R www-data:www-data users[Invio]

chown -R www-data:www-data templates[Invio]

Non è indispensabile che la directory che contiene SQL-Ledger si chiami esattamente sql-ledger/; inoltre, non esiste il problema di inserire il percorso degli eseguibili nella variabile di ambiente PATH, perché l'avvio dei programmi è compito del servente HTTP. Si osservi inoltre che, essendo il programma scritto in Perl, non richiede la compilazione, pertanto, «sorgente» ed «eseguibile» sono la stessa cosa.

544.3   Configurazione del servente HTTP

Il servente HTTP deve essere configurato in modo di poter raggiungere i programmi CGI che compongono SQL-Ledger. Si tratta di definire un percorso virtuale, dove per esempio http://localhost/sql-ledger/ deve corrispondere alla directory reale /opt/sql-ledger/ e i file con estensione .pl vanno intesi essere programmi CGI.

Quando si utilizza il servente HTTP Apache, è necessario modificare il file httpd.conf (capitolo 234). Le istruzioni da aggiungere sono quelle seguenti:

Alias /sql-ledger/ /opt/sql-ledger/
<Directory /opt/sql-ledger>
    AddHandler cgi-script .pl
    Options ExecCGI Includes FollowSymlinks
</Directory>
 
<Directory /opt/sql-ledger/users>
    Order Deny,Allow
    Deny from All
</Directory>

Se si dispone di un servente HTTP diverso, che non consente di associare un'estensione all'avvio di programmi CGI, dovrebbe essere sufficiente specificare che la directory /opt/sql-ledger/, associata al percorso http://localhost/sql-ledger/ è da considerarsi l'inizio di una serie di programmi CGI. L'estratto seguente rappresenta la direttiva da aggiungere alla configurazione di Boa, nel file boa.conf (capitolo 235):

ScriptAlias /sql-ledger/ /opt/sql-ledger/

Naturalmente, la configurazione va cambiata in modo coerente con la posizione effettiva in cui è stato installato SQL-Ledger e con il percorso che si vuole usare per accedervi.

Se tutto è stato fatto in modo corretto, a questo punto è possibile consultare l'indirizzo http://localhost/sql-ledger/admin.pl.

544.4   Amministrazione

Come qualunque programma per la gestione di una contabilità, SQL-Ledger richiede la definizione dei dati su cui lavorare. Questa e altre funzioni amministrative si raggiungono attraverso l'indirizzo http://nodo/sql-ledger/admin.pl (se si lavora sullo stesso elaboratore locale, il nodo è localhost). Si può usare qualunque programma di navigazione; qui si mostrano esempi senza grafica:

                                     [IMG]

                                 Version 2.0.9

                                 Administration

                    Password _____________________ [ Login ] 

                               SQL-Ledger website

Inizialmente l'amministratore di SQL-Ledger non dispone di alcuna parola d'ordine, pertanto basta confermare selezionando il pulsante grafico <Login>.

                      SQL-Ledger Accounting Administration                    
     Login     Name     Company     Driver     Host    Dataset    Templates   
     ----------------------------------------------------------------------   

   [ Add User ] [ Change Admin Password ] [ Pg Database Administration ]
   Click on login name to edit!
   To add a user to a group edit a name, change the login name and save. A
   new user with the same variables will then be saved under the new login
   name.

                          SQL-Ledger Accounting Login                         
       Name _____________________                                             
   Password _____________________ [ Login ]                                   

Come si vede dall'esempio, ciò che appare è una pagina da cui è possibile accedere a funzionalità amministrative, come per esempio il cambiamento della parola d'ordine dell'amministratore di SQL-Ledger.

La contabilità gestita con SQL-Ledger è divisa in basi di dati distinte, all'interno di ognuna delle quali si può gestire la contabilità di un'azienda particolare. Tuttavia, l'accesso alla base di dati di una certa azienda richiede l'abbinamento di un utente. In pratica, l'utente di SQL-Ledger viene associato a una base di dati particolare, in modo tale che quando questo utente si identifica, raggiunga in modo automatico la gestione che lo riguarda. Per poter eliminare una base di dati che non serve più, è necessario togliere l'abbinamento con l'utente.

Sia chiaro che queste utenze non hanno nulla a che vedere con quelle di un sistema Unix. Così come per l'amministratore, anche gli utenti che poi si abbinano alle basi di dati sono relativi soltanto a SQL-Ledger. Si osservi anche che l'utente creato per PostgreSQL è ancora qualcosa di diverso, che comunque viene abbinato agli utenti di SQL-Ledger, per sapere con quale identità presentarsi durante le interrogazioni delle basi di dati.

Selezionando il pulsante grafico <Pg Database Administration> si accede a una maschera come quella seguente, che in parte potrebbe apparire già compilata:

SQL-Ledger Accounting / Database Administration

                                   Database                            
               Host __________________________     Port ______         
               User sql-ledger_                Password ___________    
         Connect to template1__                                        
                                                                       
           ---------------------------------------------------------   
                                                                       
         [ Create Dataset ] [ Update Dataset ] [ Delete Dataset ]      

   This is a preliminary check for existing sources. Nothing will be created
                           or deleted at this stage!
        Leave host and port field empty unless you want to make a remote
                                  connection.

Di solito i dati sono corretti: il nome del nodo non viene inserito perché si intende normalmente che il collegamento con PostgreSQL avvenga presso l'elaboratore locale (ovviamente, per «locale» si intende rispetto ai programmi CGI), senza bisogno di utilizzare i protocolli di rete, così nemmeno la porta viene specificata; l'utente da usare per la comunicazione con PostgreSQL è normalmente sql-ledger; ci si collega alla basi di dati template1 per poterne creare delle altre.

Nei pulsanti grafici appare la parola dataset, che vuole fare riferimento all'insieme di dati della contabilità di un'azienda, cosa che in pratica è costituita da una basi di dati. Inizialmente si deve creare una di queste basi di dati, selezionando il pulsante grafico <Create Dataset>:

SQL-Ledger Accounting Database Administration / Create Dataset

                                        
       Existing Datasets [template1]
          Create Dataset _____________________                                         
      Multibyte Encoding [___________________________]                                 
                          [ ] Default         [ ] Austria
                          [ ] Belgium         [ ] Brazil_General    
                          [ ] Canada_General  [ ] Czech_Republic
                          [ ] Danish_Default  [ ] Dutch_Default
Create Chart of Accounts  [ ] Dutch_Standard  [ ] France
                          [ ] German-Sample   [ ] Germany-DATEV-SKR03
                          [ ] Germany-SKR03   [ ] Italy
                          [ ] Latvia          [ ] Poland
                          [ ] Simplified_Chinese_Default
                          [ ] Spain           [ ] Swiss-German
                          [ ] Traditional_Chinese_Default
                          [ ] US_General                  
                   
[ Continue ]       

Inizialmente potrebbe apparire una maschera come quella dell'esempio. In questa fase l'amministratore deve decidere un nome da dare a questo insieme di dati, quindi deve scegliere la codifica, tenendo conto che questa deve essere compatibile con il modello che poi seleziona sotto.

La basi di dati che viene creata per la contabilità che si vuole gestire, viene popolata con dei dati iniziali, ottenuti da file contenuti nella sottodirectory sql/. Si seleziona uno di questi file alla voce {Create Chart of Accounts}. Il file scelto può essere stato scritto secondo una codifica particolare e in questo deve essere coerente la scelta che si fa della codifica. Il modello iniziale previsto per la gestione italiana potrebbe essere stato scritto usando la codifica ISO 8859-1, oppure UTF-8; in ogni caso occorre verificare.

A titolo di esempio si crea l'insieme di dati prova con la codifica UTF-8, utilizzando il modello previsto per l'Italia:

SQL-Ledger Accounting Database Administration / Create Dataset

                                        
       Existing Datasets [template1]
          Create Dataset prova________________                                         
      Multibyte Encoding [UTF-8_______________________]                                 
                          [ ] Default         [ ] Austria
                          [ ] Belgium         [ ] Brazil_General    
                          [ ] Canada_General  [ ] Czech_Republic
                          [ ] Danish_Default  [ ] Dutch_Default
Create Chart of Accounts  [ ] Dutch_Standard  [ ] France
                          [ ] German-Sample   [ ] Germany-DATEV-SKR03
                          [ ] Germany-SKR03   [X] Italy
                          [ ] Latvia          [ ] Poland
                          [ ] Simplified_Chinese_Default
                          [ ] Spain           [ ] Swiss-German
                          [ ] Traditional_Chinese_Default
                          [ ] US_General                  
                   
[ Continue ]       

Una volta creato l'insieme dei dati, si può passare alla creazione di un utente che poi deve utilizzarlo. Si accede a questa funzione dalla maschera iniziale dove si deve selezionare il pulsante grafico <Add User>. La maschera che si ottiene è molto lunga:

                SQL-Ledger Accounting Administration / Add User
    Login pippo________________                        Date [dd/mm/yy__]
 Password _________                           Format Number [1000,00_]
     Name Pippo___________            Format Dropdown Limit 200_________________
   E-mail __________________________               Language [Italian___________] 
Signature __________________________          Character Set ____________________
          __________________________             Stylesheet sql-ledger.css______
          __________________________                Printer lpr -Plp____________
    Phone _______________                          Ship via ________________
      Fax _______________                 Use New Templates pippo_______________
  Company __________________________        Setup Templates [default___________]
  Address __________________________
          __________________________
          __________________________
          __________________________

                                    Database
 Driver [X]  Pg         Host _____________________ 
Dataset prova______     Port _____                 
   User sql-ledger_ Password ___________           
  ----------------------------------------------------------------------------
                                 Access Control
[ ]  Administrator                             
[X]  AR                              [X]  Add Transaction              
                                     [X]  Sales Invoice                
                                     [X]  Reports                      
                                     [X]  Reports--Transactions        
                                     [X]  Reports--AR Aging            
                                     [X]  Reports--Tax collected       
                                     [X]  Customers                    
                                     [X]  Customers--Add Customer      
                                     [X]  Customers--Reports           
[X]  AP                              [X]  Add Transaction              
                                     [X]  Vendor Invoice               
                                     [X]  Reports                      
                                     [X]  Reports--Transactions        
                                     [X]  Reports--AP Aging            
                                     [X]  Reports--Tax paid            
                                     [X]  Vendors                      
                                     [X]  Vendors--Add Vendor          
                                     [X]  Vendors--Reports             
[X]  Cash                            [X]  Receipt                      
                                     [X]  Payment                      
                                     [X]  Reports                      
                                     [X]  Reports--Receipts            
                                     [X]  Reports--Payments            
                                     [X]  Reconciliation               
[X]  Order Entry                     [X]  Sales Order                  
                                     [X]  Purchase Order               
                                     [X]  Reports                      
                                     [X]  Reports--Sales Orders        
                                     [X]  Reports--Purchase Orders     
[X]  General Ledger                  [X]  Add Transaction              
                                     [X]  Reports                      
[X]  Goods & Services                [X]  Add Part                     
                                     [X]  Add Service                  
                                     [X]  Add Assembly                 
                                     [X]  Add Group                    
                                     [X]  Stock Assembly               
                                     [X]  Reports                      
                                     [X]  Reports--Parts               
                                     [X]  Reports--Services            
                                     [X]  Reports--Assemblies          
                                     [X]  Reports--Groups              
[X]  Projects                        [X]  Add Project                  
                                     [X]  Reports                      
[X]  Reports                         [X]  Chart of Accounts            
                                     [X]  Trial Balance                
                                     [X]  Income Statement             
                                     [X]  Balance Sheet                
[X]  System                          [X]  Chart of Accounts            
                                     [X]  Chart of Accounts--Add Account                           
                                     [X]  Chart of Accounts--List Accounts                          
                                     [X]  Chart of Accounts--Add GIFI  
                                     [X]  Chart of Accounts--List GIFI 
                                     [X]  HTML Templates               
                                     [X]  HTML Templates--Income Statement                         
                                     [X]  HTML Templates--Balance Sheet                             
                                     [X]  HTML Templates--Invoice      
                                     [X]  HTML Templates--Packing List 
                                     [X]  HTML Templates--Sales Order  
                                     [X]  HTML Templates--Purchase Order                             
                                     [X]  HTML Templates--Statement    
                                     [X]  LaTeX Templates              
                                     [X]  LaTeX Templates--Invoice     
                                     [X]  LaTeX Templates--Packing List                              
                                     [X]  LaTeX Templates--Sales Order 
                                     [X]  LaTeX Templates--Purchase Order                             
                                     [X]  LaTeX Templates--Statement   
                                     [X]  LaTeX Templates--Check       
                                     [X]  LaTeX Templates--Receipt     
                                     [X]  Stylesheet                   
                                     [X]  Backup                       
                                     [X]  Backup--Send by E-Mail       
                                     [X]  Backup--Save to File         
                                     [X]  Audit Control                
                                     [X]  Preferences                  
[X]  Version                                   
[X]  Logout                                    


   [ Save ]

Nell'esempio, la maschera viene compilata nel modo più semplice possibile, per creare l'utente pippo, con la selezione di ciò che riguarda le convenzioni italiane (il linguaggio, la forma della data, la forma dei numeri). Più o meno al centro, si seleziona il tipo di accesso alle basi di dati ({Pg} sta per PostgreSQL), l'insieme dei dati (prova), l'utente da usare per le comunicazioni con PostgreSQL. Nella parte inferiore si stabilisce cosa può fare l'utente pippo; in questo caso può fare tutto, senza però essere un amministratore.

Si intuisce che è possibile creare altri utenti associati sempre allo stesso insieme di dati, con funzionalità più limitate.

Tra le indicazioni che riguardano l'utente è molto importante specificare il comando di stampa, eventualmente con le opzioni necessarie a raggiungere la stampante corretta. Comunque, la possibilità effettiva di stampare dipende dalla presenza di LaTeX e dei comandi consueti che consentono di ottenere file PostScript e PDF a partire da un sorgente LaTeX. Eventualmente, si osservino le annotazioni che appaiono nel file di configurazione predefinito di SQL-Ledger.

Al termine appare la maschera di accesso alle funzionalità amministrative, con l'elenco aggiornato degli utenti esistenti:

                      SQL-Ledger Accounting Administration                    
    Login    Name    Company    Driver       Host      Dataset    Templates   
   pippo    Pippo              Pg        localhost    prova      pippo        
     ----------------------------------------------------------------------   

   [ Add User ] [ Change Admin Password ] [ Pg Database Administration ]
   Click on login name to edit!
   To add a user to a group edit a name, change the login name and save. A
   new user with the same variables will then be saved under the new login
   name.

                          SQL-Ledger Accounting Login                         
       Name _____________________                                             
   Password _____________________ [ Login ]                                   

Si può notare nell'ultima colonna che elenca i clienti la voce {Templates}. In questo caso, si intende che l'utente pippo dispone di modelli personalizzati nella directory templates/pippo/, ottenuti inizialmente da una copia di quelli standard.

Al termine, si può provare ad accedere all'indirizzo http://nodo/sql-ledger/login.pl, identificandosi come utente pippo:

                  .------------------------------------------.
                  |                  [IMG]                   |
                  |                                          |
                  |              Version 2.0.9               |
                  |                                          |
                  |     Name pippo__________________________ |
                  | Password _______________________________ |
                  |                                          |
                  |                [ Login ]                 |
                  `------------------------------------------'

Si ottiene un menù. Si osservi che il programma di navigazione deve essere in grado di gestire la suddivisione in riquadri (frame), dal momento che il menù continua ad apparire in una cornice sul lato sinistro.

544.5   Riferimenti

Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) SQL-Ledger   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome sql_ledger_introduzione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!