###################################################
# #
# HotelDruid non ha ALCUNA GARANZIA; vedere il #
# file COPYING per i dettagli. #
# #
###################################################

HOTELDRUID versione 3.0.5
Programma per la gestione di camere di hotel o di affitti
settimanali e giornalieri di appartamenti.

http://www.hoteldruid.com


SICUREZZA
Se hoteldruid viene utilizzato in un ambiente di rete non
sicuro e' consigliabile attivare la password dell'utente
amministratore ed eventualmente utilizzare connessioni ssl.
Non vi dovrebbero essere problemi se piu' computer accedono
contemporaneamente al database e gli utenti normali non
dovrebbero poter compiere azioni non consentitegli dai privilegi
loro assegnatigli.


ATTENZIONE
E' consigliabile custodire tutti i dati anche in modi piu'
sicuri e fare frequenti backup su file del database
utilizzando il sistema di backup di hoteldruid.


REQUISITI SOFTWARE
-apache (>=1.3.26) o altro web server che supporti php
-php (>=4.0.4) con estensione per postgresql, mysql o sqlite3
-postgresql (>=7.4.7) o mysql (>=4.1.11) o sqlite (>=3.7.9)
-un browser che supporti html 4.01 con encoding utf-8

Le versioni indicate sono quelle che sono state provate,
potrebbe funzionare anche su quelle anteriori. Il programma e'
stato provato solo su Linux, in teoria dovrebbe funzionare anche
su altri sistemi operativi che supportino i programmi
precedenti.
CONFIGURAZIONE DI APACHE: Apache deve avere il supporto per
php ed eseguire con esso le pagine con estensione .php. Cio'
normalmente e' gia' predisposto per php4, mentre per php3 si
dovrebbe aggiungere la riga:

AddType application/x-httpd-php3 .php

nei file di configurazione di Apache (httpd.conf o srm.conf).
CONFIGURAZIONE DI MYSQL: Per creare un utente in mysql
collegarsi al database mysql come root (comando
"mysql --user=root mysql") ed eseguire la query:

GRANT ALL PRIVILEGES on nomedatabase.* to utente@localhost IDENTIFIED BY 'pass';

sostituendo rispettivamente nomedatabase, utente e pass con i
vostri dati.
CONFIGURAZIONE DI POSTGRESQL: assicurarsi che il server
postgres sia avviato con l'opzione per permettere collegamenti
via TCP/IP (in Debian 9 porre "listen_addresses = 'localhost'"
in /etc/postgresql/x.x/main/postgresql.conf, in Red Hat 7.2 porre
"tcpip_socket = true" in /var/lib/pgsql/data/postgresql.conf).
Inoltre devono essere settati i permessi giusti nel file
pg_hba.conf (di solito vanno bene quelli di default). Per creare
un utente in postgresql utilizzare il comando
"createuser -d -P nome_utente" da utente postgres ("su postgres"
da root).
CONFIGURAZIONE DI SQLITE: il database sqlite in realtà è un file
che risiede nella cartella dati, quindi se si utilizza una
versione 5.3 o superiore di php non c'è bisogno di nessuna
configurazione speciale. Tra i dati per il collegamento al
database non c'è bisogno di inserire nome utente, password ed il
nome del server.


INSTALLAZIONE
Copiare la cartella hoteldruid sotto una directory
raggiungibile dal web (DocumentRoot nei file di configurazione
di apache), e puntare il browser su
http://localhost/hoteldruid/inizio.php (o dove avete
posizionato la cartella). La directory dati all'interno di
hoteldruid deve essere accessibile in scrittura dall'utente
con cui gira il server web (utente www-data in Debian), anche
dopo l'installazione. Quindi se si usa un servizio di hosting
potrebbe essere necessario cambiarli via ftp: per esempio con
cuteftp (win) o gftp (linux) connettersi e cliccare col tasto
destro sulla cartella dati sul server (colonna di destra),
scegliere l'opzione CHMOD e aggiungere i permessi di
scrittura (755 o 777).
Dopo la schermata iniziale, dove si potra' scegliere la linga
italiana, si dovranno inserire i dati per collegarsi al
database, alcuni dei quali sono gia' presenti con valori che
dovrebbero andar bene nella maggior parte dei casi. La password
e' necessaria solo se abilitata nel server postgres o mysql. In
Debian con php3 rispondere si alla domanda riguardante
l'estensione "pgsql.so". Dopo aver inserito i dati sugli
appartamenti (almeno il numero), si dovra' creare l'anno che si
intende gestire (si potranno in seguito aggiungere al periodo
scelto dei mesi alla fine ma non toglierne). Se esiste l'anno
precedente si possono importare eventuali prezzi e prenotazioni
riguardanti mesi in comune. Alla fine si arriva alla facciata
principale, che penso sia abbastanza intuitiva. Prima di poter
inserire delle prenotazioni si dovranno inserire i prezzi dei
relativi periodi.

