import sql-ledger 2.4.4
[freeside.git] / sql-ledger / sql-ledger / doc / faq.html
diff --git a/sql-ledger/sql-ledger/doc/faq.html b/sql-ledger/sql-ledger/doc/faq.html
new file mode 100644 (file)
index 0000000..5a26f64
--- /dev/null
@@ -0,0 +1,556 @@
+<ul>
+<p><li><h4>lineitems not printing</h4>
+Templates designed on a *NIX platform don't work on a DOS platform.
+To make them work load the template either with the builtin template editor
+or a text editor and save. Templates designed on a Windows platform have the
+same problem and won't work on a *NIX platform. Once you strip the ^M's
+the'll work just fine.
+
+<p>Everybody now, "Who do we thank for this schlamassl".
+
+<p><li><h4>UTF-8 character encoding</h4>
+Most of the translations are in ISO format. To convert the translations
+change directory to locale/cc and convert the files with iconv to UTF-8.
+You should also convert the COAs too and make sure you select UTF-8
+encoding when you setup a new dataset.
+
+
+<p><li><h4>characterset problems</h4>
+If you have problems displaying the correct characterset try adding
+<pre>
+  AddDefaultCharset On</pre>
+in your httpd.conf file.
+
+<p><li><h4>About installation</h4>
+The easiest is to use the setup.pl script as root.
+You don't need to know very much about your system, just login as root,
+run 'perl setup.pl' and follow the prompts.
+<p>setup.pl does not check for missing software packages and it is your
+responsibilite to make sure you have the required software
+installed either from source or from a package supplied with your distro.
+
+<p>Requirements are clearly indicated in the README file and on the
+download page.
+
+
+<p><li><h4>cannot create function</h4>
+<ol>
+<li>either run createlang and install the plpgsql language handler or
+install yourself. For more information how to do that, visit
+<a href=http://www.postgresql.org/docs/>PostgreSQL</a> and
+read the interactive documentation for procedural languages.
+
+<li>load admin.pl
+<li>unlock the system
+<li>login
+</ol>
+
+
+<p><li><h4>The requested URL /sql-ledger/admin.pl was not found</h4>
+Your webserver doesn't know where to find the script. Most commonly this
+is from distributions hiding webserver configuration files in different
+locations or files and setup.pl wasn't able to configure the location for
+you. Find out which file (httpd.conf, httpdcommon.conf, ...)
+controls your webserver configuration and add
+<pre>
+  # SQL-Ledger
+  Include /etc/httpd/sql-ledger-httpd.conf</pre>
+
+Create a file 'sql-ledger-httpd.conf' in /etc/httpd and copy the next part
+into the file.
+
+<pre>
+  AddHandler cgi-script .pl
+  Alias /sql-ledger/ /var/www/sql-ledger/
+  &lt;Directory /var/www/sql-ledger&gt;
+    Options ExecCGI Includes FollowSymlinks
+  &lt;/Directory&gt;
+
+  &lt;Directory /var/www/sql-ledger/users&gt;
+    Order Deny,Allow
+    Deny from All
+  &lt;/Directory&gt;</pre>
+replace '/etc/httpd' and '/var/www' with the appropriate directories.
+
+
+<p><li><h4>users/members : Permission denied</h4>
+Your webserver must have write access to the users directory.
+If your server runs as user/group 'apache:apache' then set the
+users directory to owner/group apache:apache.
+<pre>
+  # chown -R apache:apache users</pre>
+
+
+<p><li><h4>Dataset newer than version</h4>
+You are trying to use an older version with a dataset which was
+created with a newer version.
+
+
+<p><li><h4>PDF option not working</h4>
+Check if you have latex and pdflatex installed.
+
+
+<p><li><h4>Apache 2.0 "error 500"</h4>
+Some of the early versions of Apache 2.0 (< patchlevel 44) had a rewrite engine
+which decoded escaped strings. This created a lot of problems and I worked
+around it by escaping strings twice.
+If you get a server 500 error 'filename too long' or if collapsed menus
+don't expand you may have to adjusted the following code in
+SL/Form.pm and change the number (44) on line 84.
+<pre>
+  # for Apache 2 we escape strings twice
+  if (($ENV{SERVER_SIGNATURE} =~ /Apache\/2\.(\d+)\.(\d+)/) && !$beenthere) {
+    $str = $self->escape($str, 1) if $2 < 44;
+  }</pre>
+
+
+<p><li><h4>IDENT Authentication failed for user "sql-ledger"</h4>
+Edit pg_hba.conf and change authentication to
+
+<pre>
+  local           all              trust</pre>
+
+The file is in the 'data' directory of your postgresql installation.
+This is different with every distribution so look for it.
+<pre>
+  # find / -name 'pg_hba.conf'</pre>
+
+
+<p><li><h4>DBD-Pg for Mandrake 9.0</h4>
+Mandrake did not package a compiled DBD-Pg package again, so install DBD-Pg
+from the source package.
+Install perl-DBD-Pg-1.01-4mdk.i586.rpm from the 'contrib' area.
+(Mandrake / 9.0 / contrib / RPMS)
+
+
+<p><li><h4>LaTeX error</h4>
+If for some reason LaTeX produces an error message check for strange
+characters in your account description and parts description
+and use \usepackage[latin1]{inputenc} in the preamble.
+
+
+<p><li><h4>LaTeX templates</h4>
+If you don't want to edit tex code by hand,
+you could use Lyx, Abiword, or any WYSIWYG editor capable of exporting
+latex code.
+To do that you must change the tokens for the variables <% and %> to something
+like << and >>. % is the comment character in tex. There is also a
+pagebreak block which must be commented out.
+When you are done with the changes
+replace << and >> with <% and %> and uncomment the pagebreak block.
+
+<p>LaTeX is difficult but it also offers a much superior environment
+to produce professionally looking forms in postscript and PDF format.
+Unfortunately with all that power there is also a steep learning curve.
+
+
+<p><li><h4>W3M</h4>
+pass terminal=mozilla when you start w3m
+<pre>
+  $ w3m -F http://localhost/sql-ledger/login.pl?terminal=mozilla</pre>
+
+To use without frames
+<pre>
+  $ w3m http://localhost/sql-ledger/login.pl?terminal=lynx</pre>
+
+<p><li><h4>PDF option disappeared</h4>
+Edit sql-ledger.conf and set $latex = 1;
+<br>sql-ledger.conf is perl code, check if it compiles, if it does not,
+the internal defaults are used which turn off $latex, hence no PDF option.
+
+<p><li><h4>SQL-Ledger installation Mac Os X 10.3 (Panther)</h4>
+Paul J. Teeter put together
+<a href="http://paulteeter.net/writing/technical/howto-sql-ledger-osx.htm">
+installation instructions</a> to run SL on a Mac.
+<br>The instructions are for SL 2.2 but the will work for any of the later
+releases too.
+
+<p><li><h4>Installation on Windows (WIN32)</h4>
+<ul>
+<li>install Apache, perl,
+<a href=http://techdocs.postgresql.org/guides/InstallingOnWindows>Postgres</a>
+or Oracle, DBI and the appropriate DBD
+module
+<br>if you can't compile DBD-Pg here is a precompiled
+<a href=http://www.edmund-mergl.de/export/>DBD-Pg module</a>
+<li>download the latest version of <a href=/cgi-bin/nav.pl?page=source/index.html&title=Download>SQL-Ledger</a>
+<li>extract the files to c:\apache\sql-ledger
+<li>run 'perl shebang' to change the first line of the scripts. If perl
+is not in c:\perl\bin' change '#!c:\\perl\\bin\\perl' to the location where
+your perl binary is.
+<li>edit c:\apache\conf\httpd.conf and add
+<pre>
+Alias /sql-ledger/ "c:/apache/sql-ledger/"
+&lt;Directory "c:/apache/sql-ledger"&gt;
+  AllowOverride All
+  AddHandler cgi-script .pl
+  Options +ExecCGI
+  Order Allow,Deny
+  Allow from All
+&lt;/Directory&gt;
+
+&lt;Directory "c:/apache/sql-ledger/users"&gt;
+  Order Deny,Allow
+  Deny from All
+&lt;/Directory&gt;
+</pre>
+
+<li>start Apache
+<li>start Postgres|Oracle|DB2
+<li>connect to http://localhost/sql-ledger/admin.pl and setup users
+and datasets
+<li>connect to http://localhost/sql-ledger/login.pl and login
+
+</ul>
+
+<p><li><h4>Installation on Windows /w cygwin</h4>
+<ul>
+<li>install <a href=http://sources.redhat.com/cygwin/>cygwin</a>
+Apache, perl, postgres, gcc and lynx
+<li>install <a href=http://search.cpan.org/search?module=DBI>DBI</a>
+<li>tar zxvf DBI-1.30.tar.gz
+<li>cd DBI-1.30
+<li>perl Makefile.PL
+<li>make install
+<li>install <a href=http://search.cpan.org/search?dist=DBD-Pg>DBD-Pg</a>
+<li>tar -zxvf DBD-Pg-1.13.tar.gz
+<li>export POSTGRES_INCLUDE=/usr/include/postgresql
+<li>export POSTGRES_LIB=/usr/lib/postgresql
+<li>cd DBD-Pg-1.13
+<li>perl Makefile.PL
+<li>make install
+<li>edit /etc/apache/httpd.conf and add
+<pre>
+AddHandler cgi-script .pl
+Alias /sql-ledger/ /var/www/sql-ledger/
+&lt;Directory /var/www/sql-ledger&gt;
+  Options +ExecCGI
+&lt;/Directory&gt;
+
+&lt;Directory /var/www/sql-ledger/users&gt;
+  Order Deny,Allow
+  Deny from All
+&lt/Directory&gt;
+</pre>
+<li>install SQL-Ledger
+<li>cd /var/www
+<li>mkdir sql-ledger
+<li>download <a href=/cgi-bin/download.pl?setup.pl>setup.pl</a> and save the file
+in /var/www/sql-ledger
+<li>cd /var/www/sql-ledger
+<li>perl setup.pl
+</ul>
+
+<p><li><h4>What do I enter for the language</h4>
+If you use English, nothing, if you want to use a foreign language for
+the login screen and admin stuff enter the language code, this is the
+directory in the locale directory.
+
+
+<p><li><h4>printing to a printer</h4>
+Printers are defined in sql-ledger.conf
+
+<pre>
+%printers = ( 'Default' => 'lpr', 'Color' => 'lpr -PEpson' );</pre>
+
+Check in your /etc/printcap file for the names of available printers.
+
+<p>If you have LaTeX installed set
+<pre>
+  $latex = 1</pre> in sql-ledger.conf
+
+<p>To send the document to the printer check the "Postscript" or "PDF" format,
+enter the number of copies and click on the "Print" button.
+
+<p>The printer you enter in your preferences is the default printer.
+You can choose any other available printer. This makes it possible
+to print from anywhere on the network to any printer.
+
+<p>Note: html format is for screen preview. Use the "Print" option from your
+browser to print to a printer.
+
+
+<p><li><h4>Using samba to send printjobs to a printer attached to a Windows XP workstation</h4>
+The next part applies to roll your own printfilters only. If you use CUPS or
+LPRng your milage may vary but you can still use this as a guide how it works.
+I use the printer 'Epson' as an example which is
+attached to a XP workstation called Raven, no password to log on.
+
+<pre>
+/etc/printcap entry on the server which runs lpd
+epson:Epson\
+  :sh:\
+  :lp=/dev/null:\
+  :sd=/var/spool/output/epson:\
+  :if=/usr/libexec/lpr/epson/prnfilter:\
+
+# end of entry in /etc/printcap
+
+
+# pnrfilter shell script
+#!/bin/sh
+# Filter for Epson Stylus
+
+PATH="$PATH:/usr/local/bin"
+
+#read first_line
+read tmp
+first_line=`echo $tmp | cut -b1-2 | sed -n '1p'`
+
+first_chr=`expr "$first_line" : '\(.\)'`
+first_two=`expr "$first_line" : '\(..\)'`
+rewindstdin
+
+if [ "$first_two" = "%!" ]; then # Postscript file
+  gs @st640p.upp -dSAFER -dNOPAUSE -q -sOutputFile=/tmp/$$ -
+else
+  # text file
+  cat &gt; /tmp/$$
+  echo -n "^L" &gt;&gt; /tmp/$$
+  smbclient '\\Raven\Epson' "" -c 'printmode text'
+fi
+
+smbclient '\\Raven\Epson' "" -P -c "print /tmp/$$"
+rm /tmp/$$
+
+# EOF
+
+
+rewindstdin is a small program to rewind the filehandle for STDIN
+save the next part up to EOF to a file rewindstdin.c and compile
+
+#include &lt;sys/types.h&gt;
+#include &lt;unistd.h&gt;
+extern int errno;
+main()
+{
+  if( lseek(0,0,0) == 0 ){
+    errno = 0;
+  }
+  return( errno );
+}
+
+# EOF
+
+compile to an executable
+
+gcc -o /usr/local/bin/rewindstdin rewindstdin.c
+</pre>
+
+
+<p><li><h4>beginning balances</h4>
+Add a GL Journal entry and enter the beginning balance for your accounts.
+Beginning balances are the balances from your last balance sheet. If you also
+add open invoices to account for COGS for inventory, add the invoices
+and make the appropriate adjustments.
+
+
+<p><li><h4>establish a beginning inventory</h4>
+add the parts with a vendor invoice. Use the <b>real cost</b> for the items,
+not zero. If you use zero cost then the cost of goods will be zero when you
+sell the item.
+
+
+<p><li><h4>Assemblies</h4>
+Assemblies are manufactured goods assembled from parts, services and
+assemblies.  Because you do not buy assemblies you 'stock assemblies' by
+adding assembled units to your inventory. The quantity for individual parts 
+is reduced and the quantity for the assembly increased. To disassemble an
+assembly you simply return the parts to inventory by entering a negative
+quantity for the number of assemblies to stock.
+
+
+<p><li><h4>customizing SQL-Ledger</h4>
+The <a href=/cgi-bin/nav.pl?page=feature/api.html&title=Application%20Interface>application interface</a>
+consists of a global and private interface.
+
+
+<p><li><h4>DBD-Pg not installed</h4>
+
+Most modern distributions now package DBD-Pg. If it is
+not packaged follow this recipe to get it working.
+
+<ul>
+  <li>check if you have the header files for PostgreSQL
+  <br>$ find / -name 'libpq-fe.h'
+  <br>if nothing shows up install the development package for PostgreSQL
+  <li>download and untar DBD-Pg
+  <li>set the environment variables POSTGRES_LIB and POSTGRES_INCLUDE
+  <li>cd to DBD-Pg directory
+  <br>as ordinary user
+  <br>$ perl Makefile.PL
+  <br>$ make
+  <br>$ make test
+  <br>if all went well su to root
+  <br># make install
+  <li>remove DBD-Pg
+</ul>
+
+
+<p><li><h4>login.pl has compilation error</h4>
+
+This could be because of a missing configuration file in the users directory
+
+<p>check the permission for the users directory. The directory must be
+set writeable for the webserver. If your webserver runs ias user/group
+nobody.nogroup set the directory to
+<pre>
+drwx--x--x   2 nobody   nogroup    1024 May 26 16:49 users
+
+or
+
+drwxrwx--x   2 johndoe  nogroup    1024 May 26 16:49 users</pre>
+
+
+<p><li><h4>script not executing, shows in browser instead</h4>
+
+Add
+<pre>
+  AddHandler cgi-script .pl</pre>
+in your httpd.conf file.
+
+
+<p><li><h4>unknown terminal!</h4>
+the frontend script couldn't figure out which browser you are using
+<p>include the terminal variable on the URL
+<pre>
+  http://localhost/sql-ledger/login.pl?terminal=lynx</pre>
+Valid terminal variables are lynx and mozilla
+
+
+<p><li><h4>permission denied</h4>
+
+Check if your web server has write permission to write to the following
+files and directories:
+<pre>
+  users/
+  templates/
+  users/members
+
+  # chown nobody:nogroup users templates users/members
+</pre>
+
+
+<p><li><h4>permission denied to access tables</h4>
+The user you entered in the "Database section" must be a valid
+database user who has rights to access the tables.
+
+<p>If the tables are owned by 'joe' and you enter 'mary' as the dba
+you might run into this problem if mary doesn't have the rights to
+access tables owned by joe.
+
+
+<p><li><h4>html and graphics files don't show up on screen</h4>
+
+Enable Includes and FollowSymlinks Options in your httpd.conf file
+<pre>
+  &lt;Directory /usr/local/sql-ledger&gt;
+    Options ExecCGI Includes FollowSymlinks
+  &lt;/Directory&gt;
+</pre>
+
+
+<p><li><h4>Can I use mySQL</h4>
+
+mySQL lacks certain features required by SQL-Ledger.
+
+
+<p><li><h4>switch display to a foreign language</h4>
+
+Load your preferences and select the language.
+<br>Language selection is in accordance to 
+<a href=http://www.unece.org/cefact/locode/service/main.htm>
+ISO 3166-1</a> standards.
+
+
+<p><li><h4>Text shows in English when I use a foreign language</h4>
+
+This is because the corresponding hash entry is missing.
+Add the missing text in the locale/cc/all or locale/cc/missing
+file and run 'perl locales.pl' from the command line to rebuild
+the individual files.
+
+<br>cc refers to the country code.
+
+
+<p><li><h4>switch to a foreign language for the login and admin screen</h4>
+
+Edit sql-ledger.conf and enter the code for the $language variable
+<pre>
+  $language = "de";</pre>
+
+<p>This is a global change and applies to all logins, individual settings
+may be changed by setting the language in your Preferences.
+
+
+</ul>
+
+<p>
+<hr>
+<a name=security>
+<h1>SQL-Ledger security</h1>
+</a>
+
+<ul>
+<li>The security features built into SQL-Ledger provide encrypted passwords
+and access control which makes it fairly safe out of the box to run even in
+front of a firewall.
+Some precautions which are out of our control must be taken though.
+It matters where you install SL and how you configure your web server and
+SQL server.
+
+<pre>
+  Typical setups:
+  
+  /usr/local/vh/www                   <- DocumentRoot for virtual host
+  /usr/local/vh/sql-ledger            <- Alias for sql-ledger
+  /usr/local/vh/users                 <- users directory out of reach
+
+<hr width=60% align=left>
+  /usr/local/vh/www                   <- DocumentRoot for virtual host
+  /usr/local/vh/www/sql-ledger        <- Alias for sql-ledger
+  /usr/local/vh/www/sql-ledger/users  <- users configuration files and tmp space
+
+  &lt;Directory /usr/local/vh/www/sql-ledger/users&gt;  <- disable webserver access
+    Order Deny,Allow                                 for users directory
+    Deny from All
+  &lt;/Directory&gt;
+
+</pre>
+
+The location for the users directory can be specified in sql-ledger.conf
+
+<p><li>Set permission for the users and templates directory to 711
+
+<p><li>If you do not want anyone to change the templates with the built-in
+editor set the files in templates/directory/ to read only or disable
+the menu item to edit the templates.
+
+<p><li>You may setup a read-only environment if you disable the menu items
+to add data. i.e 'Add Transaction' if unchecked you will not be able to add
+a transaction or repost a transaction. You may look at it but nothing else.
+
+<p><li>There are various settings for audit control and you may disable
+reposting entirely or up to a certain date.
+
+<p><li>For PostgreSQL you may also set who has access to the server in the file
+pg_hba.conf
+<br>Authentication crypt does not work because not all SQL servers
+accept encrypted passwords.
+
+<p><li>in addition you can secure the tables from unauthorized access by
+setting up a different database user and GRANT rights. For instance,
+users without DELETE rights will still be able to use the program, change
+customers and vendors, add transactions but will not be able to delete or
+repost transactions.
+<br>To lock all the tables to create a RO system GRANT SELECT rights only.
+
+<p><li>Other security options include a secure shell, your webserver's
+authentication system, SSL, encrypted tunnels, ...
+
+</ul>
+
+</BODY>
+</HTML>
+