|
#!/bin/bash
|
|
|
|
|
|
# Setup script fuer die Nutzung der fancy-LaTeX Umgebung oder
|
|
# der Label-Print erweiterung (lp) in LX-Office-erp.
|
|
# Welches Setup ist von der Position innerhalb des Dateisystems abhaengig.
|
|
# Das Script kann auch nach erfolgtem Setup erneut aufgerufen werden
|
|
|
|
# see ./setup.sh -h
|
|
|
|
|
|
|
|
|
|
|
|
# Revision 0.2 (13.02.2011) add lp
|
|
# setup add determination of company data
|
|
# Revision 0.1 (19.12.2010) initial script create
|
|
|
|
|
|
# config
|
|
|
|
DB_AUTH='../../config/lx_office.conf'
|
|
|
|
FILE_LIST_FTEX='
|
|
letter.tex
|
|
sample.lco
|
|
sample_head.pdf
|
|
translations.tex
|
|
xstring.sty
|
|
zwischensumme.sty
|
|
'
|
|
|
|
FILE_LIST_LP='
|
|
label_abs_a7_de.tex
|
|
label_nn_brief_a4_de.tex
|
|
zweckform_3427.tdf
|
|
zweckform_3483.tdf
|
|
'
|
|
|
|
|
|
DOC_TYPE_FTEX='
|
|
invoice
|
|
proforma
|
|
sales_quotation
|
|
sales_order
|
|
sales_delivery_order
|
|
credit_note
|
|
pick_list
|
|
purchase_order
|
|
'
|
|
|
|
|
|
LXO_DETERMINE='
|
|
../../SL/Form.pm
|
|
../../config/lx_office.conf.default
|
|
../../doc/changelog
|
|
'
|
|
|
|
CHK_RAWNUMBER_PATCH='
|
|
../../SL/DO.pm
|
|
../../SL/IS.pm
|
|
../../SL/OE.pm
|
|
'
|
|
|
|
MY_DATA='
|
|
employeecountry
|
|
labelcompanyname
|
|
labelbankname
|
|
labelbankcode
|
|
labelbankaccount
|
|
MYfromname
|
|
MYaddrsecrow
|
|
MYrechtsform
|
|
MYfromaddress
|
|
MYfromphone
|
|
MYfromfax
|
|
MYfromemail
|
|
MYsignature
|
|
MYustid
|
|
MYfrombank
|
|
'
|
|
|
|
BASE_DIR=`readlink -f $0 | sed 's/setup\.sh$//'`
|
|
|
|
MODUL=`basename ${BASE_DIR}`
|
|
export TEXINPUTS=".:${BASE_DIR}:"
|
|
|
|
OK='...... [ok]'
|
|
MARK='\033[1;34m'
|
|
UNMARK='\033[0m'
|
|
TIME=`date +%s`
|
|
|
|
USAGE="\n\n setup LaTeX templates for lx-office erp (www.lx-office.org)
|
|
\n\n USAGE: ./`basename $0` [OPTION] \n
|
|
\n
|
|
-h print this Help\n
|
|
\n
|
|
\n
|
|
OPTIONS for trouble shooting:\n\n
|
|
-D don't connect to any database\n
|
|
-C no colored output (don't use any terminal escape character)\n
|
|
\n\n
|
|
RECOMMENDED USE ./setup.sh
|
|
|
|
\n
|
|
"
|
|
|
|
# script control
|
|
|
|
DATABASE=1
|
|
|
|
while getopts "hDC" flag
|
|
do
|
|
case $flag in
|
|
h)
|
|
echo -e ${USAGE}
|
|
exit
|
|
;;
|
|
D)
|
|
DATABASE=0
|
|
;;
|
|
C)
|
|
NO_COLOR=1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Disclaim
|
|
|
|
cat << EOD
|
|
|
|
##########################################################################
|
|
# Disclaimer #
|
|
##########################################################################
|
|
# #
|
|
# Dies ist ein Script zum Einrichten von LaTeX Templates #
|
|
# (fancy-latex (f-tex)) oder (label-print (lp) fuer #
|
|
# #
|
|
# lx-office erp (www.lx-erp.org) #
|
|
# #
|
|
# Obwohl LX-Office sich an deutschsprachige Anwender richtet ist dieses #
|
|
# Script in Englisch und soll auch nicht uebersetzt werden. #
|
|
# #
|
|
# * es richtet sich an System-Administratoren #
|
|
# * da es das Script nur in einer Sprache gibt, ist es viel leichter #
|
|
# bei Fehlern und Fehlermeldungen aus dem Script selbst, im Internet #
|
|
# nach Loesungen zu suchen. #
|
|
# #
|
|
##########################################################################
|
|
# #
|
|
# This script provides an easy to use setup for the fancy LaTeX #
|
|
# environment of lx-office erp (templates/f-tex) #
|
|
# #
|
|
# Normal use is to run ./setup.sh without any parameter. You may also #
|
|
# check #
|
|
# ./setup.sh -h #
|
|
# for help. #
|
|
# #
|
|
# The script tries to be as save as possible to avoid unwanted file #
|
|
# overwriting by being very interactive. It's designed to be invoked #
|
|
# multiple times inside the same template directory. So it is possible #
|
|
# to rerun the script if there are updates available or after you break #
|
|
# your LaTeX templates by any changes. #
|
|
# #
|
|
# I recommend to backup your installation and database before you run #
|
|
# this script. #
|
|
# #
|
|
# ANYHOW: I do not take responsibility for any harm initiated by this #
|
|
# script. (Wulf Coulmann -- scripts_at_gpl.coulmann.de) #
|
|
# #
|
|
##########################################################################
|
|
|
|
|
|
EOD
|
|
|
|
QUESTION=' I understand the above warnings [YES/NO/Q]:'
|
|
|
|
echo -n "${QUESTION} "
|
|
|
|
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read ANSWER
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
|
|
|
|
until [ "${ANSWER}" = YES ]\
|
|
|| [ "${ANSWER}" = NO ] \
|
|
|| [ "${ANSWER}" = N ] \
|
|
|| [ "${ANSWER}" = n ] \
|
|
|| [ "${ANSWER}" = q ] \
|
|
|| [ "${ANSWER}" = Q ] ; do
|
|
echo -n "${QUESTION} "
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read ANSWER
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
done
|
|
|
|
case ${ANSWER} in
|
|
YES)
|
|
echo -n ' accepted'
|
|
;;
|
|
NO|n|N|q|Q)
|
|
echo
|
|
echo ' script aborted by user input'
|
|
exit 72
|
|
;;
|
|
esac
|
|
|
|
|
|
FEEDBACK='################################\n # FEEDBACK:\n
|
|
'
|
|
|
|
|
|
# load functions
|
|
|
|
function error {
|
|
echo '[error]' ...... $1 ...... '[terminate script]'
|
|
exit 72
|
|
}
|
|
|
|
function mark {
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${MARK}"
|
|
echo -n "${1}"
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
}
|
|
|
|
|
|
|
|
function ask_yn {
|
|
local QUESTION=$1
|
|
until [ "${ANSWER}" = y ]\
|
|
|| [ "${ANSWER}" = Y ] \
|
|
|| [ "${ANSWER}" = j ] \
|
|
|| [ "${ANSWER}" = J ] \
|
|
|| [ "${ANSWER}" = n ] \
|
|
|| [ "${ANSWER}" = N ] \
|
|
|| [ "${ANSWER}" = Q ] \
|
|
|| [ "${ANSWER}" = q ] ; do
|
|
echo -n "${QUESTION}"
|
|
read ANSWER
|
|
done
|
|
|
|
case ${ANSWER} in
|
|
y|Y|j|J)
|
|
return
|
|
;;
|
|
n|N)
|
|
return
|
|
;;
|
|
q|Q)
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
echo
|
|
echo ' script aborted by user input'
|
|
exit 72
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function latex_pack_check {
|
|
echo ' -> search LaTeX package '$1' '
|
|
echo -n ' '
|
|
if [ ! `kpsewhich ${1}.sty` ] ; then
|
|
echo
|
|
echo " can't find package ${1}"
|
|
echo " on debian systems you may install apt-file"
|
|
echo " aptitude install apt-file"
|
|
echo " apt-file update"
|
|
echo " apt-file search ${1}.sty"
|
|
echo " this will show which package contains the needet LaTeX .sty file"
|
|
echo " on other systems, please refer to their documentation on how to "
|
|
echo " find matching packages."
|
|
echo
|
|
echo " If you are done, rerun this script"
|
|
echo " [unsatisfied dependencies]' ...... ${1} ...... [terminate script]"
|
|
exit 72
|
|
else
|
|
echo \ \ ${OK}
|
|
fi
|
|
|
|
}
|
|
|
|
function check_accepted_names {
|
|
echo ' -> check for suspect characters in '${2}
|
|
echo -n ${1} | egrep '[^-_\.!A-Za-z0-9]' && echo ' [suspect characters found] in ... '${2}' ... [terminate script]' && exit 72
|
|
}
|
|
|
|
function check_int {
|
|
echo ' -> check for suspect characters in '${2}
|
|
echo -n ${1} | egrep '[^0-9]' && echo ' [suspect characters found] in ... '${2}' ... [terminate script]' && exit 72
|
|
}
|
|
|
|
function create_file {
|
|
ANSWER=0
|
|
if [ "${1}" = ln ] ;then
|
|
DO=1
|
|
echo -n ' -> try to create symbolic link '${3}
|
|
if [ -e "${3}" ] ; then
|
|
if [ -L "${3}" ] ; then
|
|
if [ "`ls -l ${3} | awk '{print $10}'`" = "${2}" ]; then
|
|
echo ' ... symbolic link already exists, nothing to do!'
|
|
DO=0
|
|
else
|
|
echo ' ... symbolic link with different target exist!'
|
|
ls -lah "${3}"
|
|
echo ' you may'
|
|
echo ' [d] delete and replace the current link'
|
|
echo ' [m] move current link to '${3}.${TIME}.old
|
|
echo ' [s] skip -- leave it as it is'
|
|
echo ' [q] abort setup.sh'
|
|
QUESTION=' what do do? [d/m/s/q]: '
|
|
echo -en ${QUESTION}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read ANSWER
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
until [ "${ANSWER}" = D ] \
|
|
|| [ "${ANSWER}" = d ] \
|
|
|| [ "${ANSWER}" = m ] \
|
|
|| [ "${ANSWER}" = s ] \
|
|
|| [ "${ANSWER}" = q ] ; do
|
|
echo -n "${QUESTION}"
|
|
read ANSWER
|
|
done
|
|
|
|
case ${ANSWER} in
|
|
d)
|
|
rm -f ${3} || error ' unable to delete symbolic link '${3}
|
|
;;
|
|
m)
|
|
mv -f ${3} ${3}.${TIME}.old || error ' unable to move symbolic link '${3}
|
|
;;
|
|
s)
|
|
echo ' as you decide, we leave it as it is!'
|
|
DO=0
|
|
;;
|
|
q)
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
echo
|
|
echo ' script aborted by user input'
|
|
exit 72
|
|
;;
|
|
esac
|
|
fi
|
|
else
|
|
echo ' ... file already exists where I tried to create a symbolic link!'
|
|
ls -lah "${3}"
|
|
echo ' you may'
|
|
echo ' [S] show the file (exit file display with "q")'
|
|
echo ' [m] move current file to '${3}.${TIME}.old
|
|
echo ' [d] delete and replace the file with symbolic link'
|
|
echo ' [s] skip -- leave it as it is'
|
|
echo ' [q] abort setup.sh'
|
|
QUESTION='what to do? [S/d/m/s/q]:'
|
|
echo -en " ${QUESTION} "
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read ANSWER
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
until [ "${ANSWER}" = S ] \
|
|
|| [ "${ANSWER}" = d ] \
|
|
|| [ "${ANSWER}" = m ] \
|
|
|| [ "${ANSWER}" = s ] \
|
|
|| [ "${ANSWER}" = q ] ; do
|
|
echo -n " ${QUESTION} "
|
|
read ANSWER
|
|
done
|
|
|
|
case ${ANSWER} in
|
|
S)
|
|
echo
|
|
echo
|
|
less "${3}"
|
|
echo
|
|
echo
|
|
create_file "${1}" "${2}" "${3}"
|
|
return
|
|
;;
|
|
m)
|
|
mv -f ${3} ${3}.${TIME}.old || error ' unable to move file '${3}
|
|
;;
|
|
d)
|
|
rm -f ${3} || error ' unable to delete file '${3}
|
|
;;
|
|
s)
|
|
echo ' as you decide, we leave it as it is!'
|
|
DO=0
|
|
;;
|
|
q)
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
echo
|
|
echo ' script aborted by user input'
|
|
exit 72
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|
|
if [ "${DO}" = "1" ] ;then ln -s "${2}" "${3}" || error ' failed to create symbolic link '${3} ; fi
|
|
[ "${DO}" = "1" ] && echo \ \ ${OK}
|
|
fi
|
|
|
|
if [ "${1}" = cp ] ;then
|
|
echo -n ' -> try to copy file '${3}
|
|
DO=1
|
|
if [ -e "${3}" ] ; then
|
|
echo ' ... file already exists!'
|
|
diff "${2}" "${3}" >/dev/null
|
|
if [ "$?" = 0 ] ; then
|
|
echo ' files are equal, we leave it as it is!'
|
|
DO=0
|
|
else
|
|
ls -lah "${3}"
|
|
echo ' you may'
|
|
echo ' [D] show a diff between the new and current file'
|
|
echo ' [m] move current file to '${3}.${TIME}.old
|
|
echo ' [d] delete and replace with new file'
|
|
echo ' [s] skip -- leave it as it is'
|
|
echo ' [q] abort setup.sh'
|
|
QUESTION='what to do? [D/m/d/s/q]:'
|
|
echo -en " ${QUESTION} "
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read ANSWER
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
until [ "${ANSWER}" = D ] \
|
|
|| [ "${ANSWER}" = d ] \
|
|
|| [ "${ANSWER}" = m ] \
|
|
|| [ "${ANSWER}" = s ] \
|
|
|| [ "${ANSWER}" = q ] ; do
|
|
echo -n " ${QUESTION} "
|
|
read ANSWER
|
|
done
|
|
|
|
case ${ANSWER} in
|
|
D)
|
|
echo
|
|
echo
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo '---------------------------------------'
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
diff -C 3 "${2}" "${3}"
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo '---------------------------------------'
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo
|
|
echo
|
|
create_file "${1}" "${2}" "${3}"
|
|
;;
|
|
m)
|
|
mv -f ${3} ${3}.${TIME}.old || error ' unable to move file '${3}
|
|
;;
|
|
d)
|
|
rm -f ${3} || error ' unable to delete file '${3}
|
|
;;
|
|
s)
|
|
echo ' as you decide, we leave it as it is!'
|
|
DO=0
|
|
;;
|
|
q)
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne "${UNMARK}"
|
|
echo
|
|
echo ' script aborted by user input'
|
|
exit 72
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|
|
if [ "${DO}" = "1" ] ;then cp "${2}" "${3}" || error ' failed to copy '${3} ; fi
|
|
[ "${DO}" = "1" ] && echo \ \ ${OK}
|
|
fi
|
|
|
|
}
|
|
|
|
function create_mydata {
|
|
|
|
VALUE=${1}
|
|
DB=${2}
|
|
NODATA=' did not get a value corresponding to your template dir'
|
|
|
|
SQL="
|
|
SELECT regexp_replace( u1.cfg_value, E'\n' ,E'\\\\\\\\\\\\' || E'\n')
|
|
FROM auth.user_config u1, auth.user_config u2
|
|
WHERE u1.user_id = u2.user_id
|
|
AND u1.cfg_key = '"${DB}"'
|
|
AND u2.cfg_key = 'templates'
|
|
AND u2.cfg_value = 'templates/"${TEMP_DIR}"'
|
|
ORDER BY u1.cfg_value DESC
|
|
LIMIT 1;
|
|
"
|
|
case ${DB} in
|
|
tel)
|
|
PRE='Tel:'
|
|
;;
|
|
fax)
|
|
PRE='fax:'
|
|
;;
|
|
co_ustid)
|
|
if [ ! `psql --pset tuples_only -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}"`"" ] ; then
|
|
SQL="
|
|
SELECT regexp_replace( u1.cfg_value, E'\n' ,E'\\\\\\\\\\\\' || E'\n')
|
|
FROM auth.user_config u1, auth.user_config u2
|
|
WHERE u1.user_id = u2.user_id
|
|
AND u1.cfg_key = 'taxnumber'
|
|
AND u2.cfg_key = 'templates'
|
|
AND u2.cfg_value = 'templates/"${TEMP_DIR}"'
|
|
ORDER BY u1.cfg_value DESC
|
|
LIMIT 1;
|
|
"
|
|
PRE='StNr.:'
|
|
else
|
|
PRE='UstIdNr:'
|
|
fi
|
|
;;
|
|
*)
|
|
PRE=''
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
if [ "${2}" ] ; then
|
|
ANSWER=`psql --pset tuples_only -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}"` || error "unable to connect to auth db"
|
|
if [ ! "${VALUE}" ] ; then
|
|
echo ' please fix this later'
|
|
ANSWER=FIX_ME
|
|
else
|
|
echo ' found: '${ANSWER}
|
|
fi
|
|
else
|
|
if [ ! "${2}" ] && [ ${1} = "employeecountry" ] ; then
|
|
read ANSWER
|
|
else
|
|
echo ' please fix this later'
|
|
ANSWER=FIX_ME
|
|
fi
|
|
fi
|
|
|
|
echo -e "\0134"'newcommand{'"\0134"${VALUE}'}{'${PRE}${ANSWER}'}' >> mydata.tex
|
|
|
|
}
|
|
|
|
function read_db_conf {
|
|
|
|
perl -e 'use Config::Std;
|
|
read_config "'${DB_AUTH}'.default" => my %config_default;
|
|
my $val_default = $config_default{"authentication/database"}{'${1}'};
|
|
read_config "'${DB_AUTH}'" => %config;
|
|
my $val = $config{"authentication/database"}{'${1}'} if $config{"authentication/database"}{'${1}'};
|
|
if ( $val ) {
|
|
print $val;
|
|
}else{
|
|
print $val_default;
|
|
}'
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# check for dependencies
|
|
echo -n ' -> search kpsewhich '
|
|
which kpsewhich >/dev/null
|
|
[ "$?" = 0 ] || error 'unable find programm "kpsewhich" -- is there a propper installed LaTeX? (on debian: aptitude install texlive-base-bin)'
|
|
echo \ \ ${OK}
|
|
|
|
if [ "${MODUL}" = "f-tex" ] ; then
|
|
echo ' -> search LaTeX documentclass scrlttr2'
|
|
echo -n ' '
|
|
if [ ! `kpsewhich scrlttr2.cls` ] ; then
|
|
echo
|
|
echo " can't find documentclass scrlttr2"
|
|
echo " on debian systems you may install it by"
|
|
echo " aptitude install texlive-latex-recommended"
|
|
echo " on other systems, please refer to their documentation how to find"
|
|
echo " matching packages."
|
|
echo
|
|
echo " If you are done, rerun this script"
|
|
echo " [unsatisfied dependencies]' ...... documentclass scrlttr2 ...... [terminate script]"
|
|
exit 72
|
|
else
|
|
echo \ \ ${OK}
|
|
fi
|
|
elif [ "${MODUL}" = "lp" ] ; then
|
|
echo ' -> search LaTeX package ticket and check vor needed version '
|
|
echo -n ' '
|
|
HOLD_TEXINPUTS=${TEXINPUTS}
|
|
export TEXINPUTS=''
|
|
if [ `kpsewhich ticket.sty` ] ; then
|
|
grep rowmode `kpsewhich ticket.sty` > /dev/null
|
|
if [ "$?" -gt "0" ] ;then
|
|
FILE_LIST_LP=${FILE_LIST_LP}" ticket.sty"
|
|
echo \ \ "your version of LaTeX Package ticket does not support rowmode - we use our own ticket.sty"
|
|
echo \ \ \ \ \ \ "ticket.sty supports option rowmode from version v0.4b"
|
|
echo \ \ \ \ \ \ ${OK}
|
|
fi
|
|
else
|
|
FILE_LIST_LP=${FILE_LIST_LP}" ticket.sty"
|
|
echo \ \ "can't find LaTeX Package ticket, but we use our own ticket.sty because we need version => v0.4b"
|
|
echo \ \ \ \ \ \ "ticket.sty supports option rowmode from version v0.4b"
|
|
echo \ \ \ \ \ \ ${OK}
|
|
fi
|
|
export TEXINPUTS=${HOLD_TEXINPUTS}
|
|
else
|
|
error "no valid install modul - is the install script inside ~/templates/f-tex or ~/templates/lp ?"
|
|
fi
|
|
|
|
for PACK in `grep usepackage ${BASE_DIR}/*.tex ${BASE_DIR}/*.sty ${BASE_DIR}/*.lco |awk -F '{' '{print $2}'|awk -F '}' '{print $1}'| sort | uniq`; do
|
|
latex_pack_check ${PACK}
|
|
done
|
|
|
|
|
|
# decide the installation target (template directory)
|
|
echo -n ' -> cd to base directory: '${BASE_DIR}' '
|
|
|
|
cd ${BASE_DIR} || error "unable to change directory"
|
|
echo \ \ ${OK}
|
|
|
|
|
|
|
|
echo ' -> check if we are inside an lxo installation'
|
|
|
|
if [ ! -e ../../SL/Form.pm ] ; then
|
|
|
|
dpkg -l | grep lx-office-erp | egrep '^ii'
|
|
if [ "$?" = 0 ] ; then
|
|
echo ' seams like this is a Debian-package'
|
|
DB_AUTH='/etc/lx-office-erp/lx_office.conf'
|
|
|
|
LXO_DETERMINE='
|
|
/usr/lib/lx-office-erp/SL/Form.pm
|
|
/etc/lx-office-erp/lx_office.conf.default
|
|
/usr/share/doc/lx-office-erp/changelog
|
|
'
|
|
|
|
CHK_RAWNUMBER_PATCH='
|
|
/usr/lib/lx-office-erp/SL/DO.pm
|
|
/usr/lib/lx-office-erp/SL/IS.pm
|
|
/usr/lib/lx-office-erp/SL/OE.pm
|
|
'
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
for now in ${LXO_DETERMINE} ; do
|
|
[ -e ${now} ] || error 'missing '${now}', do not run this script outside an lx-office installation!. Is setup.sh located inside an lxo installation in templates/'${MODUL}'?'
|
|
done
|
|
echo \ \ ${OK}
|
|
|
|
if [ "${MODUL}" = "f-tex" ] ; then
|
|
echo ' -> search raw numbers patch '
|
|
RAW_NUM=`egrep -oh '\{[^{]*_nofmt\}' ${CHK_RAWNUMBER_PATCH} |wc -l`
|
|
|
|
if [ "${RAW_NUM}" -lt 20 ] ; then
|
|
echo ' did not find the raw_number values'
|
|
echo
|
|
egrep -oh '\{[^{]*_nofmt\}' ${CHK_RAWNUMBER_PATCH}
|
|
echo ' seems like you added fancy LaTeX separate and needed raw_number values are missing'
|
|
echo ' this is already part of the dev-source code.'
|
|
echo ' please use this script in the environment you got it from'
|
|
error 'missing raw_number values'
|
|
fi
|
|
echo \ \ ${OK}
|
|
fi
|
|
|
|
|
|
if [ ${DATABASE} = 1 ] ; then
|
|
|
|
echo ' -> request Auth-DB '
|
|
[ -r ${DB_AUTH} ] || [ -r ${DB_AUTH}.default ] || error "unable to read ${DB_AUTH} or ${DB_AUTH}.default -- you must be able to read db credentials"
|
|
|
|
export PGDATABASE=`read_db_conf db`
|
|
check_accepted_names ${PGDATABASE} database_name
|
|
export PGPASSWORD=`read_db_conf password`
|
|
check_accepted_names ${PGPASSWORD} database_pw
|
|
export PGUSER=`read_db_conf user`
|
|
check_accepted_names ${PGUSER} database_user
|
|
export PGPORT=`read_db_conf port`
|
|
[ "${#PGPORT}" -lt 1 ] && PGPORT=5432
|
|
check_int ${PGPORT} database_port
|
|
export PGHOST=`read_db_conf host`
|
|
[ "${#PGHOST}" -lt 1 ] && PGHOST=localhost
|
|
check_accepted_names ${PGHOST} database_host
|
|
|
|
SQL="
|
|
SELECT
|
|
substring(cfg_value from E'[^/]*$') as template_dir
|
|
FROM auth.user_config
|
|
WHERE cfg_key = 'templates'
|
|
GROUP BY cfg_value ;
|
|
"
|
|
|
|
|
|
echo ' -> search active template dirs '
|
|
echo
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
|
|
psql --pset tuples_only -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}" || error "unable to connect to auth db"
|
|
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo ' I found the above listed template directorys in '`mark '[lxo-home]/templates'`' by requesting your user configuration.'
|
|
echo ' in database '`mark "${PGDATABASE}"`'.'
|
|
fi
|
|
|
|
echo ' Type in which template directory to use (by typing in a name)'
|
|
echo ' * if template_dir does not exist, it will be created'
|
|
echo ' * template_dir must also be configured in your user administration'
|
|
echo ' to make it active.'
|
|
echo
|
|
echo -en ' type name of template dirctory: '
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read TEMP_DIR
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
|
|
|
|
[ "${#TEMP_DIR}" -gt 0 ] || error 'no value for template dir provided '
|
|
|
|
|
|
if [ -d "../${TEMP_DIR}" ] ; then
|
|
MV_DIR=${TEMP_DIR}.${TIME}.old
|
|
echo
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
ls -lah ../${TEMP_DIR}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo
|
|
echo ' the directory already exists and contains the above listed files'
|
|
echo ' you can:'
|
|
echo -e ' - move the directory to '`mark "templates/${MV_DIR}"`' and create a empty one, or'
|
|
echo ' - install the templates in the existing directory by interactive overwriting existing files'
|
|
echo
|
|
ask_yn ' move templates/'${TEMP_DIR}' to templates/'${MV_DIR}'? [y/n/q]: '
|
|
|
|
|
|
|
|
if [ "${ANSWER}" = y ] ; then
|
|
echo ' -> check for permission to move template directory '
|
|
mv -i ../${TEMP_DIR} ../${MV_DIR} || error "unable to move directory "
|
|
echo -n ' -> original directory moved to '${MV_DIR}
|
|
echo \ \ ${OK}
|
|
fi
|
|
if [ "${ANSWER}" = n ] ; then
|
|
echo ' -> check for permission to write in template directory [lxo-home]/templates/'${TEMP_DIR}
|
|
[ -w ../${TEMP_DIR} ] || error "no permission to write directory "
|
|
echo \ \ ${OK}
|
|
fi
|
|
ANSWER=0
|
|
fi
|
|
|
|
|
|
if [ ! -d "../${TEMP_DIR}" ] ; then
|
|
echo -n ' -> check for permission to create new template directory '
|
|
mkdir "../"${TEMP_DIR} || error "unable to write to `echo ${PWD} | sed 's/\/'${MODUL}'$//'` -- you must be able to write in ~/templates "
|
|
echo \ \ ${OK}
|
|
echo -n ' -> '${TEMP_DIR}' created'
|
|
echo \ \ ${OK}
|
|
fi
|
|
|
|
echo -n ' -> cd to template directory: '${TEMP_DIR}' '
|
|
|
|
cd ../${TEMP_DIR} || error "unable to change directory"
|
|
echo \ \ ${OK}
|
|
pwd
|
|
|
|
|
|
if [ -e mydata.tex ] ;then
|
|
echo ' -> check mydata.tex'
|
|
grep koma ./mydata.tex && FEEDBACK=${FEEDBACK}' # looks like a DEPRECATED mydata.tex -- please compare to f-tex/mydata.tex.example \n'
|
|
for now in ${MY_DATA} ; do
|
|
grep ${now} ./mydata.tex || FEEDBACK=${FEEDBACK}' # missing '${now}' in mydata.tex -- please compare to f-tex/mydata.tex.example \n'
|
|
done
|
|
|
|
echo -e \ \ "your current mydata.tex looks like"
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
cat mydata.tex
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
|
|
else
|
|
if [ ${DATABASE} = 1 ] ; then
|
|
# mydata voodooo goes here
|
|
SQL="
|
|
SELECT
|
|
u1.cfg_value as company,
|
|
u2.cfg_value as address,
|
|
u3.cfg_value as tel,
|
|
u4.cfg_value as fax,
|
|
u5.cfg_value as texnumber,
|
|
u6.cfg_value as co_ustid
|
|
FROM
|
|
auth.user_config u1,
|
|
auth.user_config u2,
|
|
auth.user_config u3,
|
|
auth.user_config u4,
|
|
auth.user_config u5,
|
|
auth.user_config u6
|
|
WHERE
|
|
u1.user_id = u2.user_id and
|
|
u2.user_id = u3.user_id and
|
|
u3.user_id = u4.user_id and
|
|
u4.user_id = u5.user_id and
|
|
u5.user_id = u6.user_id and
|
|
u1.cfg_key = 'company' and
|
|
u2.cfg_key = 'address' and
|
|
u3.cfg_key = 'tel' and
|
|
u4.cfg_key = 'fax' and
|
|
u5.cfg_key = 'taxnumber' and
|
|
u6.cfg_key = 'co_ustid'
|
|
GROUP BY
|
|
u1.cfg_value,
|
|
u2.cfg_value,
|
|
u3.cfg_value,
|
|
u4.cfg_value,
|
|
u5.cfg_value,
|
|
u6.cfg_value
|
|
ORDER BY
|
|
company;
|
|
"
|
|
# [ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
#
|
|
# psql -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}" || error "unable to connect to auth db"
|
|
#
|
|
# [ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo ' There is no mydata.tex, we try to create it'
|
|
echo ' please answer the following questions'
|
|
echo -n ' - country your company is located eg:"Deutschland" : '
|
|
create_mydata employeecountry
|
|
echo ' - owner of the bankaccount for label print'
|
|
echo ' used for "pay on delivery (Nachnahme)"'
|
|
echo -n ' type ~ instead of blanks eg: "Herbert~Wichtig" : '
|
|
create_mydata labelcompanyname
|
|
echo ' - name of the bank for label print'
|
|
echo ' used for "pay on delivery (Nachnahme)"'
|
|
echo -n ' type ~ instad of blanks eg: "Ensifera~Bank" : '
|
|
create_mydata labelbankname
|
|
echo ' - bank account number for label print'
|
|
echo ' used for "pay on delivery (Nachnahme)"'
|
|
echo -n ' no blanks eg: "123456789" : '
|
|
create_mydata labelbankcode
|
|
echo ' - bank code (BLZ) for label print'
|
|
echo ' used for "pay on delivery (Nachnahme)'
|
|
echo -n ' no blanks eg: "10010010" : '
|
|
create_mydata labelbankaccount
|
|
echo ' - company name for dokuments'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "Die globalen Problemlöser" : '
|
|
create_mydata MYfromname company
|
|
echo ' - company name second row for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "Gesellschaft für anderer Leute Sorgen mbH" : '
|
|
create_mydata MYaddrsecrow
|
|
echo ' - legal form for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo ' eg: "Handelsregister: HRA 123456789" : '
|
|
echo -n ' or: "Inhaber Herbert Wichtig" : '
|
|
create_mydata MYrechtsform
|
|
echo ' - company address for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo ' multirow, type \\ as row dilimiter '
|
|
echo -n ' eg: "Hauptstraße 5\\12345 Hier" : '
|
|
create_mydata MYfromaddress address
|
|
echo ' - tel for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "Tel: +49 (0)12 3456780" : '
|
|
create_mydata MYfromphone tel
|
|
echo ' - fax for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "Fax: +49 (0)12 3456781" : '
|
|
create_mydata MYfromfax fax
|
|
echo ' - email for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "mail@g-problemloeser.com" : '
|
|
create_mydata MYfromemail
|
|
echo ' - signatur for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo -n ' eg: "Herbert Wichtig - Geschäftsführer" : '
|
|
create_mydata MYsignature
|
|
echo ' - tax number for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo ' it is common to use ustid but if you have none'
|
|
echo ' type in your main tax number'
|
|
echo ' eg: "UstID: DE 123 456 789" : '
|
|
echo -n ' or: "StrNr: 12/345/6789" : '
|
|
create_mydata MYustid co_ustid
|
|
echo ' - bank account for documents'
|
|
echo ' used for invoice, sales_quotation, etc.'
|
|
echo ' multirow, type \\ as row delimiter '
|
|
echo -n ' eg: "Bankverbindung\\Ensifera Bank\\Kto 1234567800\\BLZ 123 456 78" : '
|
|
create_mydata MYfrombank
|
|
|
|
# damn escaping -- gnarf
|
|
perl -pi -e 's/([^\$\{])\\/$1\\\\/g' mydata.tex
|
|
perl -pi -e 's/([\&\%])/\\$1/g' mydata.tex
|
|
else
|
|
cp ../f-tex/mydata.tex.example mydata.tex
|
|
FEEDBACK=${FEEDBACK}' # I generate a mydata.tex please edit this file to match to your needs \n'
|
|
fi
|
|
FEEDBACK=${FEEDBACK}' # I generate a mydata.tex please edit this file to match to your needs \n'
|
|
fi
|
|
|
|
|
|
if [ "${MODUL}" = "f-tex" ] ; then
|
|
# search for installed languages
|
|
if [ ${DATABASE} = 1 ] ; then
|
|
SQL="
|
|
SELECT
|
|
u1.cfg_value || ';' ||
|
|
u2.cfg_value || ';' ||
|
|
u3.cfg_value || ';' ||
|
|
u4.cfg_value || ';' ||
|
|
u5.cfg_value
|
|
FROM
|
|
auth.user_config u1,
|
|
auth.user_config u2,
|
|
auth.user_config u3,
|
|
auth.user_config u4,
|
|
auth.user_config u5
|
|
WHERE
|
|
u1.user_id = u2.user_id and
|
|
u2.user_id = u3.user_id and
|
|
u3.user_id = u4.user_id and
|
|
u4.user_id = u5.user_id and
|
|
u1.cfg_key = 'dbname' and
|
|
u2.cfg_key = 'dbhost' and
|
|
u3.cfg_key = 'dbport' and
|
|
u4.cfg_key = 'dbuser' and
|
|
u5.cfg_key = 'dbpasswd'
|
|
GROUP BY
|
|
u1.cfg_value,
|
|
u2.cfg_value,
|
|
u3.cfg_value,
|
|
u4.cfg_value,
|
|
u5.cfg_value;
|
|
"
|
|
|
|
echo ' -> try to determine aktive languages ....'
|
|
echo ' -> search database '${PGDATABASE}' to find lxo-erp databases ....'
|
|
|
|
DBS=`psql --pset tuples_only -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}"` || error "unable to connect to auth db"
|
|
|
|
for db in ${DBS} ; do
|
|
|
|
PGDATABASE=`echo -n ${db} | awk -F ';' '{print $1}'`
|
|
echo -e ' -> prepare to request db '`mark ${PGDATABASE}`
|
|
check_accepted_names ${PGDATABASE} database_name
|
|
PGHOST=`echo -n ${db} | awk -F ';' '{print $2}'`
|
|
[ "${#PGHOST}" -lt 1 ] && PGHOST=localhost
|
|
check_accepted_names ${PGHOST} database_host
|
|
PGPORT=`echo -n ${db} | awk -F ';' '{print $3}'`
|
|
[ "${#PGPORT}" -lt 1 ] && PGPORT=5432
|
|
check_int ${PGPORT} database_port
|
|
PGUSER=`echo -n ${db} | awk -F ';' '{print $4}'`
|
|
check_accepted_names ${PGUSER} database_user
|
|
PGPASSWORD=`echo -n ${db} | awk -F ';' '{print $5}'`
|
|
check_accepted_names ${PGPASSWORD} database_pw
|
|
DELCHECK=`echo -n ${db} | awk -F ';' '{print $6}'`
|
|
[ "${#DELCHECK}" = 0 ] || error 'field delimiter conflict: there may be a ";" in one of your database definitions (db/host/port/user/pw)'
|
|
SQL="SELECT template_code FROM language ;"
|
|
echo \ \ ${OK}
|
|
RES=`psql --pset tuples_only -h "${PGHOST}" -U "${PGUSER}" "${PGDATABASE}" -c "${SQL}"` || error "unable to connect to db "${PGDATABASE}
|
|
echo -e ' -> found '`mark "${RES}"`
|
|
echo \ \ ${OK}
|
|
LANGS=${LANGS}' '${RES}
|
|
done
|
|
|
|
LANGS=`echo ${LANGS} | sed 's/\ /\n/g'|sort | uniq`
|
|
echo ' -> join language codes ...'
|
|
echo
|
|
echo
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo -e ' '${LANGS}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo
|
|
echo ' I found the above listed language template_codes (see: System -> Languages -> List Languages)'
|
|
echo ' - you may add more template_codes by type in a [space] seperated list (e.g.: ru it fr)'
|
|
echo ' - or you may replace it with your own values by type in a [space] seperated list (e.g.: ru it fr)'
|
|
ask_yn ' add template_codes? [y/n/q]: '
|
|
|
|
if [ "${ANSWER}" = y ] ; then
|
|
echo -n ' type [space] seperated template_code list to add to current values: '
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read TMP_CO
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo -n ' list of template_codes is now: '
|
|
LANGS=${LANGS}' '${TMP_CO}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo -e ' '${LANGS}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo \ \ ${OK}
|
|
fi
|
|
ANSWER=0
|
|
|
|
ask_yn ' replace the current template_codes? [y/n/q]: '
|
|
|
|
if [ "${ANSWER}" = y ] ; then
|
|
echo -n ' type [space] seperated template_code list to replace current values: '
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read TMP_CO
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo -n ' list of template_codes is now: '
|
|
LANGS=${TMP_CO}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo -e ' '${LANGS}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo \ \ ${OK}
|
|
fi
|
|
ANSWER=0
|
|
else
|
|
echo -n ' type [space] seperated template_code list (see: System -> Languages -> List Languages eg: de en fr): '
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
read TMP_CO
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo -n ' list of template_codes is now: '
|
|
LANGS=${TMP_CO}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${MARK}
|
|
echo -e ' '${LANGS}
|
|
[ "${NO_COLOR}" = 1 ] || echo -ne ${UNMARK}
|
|
echo \ \ ${OK}
|
|
fi
|
|
|
|
echo
|
|
echo
|
|
echo -e ' your current language template_codes are: '`mark "${LANGS}"`
|
|
echo
|
|
echo
|
|
|
|
# copy files and create links
|
|
|
|
|
|
|
|
for now in ${FILE_LIST_FTEX} ; do
|
|
create_file cp ../f-tex/${now} ${now}
|
|
done
|
|
|
|
for now in ${LANGS} ; do
|
|
echo -n ' -> check if language code '${now}' is present in translations.tex'
|
|
egrep '^[^%]*\\IfEndWith{\\docname}{_'${now}'}' translations.tex > /dev/null
|
|
if [ "$?" -gt 0 ] ;then
|
|
HINT=' edit '${TEMP_DIR}'/translations.tex -- no representation of template_code '${now}
|
|
echo ' [warning] '${HINT}
|
|
FEEDBACK=${FEEDBACK}' # '${HINT}'\n'
|
|
fi
|
|
echo \ \ ${OK}
|
|
done
|
|
|
|
|
|
for doc in ${DOC_TYPE_FTEX} ; do
|
|
create_file ln ./letter.tex ./${doc}.tex
|
|
for now in ${LANGS} ; do
|
|
create_file ln ./letter.tex ./${doc}_${now}.tex
|
|
done
|
|
done
|
|
|
|
create_file ln ./sample_head.pdf ./letter_head.pdf
|
|
create_file ln ./sample.lco ./letter.lco
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${MODUL}" = "lp" ] ; then
|
|
|
|
for now in ${FILE_LIST_LP} ; do
|
|
create_file cp ../lp/${now} ${now}
|
|
done
|
|
|
|
fi
|
|
|
|
echo
|
|
echo
|
|
echo -en ' '${FEEDBACK}
|
|
echo -e ' ################################'
|
|
echo
|
|
echo ' If there are warnings listed in the feedback box above'
|
|
echo ' this is totally ok if you know what you do'
|
|
echo
|
|
echo ' done -> enjoy'
|
|
echo ' ### please check "settings" in '`pwd`'letter.lco '
|
|
|
|
|
|
# company
|
|
# address
|
|
# co_ustid
|
|
# email
|
|
# taxnumber
|
|
# tel
|
|
# fax
|