Per la disinstallazione cancellare la directory hoteldruid
e distruggere il database creato (destroydb nomedatabase o
dropdb nomedatabase a seconda della versione per postgresql).


AGGIORNAMETO DA VERSIONI PRECEDENTI
Prima di aggiornare e' opportuno fare un backup del database
con il sistema di backup di hoteldruid e salvare il file
hoteld_backup.php, pena la PERDITA DI TUTTI I DATI! Controllare
anche che i nuovi requisiti software siano compatibili con
quelli attuali.
Lasciare nella cartella dove e' installato hoteldruid o
php-residence solo la cartella dati (sempre con i permessi di
scrittura per il web server), cacellando tutto il resto.
Copiarci poi i files della nuova versione (tranne la cartella
dati naturalmente) e PER PRIMA COSA accedere al menu' principale
(come utente amministratore se il login e' attivato) e premere
il tasto "aggiorna" attendendo che si finisca di caricare la
pagina. Se si usano moduli o temi aggiuntivi ricordarsi di
copiare anche essi con i files della nuova versione.
E' possibile passare dall'utilizzo di un database postgresql a
uno mysql o viceversa utilizzando il sistema di backup.

Se si utilizza sqlite come database, l'aggiornamento ad una nuova
versione non è supportato da versioni precedenti alla 2.0. Per
le versioni precedenti alla 2.0 si dovrà prima passare ad un
database mysql o postgresql con il sistema di backup.

Se si utilizza una versione di mysql inferiore alla 4.1 si
raccomanda di creare un file di backup prima di aggiornare mysql
ad una versione uguale o superiore alla 4.1 e di ripristinare
tale file subito dopo.

Per chi aggiorna da una versione precedente alla 1.1 i modelli
internet eventualmente presenti nelle loro posizioni predefinite
saranno rinominati. Ache file con i vecchi nomi che richiamano i
contenuti dei file con i nuovi nomi saranno creati , ma si
raccomanda di aggiornare i link nel resto del proprio sito per
farli puntare ai nuovi nomi.

Per chi aggiorna da una versione precedente alla 0.2 le cartelle
da lasciare sono datipermanenti e le cartelle degli anni, poi si
deve creare la cartella contr e trasferirvi i contratti
rinominandoli da contratto1.php a contr01.php, ecc.


CONSIGLI
-Utilizzare i tasti del browser per tornare indietro dopo la
visualizzazione di un documento.
-Inserire sempre numeri con al massimo 2 decimali come soldi.
Per separare i decimali si puo' utilizzare la virgola o il
punto, ma NON separare le migliaia.
-Se non si inserisce nessun metodo per l'assegnazione di un
appartamento in una prenotazione il programma assegnera'
automaticamente l' appartamento tenendo conto del numero di
persone e delle priorita' degli appartamenti (piu' bassa e' e
prima viene assegnato).
-Le prenotazioni gia' iniziate e quelle con orario di entrata
registrato vengono considerate fisse. Per spostare quelle gia'
iniziate viene offerta una opzione qunado si tenta di muoverle
in appartamenti non vuoti.
-La regola di assegnazione 1 puo' essere usata per appartamenti
riservati ad agenzie che devono essere informate in caso di
prenotazione.
-Con la regola di assegnazione 2 si puo' per esempio associare
una tariffa soprannominata "4 persone" agli appartamenti che
possono ospitare 4 persone.
-Se non si vuole che il programma assegni automaticamente
gli appartamenti basta assegnare sempre a tutte le
prenotazioni un appartamento fisso.
-Si puo' assegnare un prezzo diverso per ogni periodo anche se
nella pagina di inserimento prezzi ve ne sono solo 8 (se ne
inseriscono 8 alla volta).
-Se si opera tra 2 anni non creare il nuovo anno fino a quando
non inizia, ma continuare ad inserire le prenotazioni dell'
anno successivo dal menu' dell'anno corrente, eventualmente si
possono aggiungere i periodi necessari. Quando poi arriva il
nuovo anno crearlo importando le prenotazioni dall'anno
precedente (per fare cio' si devono utilizzare gli stessi tipi
di periodi dell'anno precedente e se i periodi sono
settimanali anche lo stesso giorno di inizio/fine settimana).
Si consiglia di lasciare attivata l'opzione in "configura e
personalizza" per creare il nuovo anno in automatico il 10
Gennaio.
-Per il nome degli appartamenti usare per esempio 07 o 007
invece di 7 per avere delle tabelle dei mesi ordinate.
-Il browser raccomandato per il back-office è mozilla firefox o
qualsiasi altro browser basato su mozilla (www.mozilla.org).
-Si possono aggiungere nuovi utenti disattivati e cambiare le
loro colonne selezionate nella pagina delle personalizzazioni
per avere profili diversi nella tabella con tutte le
prenotazioni.
-Se le stanze di solito vengono pulite il giorno prima
dell'arrivo dei clienti nella pagina della personalizzazioni si
puo' cambiare il momento in cui le prenotazioni vengono
considerate cominciate in modo che non vengano piu' spostate.
-Se si usa hoteldruid via internet, si puo' installarne una
copia anche sul computer di casa e subordinarla (da configura
--> interconnessioni) alla installazione su internet nel caso
in cui la connessione sia temporaneamente non disponibile.


INSERIMENTO DEI DOCUMENTI
Da "configura e personalizza", cliccando sul loro numero, si
possono editare i testi dei documenti da stampare, salvare o
inviare come email. I testi vanno inseriti in formato HTML, RTF,
o in testo semplice per spedire email. Dopo l'installazione di
hoteldruid saranno presenti alcuni esempi di documenti già
utilizzabili. Per inserire facilmente un documento RTF scrivete
prima il testo con il vostro programma preferito (per esempio
Word o OpenOffice), salvate il file in formato RTF e riapritelo
con un editor di testi, copiate poi tutto il testo ed
incollatelo nel documento.
Nei documenti si possono utilizzare delle variabili predefinite
che se vuote verranno sostituite da spazi da riempire. Le parti
di documento all'interno dei tag [r][/r] verranno ripetute per
ogni prenotazione (se i tag non sono presenti tutto il documento
verrà ripetuto). All'interno di queste parti si possono inserire
delle liste con i tag [r2][/r2] (per ospiti) o [r3][/r3] (per
costi aggiuntivi). Per esempio per la lista con i dati degli
ospiti le variabili finiscono tutte col suffisso "_ospite".
Alcune variabili disponibili che si possono inserire sono (la
lista completa è nella pagina di modifica dei documenti):

Dati del cliente:
[cognome] cognome
[nome] nome
[data_nascita] data di nascita
[il] 'il' (maschile) o 'la' (femminile)
[Il] 'Il' (maschile) o 'La' (femminile)
[al] 'al' (maschile) o 'alla' (femminile)
[e] 'e' (maschile) o 'a' (femminile)
[o] 'o' (maschile) o 'a' (femminile)
[Mr] '' (maschile) o 's' (femminile)
[nazione] nazione di provenienza
[citta] citta' di residenza
[via] via
[via2] come $via ma inserisce la parola via
davanti agli spazi se non e' definita
[numcivico] numero civico
[cap] codice di avviamento postale
[telefono] numero di telefono
[telefono2] secondo telefono
[telefono3] terzo telefono
[fax] numero di fax

Dati della prenotazione:
[num_persone] numero di persone
[n_letti_agg] letti aggiuntivi dei costi
[num_persone_tot] numero di persone + letti aggiuntivi
[costo_tot] prezzo totale
[caparra] caparra
[resto_caparra] prezzo totale - caparra
[data_inizio] data di arrivo
[data_fine] data di partenza
[nome_tariffa] nome della tariffa
[costo_tariffa] prezzo senza costi aggiuntivi e sconto
[sconto] sconto
[commento] commento
[unita_occupata] numero della camera o appartamento
[unita_assegnabili] lista delle camere o appartamenti
assegnabili, separati da virgole
[pagato] quanto e' stato pagato finora
[nome_costo_agg] nome del costo aggiuntivo, definito solo
all'interno delle ripetizioni dei costi
[valore_costo_agg] valore del costo aggiuntivo, definito
all'interno delle ripetizioni dei costi
[moltiplica_max_costo_agg] massimo numero per cui viene
moltiplicato un costo, definito solo
all'interno delle ripetizioni dei costi.
Se anche in ripetizione di un array dei
giorni, rappresenta il valore per cui il
costo è moltiplicato in quel giorno
[valore_giornaliero_max_costo_agg] massimo valore giornaliero
(non moltiplicato) di un costo, definito
solo all'interno delle ripetizioni dei
costi. Se anche in ripetizione di un
array dei giorni, rappresenta il valore
del costo in quel giorno (già
moltiplicato)
[tutti_i_costi_agg] lista con tutti i costi aggiuntivi con i
rispettivi valori
[nome_costo_agg_sel] nome del costo aggiuntivo selezionato
prima di vedere il documento
[valore_costo_agg_sel] valore del costo aggiuntivo selezionato
prima di vedere il documento
[oggi] data odierna
[costo_tot_p], come i precedenti senza _p finale ma
[caparra_p],[pagato_p], formattati con punti e virgole per
[resto_caparra_p], decimali e migliaia
[costo_tariffa_p],
[sconto_p],
[tutti_i_costi_agg_p],
[valore_costo_agg_sel_p]

[errore_ripetizione] quando non nulla la prenotazione
corrente non viene aggiunta al documento
[email_gia_inviata] 1 se una email con stesso oggetto è già
stata inviata al cliente, 0 altrimenti
[messaggio_di_errore] quando non nulla il suo contenuto viene
mostrato al posto del documento

Inoltre si possono creare delle variabili personalizzate del
tipo [var] o anche array del tipo [var1(var2)]. Per assegnare ad
un array un valore fisso all'interno del documento si può usare
la notazione [var1('valore')].


PAGINE PER IL SITO WEB
E' possibile creare delle pagine da inserire in un sito
internet, per esempio per permettere ai visitatori di
controllare la disponibilita' ed eventualmente richiedere di
prenotare via email. Si accede alla creazione delle pagine da
"Configura e personalizza".
I files possono essere creati direttamente nella loro posizione
finale impostando la directory dove vengono creati in "configura
e personalizza". In questo modo la pagine verranno
automaticamente aggiornate quando si crea un nuovo anno o quando
si aggiorna il database. Se si sposta la pagina su un altro sito
web (sempre con supporto per php), questa dovrà potere accedere
comunque al database con i dati forniti al momento della sua
creazione.
Si puo' inserire l'html all'inizio e alla fine del file, potendo
cosi' per esempio racchiudere la form di disponibilita' in una
tabella o all'interno della struttura di una pagina del proprio
sito. Ricreando il file si possono modificare tutte le opzioni e
le frasi della form inserite in precedenza.
Le pagine per il sito web possono essere visualizzate in
modalità frame aggiungedo ?framed=1 alla loro URL, in questo
modo verrà mostrata una versione semplificata della pagina
personalizzabile con un file css esterno. Questa modalità può
essere utilizzata per esempio per avviare le richieste di
disponibilità in un riquadro (iframe) all'interno di altre
pagine del sito. Se si aggiunge anche &blank=1 alla URL la form
si aprirà in una nuova finestra.


GESTIONE UTENTI
Si puo' accede alla gestione degli utenti dalla pagina "Configura
e personalizza". Nuovi utenti possono essere utilizzati per dare
accesso diretto ad agenzie da parte del proprietario, o da una
agenzia per dare la possibilita ai proprietari di controllare la
disponibilita e bloccare periodi.
Si possono limitare gli appartamenti che un utente puo'
utilizzare in due modi: o facendo in modo che possa inserire
prenotazioni solo nei periodi selezionati della regola di
assegnazione 1, oppure facendo in modo che possa utilizzare solo
tariffe abbinate a determinati appartamenti tramite la regola di
assegnazione 2 e che non possa ne' inserire ne' modificare
l'assegnazione degli appartamenti.
Se viene dimenticata la password dell'utente amministratore si
puo' cancellare il file abilita_login all'interno della directory
dati, in questo modo verra' disabilitato il login iniziale e
chiunque potra' accedere con i privilegi dell'utente
amministratore.


RINGRAZIAMENTI
Grazie a Stan Khodjaev di icojam.com per aver rilasciato i set di
icone "Marmalade", "Blue Bits" e "Blueberry" nel dominio pubblico.


LICENZA D'USO
Vedere il file COPYING.


AUTORE
Marco M. F. De Santis
Email: marco@digitaldruid.net