]> wagnertech.de Git - mfinanz.git/commitdiff
Merge remote branch 'origin/master'
authorSven Donath <lxo@dexo.de>
Fri, 16 Nov 2012 13:18:48 +0000 (14:18 +0100)
committerSven Donath <lxo@dexo.de>
Fri, 16 Nov 2012 13:18:48 +0000 (14:18 +0100)
54 files changed:
SL/Controller/Helper/Paginated.pm
SL/Controller/Helper/Sorted.pm
SL/IC.pm
SL/Layout/Javascript.pm
bin/mozilla/ap.pl
bin/mozilla/gl.pl
bin/mozilla/io.pl
bin/mozilla/oe.pl
bin/mozilla/vk.pl
css/kivitendo/main.css
css/lx-office-erp/main.css
doc/UPGRADE
doc/changelog
doc/dokumentation.xml
doc/html/ch02.html
doc/html/ch02s02.html
doc/html/ch02s03.html
doc/html/ch02s04.html
doc/html/ch02s05.html
doc/html/ch02s06.html
doc/html/ch02s07.html
doc/html/ch02s08.html
doc/html/ch02s09.html
doc/html/ch02s10.html
doc/html/ch02s11.html
doc/html/ch02s12.html
doc/html/ch02s13.html
doc/html/ch02s14.html
doc/html/ch02s15.html
doc/html/ch02s16.html [new file with mode: 0644]
doc/html/ch03.html
doc/html/ch03s02.html
doc/html/ch04.html
doc/html/ch04s04.html
doc/html/index.html
doc/html/system/docbook-xsl/images/note.png [new file with mode: 0644]
doc/html/system/docbook-xsl/images/warning.png [new file with mode: 0644]
doc/kivitendo-Dokumentation.pdf
image/icons/16x16/Program--Version.png
image/icons/24x24/Program--Version.png
image/icons/32x32/Program--Version.png
image/maps/icons16.png
image/maps/icons24.png
image/maps/icons32.png
locale/de/all
menu.ini
scripts/build_doc.sh
templates/print/Standard/credit_note.odt [new file with mode: 0644]
templates/print/Standard/invoice.odt
templates/print/Standard/sales_delivery_order.odt [new file with mode: 0644]
templates/print/Standard/sales_order.odt [new file with mode: 0644]
templates/print/Standard/sales_quotation.odt
templates/webpages/gl/form_header.html
templates/webpages/menu/menunew.html

index d3da20dc04f1994e8d3261076539ed2260d583e9..11eddd32da897faa7fa57fe7460c1776fd5c5c0e 100644 (file)
@@ -7,7 +7,7 @@ our @EXPORT = qw(make_paginated get_paginate_spec get_current_paginate_params _s
 
 use constant PRIV => '__paginatedhelper_priv';
 
-my $controller_paginate_spec;
+my %controller_paginate_spec;
 
 sub make_paginated {
   my ($class, %specs)       = @_;
@@ -20,7 +20,7 @@ sub make_paginated {
   $specs{ONLY}              = [ $specs{ONLY} ] if !ref $specs{ONLY};
   $specs{ONLY_MAP}          = @{ $specs{ONLY} } ? { map { ($_ => 1) } @{ $specs{ONLY} } } : { '__ALL__' => 1 };
 
-  $controller_paginate_spec = \%specs;
+  $controller_paginate_spec{$class} = \%specs;
 
   my %hook_params           = @{ $specs{ONLY} } ? ( only => $specs{ONLY} ) : ();
   $class->run_before('_save_current_paginate_params', %hook_params);
@@ -38,7 +38,7 @@ sub make_paginated {
 sub get_paginate_spec {
   my ($class_or_self) = @_;
 
-  return $controller_paginate_spec;
+  return $controller_paginate_spec{ref($class_or_self) || $class_or_self};
 }
 
 sub get_current_paginate_params {
index c9e5779116db5c66cd585dad8cef6866d27a2ad0..98c0a7c1088707e6267cdd1c7c86eed5c7fd32f1 100644 (file)
@@ -11,7 +11,7 @@ our @EXPORT = qw(make_sorted get_sort_spec get_current_sort_params set_report_ge
 
 use constant PRIV => '__sortedhelperpriv';
 
-my $controller_sort_spec;
+my %controller_sort_spec;
 
 sub make_sorted {
   my ($class, %specs) = @_;
@@ -35,7 +35,7 @@ sub make_sorted {
   $specs{ONLY}        ||= [];
   $specs{ONLY}          = [ $specs{ONLY} ] if !ref $specs{ONLY};
 
-  $controller_sort_spec = \%specs;
+  $controller_sort_spec{$class} = \%specs;
 
   my %hook_params = @{ $specs{ONLY} } ? ( only => $specs{ONLY} ) : ();
   $class->run_before('_save_current_sort_params', %hook_params);
@@ -53,7 +53,7 @@ sub make_sorted {
 sub get_sort_spec {
   my ($class_or_self) = @_;
 
-  return $controller_sort_spec;
+  return $controller_sort_spec{ref($class_or_self) || $class_or_self};
 }
 
 sub get_current_sort_params {
index f5f014b9d11267ba7832ae3cb9509dc75d10b706..f39c169b299411b8b1eb52cfa78778d4e91de8a3 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -109,60 +109,20 @@ sub get_part {
   $form->{amount}{IC_expense} = $form->{expense_accno};
   $form->{amount}{IC_cogs}    = $form->{expense_accno};
 
-  my @pricegroups          = ();
-  my @pricegroups_not_used = ();
-
   # get prices
-  $query =
-    qq|SELECT p.parts_id, p.pricegroup_id, p.price,
-         (SELECT pg.pricegroup
-          FROM pricegroup pg
-          WHERE pg.id = p.pricegroup_id) AS pricegroup
-       FROM prices p
-       WHERE (parts_id = ?)
-       ORDER BY pricegroup|;
-  $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
-
-  #for pricegroups
-  my $i = 1;
-  while (($form->{"klass_$i"}, $form->{"pricegroup_id_$i"},
-          $form->{"price_$i"}, $form->{"pricegroup_$i"})
-         = $sth->fetchrow_array()) {
-    push @pricegroups, $form->{"pricegroup_id_$i"};
-    $i++;
-  }
-
-  $sth->finish;
-
-  # get pricegroups
-  $query = qq|SELECT id, pricegroup FROM pricegroup|;
-  $form->{PRICEGROUPS} = selectall_hashref_query($form, $dbh, $query);
-
-  #find not used pricegroups
-  while (my $tmp = pop(@{ $form->{PRICEGROUPS} })) {
-    my $in_use = 0;
-    foreach my $item (@pricegroups) {
-      if ($item eq $tmp->{id}) {
-        $in_use = 1;
-        last;
-      }
-    }
-    push(@pricegroups_not_used, $tmp) unless ($in_use);
-  }
-
-  # if not used pricegroups are avaible
-  if (@pricegroups_not_used) {
+  $query = <<SQL;
+    SELECT pg.pricegroup, pg.id AS pricegroup_id, COALESCE(pr.price, 0) AS price
+    FROM pricegroup pg
+    LEFT JOIN prices pr ON (pr.pricegroup_id = pg.id) AND (pr.parts_id = ?)
+    ORDER BY lower(pg.pricegroup)
+SQL
 
-    foreach my $name (@pricegroups_not_used) {
-      $form->{"klass_$i"} = "$name->{id}";
-      $form->{"pricegroup_id_$i"} = "$name->{id}";
-      $form->{"pricegroup_$i"}    = "$name->{pricegroup}";
-      $i++;
-    }
+  my $row = 1;
+  foreach $ref (selectall_hashref_query($form, $dbh, $query, conv_i($form->{id}))) {
+    $form->{"${_}_${row}"} = $ref->{$_} for qw(pricegroup_id pricegroup price);
+    $row++;
   }
-
-  #correct rows
-  $form->{price_rows} = $i - 1;
+  $form->{price_rows} = $row - 1;
 
   # get makes
   if ($form->{makemodel}) {
@@ -241,7 +201,7 @@ sub get_pricegroups {
   my $dbh = $form->dbconnect($myconfig);
 
   # get pricegroups
-  my $query = qq|SELECT id, pricegroup FROM pricegroup|;
+  my $query = qq|SELECT id, pricegroup FROM pricegroup ORDER BY lower(pricegroup)|;
   my $pricegroups = selectall_hashref_query($form, $dbh, $query);
 
   my $i = 1;
@@ -471,26 +431,20 @@ sub save {
   # delete price records
   do_query($form, $dbh, qq|DELETE FROM prices WHERE parts_id = ?|, conv_i($form->{id}));
 
+  $query = qq|INSERT INTO prices (parts_id, pricegroup_id, price) VALUES(?, ?, ?)|;
+  $sth   = prepare_query($form, $dbh, $query);
+
   # insert price records only if different to sellprice
   for my $i (1 .. $form->{price_rows}) {
     my $price = $form->parse_amount($myconfig, $form->{"price_$i"});
-    if ($price == 0) {
-      $form->{"price_$i"} = $form->{sellprice};
-    }
-    if (
-        (   $price
-         || $form->{"klass_$i"}
-         || $form->{"pricegroup_id_$i"})
-        and $price != $form->{sellprice}
-      ) {
-      #$klass = $form->parse_amount($myconfig, $form->{"klass_$i"});
-      $query = qq|INSERT INTO prices (parts_id, pricegroup_id, price) | .
-               qq|VALUES(?, ?, ?)|;
-      @values = (conv_i($form->{id}), conv_i($form->{"pricegroup_id_$i"}), $price);
-      do_query($form, $dbh, $query, @values);
-    }
+    next unless $price && ($price != $form->{sellprice});
+
+    @values = (conv_i($form->{id}), conv_i($form->{"pricegroup_id_$i"}), $price);
+    do_statement($form, $sth, $query, @values);
   }
 
+  $sth->finish;
+
   # insert makemodel records
     my $lastupdate = '';
     my $value = 0;
index a9a17481d73d909350f9bc7f1046eb4b8db5b7ec..8d616093b28407321b78737fe9bb0f929a12cec1 100644 (file)
@@ -115,7 +115,7 @@ sub create_menu {
     my $item      = { 'title' => $::locale->text($name) };
     push @{ $all_items }, $item;
 
-    if ($menu_item->{submenu} || !defined($menu_item->{module})) {
+    if ($menu_item->{submenu} || (!defined($menu_item->{module}) && !defined($menu_item->{href}))) {
       $item->{subitems} = [];
       $item->{image} = _icon_path("$name.png");
       $self->create_menu($menu, $item->{subitems}, "${parent}${name}", $depth * 1 + 1);
index 0654d860b90a2b49b92354f3b05ca4e970879fbf..dfac71d2f58d5f93f839bff2439b721735a9c08f 100644 (file)
@@ -156,24 +156,19 @@ sub create_links {
   # currencies
   $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
 
-  map { $form->{selectcurrency} .= "<option>$_\n" } $form->get_all_currencies(\%myconfig);
+  map { my $quoted = H($_); $form->{selectcurrency} .= "<option value=\"${quoted}\">${quoted}\n" } $form->get_all_currencies(\%myconfig);
 
   # vendors
   if (@{ $form->{all_vendor} || [] }) {
     $form->{vendor} = qq|$form->{vendor}--$form->{vendor_id}|;
-    map { $form->{selectvendor} .= "<option>$_->{name}--$_->{id}\n" }
+    map { my $quoted = H($_->{name} . "--" . $_->{id}); $form->{selectvendor} .= "<option value=\"${quoted}\">${quoted}\n" }
       (@{ $form->{all_vendor} });
   }
 
   # departments
   if (@{ $form->{all_departments} || [] }) {
-    $form->{selectdepartment} = "<option>\n";
     $form->{department}       = "$form->{department}--$form->{department_id}";
-
-    map {
-      $form->{selectdepartment} .=
-        "<option>$_->{description}--$_->{id}\n"
-    } (@{ $form->{all_departments} || [] });
+    $form->{selectdepartment} = "<option>\n" . join('', map { my $quoted = H("$_->{description}--$_->{id}"); "<option value=\"${quoted}\">${quoted}\n"} @{ $form->{all_departments} || [] });
   }
 
   $form->{employee} = "$form->{employee}--$form->{employee_id}";
@@ -230,9 +225,9 @@ sub form_header {
 
   # set option selected
   foreach my $item (qw(vendor currency department)) {
+    my $to_replace         =  H($form->{$item});
     $form->{"select$item"} =~ s/ selected//;
-    $form->{"select$item"} =~
-      s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
+    $form->{"select$item"} =~ s/>\Q${to_replace}\E/ selected>${to_replace}/;
   }
   my $readonly = ($form->{id}) ? "readonly" : "";
 
@@ -291,7 +286,7 @@ sub form_header {
               <tr>
                 <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
                 <td colspan=3><select name=department>$form->{selectdepartment}</select>
-                <input type=hidden name=selectdepartment value="$form->{selectdepartment}">
+                <input type=hidden name=selectdepartment value="| . H($form->{selectdepartment}) . qq|">
                 </td>
               </tr>
 | if $form->{selectdepartment};
@@ -462,7 +457,7 @@ sub form_header {
               <tr>
                 <th align=right nowrap>| . $locale->text('Currency') . qq|</th>
                 <td><select name=currency>$form->{selectcurrency}</select></td>
-                <input type=hidden name=selectcurrency value="$form->{selectcurrency}">
+                <input type=hidden name=selectcurrency value="| . H($form->{selectcurrency}) . qq|">
                 <input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
                 <input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
                 <input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
index 719f2220991dd32a42497e73f401b31943ad17ec..bc5d7a56cbdf3e8606eb6f9e63066ff234c2ab6b 100644 (file)
@@ -844,6 +844,10 @@ sub display_rows {
 
 }
 
+sub _get_radieren {
+  return ($::instance_conf->get_gl_changeable == 2) ? ($::form->current_date(\%::myconfig) eq $::form->{gldate}) : ($::instance_conf->get_gl_changeable == 1);
+}
+
 sub form_header {
   $::lxdebug->enter_sub;
   $::auth->assert('general_ledger');
@@ -886,6 +890,7 @@ sub form_header {
   $::form->header;
   print $::form->parse_html_template('gl/form_header', {
     hide_title => $title,
+    readonly   => $::form->{id} && ($::form->{locked} || !_get_radieren()),
   });
 
   $::lxdebug->leave_sub;
@@ -903,12 +908,8 @@ sub form_footer {
     $follow_ups_due = sum map { $_->{due} * 1 } @{ $follow_ups || [] };
   }
 
-  my $radieren = ($::instance_conf->get_gl_changeable == 2)
-                    ? ($::form->current_date(\%::myconfig) eq $::form->{gldate})
-                    : ($::instance_conf->get_gl_changeable == 1);
-
   print $::form->parse_html_template('gl/form_footer', {
-    radieren       => $radieren,
+    radieren       => _get_radieren(),
     follow_ups     => $follow_ups,
     follow_ups_due => $follow_ups_due,
   });
index 60a535f365ade56d88f40f4255a13aee43f697cb..0d7601ea6f9dd52539bd1f827454021894e00ae9 100644 (file)
@@ -38,7 +38,7 @@
 
 use Carp;
 use CGI;
-use List::MoreUtils qw(uniq);
+use List::MoreUtils qw(any uniq);
 use List::Util qw(min max first);
 
 use SL::CVar;
@@ -1089,11 +1089,12 @@ sub print_options {
     opthash("inline",                $form->{SM}{inline},              $locale->text('In-line'))
       if ($form->{media} eq 'email');
 
+  my $printable_templates = any { $::lx_office_conf{print_templates}->{$_} } qw(latex opendocument);
   push @MEDIA, grep $_,
       opthash("screen",              $form->{OP}{screen},              $locale->text('Screen')),
-    ($form->{printers} && scalar @{ $form->{printers} } && $::lx_office_conf{print_templates}->{latex}) ?
+    ($printable_templates && $form->{printers} && scalar @{ $form->{printers} }) ?
       opthash("printer",             $form->{OP}{printer},             $locale->text('Printer')) : undef,
-    ($::lx_office_conf{print_templates}->{latex} && !$options{no_queue}) ?
+    ($printable_templates && !$options{no_queue}) ?
       opthash("queue",               $form->{OP}{queue},               $locale->text('Queue')) : undef
         if ($form->{media} ne 'email');
 
index 5df518fc7da8df88bc932166cc4e479211bb86fb..a6050945c63d4ffbdb8d918b67e21995be036588 100644 (file)
@@ -341,8 +341,9 @@ sub form_header {
                    "price_factors" => "ALL_PRICE_FACTORS");
 
   # label subs
-  $TMPL_VAR{ALL_EMPLOYEES}         = SL::DB::Manager::Employee->get_all(query => [ or => [ id => $::form->{employee_id},  deleted => 0 ] ]);
-  $TMPL_VAR{ALL_SALESMEN}          = SL::DB::Manager::Employee->get_all(query => [ or => [ id => $::form->{salesman_id},  deleted => 0 ] ]);
+  my $employee_list_query_gen      = sub { $::form->{$_[0]} ? [ or => [ id => $::form->{$_[0]}, deleted => 0 ] ] : [ deleted => 0 ] };
+  $TMPL_VAR{ALL_EMPLOYEES}         = SL::DB::Manager::Employee->get_all(query => $employee_list_query_gen->('employee_id'));
+  $TMPL_VAR{ALL_SALESMEN}          = SL::DB::Manager::Employee->get_all(query => $employee_list_query_gen->('salesman_id'));
   $TMPL_VAR{ALL_SHIPTO}            = SL::DB::Manager::Shipto->get_all(query => [
     or => [ trans_id  => $::form->{"$::form->{vc}_id"} * 1, and => [ shipto_id => $::form->{shipto_id} * 1, trans_id => undef ] ]
   ]);
@@ -922,7 +923,7 @@ sub orders {
   my %totals    = map { $_ => 0 } @subtotal_columns;
   my %subtotals = map { $_ => 0 } @subtotal_columns;
 
-  my $idx = 0;
+  my $idx = 1;
 
   my $edit_url = build_std_url('action=edit', 'type', 'vc');
 
@@ -964,8 +965,8 @@ sub orders {
     my $row_set = [ $row ];
 
     if (($form->{l_subtotal} eq 'Y')
-        && (($idx == (scalar @{ $form->{OE} } - 1))
-            || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx + 1]->{ $form->{sort} }))) {
+        && (($idx == (scalar @{ $form->{OE} }))
+            || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx]->{ $form->{sort} }))) {
       push @{ $row_set }, create_subtotal_row(\%subtotals, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal');
     }
 
index fe28838f873a5bbdcb3fa338babc882fc4c173e8..70c0482078572c6fab2c667bd6657e3ce001f39e 100644 (file)
@@ -103,7 +103,7 @@ sub invoice_transactions {
   my ($callback, $href, @columns);
 
   # can't currently be configured from report, empty line between main sortings
-  my $addemptylines = '1';
+  my $addemptylines = 1;
 
   if ( $form->{customer} =~ /--/ ) {
     # Felddaten kommen aus Dropdownbox
@@ -134,7 +134,7 @@ sub invoice_transactions {
 
   VK->invoice_transactions(\%myconfig, \%$form);
 
-  
+
   if ( $form->{mainsort} eq 'month' or $form->{subsort} eq 'month' ) {
 
     # Data already comes out of SELECT statement in correct month order, but
@@ -162,8 +162,8 @@ sub invoice_transactions {
   # hidden variables für pdf/csv export übergeben
   # einmal mit l_ um zu bestimmen welche Spalten ausgegeben werden sollen
   # einmal optionen für die Überschrift (z.B. transdatefrom, partnumber, ...)
-  my @hidden_variables  = (qw(l_headers_mainsort l_headers_subsort l_subtotal_mainsort l_subtotal_subsort l_total l_parts l_customername l_customernumber transdatefrom transdateto decimalplaces customer customername customer_id department partnumber partsgroup country business description project_id customernumber salesman employee salesman_id employee_id business_id partsgroup_id mainsort subsort), 
-      "$form->{db}number", 
+  my @hidden_variables  = (qw(l_headers_mainsort l_headers_subsort l_subtotal_mainsort l_subtotal_subsort l_total l_parts l_customername l_customernumber transdatefrom transdateto decimalplaces customer customername customer_id department partnumber partsgroup country business description project_id customernumber salesman employee salesman_id employee_id business_id partsgroup_id mainsort subsort),
+      "$form->{db}number",
       map({ "cvar_$_->{name}" } @searchable_custom_variables),
       map { "l_$_" } @columns
       );
@@ -207,73 +207,32 @@ sub invoice_transactions {
 
   my %column_alignment = map { $_ => 'right' } qw(lastcost sellprice sellprice_total lastcost_total parts_unit discount marge_total marge_percent qty weight);
 
-  
+
   # so now the check-box "Description" is only used as switch for part description in invoice-mode
   # always fill the column "Description" if we are in Zwischensummenmode
-  if (not defined $form->{"l_parts"}) {
-    $form->{"l_description"} = "Y";
-  };
+  $form->{"l_description"} = "Y" if not defined $form->{"l_parts"};;
   map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
 
   my @options;
 
-  if ($form->{description}) {
-    push @options, $locale->text('Description') . " : $form->{description}";
-  }
-  if ($form->{customer}) {
-    push @options, $locale->text('Customer') . " : $form->{customername}";
-  }
-  if ($form->{customernumber}) {
-    push @options, $locale->text('Customer Number') . " : $form->{customernumber}";
-  }
-# TODO: es wird nur id übergeben
-  if ($form->{department}) {
-    my ($department) = split /--/, $form->{department};
-    push @options, $locale->text('Department') . " : $department";
-  }
-  if ($form->{invnumber}) {
-    push @options, $locale->text('Invoice Number') . " : $form->{invnumber}";
-  }
-  if ($form->{invdate}) {
-    push @options, $locale->text('Invoice Date') . " : $form->{invdate}";
-  }
-  if ($form->{partnumber}) {
-    push @options, $locale->text('Part Number') . " : $form->{partnumber}";
-  }
-  if ($form->{partsgroup_id}) {
-    my $partsgroup = SL::DB::PartsGroup->new(id => $form->{partsgroup_id})->load;
-    push @options, $locale->text('Group') . " : $partsgroup->{partsgroup}";
-  }
-  if ($form->{country}) {
-    push @options, $locale->text('Country') . " : $form->{country}";
-  }
-  if ($form->{employee_id}) {
-    my $employee = SL::DB::Employee->new(id => $form->{employee_id})->load;
-    push @options, $locale->text('Employee') . ' : ' . $employee->name;
-  }
-  if ($form->{salesman_id}) {
-    my $salesman = SL::DB::Employee->new(id => $form->{salesman_id})->load;
-    push @options, $locale->text('Salesman') . ' : ' . $salesman->name;
-  }
-  if ($form->{business_id}) {
-    my $business = SL::DB::Business->new(id => $form->{business_id})->load;
-    push @options, $locale->text('Customer type') . ' : ' . $business->description;
-  }
-  if ($form->{ordnumber}) {
-    push @options, $locale->text('Order Number') . " : $form->{ordnumber}";
-  }
-  if ($form->{notes}) {
-    push @options, $locale->text('Notes') . " : $form->{notes}";
-  }
-  if ($form->{transaction_description}) {
-    push @options, $locale->text('Transaction description') . " : $form->{transaction_description}";
-  }
-  if ($form->{transdatefrom}) {
-    push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
-  }
-  if ($form->{transdateto}) {
-    push @options, $locale->text('Bis') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1);
-  }
+  push @options, $locale->text('Description')             . " : $form->{description}"                                                       if $form->{description};
+  push @options, $locale->text('Customer')                . " : $form->{customername}"                                                      if $form->{customer};
+  push @options, $locale->text('Customer Number')         . " : $form->{customernumber}"                                                    if $form->{customernumber};
+  # TODO: es wird nur id übergeben
+  push @options, $locale->text('Department')              . " : " . (split /--/, $form->{department})[0]                                    if $form->{department};
+  push @options, $locale->text('Invoice Number')          . " : $form->{invnumber}"                                                         if $form->{invnumber};
+  push @options, $locale->text('Invoice Date')            . " : $form->{invdate}"                                                           if $form->{invdate};
+  push @options, $locale->text('Part Number')             . " : $form->{partnumber}"                                                        if $form->{partnumber};
+  push @options, $locale->text('Group')                   . " : " . SL::DB::PartsGroup->new(id => $form->{partsgroup_id})->load->partsgroup if $form->{partsgroup_id};
+  push @options, $locale->text('Country')                 . " : $form->{country}"                                                           if $form->{country};
+  push @options, $locale->text('Employee')                . ' : ' . SL::DB::Employee->new(id => $form->{employee_id})->load->name           if $form->{employee_id};
+  push @options, $locale->text('Salesman')                . ' : ' . SL::DB::Employee->new(id => $form->{salesman_id})->load->name           if $form->{salesman_id};
+  push @options, $locale->text('Customer type')           . ' : ' . SL::DB::Business->new(id => $form->{business_id})->load->description    if $form->{business_id};
+  push @options, $locale->text('Order Number')            . " : $form->{ordnumber}"                                                         if $form->{ordnumber};
+  push @options, $locale->text('Notes')                   . " : $form->{notes}"                                                             if $form->{notes};
+  push @options, $locale->text('Transaction description') . " : $form->{transaction_description}"                                           if $form->{transaction_description};
+  push @options, $locale->text('From')                    . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1)                      if $form->{transdatefrom};
+  push @options, $locale->text('Bis')                     . " " . $locale->date(\%myconfig, $form->{transdateto}, 1)                        if $form->{transdateto};
 
   my $report = SL::ReportGenerator->new(\%myconfig, $form);
 
@@ -306,6 +265,15 @@ sub invoice_transactions {
       'data'           => $form->{AR}
   );
 
+  my $num_visible_columns = scalar $report->get_visible_columns;
+  my %empty_row           = (
+    description           => {
+      data                => '',
+      class               => 'listrowempty',
+      colspan             => $num_visible_columns,
+    },
+  );
+
   # add sort and escape callback, this one we use for the add sub
   $form->{callback} = $href .= "&sort=$form->{mainsort}";
 
@@ -318,7 +286,7 @@ sub invoice_transactions {
   # Durchschnitt von marge_percent
   my @total_columns = qw(sellprice_total lastcost_total marge_total marge_percent );
 
-  my %totals    = map { $_ => 0 } @total_columns;
+  my %totals     = map { $_ => 0 } @total_columns;
   my %subtotals1 = map { $_ => 0 } @subtotal_columns;
   my %subtotals2 = map { $_ => 0 } @subtotal_columns;
 
@@ -352,18 +320,13 @@ sub invoice_transactions {
 
     # Anfangshauptüberschrift
     if ( $form->{l_headers_mainsort} eq "Y" && ( $idx == 0 or $ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx - 1]->{ $form->{'mainsort'} } )) {
-      my $headerrow;
-
-      # use $emptyname for mainsort header if mainsort is empty
-      if ( $ar->{$form->{'mainsort'}} ) {
-        $headerrow->{description}->{data} = $ar->{$form->{'mainsort'}};
-      } else {
-        $headerrow->{description}->{data} = $locale->text('empty');
+      my $headerrow = {
+        # use $emptyname for mainsort header if mainsort is empty
+        data    => $ar->{$form->{'mainsort'}} || $locale->text('empty'),
+        class   => "listmainsortheader",
+        colspan => $num_visible_columns,
       };
-
-      $headerrow->{description}->{class} = "listmainsortheader";
-      my $headerrow_set = [ $headerrow ];
-      $report->add_data($headerrow_set);
+      $report->add_data([ { description => $headerrow } ]);
 
       # add empty row after main header
 #      my $emptyheaderrow->{description}->{data} = "";
@@ -373,22 +336,20 @@ sub invoice_transactions {
     };
 
     # subsort überschriften
-    if ( $idx == 0
-      or $ar->{ $form->{'subsort'} }  ne $form->{AR}->[$idx - 1]->{ $form->{'subsort'} }
-      or $ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx - 1]->{ $form->{'mainsort'} }
+    # special case: subsort headers only makes (aesthetical) sense if we show individual parts
+    if ((   $idx == 0
+         or $ar->{ $form->{'subsort'} }  ne $form->{AR}->[$idx - 1]->{ $form->{'subsort'} }
+         or $ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx - 1]->{ $form->{'mainsort'} })
+        && ($form->{l_headers_subsort} eq "Y")
+        && $form->{l_parts}
     ) {
-      my $headerrow;
-
-      # if subsort name is defined, use that name in header, otherwise use $emptyname
-      if ( $ar->{$form->{'subsort'}} ) {
-        $headerrow->{description}->{data} = $ar->{$form->{'subsort'}};
-      } else {
-        $headerrow->{description}->{data} = $locale->text('empty');
+      my $headerrow = {
+        # if subsort name is defined, use that name in header, otherwise use $emptyname
+        data    => $ar->{$form->{'subsort'}} || $locale->text('empty'),
+        class   => "listsubsortheader",
+        colspan => $num_visible_columns,
       };
-      $headerrow->{description}->{class} = "listsubsortheader";
-      my $headerrow_set = [ $headerrow ];
-      # special case: subsort headers only makes (aesthetical) sense if we show individual parts
-      $report->add_data($headerrow_set) if $form->{l_headers_subsort} eq "Y" and $form->{l_parts};
+      $report->add_data([ { description => $headerrow } ]);
     };
 
     map { $subtotals1{$_} += $ar->{$_};
@@ -401,7 +362,7 @@ sub invoice_transactions {
       # calculate averages for subtotals1 and subtotals2
       # credited positions reduce both total and qty and thus don't influence average prices
       $subtotals1{sellprice} = $subtotals1{sellprice_total} / $subtotals1{qty};
-      $subtotals1{lastcost} = $subtotals1{lastcost_total} / $subtotals1{qty};
+      $subtotals1{lastcost}  = $subtotals1{lastcost_total}  / $subtotals1{qty};
     } else {
       # qty is zero, so we have a special case where each position in subtotal
       # group has a corresponding credit note so that the total qty is zero in
@@ -409,15 +370,15 @@ sub invoice_transactions {
       # rather than leaving the last value in sellprice/lastcost
 
       $subtotals1{sellprice} = 0;
-      $subtotals1{lastcost} = 0;
+      $subtotals1{lastcost}  = 0;
     };
 
     if ( $subtotals2{qty} != 0 ) {
       $subtotals2{sellprice} = $subtotals2{sellprice_total} / $subtotals2{qty};
-      $subtotals2{lastcost} = $subtotals2{lastcost_total} / $subtotals2{qty};
+      $subtotals2{lastcost}  = $subtotals2{lastcost_total}  / $subtotals2{qty};
     } else {
       $subtotals2{sellprice} = 0;
-      $subtotals2{lastcost} = 0;
+      $subtotals2{lastcost}  = 0;
     };
 
     # Ertrag prozentual in den Summen: (summe VK - summe Ertrag) / summe VK
@@ -432,53 +393,44 @@ sub invoice_transactions {
     map { $ar->{$_} = $form->format_amount(\%myconfig, $ar->{$_}, 3) } qw(weight);
     map { $ar->{$_} = $form->format_amount(\%myconfig, $ar->{$_}, $form->{"decimalplaces"} )} qw(lastcost sellprice sellprice_total lastcost_total);
 
-    my $row = { };
-
-    foreach my $column (@columns) {
-      $row->{$column} = {
-        'data'  => $ar->{$column},
-        'align' => $column_alignment{$column},
-      };
-    }
-
-   $row->{description}->{class} = 'listsortdescription';
-
-    $row->{invnumber}->{link} = build_std_url("script=is.pl", 'action=edit')
-      . "&id=" . E($ar->{id}) . "&callback=${callback}";
-
     # Einzelzeilen nur zeigen wenn l_parts gesetzt ist, nützlich, wenn man nur
     # Subtotals und Totals sehen möchte
-    my $row_set = $form->{l_parts} ? [ $row ] : [ ];
+    if ($form->{l_parts}) {
+      my %row = (
+        map { ($_ => { data => $ar->{$_}, align => $column_alignment{$_} }) } @columns
+      );
+
+      $row{invnumber}->{link} = build_std_url("script=is.pl", 'action=edit') . "&id=" . E($ar->{id}) . "&callback=${callback}";
+
+      $report->add_data(\%row);
+    }
 
     # hier wird bei l_subtotal nicht differenziert zwischen mainsort und subsort
     # macht man l_subtotal_mainsort aus wird l_subtotal_subsort auch nicht ausgeführt
-    if (($form->{l_subtotal_mainsort} eq 'Y')
+    if (   ($form->{l_subtotal_mainsort} eq 'Y')
+        && ($form->{l_subtotal_subsort}  eq 'Y')
         && (($idx == (scalar @{ $form->{AR} } - 1))   # last element always has a subtotal
           || ($ar->{ $form->{'subsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'subsort'}   })
           || ($ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'mainsort'} })
           )) {   # if value that is sorted by changes, print subtotal
 
-      if ($form->{l_subtotal_subsort} eq 'Y') {
-        push @{ $row_set }, create_subtotal_row_invoice(\%subtotals2, \@columns, \%column_alignment, \@subtotal_columns, 'listsubsortsubtotal', $ar->{ $form->{'subsort'} }) ;
-        push @{ $row_set }, insert_empty_row() if $form->{l_parts} and $addemptylines;
-      };
+      $report->add_data(create_subtotal_row_invoice(\%subtotals2, \@columns, \%column_alignment, \@subtotal_columns, $form->{l_parts} ? 'listsubtotal' : undef, $ar->{ $form->{'subsort'} }));
+      $report->add_data({ %empty_row }) if $form->{l_parts} and $addemptylines;
     }
 
     # if last mainsort is reached or mainsort has changed, add mainsort subtotal and empty row
-    if (($form->{l_subtotal_mainsort} eq 'Y')
+    if (   ($form->{l_subtotal_mainsort} eq 'Y')
+        && ($form->{l_subtotal_mainsort} eq 'Y')
+        && ($form->{mainsort}            ne $form->{subsort})
         && (($idx == (scalar @{ $form->{AR} } - 1))   # last element always has a subtotal
             || ($ar->{ $form->{'mainsort'} } ne $form->{AR}->[$idx + 1]->{ $form->{'mainsort'} })
             )) {   # if value that is sorted by changes, print subtotal
-      if ($form->{l_subtotal_mainsort} eq 'Y' and $form->{mainsort} ne $form->{subsort} ) {
         # subtotal is overriden if mainsort and subsort are equal, don't print
         # subtotal line even if it is selected
-        push @{ $row_set }, create_subtotal_row_invoice(\%subtotals1, \@columns, \%column_alignment, \@subtotal_columns, 'listmainsortsubtotal', $ar->{$form->{mainsort}});
-        push @{ $row_set }, insert_empty_row() if $addemptylines; # insert empty row after mainsort
-      };
+      $report->add_data(create_subtotal_row_invoice(\%subtotals1, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal', $ar->{$form->{mainsort}}));
+      $report->add_data({ %empty_row }) if $addemptylines; # insert empty row after mainsort
     }
 
-    $report->add_data($row_set);
-
     $idx++;
   }
   if ( $form->{l_total} eq "Y" ) {
@@ -490,16 +442,6 @@ sub invoice_transactions {
   $main::lxdebug->leave_sub();
 }
 
-
-sub insert_empty_row {
-    my $dummyrow;
-    $dummyrow->{description}->{data} = "";
-    my $dummyrowset = [ $dummyrow ];
-    return $dummyrow;
-};
-
-
-
 sub create_subtotal_row_invoice {
   $main::lxdebug->enter_sub();
 
@@ -509,7 +451,7 @@ sub create_subtotal_row_invoice {
   my %myconfig = %main::myconfig;
   my $locale   = $main::locale;
 
-  my $row = { map { $_ => { 'data' => '', 'class' => $class, 'align' => $column_alignment->{$_}, } } @{ $columns } };
+  my $row = { map { $_ => { data => '', class => $class, align => $column_alignment->{$_}, } } @{ $columns } };
 
   # set name as "empty" if no value is given, except if we are dealing with the
   # absolute total, then just write "Total sum"
@@ -534,4 +476,3 @@ sub create_subtotal_row_invoice {
 }
 
 1;
-
index 77fe0978dceb314f0a9934c389c0bbc4ad6a73ca..8452ed0b79e5cf3fd937a69e8078879bceb8c0e0 100644 (file)
@@ -234,6 +234,11 @@ body.menu {
        color: black;
        vertical-align: top;
 }
+.listrowempty {
+       background-color: #FFFFFF;
+       color: black;
+       vertical-align: top;
+}
 .listsubtotal {
        background-color: rgb(236,233,216);
        color: black;
index c190cb7e59db4fa37a890fef7129047c19d92ed8..3788c88577c9786f46bca6439131be047099c6af 100644 (file)
@@ -259,6 +259,7 @@ div.admin {
 
 .listrow1 { background-color: rgb(208,207,201); color: black; vertical-align: top; }
 .listrow0 { background-color: rgb(236,233,216); color: black; vertical-align: top; }
+.listrowempty { background-color: rgb(255,255,255); color: black; vertical-align: top; }
 
 .redrow1 { background-color: rgb(250,167, 161); color: black; vertical-align: top; }
 .redrow0 { background-color: rgb(255,193,176); color: black; vertical-align: top; }
@@ -443,5 +444,3 @@ label {
   border-style:none;
   border-width:thin;
 }
-
-
index fdbcd4b1a82033adc7748e8c8a9a1d78b4d349ec..548b31834e4aaa951a18edc5f55c284da8c022af 100644 (file)
@@ -16,8 +16,8 @@ Upgrade auf v2.7.1
   * Test::Harness 3.00
   * IO::Socket::SSL
   * Net::LDAP
-  * Met::SMTP::SSL  1.01
-  * Met::SSLGlue 1.01
+  * Net::SMTP::SSL  1.01
+  * Net::SSLGlue 1.01
 
   Wie immer bitte vor dem ersten Aufrufen einmal die Pakete überprüfen:
 
@@ -29,17 +29,18 @@ Upgrade auf v2.7.1
   * GD 2.00
 
 * Diverse umstrittene Features zum nicht standardkonformen Umgang mit gebuchten
-  Rechnungen sind jetzt standardmässig deaktiviert, und müssen unter System
-  -> Mandantenkonfiguration aktiviert werden.
+  Rechnungen sind jetzt standardmässig deaktiviert und müssen unter "System"
+  -> "Mandantenkonfiguration" aktiviert werden.
 
 * Die Übersetzungen "de_DE" und "fr" für die alternative deutsche Version und
   französische Version respektive wurden entfernt. Es bleiben offiziell
-  unterstützt die deutsche "de" und englische "en" Übersetzung.
+  unterstützte Übersetzungen in Deutsch ("de") und English ("en").
 
-* Dieses ist die letzte Version die perl Versionen vor 5.10.1 unterstützen wird.
-  Ab dem nächsten Release werden Sprachkonstrukte verwendet werden, die nicht mehr
-  in 5.8 kompilieren, und es werden alle Coremodule bis einschließlich 5.10.1
-  nicht mehr als Abhängigkeiten gelistet.
+* Dieses ist die letzte Version, die Perl-Versionen vor 5.10.1
+  unterstützen wird.  Ab dem nächsten Release werden Sprachkonstrukte
+  verwendet werden, die nicht mehr in 5.8 kompilieren, und Module, die
+  bis v5.10.1 zu den Coremodulen gehören, werden ab dann nicht mehr
+  als explizite Abhängigkeiten gelistet.
 
 
 Upgrade auf v2.7.0
index a51e18936712350f56a45053aec9960cd2adc40b..8a9cd834cf38380a9f6234f77de5def5604178e4 100644 (file)
@@ -52,7 +52,7 @@ Größere neue Features:
   Artikel in Aufträgen listet, die nocht nicht in einem Lieferschein erfasst
   sind.
 
-Kleinere neue Features und Detailverbesserungen
+Kleinere neue Features und Detailverbesserungen:
 
 - neue xtCommerce Schnittstelle
   Die Schnittstelle wurde auf Basis der PepperShop Schnittstelle neu gebaut
@@ -67,7 +67,7 @@ Kleinere neue Features und Detailverbesserungen
   Es ist jetzt möglich den Taskserver aus der Weboberfläche zu steuern. Im Menü
   unter "System" -> "Hintergrund-Jobs und Task-Server"
 
-API-Änderungen
+API-Änderungen:
 
 - Benutzerdefinierte Variablen vom Typ "Lieferant" und "Ware"
   Für die Auswahl in den webpages steht ein L.vendor_selector und
index e7547b153bb37f5773b16fca04ebf1cb34e7805b..76a569c76d3d778ace755aac9a861cf308843b99 100644 (file)
   <chapter id="config">
     <title>Installation und Grundkonfiguration</title>
 
+    <sect1 id="Installation-Übersicht">
+      <title>Übersicht</title>
+
+      <para>
+        Die Installation von kivitendo umfasst mehrere Schritte. Die folgende Liste kann sowohl für Neulinge als auch für alte Hasen als
+        Übersicht und Stichpunktliste zum Abhaken dienen, um eine Version mit minimalen Features möglichst schnell zum Laufen zu kriegen.
+      </para>
+
+      <orderedlist>
+        <listitem><para><emphasis>Voraussetzungen überprüfen</emphasis>: kivitendo benötigt gewisse Ressourcen und benutzt weitere
+        Programme. Das Kapitel "<xref linkend="Benötigte-Software-und-Pakete"/>" erläutert diese. Auch die Liste der benötigten Perl-Module
+        befindet sich hier.</para></listitem>
+
+        <listitem><para><emphasis>Installation von kivitendo</emphasis>: Diese umfasst die "<xref
+        linkend="Manuelle-Installation-des-Programmpaketes"/>" sowie grundlegende Einstellungen, die der "<xref
+        linkend="config.config-file"/>" erläutert.</para></listitem>
+
+        <listitem><para><emphasis>Konfiguration externer Programme</emphasis>: hierzu gehören die Datenbank ("<xref
+        linkend="Anpassung-der-PostgreSQL-Konfiguration"/>") und der Webserver ("<xref
+        linkend="Apache-Konfiguration"/>"). </para></listitem>
+
+        <listitem><para><emphasis>Benutzerinformationen speichern können</emphasis>: man benötigt mindestens eine Datenbank, in der
+        Informationen zur Authentifizierung sowie die Nutzdaten gespeichert werden. Wie man das als Administrator macht, verrät "<xref
+        linkend="Benutzerauthentifizierung-und-Administratorpasswort"/>".</para></listitem>
+
+        <listitem><para><emphasis>Benutzer, Gruppen und Datenbanken anlegen</emphasis>: wie dies alles zusammenspielt erläutert "<xref
+        linkend="Benutzer--und-Gruppenverwaltung"/>".</para></listitem>
+
+        <listitem><para><emphasis>Los geht's</emphasis>: alles soweit erledigt? Dann kann es losgehen: "<xref
+        linkend="kivitendo-ERP-verwenden"/>"</para></listitem>
+      </orderedlist>
+
+      <para>
+        Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls wichtig und dienen sollten vor einer ernsthaften Inbetriebnahme gelesen
+        werden.
+      </para>
+    </sect1>
+
     <sect1 id="Benötigte-Software-und-Pakete">
       <title>Benötigte Software und Pakete</title>
 
         nicht Bestandteil einer Standard-Perl-Installation sind:</para>
 
         <itemizedlist>
-          <listitem><para><literal>parent</literal></para></listitem>
+          <listitem><para><literal>parent</literal> (nur bei Perl vor 5.10.1)</para></listitem>
 
           <listitem><para><literal>Archive::Zip</literal></para></listitem>
 
 
         <para>Für Debian oder Ubuntu benötigen Sie diese Pakete:</para>
 
-        <programlisting>apt-get install apache2 postgresql libparent-perl libarchive-zip-perl \
+        <programlisting>apt-get install apache2 postgresql libarchive-zip-perl \
   libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl \
   libemail-address-perl libemail-mime-perl liblist-moreutils-perl libpdf-api2-perl \
   librose-object-perl librose-db-perl librose-db-object-perl \
index acd0f71e2c87d23e2458093f9777d9160c7462ca..5a87c8823938cb472f8adf3c19ea3c8dec80b38f 100644 (file)
@@ -1,88 +1,18 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>Kapitel 2. Installation und Grundkonfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"><link rel="next" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 2. Installation und Grundkonfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 2. Installation und Grundkonfiguration"><div class="titlepage"><div><div><h2 class="title"><a name="config"></a>Kapitel 2. Installation und Grundkonfiguration</h2></div></div></div><div class="sect1" title="2.1. Benötigte Software und Pakete"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Ben%C3%B6tigte-Software-und-Pakete"></a>2.1. Benötigte Software und Pakete</h2></div></div></div><div class="sect2" title="2.1.1. Betriebssystem"><div class="titlepage"><div><div><h3 class="title"><a name="Betriebssystem"></a>2.1.1. Betriebssystem</h3></div></div></div><p>kivitendo ist für Linux konzipiert, und sollte auf jedem
-        unixoiden Betriebssystem zum Laufen zu kriegen sein. Getestet ist
-        diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
-        bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
-        ohne große Probleme auf den derzeit aktuellen verbreiteten
-        Distributionen läuft.</p><p>Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
-        dass kivitendo auf ihnen läuft:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>6.0 Squeeze (hier muss allerdings das Modul FCGI in der Version &gt;= 0.72 compiled werden)</p></li><li class="listitem"><p>7.0 Wheezy</p></li></ul></div></li><li class="listitem"><p>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</p></li><li class="listitem"><p>openSUSE 11.2 und 11.3</p></li><li class="listitem"><p>SuSE Linux Enterprice Server 11</p></li><li class="listitem"><p>Fedora 13 bis 16</p></li></ul></div></div><div class="sect2" title="2.1.2. Pakete"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.1.2. Pakete</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
-        Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2)
-        benötigt.</p><p>Zusätzlich benötigt kivitendo die folgenden Perl-Pakete, die
-        nicht Bestandteil einer Standard-Perl-Installation sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                     <code class="literal">parent</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Archive::Zip</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Config::Std</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">DateTime</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">DBI</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">DBD::Pg</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Email::Address</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Email::MIME</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">JSON</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">List::MoreUtils</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Net::SMTP::SSL</code> (optional, bei E-Mail-Versand über SSL; siehe Abschnitt "<a class="xref" href="ch02s09.html#config.sending-email.smtp" title="2.9.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
-                     <code class="literal">Net::SSLGlue</code> (optional, bei E-Mail-Versand über TLS; siehe Abschnitt "<a class="xref" href="ch02s09.html#config.sending-email.smtp" title="2.9.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
-                     <code class="literal">Params::Validate</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">PDF::API2</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Rose::Object</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Rose::DB</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Rose::DB::Object</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Template</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Text::CSV_XS</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">Text::Iconv</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">URI</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">XML::Writer</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">YAML</code>
-                  </p></li></ul></div><p>Seit v2.7.0 sind die folgenden Pakete hinzugekommen: <code class="literal">Email::MIME</code>, <code class="literal">Net::SMTP::SSL</code>,
-        <code class="literal">Net::SSLGlue</code>.</p><p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete
-        hinzugekommen, <code class="literal">URI</code> und
-        <code class="literal">XML::Writer</code> sind notwendig. Ohne startet kivitendo
-        nicht.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
-        <code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
-        <code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
-        neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><p>Gegenüber Version 2.6.3 ist <code class="literal">JSON</code> neu
-        hinzugekommen.</p><p>
-               <code class="literal">Email::Address</code> und
-        <code class="literal">List::MoreUtils</code> sind schon länger feste
-        Abhängigkeiten, wurden aber bisher mit kivitendo mitgeliefert. Beide
-        sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
-        zukünftigen Version aber aus dem Paket entfernt werden. Es wird
-        empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
-        installieren.</p><p>Die zu installierenden Pakete können in den verschiedenen
-        Distributionen unterschiedlich heißen.</p><p>Für Debian oder Ubuntu benötigen Sie diese Pakete:</p><pre class="programlisting">apt-get install apache2 postgresql libparent-perl libarchive-zip-perl \
-  libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl \
-  libemail-address-perl libemail-mime-perl liblist-moreutils-perl libpdf-api2-perl \
-  librose-object-perl librose-db-perl librose-db-object-perl \
-  libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl \
-  libxml-writer-perl libyaml-perl libconfig-std-perl \
-  libparams-validate-perl libjson-perl libclass-accessor-perl \
-  libnet-sslglue-perl libnet-smtp-ssl-perl</pre><p>Für Fedora Core benötigen Sie diese Pakete:</p><pre class="programlisting">yum install httpd postgresql-server perl-parent perl-DateTime \
-  perl-DBI perl-DBD-Pg perl-Email-Address perl-Email-MIME perl-List-MoreUtils \
-  perl-PDF-API2 perl-Rose-Object perl-Rose-DB perl-Rose-DB-Object \
-  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
-  perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL</pre><p>Für OpenSuSE benötigen Sie diese Pakete:</p><pre class="programlisting">zypper install apache2 postgresql-server perl-Archive-Zip \
-  perl-DateTime perl-DBI perl-DBD-Pg perl-Email-MIME perl-MailTools perl-List-MoreUtils \
-  perl-PDF-API2 perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \
-  perl-URI perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL</pre><p>kivitendo enthält ein Script, mit dem überprüft werden kann, ob
-        alle benötigten Perl-Module installiert sind. Der Aufruf lautet wie
-        folgt:</p><pre class="programlisting">./scripts/installation_check.pl</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 1. Aktuelle Hinweise&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.2. Manuelle Installation des Programmpaketes</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>Kapitel 2. Installation und Grundkonfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"><link rel="next" href="ch02s02.html" title="2.2. Benötigte Software und Pakete"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 2. Installation und Grundkonfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 2. Installation und Grundkonfiguration"><div class="titlepage"><div><div><h2 class="title"><a name="config"></a>Kapitel 2. Installation und Grundkonfiguration</h2></div></div></div><div class="sect1" title="2.1. Übersicht"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Installation-%C3%9Cbersicht"></a>2.1. Übersicht</h2></div></div></div><p>
+        Die Installation von kivitendo umfasst mehrere Schritte. Die folgende Liste kann sowohl für Neulinge als auch für alte Hasen als
+        Übersicht und Stichpunktliste zum Abhaken dienen, um eine Version mit minimalen Features möglichst schnell zum Laufen zu kriegen.
+      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+                  <span class="emphasis"><em>Voraussetzungen überprüfen</em></span>: kivitendo benötigt gewisse Ressourcen und benutzt weitere
+        Programme. Das Kapitel "<a class="xref" href="ch02s02.html" title="2.2. Benötigte Software und Pakete">Abschnitt&nbsp;2.2, „Benötigte Software und Pakete“</a>" erläutert diese. Auch die Liste der benötigten Perl-Module
+        befindet sich hier.</p></li><li class="listitem"><p>
+                  <span class="emphasis"><em>Installation von kivitendo</em></span>: Diese umfasst die "<a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>" sowie grundlegende Einstellungen, die der "<a class="xref" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei">Abschnitt&nbsp;2.4, „kivitendo-Konfigurationsdatei“</a>" erläutert.</p></li><li class="listitem"><p>
+                  <span class="emphasis"><em>Konfiguration externer Programme</em></span>: hierzu gehören die Datenbank ("<a class="xref" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration">Abschnitt&nbsp;2.5, „Anpassung der PostgreSQL-Konfiguration“</a>") und der Webserver ("<a class="xref" href="ch02s06.html" title="2.6. Webserver-Konfiguration">Abschnitt&nbsp;2.6, „Webserver-Konfiguration“</a>"). </p></li><li class="listitem"><p>
+                  <span class="emphasis"><em>Benutzerinformationen speichern können</em></span>: man benötigt mindestens eine Datenbank, in der
+        Informationen zur Authentifizierung sowie die Nutzdaten gespeichert werden. Wie man das als Administrator macht, verrät "<a class="xref" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.8, „Benutzerauthentifizierung und Administratorpasswort“</a>".</p></li><li class="listitem"><p>
+                  <span class="emphasis"><em>Benutzer, Gruppen und Datenbanken anlegen</em></span>: wie dies alles zusammenspielt erläutert "<a class="xref" href="ch02s09.html" title="2.9. Benutzer- und Gruppenverwaltung">Abschnitt&nbsp;2.9, „Benutzer- und Gruppenverwaltung“</a>".</p></li><li class="listitem"><p>
+                  <span class="emphasis"><em>Los geht's</em></span>: alles soweit erledigt? Dann kann es losgehen: "<a class="xref" href="ch02s16.html" title="2.16. kivitendo ERP verwenden">Abschnitt&nbsp;2.16, „kivitendo ERP verwenden“</a>"</p></li></ol></div><p>
+        Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls wichtig und dienen sollten vor einer ernsthaften Inbetriebnahme gelesen
+        werden.
+      </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 1. Aktuelle Hinweise&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.2. Benötigte Software und Pakete</td></tr></table></div></body></html>
\ No newline at end of file
index 668c4bfe90275661e4261288818d793c656b0b4f..05d1c0ad2ad038f562448fafa3272ad9a99442e8 100644 (file)
@@ -1,15 +1,87 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.2. Manuelle Installation des Programmpaketes</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="next" href="ch02s03.html" title="2.3. kivitendo-Konfigurationsdatei"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.2. Manuelle Installation des Programmpaketes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.2. Manuelle Installation des Programmpaketes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Manuelle-Installation-des-Programmpaketes"></a>2.2. Manuelle Installation des Programmpaketes</h2></div></div></div><p>Die kivitendo ERP Installationsdatei (kivitendo-erp-2.6.3.tgz) wird
-      im Dokumentenverzeichnis des Webservers (z.B.
-      <code class="filename">/var/www/html/</code>,
-      <code class="filename">/srv/www/htdocs</code> oder
-      <code class="filename">/var/www/</code>) entpackt:</p><pre class="programlisting">cd /var/www
-tar xvzf kivitendo-erp-2.6.3.tgz</pre><p>Wechseln Sie in das entpackte Verzeichnis:</p><pre class="programlisting">cd kivitendo-erp</pre><p>Alternativ können Sie auch einen Alias in der
-      Webserverkonfiguration benutzen, um auf das tatsächliche
-      Installationsverzeichnis zu verweisen.</p><p>Die Verzeichnisse <code class="filename">users</code>, <code class="filename">spool</code> und <code class="filename">webdav</code> müssen für den Benutzer
-      beschreibbar sein, unter dem der Webserver läuft. Die restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer- und
-      Gruppennamen sind bei verschiedenen Distributionen unterschiedlich (z.B. bei Debian/Ubuntu <code class="constant">www-data</code>, bei Fedora
-      core <code class="constant">apache</code> oder bei OpenSuSE <code class="constant">wwwrun</code>).</p><p>Der folgende Befehl ändert den Besitzer für die oben genannten
-      Verzeichnisse auf einem Debian/Ubuntu-System:</p><pre class="programlisting">chown -R www-data users spool webdav</pre><p>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen <code class="filename">templates</code> und <code class="filename">users</code>
-      Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in kivitendo angelegt wird:</p><pre class="programlisting">chown www-data templates users</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 2. Installation und Grundkonfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.3. kivitendo-Konfigurationsdatei</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.2. Benötigte Software und Pakete</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="next" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.2. Benötigte Software und Pakete</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.2. Benötigte Software und Pakete"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Ben%C3%B6tigte-Software-und-Pakete"></a>2.2. Benötigte Software und Pakete</h2></div></div></div><div class="sect2" title="2.2.1. Betriebssystem"><div class="titlepage"><div><div><h3 class="title"><a name="Betriebssystem"></a>2.2.1. Betriebssystem</h3></div></div></div><p>kivitendo ist für Linux konzipiert, und sollte auf jedem
+        unixoiden Betriebssystem zum Laufen zu kriegen sein. Getestet ist
+        diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
+        bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
+        ohne große Probleme auf den derzeit aktuellen verbreiteten
+        Distributionen läuft.</p><p>Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
+        dass kivitendo auf ihnen läuft:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>6.0 Squeeze (hier muss allerdings das Modul FCGI in der Version &gt;= 0.72 compiled werden)</p></li><li class="listitem"><p>7.0 Wheezy</p></li></ul></div></li><li class="listitem"><p>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</p></li><li class="listitem"><p>openSUSE 11.2 und 11.3</p></li><li class="listitem"><p>SuSE Linux Enterprice Server 11</p></li><li class="listitem"><p>Fedora 13 bis 16</p></li></ul></div></div><div class="sect2" title="2.2.2. Pakete"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.2.2. Pakete</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
+        Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2)
+        benötigt.</p><p>Zusätzlich benötigt kivitendo die folgenden Perl-Pakete, die
+        nicht Bestandteil einer Standard-Perl-Installation sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="literal">parent</code> (nur bei Perl vor 5.10.1)</p></li><li class="listitem"><p>
+                     <code class="literal">Archive::Zip</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Config::Std</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">DateTime</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">DBI</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">DBD::Pg</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Email::Address</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Email::MIME</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">JSON</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">List::MoreUtils</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Net::SMTP::SSL</code> (optional, bei E-Mail-Versand über SSL; siehe Abschnitt "<a class="xref" href="ch02s10.html#config.sending-email.smtp" title="2.10.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
+                     <code class="literal">Net::SSLGlue</code> (optional, bei E-Mail-Versand über TLS; siehe Abschnitt "<a class="xref" href="ch02s10.html#config.sending-email.smtp" title="2.10.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
+                     <code class="literal">Params::Validate</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">PDF::API2</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Rose::Object</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Rose::DB</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Rose::DB::Object</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Template</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Text::CSV_XS</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">Text::Iconv</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">URI</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">XML::Writer</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">YAML</code>
+                  </p></li></ul></div><p>Seit v2.7.0 sind die folgenden Pakete hinzugekommen: <code class="literal">Email::MIME</code>, <code class="literal">Net::SMTP::SSL</code>,
+        <code class="literal">Net::SSLGlue</code>.</p><p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete
+        hinzugekommen, <code class="literal">URI</code> und
+        <code class="literal">XML::Writer</code> sind notwendig. Ohne startet kivitendo
+        nicht.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
+        <code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
+        <code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
+        neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><p>Gegenüber Version 2.6.3 ist <code class="literal">JSON</code> neu
+        hinzugekommen.</p><p>
+               <code class="literal">Email::Address</code> und
+        <code class="literal">List::MoreUtils</code> sind schon länger feste
+        Abhängigkeiten, wurden aber bisher mit kivitendo mitgeliefert. Beide
+        sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
+        zukünftigen Version aber aus dem Paket entfernt werden. Es wird
+        empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
+        installieren.</p><p>Die zu installierenden Pakete können in den verschiedenen
+        Distributionen unterschiedlich heißen.</p><p>Für Debian oder Ubuntu benötigen Sie diese Pakete:</p><pre class="programlisting">apt-get install apache2 postgresql libarchive-zip-perl \
+  libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl \
+  libemail-address-perl libemail-mime-perl liblist-moreutils-perl libpdf-api2-perl \
+  librose-object-perl librose-db-perl librose-db-object-perl \
+  libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl \
+  libxml-writer-perl libyaml-perl libconfig-std-perl \
+  libparams-validate-perl libjson-perl libclass-accessor-perl \
+  libnet-sslglue-perl libnet-smtp-ssl-perl</pre><p>Für Fedora Core benötigen Sie diese Pakete:</p><pre class="programlisting">yum install httpd postgresql-server perl-parent perl-DateTime \
+  perl-DBI perl-DBD-Pg perl-Email-Address perl-Email-MIME perl-List-MoreUtils \
+  perl-PDF-API2 perl-Rose-Object perl-Rose-DB perl-Rose-DB-Object \
+  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
+  perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL</pre><p>Für OpenSuSE benötigen Sie diese Pakete:</p><pre class="programlisting">zypper install apache2 postgresql-server perl-Archive-Zip \
+  perl-DateTime perl-DBI perl-DBD-Pg perl-Email-MIME perl-MailTools perl-List-MoreUtils \
+  perl-PDF-API2 perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \
+  perl-URI perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL</pre><p>kivitendo enthält ein Script, mit dem überprüft werden kann, ob
+        alle benötigten Perl-Module installiert sind. Der Aufruf lautet wie
+        folgt:</p><pre class="programlisting">./scripts/installation_check.pl</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 2. Installation und Grundkonfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.3. Manuelle Installation des Programmpaketes</td></tr></table></div></body></html>
\ No newline at end of file
index 248e638cd3b481c8c2049425a79e4851f4dde6c2..bb2c61dbb804bdb6bbffc7654c714e3fdc1bd235 100644 (file)
@@ -1,75 +1,15 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.3. kivitendo-Konfigurationsdatei</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes"><link rel="next" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.3. kivitendo-Konfigurationsdatei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.3. kivitendo-Konfigurationsdatei"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.config-file"></a>2.3. kivitendo-Konfigurationsdatei</h2></div></div></div><div class="sect2" title="2.3.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.introduction"></a>2.3.1. Einführung</h3></div></div></div><p>In kivitendo gibt es nur noch eine Konfigurationsdatei,
-        die benötigt wird: <code class="filename">config/kivitendo.conf</code> (kurz:
-        "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation
-        von kivitendo bzw. der Migration von älteren Versionen angelegt
-        werden.</p><p>Als Vorlage dient die Datei
-        <code class="filename">config/kivitendo.conf.default</code> (kurz: "die
-        Default-Datei"):</p><pre class="programlisting">$ cp config/kivitendo.conf.default config/kivitendo.conf</pre><p>Die Default-Datei wird immer zuerst eingelesen. Werte, die in
-        der Hauptkonfigurationsdatei stehen, überschreiben die Werte aus der
-        Default-Datei. Die Hauptkonfigurationsdatei muss also nur die
-        Abschnitte und Werte enthalten, die von denen der Default-Datei
-        abweichen.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>
-          Vor der Umbenennung in kivitendo hieß diese Datei noch <code class="filename">config/lx_office.conf</code>. Aus Gründen der Kompatibilität
-          wird diese Datei eingelesen, sofern die Datei <code class="filename">config/kivitendo.conf</code> nicht existiert.
-         </p></td></tr></table></div><p>Diese Hauptkonfigurationsdatei ist dann eine
-        installationsspezifische Datei, d.h. sie enthält bspw. lokale
-        Passwörter und wird auch nicht im Versionsmanagement (git)
-        verwaltet.</p><p>Die Konfiguration ist ferner serverabhängig, d.h. für alle
-        Mandaten, bzw. Datenbanken gleich.</p></div><div class="sect2" title="2.3.2. Abschnitte und Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.sections-parameters"></a>2.3.2. Abschnitte und Parameter</h3></div></div></div><p>Die Konfigurationsdatei besteht aus mehreren Teilen, die
-        entsprechend kommentiert sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                     <code class="literal">authentication</code> (siehe Abschnitt "<a class="xref" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.7, „Benutzerauthentifizierung und Administratorpasswort“</a>" in diesem Kapitel)</p></li><li class="listitem"><p>
-                     <code class="literal">authentication/database</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">authentication/ldap</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">system</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">features</code> (siehe Kapitel "<a class="xref" href="ch03.html" title="Kapitel 3. Features und Funktionen">Features und Funktionen</a>")</p></li><li class="listitem"><p>
-                     <code class="literal">paths</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">applications</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">environment</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">mail_delivery</code> (siehe Abschnitt "<a class="xref" href="ch02s09.html#config.sending-email.smtp" title="2.9.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>)</p></li><li class="listitem"><p>
-                     <code class="literal">print_templates</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">task_server</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">periodic_invoices</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">console</code>
-                  </p></li><li class="listitem"><p>
-                     <code class="literal">debug</code>
-                  </p></li></ul></div><p>Die üblicherweise wichtigsten Parameter, die am Anfang
-        einzustellen oder zu kontrollieren sind, sind:</p><pre class="programlisting">[authentication]
-admin_password = geheim
-
-[authentication/database]
-host     = localhost
-port     = 5432
-db       = kivitendo_auth
-user     = postgres
-password =
-
-[system]
-dbcharset = UTF-8</pre><p>Nutzt man wiederkehrende Rechnungen, kann man unter
-        <code class="varname">[periodic_invoices]</code> den Login eines Benutzers
-        angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
-        mit Informationen über die erstellten Rechnungen bekommt.</p><p>Nutzt man den <a class="link" href="ch02s06.html" title="2.6. Der Task-Server">Taskserver</a> für <a class="link" href="ch03.html#features.periodic-invoices" title="3.1. Wiederkehrende Rechnungen">wiederkehrende Rechnungen</a>,
-        muss unter <code class="varname">[task_server]</code> ein Login eines Benutzers
-        angegeben werden, mit dem sich der Taskserver an kivitendo bei der
-        Datenbank anmeldet, die dem Benutzer zugewiesen ist.</p><p>Für Entwickler finden sich unter <code class="varname">[debug]</code>
-        wichtige Funktionen, um die Fehlersuche zu erleichtern.</p></div><div class="sect2" title="2.3.3. Versionen vor 2.6.3"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.prior-versions"></a>2.3.3. Versionen vor 2.6.3</h3></div></div></div><p>In älteren kivitendo Versionen gab es im Verzeichnis
-        <code class="filename">config</code> die Dateien
-        <code class="filename">authentication.pl</code> und
-        <code class="filename">lx-erp.conf</code>, die jeweils Perl-Dateien waren. Es
-        gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
-        zu erstellen (<code class="filename">lx-erp-local.conf</code>). Dies ist ab
-        2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</p><p>Beim Update von einer kivitendo-Version vor 2.6.3 auf 2.6.3 oder
-        jünger müssen die Einstellungen aus den alten Konfigurationsdateien
-        manuell übertragen und die alten Konfigurationsdateien anschließend
-        gelöscht oder verschoben werden. Ansonsten zeigt kivitendo eine
-        entsprechende Fehlermeldung an.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. Manuelle Installation des Programmpaketes&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.4. Anpassung der PostgreSQL-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.3. Manuelle Installation des Programmpaketes</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s02.html" title="2.2. Benötigte Software und Pakete"><link rel="next" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.3. Manuelle Installation des Programmpaketes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.3. Manuelle Installation des Programmpaketes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Manuelle-Installation-des-Programmpaketes"></a>2.3. Manuelle Installation des Programmpaketes</h2></div></div></div><p>Die kivitendo ERP Installationsdatei (kivitendo-erp-2.6.3.tgz) wird
+      im Dokumentenverzeichnis des Webservers (z.B.
+      <code class="filename">/var/www/html/</code>,
+      <code class="filename">/srv/www/htdocs</code> oder
+      <code class="filename">/var/www/</code>) entpackt:</p><pre class="programlisting">cd /var/www
+tar xvzf kivitendo-erp-2.6.3.tgz</pre><p>Wechseln Sie in das entpackte Verzeichnis:</p><pre class="programlisting">cd kivitendo-erp</pre><p>Alternativ können Sie auch einen Alias in der
+      Webserverkonfiguration benutzen, um auf das tatsächliche
+      Installationsverzeichnis zu verweisen.</p><p>Die Verzeichnisse <code class="filename">users</code>, <code class="filename">spool</code> und <code class="filename">webdav</code> müssen für den Benutzer
+      beschreibbar sein, unter dem der Webserver läuft. Die restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer- und
+      Gruppennamen sind bei verschiedenen Distributionen unterschiedlich (z.B. bei Debian/Ubuntu <code class="constant">www-data</code>, bei Fedora
+      core <code class="constant">apache</code> oder bei OpenSuSE <code class="constant">wwwrun</code>).</p><p>Der folgende Befehl ändert den Besitzer für die oben genannten
+      Verzeichnisse auf einem Debian/Ubuntu-System:</p><pre class="programlisting">chown -R www-data users spool webdav</pre><p>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen <code class="filename">templates</code> und <code class="filename">users</code>
+      Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in kivitendo angelegt wird:</p><pre class="programlisting">chown www-data templates users</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. Benötigte Software und Pakete&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.4. kivitendo-Konfigurationsdatei</td></tr></table></div></body></html>
\ No newline at end of file
index 1d656ee997bb5a57776a472c2fc3913341b4618e..23fa4d29e4f7fb06d0b7883934ce9ba57a1f378c 100644 (file)
@@ -1,50 +1,75 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.4. Anpassung der PostgreSQL-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. kivitendo-Konfigurationsdatei"><link rel="next" href="ch02s05.html" title="2.5. Webserver-Konfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.4. Anpassung der PostgreSQL-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.4. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><div class="sect2" title="2.4.1. Zeichensätze/die Verwendung von UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.4.1. Zeichensätze/die Verwendung von UTF-8</h3></div></div></div><p>Bei aktuellen Serverinstallationen braucht man hier meist nicht
-       eingreifen</p><p>Dieses kann überprüft werden: ist das Encoding der Datenbank
-       “template1” “UTF8”, so braucht man nichts weiteres diesbezüglich
-       unternehmen. Zum Testen:
+   <title>2.4. kivitendo-Konfigurationsdatei</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes"><link rel="next" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.4. kivitendo-Konfigurationsdatei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. kivitendo-Konfigurationsdatei"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.config-file"></a>2.4. kivitendo-Konfigurationsdatei</h2></div></div></div><div class="sect2" title="2.4.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.introduction"></a>2.4.1. Einführung</h3></div></div></div><p>In kivitendo gibt es nur noch eine Konfigurationsdatei,
+        die benötigt wird: <code class="filename">config/kivitendo.conf</code> (kurz:
+        "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation
+        von kivitendo bzw. der Migration von älteren Versionen angelegt
+        werden.</p><p>Als Vorlage dient die Datei
+        <code class="filename">config/kivitendo.conf.default</code> (kurz: "die
+        Default-Datei"):</p><pre class="programlisting">$ cp config/kivitendo.conf.default config/kivitendo.conf</pre><p>Die Default-Datei wird immer zuerst eingelesen. Werte, die in
+        der Hauptkonfigurationsdatei stehen, überschreiben die Werte aus der
+        Default-Datei. Die Hauptkonfigurationsdatei muss also nur die
+        Abschnitte und Werte enthalten, die von denen der Default-Datei
+        abweichen.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>
+          Vor der Umbenennung in kivitendo hieß diese Datei noch <code class="filename">config/lx_office.conf</code>. Aus Gründen der Kompatibilität
+          wird diese Datei eingelesen, sofern die Datei <code class="filename">config/kivitendo.conf</code> nicht existiert.
+         </p></td></tr></table></div><p>Diese Hauptkonfigurationsdatei ist dann eine
+        installationsspezifische Datei, d.h. sie enthält bspw. lokale
+        Passwörter und wird auch nicht im Versionsmanagement (git)
+        verwaltet.</p><p>Die Konfiguration ist ferner serverabhängig, d.h. für alle
+        Mandaten, bzw. Datenbanken gleich.</p></div><div class="sect2" title="2.4.2. Abschnitte und Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.sections-parameters"></a>2.4.2. Abschnitte und Parameter</h3></div></div></div><p>Die Konfigurationsdatei besteht aus mehreren Teilen, die
+        entsprechend kommentiert sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="literal">authentication</code> (siehe Abschnitt "<a class="xref" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.8, „Benutzerauthentifizierung und Administratorpasswort“</a>" in diesem Kapitel)</p></li><li class="listitem"><p>
+                     <code class="literal">authentication/database</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">authentication/ldap</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">system</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">features</code> (siehe Kapitel "<a class="xref" href="ch03.html" title="Kapitel 3. Features und Funktionen">Features und Funktionen</a>")</p></li><li class="listitem"><p>
+                     <code class="literal">paths</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">applications</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">environment</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">mail_delivery</code> (siehe Abschnitt "<a class="xref" href="ch02s10.html#config.sending-email.smtp" title="2.10.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>)</p></li><li class="listitem"><p>
+                     <code class="literal">print_templates</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">task_server</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">periodic_invoices</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">console</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">debug</code>
+                  </p></li></ul></div><p>Die üblicherweise wichtigsten Parameter, die am Anfang
+        einzustellen oder zu kontrollieren sind, sind:</p><pre class="programlisting">[authentication]
+admin_password = geheim
 
-        </p><pre class="programlisting">su postgres
-echo '\l' | psql
-exit </pre><p>
+[authentication/database]
+host     = localhost
+port     = 5432
+db       = kivitendo_auth
+user     = postgres
+password =
 
-        Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
-        UTF-8-Encoding anzulegen und diesen zu verwenden. Unter Debian und
-        Ubuntu kann dies z.B. für PostgreSQL 8.2 mit dem folgenden Befehl
-        getan werden:</p><pre class="programlisting">pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</pre><p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
-        Versionsnummer angepasst werden.</p><p>Unter anderen Distributionen gibt es ähnliche Methoden.</p><p>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und
-        ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
-        kivitendo mit ISO-8859-15 als Encoding betrieben werden.</p><p>Das Encoding einer Datenbank kann in <span class="command"><strong>psql</strong></span> mit
-        <code class="literal">\l</code> geprüft werden.</p></div><div class="sect2" title="2.4.2. Änderungen an Konfigurationsdateien"><div class="titlepage"><div><div><h3 class="title"><a name="%C3%84nderungen-an-Konfigurationsdateien"></a>2.4.2. Änderungen an Konfigurationsdateien</h3></div></div></div><p>In der Datei <code class="filename">postgresql.conf</code>, die je nach
-        Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
-        <code class="filename">/var/lib/pgsql/data/</code> oder
-        <code class="filename">/etc/postgresql/</code>, muss sichergestellt werden,
-        dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
-        Parameter <code class="varname">listen_address</code> gesteuert. Laufen
-        PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert
-        <code class="literal">localhost</code> verwendet werden. Andernfalls müssen
-        Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
-        was mit dem Wert <code class="literal">*</code> geschieht.</p><p>In der Datei <code class="filename">pg_hba.conf</code>, die im gleichen
-        Verzeichnis wie die <code class="filename">postgresql.conf</code> zu finden
-        sein sollte, müssen die Berichtigungen für den Zugriff geändert
-       werden. Hier gibt es mehrere Möglichkeiten. sinnvoll ist es nur die
-       nögiten Verbindungen immer zuzulassen, für eine lokal laufenden
-       Datenbank zum Beispiel:</p><pre class="programlisting">local all kivitendo password
-host all kivitendo 127.0.0.1 255.255.255.255 password</pre></div><div class="sect2" title="2.4.3. Erweiterung für servergespeicherte Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren"></a>2.4.3. Erweiterung für servergespeicherte Prozeduren</h3></div></div></div><p>In der Datenbank <code class="literal">template1</code> muss die
-        Unterstützung für servergespeicherte Prozeduren eingerichet werden.
-        Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an:
-        </p><pre class="programlisting">su - postgres
-psql template1</pre><p>
-
-        führen Sie die folgenden Kommandos aus:</p><pre class="programlisting">create language 'plpgsql';
-\q</pre></div><div class="sect2" title="2.4.4. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.4.4. Datenbankbenutzer anlegen</h3></div></div></div><p>Wenn Sie nicht den Datenbanksuperuser “postgres” zum Zugriff
-        benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
-        anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen
-        können:</p><p>Die Frage, ob der neue User Superuser sein soll, können Sie mit nein
-       beantworten, genauso ist die Berechtigung neue User (Roles) zu
-       generieren nicht nötig.</p><pre class="programlisting">su - postgres
-createuser -d -P kivitendo
-exit</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
-        Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo” bzw.
-        den hier gewählten Benutzernamen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. kivitendo-Konfigurationsdatei&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.5. Webserver-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
+[system]
+dbcharset = UTF-8</pre><p>Nutzt man wiederkehrende Rechnungen, kann man unter
+        <code class="varname">[periodic_invoices]</code> den Login eines Benutzers
+        angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
+        mit Informationen über die erstellten Rechnungen bekommt.</p><p>Nutzt man den <a class="link" href="ch02s07.html" title="2.7. Der Task-Server">Taskserver</a> für <a class="link" href="ch03.html#features.periodic-invoices" title="3.1. Wiederkehrende Rechnungen">wiederkehrende Rechnungen</a>,
+        muss unter <code class="varname">[task_server]</code> ein Login eines Benutzers
+        angegeben werden, mit dem sich der Taskserver an kivitendo bei der
+        Datenbank anmeldet, die dem Benutzer zugewiesen ist.</p><p>Für Entwickler finden sich unter <code class="varname">[debug]</code>
+        wichtige Funktionen, um die Fehlersuche zu erleichtern.</p></div><div class="sect2" title="2.4.3. Versionen vor 2.6.3"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.prior-versions"></a>2.4.3. Versionen vor 2.6.3</h3></div></div></div><p>In älteren kivitendo Versionen gab es im Verzeichnis
+        <code class="filename">config</code> die Dateien
+        <code class="filename">authentication.pl</code> und
+        <code class="filename">lx-erp.conf</code>, die jeweils Perl-Dateien waren. Es
+        gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
+        zu erstellen (<code class="filename">lx-erp-local.conf</code>). Dies ist ab
+        2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</p><p>Beim Update von einer kivitendo-Version vor 2.6.3 auf 2.6.3 oder
+        jünger müssen die Einstellungen aus den alten Konfigurationsdateien
+        manuell übertragen und die alten Konfigurationsdateien anschließend
+        gelöscht oder verschoben werden. Ansonsten zeigt kivitendo eine
+        entsprechende Fehlermeldung an.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. Manuelle Installation des Programmpaketes&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.5. Anpassung der PostgreSQL-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
index 76b1e0f57d2944e5666c1f6c8e2b76cf736db86d..582067defd580678958ee88d8f5674e911940ae6 100644 (file)
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.5. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s06.html" title="2.6. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.5. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.5. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.5.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e592"></a>2.5.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
-          mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
-          <a class="xref" href="ch02s05.html#Apache-Konfiguration.FCGI" title="2.5.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
-        Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
-        werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
-        anderen Datei hinzu, die beim Starten des Webservers eingelesen
-        wird:</p><pre class="programlisting">AddHandler cgi-script .pl
-Alias /kivitendo-erp/ /var/www/kiviteno-erp/
+   <title>2.5. Anpassung der PostgreSQL-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei"><link rel="next" href="ch02s06.html" title="2.6. Webserver-Konfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.5. Anpassung der PostgreSQL-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.5. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><div class="sect2" title="2.5.1. Zeichensätze/die Verwendung von UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.5.1. Zeichensätze/die Verwendung von UTF-8</h3></div></div></div><p>Bei aktuellen Serverinstallationen braucht man hier meist nicht
+       eingreifen</p><p>Dieses kann überprüft werden: ist das Encoding der Datenbank
+       “template1” “UTF8”, so braucht man nichts weiteres diesbezüglich
+       unternehmen. Zum Testen:
 
-&lt;Directory /var/www/kivitendo-erp&gt;
- Options ExecCGI Includes FollowSymlinks
-&lt;/Directory&gt;
+        </p><pre class="programlisting">su postgres
+echo '\l' | psql
+exit </pre><p>
 
-&lt;Directory /var/www/kivitendo-erp/users&gt;
- Order Deny,Allow
- Deny from All
-&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
-        das kivitendo-Archiv entpacket haben.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Vor den einzelnen Optionen muss bei einigen Distributionen ein
-          Plus ‘<code class="literal">+</code>’ gesetzt werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
-        Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
-        geholfen, die folgende Option in die Konfiguration aufzunehmen:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.5.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.5.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.5.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.5.2.1. Was ist FastCGI?</h4></div></div></div><p>Direkt aus <a class="ulink" href="http://de.wikipedia.org/wiki/FastCGI" target="_top">Wikipedia</a>
-          kopiert:</p><p>
-                  [<span class="citation"> FastCGI ist ein Standard für die Einbindung
-          externer Software zur Generierung dynamischer Webseiten in einem
-          Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
-          (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
-          umgehen. </span>]
-               </p></div><div class="sect3" title="2.5.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.5.2.2. Warum FastCGI?</h4></div></div></div><p>Perl Programme (wie kivitendo eines ist) werden nicht statisch
-          kompiliert. Stattdessen werden die Quelldateien bei jedem Start
-          übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
-          ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
-          einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
-          müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
-          immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
-          benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
-          entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
-          führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
-          deutlich länger dauert als früher, und dass davon 90% für das Laden
-          der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
-          wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.5.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.5.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fastcgi.</p></li></ul></div><p>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
-          Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
-          mod_fastcgi nicht mehr explizit eingegangen.</p><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
-          verwendet.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem strict in der Behandlung von Unicode, und verweigern
-            bestimmte Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrere Installation gibt, muss zwingend Version 0.68 oder
-            aber Version 0.72 und neuer eingesetzt werden.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie sich die Vorgängerversion wie folgt
-            installieren:</p><pre class="programlisting">force install M/MS/MSTROUT/FCGI-0.68.tar.gz</pre></td></tr></table></div></div><div class="sect3" title="2.5.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.5.2.4. Konfiguration des Webservers</h4></div></div></div><p>Bevor Sie versuchen, eine kivitendo Installation unter FCGI
-          laufen zu lassen, empfliehlt es sich die Installation ersteinmal
-          unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
-          debuggen die beim ersten aufsetzen auftreten können. Sollte die
-          Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
-          unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
-          erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
-          und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
-          dem Installationspfad von kivitendo im Dateisystem
-          ("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
-          unterschieden, unter der kivitendo im Webbrowser erreichbar ist
-          ("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
-          mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
-Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
+        Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
+        UTF-8-Encoding anzulegen und diesen zu verwenden. Unter Debian und
+        Ubuntu kann dies z.B. für PostgreSQL 8.2 mit dem folgenden Befehl
+        getan werden:</p><pre class="programlisting">pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</pre><p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
+        Versionsnummer angepasst werden.</p><p>Unter anderen Distributionen gibt es ähnliche Methoden.</p><p>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und
+        ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
+        kivitendo mit ISO-8859-15 als Encoding betrieben werden.</p><p>Das Encoding einer Datenbank kann in <span class="command"><strong>psql</strong></span> mit
+        <code class="literal">\l</code> geprüft werden.</p></div><div class="sect2" title="2.5.2. Änderungen an Konfigurationsdateien"><div class="titlepage"><div><div><h3 class="title"><a name="%C3%84nderungen-an-Konfigurationsdateien"></a>2.5.2. Änderungen an Konfigurationsdateien</h3></div></div></div><p>In der Datei <code class="filename">postgresql.conf</code>, die je nach
+        Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
+        <code class="filename">/var/lib/pgsql/data/</code> oder
+        <code class="filename">/etc/postgresql/</code>, muss sichergestellt werden,
+        dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
+        Parameter <code class="varname">listen_address</code> gesteuert. Laufen
+        PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert
+        <code class="literal">localhost</code> verwendet werden. Andernfalls müssen
+        Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
+        was mit dem Wert <code class="literal">*</code> geschieht.</p><p>In der Datei <code class="filename">pg_hba.conf</code>, die im gleichen
+        Verzeichnis wie die <code class="filename">postgresql.conf</code> zu finden
+        sein sollte, müssen die Berichtigungen für den Zugriff geändert
+       werden. Hier gibt es mehrere Möglichkeiten. sinnvoll ist es nur die
+       nögiten Verbindungen immer zuzulassen, für eine lokal laufenden
+       Datenbank zum Beispiel:</p><pre class="programlisting">local all kivitendo password
+host all kivitendo 127.0.0.1 255.255.255.255 password</pre></div><div class="sect2" title="2.5.3. Erweiterung für servergespeicherte Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren"></a>2.5.3. Erweiterung für servergespeicherte Prozeduren</h3></div></div></div><p>In der Datenbank <code class="literal">template1</code> muss die
+        Unterstützung für servergespeicherte Prozeduren eingerichet werden.
+        Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an:
+        </p><pre class="programlisting">su - postgres
+psql template1</pre><p>
 
-&lt;Directory /path/to/kivitendo-erp&gt;
-  AllowOverride All
-  Options ExecCGI Includes FollowSymlinks
-  Order Allow,Deny
-  Allow from All
-&lt;/Directory&gt;
-
-&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
-  Order Deny,Allow
-  Deny from All
-&lt;/DirectoryMatch&gt;</pre><p>Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für
-          die maximale Größe eines Requests. Diese sollte wie folgt
-          hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
-AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
-Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
-FcgidMaxRequestLen 10485760
-
-&lt;Directory /path/to/kivitendo-erp&gt;
-  AllowOverride All
-  Options ExecCGI Includes FollowSymlinks
-  Order Allow,Deny
-  Allow from All
-&lt;/Directory&gt;
-
-&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
-  Order Deny,Allow
-  Deny from All
-&lt;/DirectoryMatch&gt;</pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
-          Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
-          Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
-          gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche kivitendo Version parallel unter
-          CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
-          wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
-Alias       /url/for/kivitendo-erp                /path/to/kivitendo-erp
-
-# Zugriff mit mod_fcgid:
-AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
-Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
-          die normale Version erreichbar, und unter
-          <code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
-          FastCGI-Version.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. Anpassung der PostgreSQL-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.6. Der Task-Server</td></tr></table></div></body></html>
\ No newline at end of file
+        führen Sie die folgenden Kommandos aus:</p><pre class="programlisting">create language 'plpgsql';
+\q</pre></div><div class="sect2" title="2.5.4. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.5.4. Datenbankbenutzer anlegen</h3></div></div></div><p>Wenn Sie nicht den Datenbanksuperuser “postgres” zum Zugriff
+        benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
+        anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen
+        können:</p><p>Die Frage, ob der neue User Superuser sein soll, können Sie mit nein
+       beantworten, genauso ist die Berechtigung neue User (Roles) zu
+       generieren nicht nötig.</p><pre class="programlisting">su - postgres
+createuser -d -P kivitendo
+exit</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
+        Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo” bzw.
+        den hier gewählten Benutzernamen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. kivitendo-Konfigurationsdatei&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.6. Webserver-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
index 8708cfc402868947e0138971ee99ff2312dd6c9f..e2ae937ed03da9f5822ee94596f36c2da7d130e6 100644 (file)
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.6. Der Task-Server</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. Webserver-Konfiguration"><link rel="next" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.6. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.6. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.6. Der Task-Server</h2></div></div></div><p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
-      regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu
-      festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess
-      wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen
-      benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen
-      bekommen.</p><div class="sect2" title="2.6.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.6.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
-        <code class="literal">[task_server]</code> in der Datei
-        <code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
-        Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
-                     <code class="varname">login</code>
-                  </span></dt><dd><p>gültiger kivitendo-Benutzername, der benutzt wird, um die
-              zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss
-              in der Administration angelegt werden. Diese Option muss
-              angegeben werden.</p></dd><dt><span class="term">
-                     <code class="varname">run_as</code>
-                  </span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
-              gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
-              angegebenen Systembenutzer. Der Systembenutzer muss dieselben
-              Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
-              (siehe see <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
-              ist es sinnvoll, hier denselben Systembenutzer einzutragen,
-              unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
-                     <code class="varname">debug</code>
-                  </span></dt><dd><p>Schaltet Debug-Informationen an und aus.</p></dd></dl></div></div><div class="sect2" title="2.6.2. Automatisches Starten des Task-Servers beim Booten"><div class="titlepage"><div><div><h3 class="title"><a name="Einbinden-in-den-Boot-Prozess"></a>2.6.2. Automatisches Starten des Task-Servers beim Booten</h3></div></div></div><p>Der Task-Server verhält sich von seinen Optionen her wie ein
-        reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
-        Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
-        Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
-        einzubinden. Da das bei neueren Linux-Distributionen aber nicht
-        zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
-        anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e779"></a>2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
-          Core)</h4></div></div></div><p>Kopieren Sie die Datei
-          <code class="filename">scripts/boot/system-v/kivitendo-server</code>
-          nach <code class="filename">/etc/init.d/kivitendo-server</code>. Passen
-          Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
-          <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
-          Boot-Prozess ein. Dies ist distributionsabhängig:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian-basierende Systeme:</p><pre class="programlisting">update-rc.d kivitendo-task-server defaults
-# Nur bei Debian Squeeze und neuer:
-insserv kivitendo-task-server</pre></li><li class="listitem"><p>OpenSuSE und Fedora Core:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
-          werden: <span class="command"><strong>/etc/init.d/kivitendo-task-server
-          start</strong></span>
-               </p></div><div class="sect3" title="2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e809"></a>2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
-          <code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
-          nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
-          Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
-          <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
-          werden: <span class="command"><strong>service kivitendo-task-server
-          start</strong></span>
-               </p></div></div><div class="sect2" title="2.6.3. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.6.3. Wie der Task-Server gestartet und beendet wird</h3></div></div></div><p>Der Task-Server wird wie folgt kontrolliert:</p><pre class="programlisting">./scripts/task_server.pl Befehl</pre><p>
-               <code class="literal">Befehl</code> ist dabei eine der folgenden
-        Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-                     <code class="literal">start</code> startet eine neue Instanz des
-            Task-Servers. Die Prozess-ID wird innerhalb des
-            <code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
-                     <code class="literal">stop</code> beendet einen laufenden
-            Task-Server.</p></li><li class="listitem"><p>
-                     <code class="literal">restart</code> beendet und startet ihn
-            neu.</p></li><li class="listitem"><p>
-                     <code class="literal">status</code> berichtet, ob der Task-Server
-            läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
-        kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
-        Runlevel-Scripte benutzt werden (siehe oben).</p></div><div class="sect2" title="2.6.4. Task-Server mit mehreren Mandanten"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle2"></a>2.6.4. Task-Server mit mehreren Mandanten</h3></div></div></div><p>Beim Task-Server wird der Login-Name des Benutzers, unter dem der
-        Task-Server laufen soll, in die Konfigurationsdatei geschrieben. Hat
-        man mehrere Mandanten muß man auch mehrere Konfigurationsdateien
-        anlegen.</p><p>Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf,
-        wo in der Kategorie [task_server] der gewünschte "login" steht.</p><p>Der alternative Task-Server wird dann mit folgendem Befehl
-        gestartet:</p><pre class="programlisting">./scripts/task_server.pl -c config/DATEINAME.conf</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Webserver-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.7. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.6. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s07.html" title="2.7. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.6. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.6. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.6. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.6.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e652"></a>2.6.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
+          mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
+          <a class="xref" href="ch02s06.html#Apache-Konfiguration.FCGI" title="2.6.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
+        Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
+        werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
+        anderen Datei hinzu, die beim Starten des Webservers eingelesen
+        wird:</p><pre class="programlisting">AddHandler cgi-script .pl
+Alias /kivitendo-erp/ /var/www/kiviteno-erp/
+
+&lt;Directory /var/www/kivitendo-erp&gt;
+ Options ExecCGI Includes FollowSymlinks
+&lt;/Directory&gt;
+
+&lt;Directory /var/www/kivitendo-erp/users&gt;
+ Order Deny,Allow
+ Deny from All
+&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
+        das kivitendo-Archiv entpacket haben.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Vor den einzelnen Optionen muss bei einigen Distributionen ein
+          Plus ‘<code class="literal">+</code>’ gesetzt werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
+        Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
+        geholfen, die folgende Option in die Konfiguration aufzunehmen:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.6.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.6.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.6.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.6.2.1. Was ist FastCGI?</h4></div></div></div><p>Direkt aus <a class="ulink" href="http://de.wikipedia.org/wiki/FastCGI" target="_top">Wikipedia</a>
+          kopiert:</p><p>
+                  [<span class="citation"> FastCGI ist ein Standard für die Einbindung
+          externer Software zur Generierung dynamischer Webseiten in einem
+          Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
+          (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
+          umgehen. </span>]
+               </p></div><div class="sect3" title="2.6.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.6.2.2. Warum FastCGI?</h4></div></div></div><p>Perl Programme (wie kivitendo eines ist) werden nicht statisch
+          kompiliert. Stattdessen werden die Quelldateien bei jedem Start
+          übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
+          ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
+          einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
+          müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
+          immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
+          benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
+          entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
+          führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
+          deutlich länger dauert als früher, und dass davon 90% für das Laden
+          der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
+          wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.6.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.6.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fastcgi.</p></li></ul></div><p>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
+          Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
+          mod_fastcgi nicht mehr explizit eingegangen.</p><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
+          verwendet.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem strict in der Behandlung von Unicode, und verweigern
+            bestimmte Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrere Installation gibt, muss zwingend Version 0.68 oder
+            aber Version 0.72 und neuer eingesetzt werden.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie sich die Vorgängerversion wie folgt
+            installieren:</p><pre class="programlisting">force install M/MS/MSTROUT/FCGI-0.68.tar.gz</pre></td></tr></table></div></div><div class="sect3" title="2.6.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.6.2.4. Konfiguration des Webservers</h4></div></div></div><p>Bevor Sie versuchen, eine kivitendo Installation unter FCGI
+          laufen zu lassen, empfliehlt es sich die Installation ersteinmal
+          unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
+          debuggen die beim ersten aufsetzen auftreten können. Sollte die
+          Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
+          unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
+          erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
+          und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
+          dem Installationspfad von kivitendo im Dateisystem
+          ("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
+          unterschieden, unter der kivitendo im Webbrowser erreichbar ist
+          ("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
+          mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
+Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
+
+&lt;Directory /path/to/kivitendo-erp&gt;
+  AllowOverride All
+  Options ExecCGI Includes FollowSymlinks
+  Order Allow,Deny
+  Allow from All
+&lt;/Directory&gt;
+
+&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
+  Order Deny,Allow
+  Deny from All
+&lt;/DirectoryMatch&gt;</pre><p>Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für
+          die maximale Größe eines Requests. Diese sollte wie folgt
+          hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
+AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
+Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
+FcgidMaxRequestLen 10485760
+
+&lt;Directory /path/to/kivitendo-erp&gt;
+  AllowOverride All
+  Options ExecCGI Includes FollowSymlinks
+  Order Allow,Deny
+  Allow from All
+&lt;/Directory&gt;
+
+&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
+  Order Deny,Allow
+  Deny from All
+&lt;/DirectoryMatch&gt;</pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
+          Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
+          Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
+          gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche kivitendo Version parallel unter
+          CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
+          wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
+Alias       /url/for/kivitendo-erp                /path/to/kivitendo-erp
+
+# Zugriff mit mod_fcgid:
+AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
+Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
+          die normale Version erreichbar, und unter
+          <code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
+          FastCGI-Version.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Anpassung der PostgreSQL-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.7. Der Task-Server</td></tr></table></div></body></html>
\ No newline at end of file
index 03430ca921c320ae5d7da10ec71bbda512b62e64..cce20a2a7c26726faed98cb884c5ac26afd0be44 100644 (file)
@@ -1,98 +1,68 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.7. Benutzerauthentifizierung und Administratorpasswort</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Der Task-Server"><link rel="next" href="ch02s08.html" title="2.8. Benutzer- und Gruppenverwaltung"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.7. Benutzerauthentifizierung und Administratorpasswort</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.7. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.7. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
-      über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.7.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.7.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>kivitendo verwaltet die Benutzerinformationen in einer
-        Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
-        wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
-        eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
-        können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
-        Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
-        abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter
-        entweder gegen die Authentifizierungsdatenbank oder gegen einen
-        LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
-        kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
-        Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
-        festgelegt. Diese muss bei der Installation und bei einem Upgrade von
-        einer Version vor v2.6.0 angelegt werden. Eine
-        Beispielkonfigurationsdatei
-        <code class="filename">config/kivitendo.conf.default</code> existiert, die als
-        Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.7.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.7.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Aministrationsinterface
-        benutzt wird, wird ebenfalls in dieser Datei gespeichert. Es kann auch
-        nur dort und nicht mehr im Administrationsinterface selber geändert
-        werden. Der Parameter dazu heißt <code class="varname">admin_password</code> im
-        Abschnitt <code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.7.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.7.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den
-        Parametern in <code class="varname">[authentication/database]</code>
-        konfiguriert. Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
-                     <code class="literal">host</code>
-                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des
-              Datenbankservers</p></dd><dt><span class="term">
-                     <code class="literal">port</code>
-                  </span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
-                     <code class="literal">db</code>
-                  </span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
-                     <code class="literal">user</code>
-                  </span></dt><dd><p>Der Benutzername, mit dem sich kivitendo beim
-              Datenbankserver anmeldet (z.B.
-              "<code class="literal">postgres</code>")</p></dd><dt><span class="term">
-                     <code class="literal">password</code>
-                  </span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
-        automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.7.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.7.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
-        die Authentifizierungsdatenbank und gegen einen externen LDAP- oder
-        Active-Directory-Server. Welche davon benutzt wird, regelt der
-        Parameter <code class="varname">module</code> im Abschnitt
-        <code class="varname">[authentication]</code>.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
-        gespeichert werden, so muss der Parameter <code class="varname">module</code>
-        den Wert <code class="literal">DB</code> enthalten. In diesem Fall können sowohl
-        der Administrator als auch die Benutzer selber ihre Psaswörter in
-        kivitendo ändern.</p><p>Soll hingegen ein externer LDAP- oder Active-Directory-Server
-        benutzt werden, so muss der Parameter <code class="varname">module</code> auf
-        <code class="literal">LDAP</code> gesetzt werden. In diesem Fall müssen
-        zusätzliche Informationen über den LDAP-Server im Abschnitt
-        <code class="literal">[authentication/ldap]</code> angegeben werden:</p><div class="variablelist"><dl><dt><span class="term">
-                     <code class="literal">host</code>
-                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
-              Active-Directory-Servers. Diese Angabe ist zwingend
-              erforderlich.</p></dd><dt><span class="term">
-                     <code class="literal">port</code>
-                  </span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
-                     <code class="literal">tls</code>
-                  </span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
-              Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
-              ‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
-                     <code class="literal">attribute</code>
-                  </span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
-              Benutzer eingegeben hat. Für Active-Directory-Server ist dies
-              meist ‘<code class="literal">sAMAccountName</code>’, für andere
-              LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
-              zwingend erforderlich.</p></dd><dt><span class="term">
-                     <code class="literal">base_dn</code>
-                  </span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
-              Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
-                     <code class="literal">filter</code>
-                  </span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
-              <code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
-              Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
-              der LDAP-Baum nach einem Element durchsucht, bei dem das oben
-              angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
-                     <code class="literal">bind_dn</code> und
-            <code class="literal">bind_password</code>
-                  </span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
-              durchsucht werden kann (z.B. ist dies bei
-              Active-Directory-Servern der Fall), so kann diese hier angegeben
-              werden. Für Active-Directory-Server kann als
-              ‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
-              z.B. ‘<code class="literal">cn=Martin
-              Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
-              volle Name des Benutzers eingegeben werden; in diesem Beispiel
-              also ‘<code class="literal">Martin Mustermann</code>’.</p></dd></dl></div></div><div class="sect2" title="2.7.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.7.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
-        aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
-        Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
-        Parameter <code class="varname">cookie_name</code> im Abschnitt
-        <code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
-        Server existiert.</p></div><div class="sect2" title="2.7.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.7.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
-        <code class="filename">config/kivitendo.conf</code> vorgenommen wurden, muss
-        kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
-        automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
-        der folgenden URL erreichbar sein sollte:</p><p>
-               <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
-            </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.6. Der Task-Server&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.8. Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.7. Der Task-Server</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Webserver-Konfiguration"><link rel="next" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.7. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.7. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.7. Der Task-Server</h2></div></div></div><p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
+      regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu
+      festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess
+      wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen
+      benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen
+      bekommen.</p><div class="sect2" title="2.7.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.7.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
+        <code class="literal">[task_server]</code> in der Datei
+        <code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
+        Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">login</code>
+                  </span></dt><dd><p>gültiger kivitendo-Benutzername, der benutzt wird, um die
+              zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss
+              in der Administration angelegt werden. Diese Option muss
+              angegeben werden.</p></dd><dt><span class="term">
+                     <code class="varname">run_as</code>
+                  </span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
+              gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
+              angegebenen Systembenutzer. Der Systembenutzer muss dieselben
+              Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
+              (siehe see <a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
+              ist es sinnvoll, hier denselben Systembenutzer einzutragen,
+              unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
+                     <code class="varname">debug</code>
+                  </span></dt><dd><p>Schaltet Debug-Informationen an und aus.</p></dd></dl></div></div><div class="sect2" title="2.7.2. Automatisches Starten des Task-Servers beim Booten"><div class="titlepage"><div><div><h3 class="title"><a name="Einbinden-in-den-Boot-Prozess"></a>2.7.2. Automatisches Starten des Task-Servers beim Booten</h3></div></div></div><p>Der Task-Server verhält sich von seinen Optionen her wie ein
+        reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
+        Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
+        Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
+        einzubinden. Da das bei neueren Linux-Distributionen aber nicht
+        zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
+        anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.7.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e839"></a>2.7.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
+          Core)</h4></div></div></div><p>Kopieren Sie die Datei
+          <code class="filename">scripts/boot/system-v/kivitendo-server</code>
+          nach <code class="filename">/etc/init.d/kivitendo-server</code>. Passen
+          Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
+          <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
+          Boot-Prozess ein. Dies ist distributionsabhängig:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian-basierende Systeme:</p><pre class="programlisting">update-rc.d kivitendo-task-server defaults
+# Nur bei Debian Squeeze und neuer:
+insserv kivitendo-task-server</pre></li><li class="listitem"><p>OpenSuSE und Fedora Core:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
+          werden: <span class="command"><strong>/etc/init.d/kivitendo-task-server
+          start</strong></span>
+               </p></div><div class="sect3" title="2.7.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e869"></a>2.7.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
+          <code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
+          nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
+          Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
+          <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
+          werden: <span class="command"><strong>service kivitendo-task-server
+          start</strong></span>
+               </p></div></div><div class="sect2" title="2.7.3. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.7.3. Wie der Task-Server gestartet und beendet wird</h3></div></div></div><p>Der Task-Server wird wie folgt kontrolliert:</p><pre class="programlisting">./scripts/task_server.pl Befehl</pre><p>
+               <code class="literal">Befehl</code> ist dabei eine der folgenden
+        Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="literal">start</code> startet eine neue Instanz des
+            Task-Servers. Die Prozess-ID wird innerhalb des
+            <code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
+                     <code class="literal">stop</code> beendet einen laufenden
+            Task-Server.</p></li><li class="listitem"><p>
+                     <code class="literal">restart</code> beendet und startet ihn
+            neu.</p></li><li class="listitem"><p>
+                     <code class="literal">status</code> berichtet, ob der Task-Server
+            läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
+        kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
+        Runlevel-Scripte benutzt werden (siehe oben).</p></div><div class="sect2" title="2.7.4. Task-Server mit mehreren Mandanten"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle2"></a>2.7.4. Task-Server mit mehreren Mandanten</h3></div></div></div><p>Beim Task-Server wird der Login-Name des Benutzers, unter dem der
+        Task-Server laufen soll, in die Konfigurationsdatei geschrieben. Hat
+        man mehrere Mandanten muß man auch mehrere Konfigurationsdateien
+        anlegen.</p><p>Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf,
+        wo in der Kategorie [task_server] der gewünschte "login" steht.</p><p>Der alternative Task-Server wird dann mit folgendem Befehl
+        gestartet:</p><pre class="programlisting">./scripts/task_server.pl -c config/DATEINAME.conf</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.6. Webserver-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.8. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>
\ No newline at end of file
index 2810a6c0e07360a01e8b7542886725e9f43612d6..ff5493f049f34313670ed7e72d4cc03e7c88c123 100644 (file)
@@ -1,73 +1,98 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.8. Benutzer- und Gruppenverwaltung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort"><link rel="next" href="ch02s09.html" title="2.9. E-Mail-Versand aus kivitendo heraus"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.8. Benutzer- und Gruppenverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.8. Benutzer- und Gruppenverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzer--und-Gruppenverwaltung"></a>2.8. Benutzer- und Gruppenverwaltung</h2></div></div></div><p>Nach der Installation müssen Benutzer, Gruppen und Datenbanken
-      angelegt werden. Dieses geschieht im Administrationsmenü, das Sie unter
-      folgender URL finden:</p><p>
-            <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
-         </p><p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
-      <code class="filename">config/kivitendo.conf</code> eingetragen haben.</p><div class="sect2" title="2.8.1. Zusammenhänge"><div class="titlepage"><div><div><h3 class="title"><a name="Zusammenh%C3%A4nge"></a>2.8.1. Zusammenhänge</h3></div></div></div><p>kivitendo verwendet eine Datenbank zum Speichern all seiner
-        Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
-        mit kivitendo arbeiten zu können, muss eine Person einen
-        Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
-        Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
-        möglich und normal, dass mehreren Benutzern die selbe Datenbank
-        zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
-        können.</p><p>Die Basisdaten der Benutzer, die in der Administration
-        eingegeben werden können, werden in einer zweiten Datenbank
-        gespeichert, der bereits erwähnten Authentifizierungsdatenbank. Diese
-        ist also den Produktivdaten enthaltenden Datenbanken vorgeschaltet.
-        Pro kivitendo-Installation gibt es nur eine
-        Authentifizierungsdatenbank, aber beliebig viele Datenbanken mit
-        Firmendaten.</p><p>kivitendo kann seinen Benutzern Zugriff auf bestimmte
-        Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht
-        gestattet, so werden der entsprechenden Menüpunkte auch nicht
-        angezeigt. Diese Rechte werden ebenfalls in der
-        Authentifizierungsdatenbank gespeichert.</p><p>Um Rechte verteilen zu können, verwendet kivitendo ein
-        Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche
-        erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder
-        mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen
-        Funktionen, die mindestens einer Gruppe erlaubt sind, in der der
-        Benutzer Mitglied ist.</p><p>Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und
-        Benutzer angelegt werden sollten, lautet:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Datenbank anlegen</p></li><li class="listitem"><p>Gruppen anlegen</p></li><li class="listitem"><p>Benutzer anlegen</p></li><li class="listitem"><p>Benutzer den Gruppen zuordnen</p></li></ol></div></div><div class="sect2" title="2.8.2. Datenbanken anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbanken-anlegen"></a>2.8.2. Datenbanken anlegen</h3></div></div></div><p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
-        den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
-        Beispielen ist dies ‘<code class="literal">kivitendo</code>’).</p><p>Wenn Sie für die kivitendo-Installation nicht Unicode (UTF-8) sondern den europäischen Schriftsatz ISO-8859-15 benutzen
-        wollen, so müssen Sie vor dem Anlegen der Datenbank in der Datei <code class="filename">config/kivitendo.conf</code> die Variable
-        <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code> auf den Wert ‘<code class="literal">ISO-8859-15</code>’ setzen.</p><p>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
-        verwenden müssen, da diese Einstellungen momentan global in kivitendo
-        vorgenommen wird und nicht nach Datenbank unterschieden werden kann.
-        Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
-        angelegt worden sein.</p></div><div class="sect2" title="2.8.3. Gruppen anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppen-anlegen"></a>2.8.3. Gruppen anlegen</h3></div></div></div><p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein
-        Name gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
-        Anlegen können Sie die verschiedenen Bereiche wählen, auf die
-        Mitglieder dieser Gruppe Zugriff haben sollen.</p><p>Benutzergruppen sind unabhängig von Datenbanken, da sie in der
-        Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle
-        Datenbanken, die in dieser Installation verwaltet werden.</p></div><div class="sect2" title="2.8.4. Benutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Benutzer-anlegen"></a>2.8.4. Benutzer anlegen</h3></div></div></div><p>Beim Anlegen von Benutzern werden für viele Parameter
-        Standardeinstellungen vorgenommen, die den Gepflogenheiten des
-        deutschen Raumes entsprechen.</p><p>Zwingend anzugeben sind der Loginname sowie die komplette
-        Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die
-        Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort
-        gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung
-        aktiv, so ist das Passwort-Feld deaktiviert.</p><p>In der Datenbankkonfiguration müssen die Zugriffsdaten einer der
-        eben angelegten Datenbanken eingetragen werden.</p></div><div class="sect2" title="2.8.5. Gruppenmitgliedschaften verwalten"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppenmitgliedschaften-verwalten"></a>2.8.5. Gruppenmitgliedschaften verwalten</h3></div></div></div><p>Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den
-        Gruppen zugewiesen werden. Dazu gibt es zwei Möglichkeiten:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>In der Gruppenverwaltung wählt man eine Gruppe aus. Im
-            folgenden Dialog kann man dann einzeln die Benutzer der Gruppe
-            hinzufügen.</p></li><li class="listitem"><p>In der Gruppenverwaltung wählt man das Tool zur Verwaltung
-            der Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die
-            alle im System angelegten Gruppen und Benutzer enthält. Durch
-            Setzen der Häkchen wird der Benutzer in der ausgewählten Zeile der
-            Gruppe in der ausgewählten Spalte hinzugefügt.</p></li></ol></div></div><div class="sect2" title="2.8.6. Migration alter Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="Migration-alter-Installationen"></a>2.8.6. Migration alter Installationen</h3></div></div></div><p>Wenn kivitendo 2.6.3 über eine ältere Version installiert wird,
-        in der die Benutzerdaten noch im Dateisystem im Verzeichnis
-        <code class="literal">users</code> verwaltet wurden, so bietet kivitendo die
-        Möglichkeit, diese Benutzerdaten automatisch in die
-        Authentifizierungsdatenbank zu übernehmen. Dies geschieht, wenn man
-        sich nach dem Update der Installation das erste Mal im
-        Administrationsbereich anmeldet. Findet kivitendo die Datei
-        <code class="literal">users/members</code>, so wird der Migrationsprozess
-        gestartet.</p><p>Der Migrationsprozess ist nahezu vollautomatisch. Alle
-        Benutzerdaten können übernommen werden. Nach den Benutzerdaten bietet
-        kivitendo noch die Möglichkeit an, dass automatisch eine
-        Benutzergruppe angelegt wird. Dieser Gruppe wird Zugriff auf alle
-        Funktionen von kivitendo gewährt. Alle migrierten Benutzern werden
-        Mitglied in dieser Gruppe. Damit wird das Verhalten von kivitendo bis
-        Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können
-        sich sofort wieder anmelden und mit dem System arbeiten.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s07.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s09.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.7. Benutzerauthentifizierung und Administratorpasswort&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.9. E-Mail-Versand aus kivitendo heraus</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.8. Benutzerauthentifizierung und Administratorpasswort</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s07.html" title="2.7. Der Task-Server"><link rel="next" href="ch02s09.html" title="2.9. Benutzer- und Gruppenverwaltung"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.8. Benutzerauthentifizierung und Administratorpasswort</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.8. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.8. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
+      über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.8.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.8.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>kivitendo verwaltet die Benutzerinformationen in einer
+        Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
+        wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
+        eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
+        können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
+        Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
+        abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter
+        entweder gegen die Authentifizierungsdatenbank oder gegen einen
+        LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
+        kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
+        Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
+        festgelegt. Diese muss bei der Installation und bei einem Upgrade von
+        einer Version vor v2.6.0 angelegt werden. Eine
+        Beispielkonfigurationsdatei
+        <code class="filename">config/kivitendo.conf.default</code> existiert, die als
+        Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.8.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.8.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Aministrationsinterface
+        benutzt wird, wird ebenfalls in dieser Datei gespeichert. Es kann auch
+        nur dort und nicht mehr im Administrationsinterface selber geändert
+        werden. Der Parameter dazu heißt <code class="varname">admin_password</code> im
+        Abschnitt <code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.8.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.8.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den
+        Parametern in <code class="varname">[authentication/database]</code>
+        konfiguriert. Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">host</code>
+                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des
+              Datenbankservers</p></dd><dt><span class="term">
+                     <code class="literal">port</code>
+                  </span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
+                     <code class="literal">db</code>
+                  </span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
+                     <code class="literal">user</code>
+                  </span></dt><dd><p>Der Benutzername, mit dem sich kivitendo beim
+              Datenbankserver anmeldet (z.B.
+              "<code class="literal">postgres</code>")</p></dd><dt><span class="term">
+                     <code class="literal">password</code>
+                  </span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
+        automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.8.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.8.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
+        die Authentifizierungsdatenbank und gegen einen externen LDAP- oder
+        Active-Directory-Server. Welche davon benutzt wird, regelt der
+        Parameter <code class="varname">module</code> im Abschnitt
+        <code class="varname">[authentication]</code>.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
+        gespeichert werden, so muss der Parameter <code class="varname">module</code>
+        den Wert <code class="literal">DB</code> enthalten. In diesem Fall können sowohl
+        der Administrator als auch die Benutzer selber ihre Psaswörter in
+        kivitendo ändern.</p><p>Soll hingegen ein externer LDAP- oder Active-Directory-Server
+        benutzt werden, so muss der Parameter <code class="varname">module</code> auf
+        <code class="literal">LDAP</code> gesetzt werden. In diesem Fall müssen
+        zusätzliche Informationen über den LDAP-Server im Abschnitt
+        <code class="literal">[authentication/ldap]</code> angegeben werden:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">host</code>
+                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
+              Active-Directory-Servers. Diese Angabe ist zwingend
+              erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">port</code>
+                  </span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
+                     <code class="literal">tls</code>
+                  </span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
+              Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
+              ‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
+                     <code class="literal">attribute</code>
+                  </span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
+              Benutzer eingegeben hat. Für Active-Directory-Server ist dies
+              meist ‘<code class="literal">sAMAccountName</code>’, für andere
+              LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
+              zwingend erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">base_dn</code>
+                  </span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
+              Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">filter</code>
+                  </span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
+              <code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
+              Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
+              der LDAP-Baum nach einem Element durchsucht, bei dem das oben
+              angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
+                     <code class="literal">bind_dn</code> und
+            <code class="literal">bind_password</code>
+                  </span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
+              durchsucht werden kann (z.B. ist dies bei
+              Active-Directory-Servern der Fall), so kann diese hier angegeben
+              werden. Für Active-Directory-Server kann als
+              ‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
+              z.B. ‘<code class="literal">cn=Martin
+              Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
+              volle Name des Benutzers eingegeben werden; in diesem Beispiel
+              also ‘<code class="literal">Martin Mustermann</code>’.</p></dd></dl></div></div><div class="sect2" title="2.8.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.8.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
+        aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
+        Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
+        Parameter <code class="varname">cookie_name</code> im Abschnitt
+        <code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
+        Server existiert.</p></div><div class="sect2" title="2.8.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.8.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
+        <code class="filename">config/kivitendo.conf</code> vorgenommen wurden, muss
+        kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
+        automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
+        der folgenden URL erreichbar sein sollte:</p><p>
+               <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
+            </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s07.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s09.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.7. Der Task-Server&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.9. Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>
\ No newline at end of file
index acfb795395ec5bb950f2eb43ebd9c80597a51c68..09b3a6df02b4ebe6b804000a7a9403927aa830ee 100644 (file)
@@ -1,36 +1,73 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.9. E-Mail-Versand aus kivitendo heraus</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s08.html" title="2.8. Benutzer- und Gruppenverwaltung"><link rel="next" href="ch02s10.html" title="2.10. Drucken mit kivitendo"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.9. E-Mail-Versand aus kivitendo heraus</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.9. E-Mail-Versand aus kivitendo heraus"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.sending-email"></a>2.9. E-Mail-Versand aus kivitendo heraus</h2></div></div></div><p>kivitendo kann direkt aus dem Programm heraus E-Mails versenden, z.B. um ein Angebot direkt an einen Kunden zu
-      verschicken. Damit dies funktioniert, muss eingestellt werden, über welchen Server die E-Mails verschickt werden sollen. kivitendo
-      unterstützt dabei zwei Mechanismen: Versand über einen lokalen E-Mail-Server (z.B. mit <span class="productname">Postfix</span>™ oder
-      <span class="productname">Exim</span>™, was auch die standardmäßig aktive Methode ist) sowie Versand über einen SMTP-Server (z.B. der des
-      eigenen Internet-Providers).</p><p>Welche Methode und welcher Server verwendet werden, wird über die Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
-      festgelegt. Dort befinden sich alle Einstellungen zu diesem Thema im Abschnitt '<code class="literal">[mail_delivery]</code>'.</p><div class="sect2" title="2.9.1. Versand über lokalen E-Mail-Server"><div class="titlepage"><div><div><h3 class="title"><a name="config.sending-email.sendmail"></a>2.9.1. Versand über lokalen E-Mail-Server</h3></div></div></div><p>Diese Methode bietet sich an, wenn auf dem Server, auf dem kivitendo läuft, bereits ein funktionsfähiger E-Mail-Server wie
-        z.B. <span class="productname">Postfix</span>™, <span class="productname">Exim</span>™ oder <span class="productname">Sendmail</span>™ läuft.</p><p>Um diese Methode auszuwählen, muss der Konfigurationsparameter '<code class="literal">method = sendmail</code>' gesetzt sein. Dies ist
-        gleichzeitig der Standardwert, falls er nicht verändert wird.</p><p>Um zu kontrollieren, wie das Programm zum Einliefern gestartet wird, dient der Parameter '<code class="literal">sendmail =
-        ...</code>'. Der Standardwert verweist auf das Programm <code class="filename">/usr/bin/sendmail</code>, das bei allen oben genannten
-        E-Mail-Serverprodukten für diesen Zweck funktionieren sollte.</p><p>Die Konfiguration des E-Mail-Servers selber würde den Rahmen dieses sprengen. Hierfür sei auf die Dokumentation des
-        E-Mail-Servers verwiesen.</p></div><div class="sect2" title="2.9.2. Versand über einen SMTP-Server"><div class="titlepage"><div><div><h3 class="title"><a name="config.sending-email.smtp"></a>2.9.2. Versand über einen SMTP-Server</h3></div></div></div><p>Diese Methode bietet sich an, wenn kein lokaler E-Mail-Server vorhanden oder zwar einer vorhanden, dieser aber nicht
-        konfiguriert ist.</p><p>Um diese Methode auszuwählen, muss der Konfigurationsparameter '<code class="literal">method = smtp</code>' gesetzt sein. Die folgenden
-        Parameter dienen dabei der weiteren Konfiguration:</p><div class="variablelist"><dl><dt><span class="term">
-                     <code class="varname">hostname</code>
-                  </span></dt><dd><p>Name oder IP-Adresse des SMTP-Servers. Standardwert: '<code class="literal">localhost</code>'</p></dd><dt><span class="term">
-                     <code class="varname">port</code>
-                  </span></dt><dd><p>Portnummer. Der Standardwert hängt von der verwendeten Verschlüsselungsmethode ab. Gilt '<code class="literal">security =
-            none</code>' oder '<code class="literal">security = tls</code>', so ist 25 die Standardportnummer. Für '<code class="literal">security =
-            ssl</code>' ist 465 die Portnummer. Muss normalerweise nicht geändert werden.</p></dd><dt><span class="term">
-                     <code class="varname">security</code>
-                  </span></dt><dd><p>Wahl der zu verwendenden Verschlüsselung der Verbindung mit dem Server. Standardwert ist
-            '<code class="literal">none</code>', wodurch keine Verschlüsselung verwendet wird. Mit '<code class="literal">tls</code>' wird TLS-Verschlüsselung
-            eingeschaltet, und mit '<code class="literal">ssl</code>' wird Verschlüsselung via SSL eingeschaltet. Achtung: Für
-            '<code class="literal">tls</code>' und '<code class="literal">ssl</code>' werden zusätzliche Perl-Module benötigt (siehe unten).</p></dd><dt><span class="term">
-                     <code class="varname">login</code> und <code class="varname">password</code>
-                  </span></dt><dd><p>Falls der E-Mail-Server eine Authentifizierung verlangt, so können mit diesen zwei Parametern der Benutzername
-            und das Passwort angegeben werden. Wird Authentifizierung verwendet, so sollte aus Sicherheitsgründen auch eine Form von
-            Verschlüsselung aktiviert werden.</p></dd></dl></div><p>Wird Verschlüsselung über TLS oder SSL aktiviert, so werden zusätzliche Perl-Module benötigt. Diese sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>TLS-Verschlüsselung: Modul <code class="literal">Net::SSLGlue</code> (Debian-Paketname
-          <code class="literal">libnet-sslglue-perl</code>, Fedora Core: <code class="literal">perl-Net-SSLGlue</code>, openSuSE:
-          <code class="literal">perl-Net-SSLGlue</code>
-                  </p></li><li class="listitem"><p>SSL-Verschlüsselung: Modul <code class="literal">Net::SMTP::SSL</code> (Debian-Paketname
-          <code class="literal">libnet-smtp-ssl-perl</code>, Fedora Core: <code class="literal">perl-Net-SMTP-SSL</code>, openSuSE:
-          <code class="literal">perl-Net-SMTP-SSL</code>
-                  </p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Benutzer- und Gruppenverwaltung&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.10. Drucken mit kivitendo</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.9. Benutzer- und Gruppenverwaltung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort"><link rel="next" href="ch02s10.html" title="2.10. E-Mail-Versand aus kivitendo heraus"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.9. Benutzer- und Gruppenverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.9. Benutzer- und Gruppenverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzer--und-Gruppenverwaltung"></a>2.9. Benutzer- und Gruppenverwaltung</h2></div></div></div><p>Nach der Installation müssen Benutzer, Gruppen und Datenbanken
+      angelegt werden. Dieses geschieht im Administrationsmenü, das Sie unter
+      folgender URL finden:</p><p>
+            <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
+         </p><p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
+      <code class="filename">config/kivitendo.conf</code> eingetragen haben.</p><div class="sect2" title="2.9.1. Zusammenhänge"><div class="titlepage"><div><div><h3 class="title"><a name="Zusammenh%C3%A4nge"></a>2.9.1. Zusammenhänge</h3></div></div></div><p>kivitendo verwendet eine Datenbank zum Speichern all seiner
+        Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
+        mit kivitendo arbeiten zu können, muss eine Person einen
+        Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
+        Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
+        möglich und normal, dass mehreren Benutzern die selbe Datenbank
+        zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
+        können.</p><p>Die Basisdaten der Benutzer, die in der Administration
+        eingegeben werden können, werden in einer zweiten Datenbank
+        gespeichert, der bereits erwähnten Authentifizierungsdatenbank. Diese
+        ist also den Produktivdaten enthaltenden Datenbanken vorgeschaltet.
+        Pro kivitendo-Installation gibt es nur eine
+        Authentifizierungsdatenbank, aber beliebig viele Datenbanken mit
+        Firmendaten.</p><p>kivitendo kann seinen Benutzern Zugriff auf bestimmte
+        Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht
+        gestattet, so werden der entsprechenden Menüpunkte auch nicht
+        angezeigt. Diese Rechte werden ebenfalls in der
+        Authentifizierungsdatenbank gespeichert.</p><p>Um Rechte verteilen zu können, verwendet kivitendo ein
+        Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche
+        erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder
+        mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen
+        Funktionen, die mindestens einer Gruppe erlaubt sind, in der der
+        Benutzer Mitglied ist.</p><p>Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und
+        Benutzer angelegt werden sollten, lautet:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Datenbank anlegen</p></li><li class="listitem"><p>Gruppen anlegen</p></li><li class="listitem"><p>Benutzer anlegen</p></li><li class="listitem"><p>Benutzer den Gruppen zuordnen</p></li></ol></div></div><div class="sect2" title="2.9.2. Datenbanken anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbanken-anlegen"></a>2.9.2. Datenbanken anlegen</h3></div></div></div><p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
+        den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
+        Beispielen ist dies ‘<code class="literal">kivitendo</code>’).</p><p>Wenn Sie für die kivitendo-Installation nicht Unicode (UTF-8) sondern den europäischen Schriftsatz ISO-8859-15 benutzen
+        wollen, so müssen Sie vor dem Anlegen der Datenbank in der Datei <code class="filename">config/kivitendo.conf</code> die Variable
+        <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code> auf den Wert ‘<code class="literal">ISO-8859-15</code>’ setzen.</p><p>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
+        verwenden müssen, da diese Einstellungen momentan global in kivitendo
+        vorgenommen wird und nicht nach Datenbank unterschieden werden kann.
+        Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
+        angelegt worden sein.</p></div><div class="sect2" title="2.9.3. Gruppen anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppen-anlegen"></a>2.9.3. Gruppen anlegen</h3></div></div></div><p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein
+        Name gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
+        Anlegen können Sie die verschiedenen Bereiche wählen, auf die
+        Mitglieder dieser Gruppe Zugriff haben sollen.</p><p>Benutzergruppen sind unabhängig von Datenbanken, da sie in der
+        Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle
+        Datenbanken, die in dieser Installation verwaltet werden.</p></div><div class="sect2" title="2.9.4. Benutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Benutzer-anlegen"></a>2.9.4. Benutzer anlegen</h3></div></div></div><p>Beim Anlegen von Benutzern werden für viele Parameter
+        Standardeinstellungen vorgenommen, die den Gepflogenheiten des
+        deutschen Raumes entsprechen.</p><p>Zwingend anzugeben sind der Loginname sowie die komplette
+        Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die
+        Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort
+        gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung
+        aktiv, so ist das Passwort-Feld deaktiviert.</p><p>In der Datenbankkonfiguration müssen die Zugriffsdaten einer der
+        eben angelegten Datenbanken eingetragen werden.</p></div><div class="sect2" title="2.9.5. Gruppenmitgliedschaften verwalten"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppenmitgliedschaften-verwalten"></a>2.9.5. Gruppenmitgliedschaften verwalten</h3></div></div></div><p>Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den
+        Gruppen zugewiesen werden. Dazu gibt es zwei Möglichkeiten:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>In der Gruppenverwaltung wählt man eine Gruppe aus. Im
+            folgenden Dialog kann man dann einzeln die Benutzer der Gruppe
+            hinzufügen.</p></li><li class="listitem"><p>In der Gruppenverwaltung wählt man das Tool zur Verwaltung
+            der Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die
+            alle im System angelegten Gruppen und Benutzer enthält. Durch
+            Setzen der Häkchen wird der Benutzer in der ausgewählten Zeile der
+            Gruppe in der ausgewählten Spalte hinzugefügt.</p></li></ol></div></div><div class="sect2" title="2.9.6. Migration alter Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="Migration-alter-Installationen"></a>2.9.6. Migration alter Installationen</h3></div></div></div><p>Wenn kivitendo 2.6.3 über eine ältere Version installiert wird,
+        in der die Benutzerdaten noch im Dateisystem im Verzeichnis
+        <code class="literal">users</code> verwaltet wurden, so bietet kivitendo die
+        Möglichkeit, diese Benutzerdaten automatisch in die
+        Authentifizierungsdatenbank zu übernehmen. Dies geschieht, wenn man
+        sich nach dem Update der Installation das erste Mal im
+        Administrationsbereich anmeldet. Findet kivitendo die Datei
+        <code class="literal">users/members</code>, so wird der Migrationsprozess
+        gestartet.</p><p>Der Migrationsprozess ist nahezu vollautomatisch. Alle
+        Benutzerdaten können übernommen werden. Nach den Benutzerdaten bietet
+        kivitendo noch die Möglichkeit an, dass automatisch eine
+        Benutzergruppe angelegt wird. Dieser Gruppe wird Zugriff auf alle
+        Funktionen von kivitendo gewährt. Alle migrierten Benutzern werden
+        Mitglied in dieser Gruppe. Damit wird das Verhalten von kivitendo bis
+        Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können
+        sich sofort wieder anmelden und mit dem System arbeiten.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Benutzerauthentifizierung und Administratorpasswort&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.10. E-Mail-Versand aus kivitendo heraus</td></tr></table></div></body></html>
\ No newline at end of file
index a8303361511566a1b30b4d75dac98ee1f64b77b2..e78a3d507599c4fa25f77e2725130cc0f180c471 100644 (file)
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.10. Drucken mit kivitendo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. E-Mail-Versand aus kivitendo heraus"><link rel="next" href="ch02s11.html" title="2.11. OpenDocument-Vorlagen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.10. Drucken mit kivitendo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. Drucken mit kivitendo"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Drucken-mit-kivitendo"></a>2.10. Drucken mit kivitendo</h2></div></div></div><p>Das Drucksystem von kivitendo benutzt von Haus aus LaTeX-Vorlagen.  Um drucken zu können, braucht der Server ein geeignetes
-      LaTeX System. Am einfachsten ist dazu eine <code class="literal">texlive</code> Installation. Unter Debianoiden Betriebssystemen installiert man
-      die Pakete mit:</p><p>
-            </p><pre class="programlisting">aptitude install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
-  texlive-latex-extra texlive-lang-german texlive-generic-extra</pre><p>
-         </p><p>TODO: RPM-Pakete.</p><p>kivitendo bringt drei alternative Vorlagensätze mit:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Standard</p></li><li class="listitem"><p>f-tex</p></li><li class="listitem"><p>RB</p></li></ul></div><div class="sect2" title="2.10.1. Vorlagenverzeichnis anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagenverzeichnis-anlegen"></a>2.10.1. Vorlagenverzeichnis anlegen</h3></div></div></div><p>Im Administrationsbereich lässt sich bei einem Benutzer/Mandanten einer dieser Vorlagensätze als Basis für die zu
-        druckenden Dokumente auswählen. Rufen Sie dazu die <span class="guimenu">Benutzerverwaltung</span> auf.</p><p>Wählen Sie dort einen Benutzer aus oder legen Sie einen neuen an. In der Benutzerbearbeiten-Maske müssen Sie zwei Dinge
-        angeben:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
-                     <code class="option">Name</code>: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
-          Bedingungen für Verzeichnisnamen frei gewählt werden.</p></li><li class="listitem"><p>
-                     <code class="option">Vorlagen auswählen</code>: Wählen Sie hier den Vorlagensatz aus, der kopiert werden soll
-          (<code class="filename">Standard</code>, <code class="filename">f-tex</code> oder <code class="filename">RB</code>.)</p></li></ol></div><p>Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.</p><p>Die Abhängigkeiten kann man prüfen mit:</p><pre class="programlisting">/scripts/installation_check.pl -l</pre></div><div class="sect2" title="2.10.2. Standard"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-Standard"></a>2.10.2. Standard</h3></div></div></div><p>Der Standard-Vorlagensatz von Kivitendo. Wie unter <a class="ulink" href="http://demo.kivitendo.org" target="_top">http://demo.kivitendo.org</a> zu
-        sehen.</p></div><div class="sect2" title="2.10.3. f-tex"><div class="titlepage"><div><div><h3 class="title"><a name="f-tex"></a>2.10.3. f-tex</h3></div></div></div><p>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur Verfügung stellt.</p><div class="sect3" title="2.10.3.1. Feature-Übersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Feature-%C3%9Cbersicht"></a>2.10.3.1. Feature-Übersicht</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage für alle briefartigen Dokumente verwendet. Also
-            Angebot, Rechnung, Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber etc..</p></li><li class="listitem"><p>Leichte Anpassung an das Firmen-Layout durch verwendung eines Hintergrund-PDF. Dieses kann leicht mit dem
-            eigenen Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp, Adobe*)</p></li><li class="listitem"><p>Hintergrund-PDF umschaltbar auf "nur erste Seite" (Standard) oder "alle Seiten" (Option
-            "<code class="option">bgPdfFirstPageOnly</code>" in Datei <code class="filename">letter.lco</code>)</p></li><li class="listitem"><p>Hintergrund-PDF für Ausdruck auf bereits bedrucktem Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
-            versendeten Dokumenten eingebunden (Option "<code class="option">bgPdfEmailOnly</code>" in Datei
-            <code class="filename">letter.lco</code>).</p></li><li class="listitem"><p>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch, Wiederholung von Kopfzeilen, Zwischensummen
-            etc. (danke an Kai-Martin Knaak für die Vorarbeit)</p></li><li class="listitem"><p>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom Land des eigenen Unternehmens abweicht (also die
-            Rechnung das Land verlässt).</p></li><li class="listitem"><p>Multisprachfähig leicht um weitere Sprachen zu erweitern, alle Übersetzungen in der Datei
-            <code class="filename">translatinos.tex</code>.</p></li><li class="listitem"><p>Auflistung von Bruttopreisen für Endverbraucher.</p></li></ul></div></div><div class="sect3" title="2.10.3.2. Die Installation"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Installation"></a>2.10.3.2. Die Installation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <a class="xref" href="ch02s10.html#Vorlagenverzeichnis-anlegen" title="2.10.1. Vorlagenverzeichnis anlegen">Vorlagenverzeichnis anlegen</a>. Das
-            Vorlagensystem funktioniert jetzt schon, hat allerdings noch einen Beispiel-Briefkopf.</p></li><li class="listitem"><p>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach <code class="filename">./letter_head.pdf</code>.</p></li><li class="listitem"><p>Editiere den Bereich "<code class="option">settings</code>" in der datei <code class="filename">letter.lco</code>.</p></li></ul></div><p>oder etwas Detaillierter:</p><p>
-            Es wird eine Datei <code class="filename">sample.lco</code> erstellt und diese nach <code class="filename">letter.lco</code> verlinkt.  Eigentlich
-            ist dies die Datei die für die Firmenspezifischen Anpassungen gedacht ist.  Da die Einstiegshürde in LaTeX nicht ganz niedrig
-            ist, wird in dieser Datei auf ein Hintergrundpdf verwiesen. Ich empfehle über dieses PDF die persönlichen Layoutanpassungen
-            vorzunehmen und <code class="filename">sample.lco</code> unverändert zu lassen. Die die Anpassung über eine
-            <code class="filename">*.lco</code>-Datei die letztlich auf <code class="filename">letter.lco</code> verlinkt ist ist aber auch möglich.
-          </p><p>
-            Es wird eine Datei <code class="filename">sample_head.pdf</code> mit ausgeliefert, diese wird nach <code class="filename">letter_head.pdf</code>
-            verlinkt. Damit gibt es schon mal eine Funktionsfähige Vorlage. Schau Dir nach Abschluss der Installation die Datei
-            <code class="filename">sample_haed.pdf</code> an und erstelle ein entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
-            Template Verzeichniss ablegen und statt <code class="filename">sample_head.pdf</code> nach <code class="filename">letter_head.pdf</code>
-            verlinken.
-          </p><p>
-            letzlich muss <code class="filename">letter_head.pdf</code> auf das passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
-            enthält. Bei Updates oder nach erneutem
-          </p><p>
-            Es wird eine Datei <code class="filename">mydata.tex.example</code> ausgeliefert, die nach <code class="filename">mytdata.tex</code> verlinkt
-            ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das Land verwendet. Die Datei muss also nicht angefasst
-            werden. Die Anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit nicht im öffentlichen Zweig).
-          </p><p>
-            Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.  sollten über die Hintergrund-PDF-Datei oder die
-            <code class="filename">*.lco</code>-Datei erfolgen.
-          </p></div><div class="sect3" title="2.10.3.3. f-tex Funktionsübersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Funktions%C3%BCbersicht"></a>2.10.3.3. f-tex Funktionsübersicht</h4></div></div></div><p>
-            Das Konzept von kivitendo sieht vor, für jedes Dokument (Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine LaTeX-Vorlage
-            vorzuhalten, dies ist sehr Wartungsunfreundlich. Auch das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
-            bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
-            briefartigen Dokumente mit Artikel-Tabellen eine einheitliche LaTeX-Vorlage verwendet, welche über Codeweichen die
-            Besonderheiten der jeweiligen Dokumente Berücksichtigt.
-          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Tabellen mit oder ohne Preis</p></li><li class="listitem"><p>Sprache der Tabellenüberschriften etc.</p></li><li class="listitem"><p>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus Angebotsnummer)</p></li><li class="listitem"><p>Darstellung von Brutto oder Netto-Preisen in der Auflistung (Endverbraucher versus Gewerblicher
-            Kunde)</p></li></ul></div><p>Nachteil:</p><p>
-             LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei <code class="filename">letter.tex</code> ist sehr komplex und verstärkt damit
-             diesen Effekt noch einmal erheblich.  Wer LaTeX-Erfahrung hat, oder geübt ist Scriptsparachen nachzuvollziehen kann natürlich
-             auch innerhalb der Tabellendarstellung gut persönliche Anpassungen vornehmen. Aber man kann sich hier bei Veränderungen sehr
-             schnell häftig in den Fuss schiessen.
-           </p><p>Wer nicht so tief in die Materie einsteigen will oder leicht zu frustrieren ist, sollte sein Hintergrund PDF auf Basis der
-           mitglieferten Datei <code class="filename">sample_head.pdf</code> erstellen, und sich an der Form der dargestellten Tabellen wie sie
-           ausgeliefert werden, erfreuen.
-           </p><p>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche Schritte gehen.</p></div><div class="sect3" title="2.10.3.4. Bruttopreise für Endverbraucher"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Bruttopreise"></a>2.10.3.4. Bruttopreise für Endverbraucher</h4></div></div></div><p>Der auszuweisende Bruttopreis wird innerhalb der LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen "alle
-                Preise Brutto" auszuwählen, aber:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>hierfür müssen die Preise auch in Brutto in der Datenbank stehen (ja - das lässt sich über die Preisgruppen und die
-              Zuordung einer Default-Preisgruppe handhaben)</p></li><li class="listitem"><p>man darf beim Anlegen des Vorgangs nicht vergessen Dieses Häkchen zu setzen.  (das ist in der Praxis wenn man sowohl
-              Endverbraucher- wie Gewerbekunden beliefert der eigentliche Knackpunkt)</p></li></ul></div><p>
-            Es gibt mit f-tex eine weitere Alternative. Die Information ob Brutto oder Nettorechnung wird mit den Zahlarten
-            verknüpft. Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben werden sollen, enden mit "_E" (für
-            Endverbraucher). Falls identische Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt man diese einfach doppelt
-            an (einmal mit der Namensendung "_E"). Gewinn:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Die Entscheidung, ob Netopreise ausgewiesen werden, ist nicht mehr fix mit einer Preisliste Verbunden.</p></li><li class="listitem"><p>Die Default-Zahlart kann im Kundendatensatz hinterlegt werden, und man muss nicht mehr daran denken, "alle Preise
-            Netto" auszuwählen.</p></li><li class="listitem"><p>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen werden, kann direkt beim Drucken reviediert werden,
-            ohne dass sich der Auftragswert ändert.</p></li></ul></div></div><div class="sect3" title="2.10.3.5. Lieferadressen"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-lieferadressen"></a>2.10.3.5. Lieferadressen</h4></div></div></div><p>In Lieferscheinen kommen <code class="varname">shipto*</code>-Variablen im Adressfeld zum Einsatz. Wenn die
-          <code class="varname">shipto*</code>-Variable leer ist, wird die entsprechende Adressvariable eingesetzt.  Wenn also die Lieferadresse in
-          Straße, Hausnummer und Ort abweicht, müssen auch nur diese Felder in der Lieferadresse ausgefüllt werden. Für den Firmenname wird
-          der Wert der Hauptadresse angezeigt.
-          </p></div></div><div class="sect2" title="2.10.4. RB"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-RB"></a>2.10.4. RB</h3></div></div></div><p>Vollständiger Dokumentensatz mit alternativem Design</p></div><div class="sect2" title="2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="allgemeine-hinweise-zu-latex"></a>2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen</h3></div></div></div><p>In den allermeisten Installationen sollte drucken jetzt schon
-        funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
-        Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
-        die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
-        Beispiel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>! LaTeX Error: File `eurosym.sty' not found. Die entsprechende
-            LaTeX-Bibliothek wurde nicht gefunden. Das tritt vor allem bei
-            Vorlagen aus der Community auf. Installieren Sie die entsprechenden
-            Pakete.</p></li><li class="listitem"><p>! Package inputenc Error: Unicode char \u8:... set up for
-            use with LaTeX. Dieser Fehler tritt auf, wenn sie versuchen mit
-            einer Standardinstallation exotische utf8 Zeichen zu drucken.
-            TeXLive unterstützt von Haus nur romanische Schriften und muss mit
-            diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
-            Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</p></li></ul></div><p>Wird garkein Fehler angezeigt sondern nur der Name des Templates,
-        heißt das normalerweise, dass das LaTeX Binary nicht gefunden wurde.
-        Prüfen Sie den Namen in der Konfiguration (Standard:
-        <code class="literal">pdflatex</code>), und stellen Sie sicher, dass pdflatex
-        (oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
-        darf.</p><p>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</p><p>
-                     </p><pre class="programlisting">keep_temp_files = 1;</pre><p>
-                  </p></li><li class="listitem"><p>bei fastcgi oder mod_perl den Webserver neu Starten</p></li><li class="listitem"><p>Nochmal einen Druckversuch im Webfrontend auslösen</p></li><li class="listitem"><p>wechsele in das users Verzeichnis von kivitendo</p><p>
-                     </p><pre class="programlisting">cd [kivitendo-home]/users</pre><p>
-                  </p></li><li class="listitem"><p>LaTeX Suchpfad anpassen:</p><p>
-                     </p><pre class="programlisting">export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"</pre><p>
-                  </p></li><li class="listitem"><p>Finde herraus welche Datei kivitendo beim letzten Durchlauf erstellt hat</p><p>
-                     </p><pre class="programlisting">ls -lahtr ./1*.tex</pre><p>
-                  </p><p>Es sollte die letzte Datei ganz unten sein</p></li><li class="listitem"><p>für besseren Hinweis auf Fehler texdatei nochmals übersetzen</p><p>
-                     </p><pre class="programlisting">pdflatex ./1*.tex</pre><p>
-                  </p><p>in der *.tex datei nach dem Fehler suchen.</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. E-Mail-Versand aus kivitendo heraus&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.11. OpenDocument-Vorlagen</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.10. E-Mail-Versand aus kivitendo heraus</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. Benutzer- und Gruppenverwaltung"><link rel="next" href="ch02s11.html" title="2.11. Drucken mit kivitendo"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.10. E-Mail-Versand aus kivitendo heraus</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. E-Mail-Versand aus kivitendo heraus"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.sending-email"></a>2.10. E-Mail-Versand aus kivitendo heraus</h2></div></div></div><p>kivitendo kann direkt aus dem Programm heraus E-Mails versenden, z.B. um ein Angebot direkt an einen Kunden zu
+      verschicken. Damit dies funktioniert, muss eingestellt werden, über welchen Server die E-Mails verschickt werden sollen. kivitendo
+      unterstützt dabei zwei Mechanismen: Versand über einen lokalen E-Mail-Server (z.B. mit <span class="productname">Postfix</span>™ oder
+      <span class="productname">Exim</span>™, was auch die standardmäßig aktive Methode ist) sowie Versand über einen SMTP-Server (z.B. der des
+      eigenen Internet-Providers).</p><p>Welche Methode und welcher Server verwendet werden, wird über die Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
+      festgelegt. Dort befinden sich alle Einstellungen zu diesem Thema im Abschnitt '<code class="literal">[mail_delivery]</code>'.</p><div class="sect2" title="2.10.1. Versand über lokalen E-Mail-Server"><div class="titlepage"><div><div><h3 class="title"><a name="config.sending-email.sendmail"></a>2.10.1. Versand über lokalen E-Mail-Server</h3></div></div></div><p>Diese Methode bietet sich an, wenn auf dem Server, auf dem kivitendo läuft, bereits ein funktionsfähiger E-Mail-Server wie
+        z.B. <span class="productname">Postfix</span>™, <span class="productname">Exim</span>™ oder <span class="productname">Sendmail</span>™ läuft.</p><p>Um diese Methode auszuwählen, muss der Konfigurationsparameter '<code class="literal">method = sendmail</code>' gesetzt sein. Dies ist
+        gleichzeitig der Standardwert, falls er nicht verändert wird.</p><p>Um zu kontrollieren, wie das Programm zum Einliefern gestartet wird, dient der Parameter '<code class="literal">sendmail =
+        ...</code>'. Der Standardwert verweist auf das Programm <code class="filename">/usr/bin/sendmail</code>, das bei allen oben genannten
+        E-Mail-Serverprodukten für diesen Zweck funktionieren sollte.</p><p>Die Konfiguration des E-Mail-Servers selber würde den Rahmen dieses sprengen. Hierfür sei auf die Dokumentation des
+        E-Mail-Servers verwiesen.</p></div><div class="sect2" title="2.10.2. Versand über einen SMTP-Server"><div class="titlepage"><div><div><h3 class="title"><a name="config.sending-email.smtp"></a>2.10.2. Versand über einen SMTP-Server</h3></div></div></div><p>Diese Methode bietet sich an, wenn kein lokaler E-Mail-Server vorhanden oder zwar einer vorhanden, dieser aber nicht
+        konfiguriert ist.</p><p>Um diese Methode auszuwählen, muss der Konfigurationsparameter '<code class="literal">method = smtp</code>' gesetzt sein. Die folgenden
+        Parameter dienen dabei der weiteren Konfiguration:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">hostname</code>
+                  </span></dt><dd><p>Name oder IP-Adresse des SMTP-Servers. Standardwert: '<code class="literal">localhost</code>'</p></dd><dt><span class="term">
+                     <code class="varname">port</code>
+                  </span></dt><dd><p>Portnummer. Der Standardwert hängt von der verwendeten Verschlüsselungsmethode ab. Gilt '<code class="literal">security =
+            none</code>' oder '<code class="literal">security = tls</code>', so ist 25 die Standardportnummer. Für '<code class="literal">security =
+            ssl</code>' ist 465 die Portnummer. Muss normalerweise nicht geändert werden.</p></dd><dt><span class="term">
+                     <code class="varname">security</code>
+                  </span></dt><dd><p>Wahl der zu verwendenden Verschlüsselung der Verbindung mit dem Server. Standardwert ist
+            '<code class="literal">none</code>', wodurch keine Verschlüsselung verwendet wird. Mit '<code class="literal">tls</code>' wird TLS-Verschlüsselung
+            eingeschaltet, und mit '<code class="literal">ssl</code>' wird Verschlüsselung via SSL eingeschaltet. Achtung: Für
+            '<code class="literal">tls</code>' und '<code class="literal">ssl</code>' werden zusätzliche Perl-Module benötigt (siehe unten).</p></dd><dt><span class="term">
+                     <code class="varname">login</code> und <code class="varname">password</code>
+                  </span></dt><dd><p>Falls der E-Mail-Server eine Authentifizierung verlangt, so können mit diesen zwei Parametern der Benutzername
+            und das Passwort angegeben werden. Wird Authentifizierung verwendet, so sollte aus Sicherheitsgründen auch eine Form von
+            Verschlüsselung aktiviert werden.</p></dd></dl></div><p>Wird Verschlüsselung über TLS oder SSL aktiviert, so werden zusätzliche Perl-Module benötigt. Diese sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>TLS-Verschlüsselung: Modul <code class="literal">Net::SSLGlue</code> (Debian-Paketname
+          <code class="literal">libnet-sslglue-perl</code>, Fedora Core: <code class="literal">perl-Net-SSLGlue</code>, openSuSE:
+          <code class="literal">perl-Net-SSLGlue</code>
+                  </p></li><li class="listitem"><p>SSL-Verschlüsselung: Modul <code class="literal">Net::SMTP::SSL</code> (Debian-Paketname
+          <code class="literal">libnet-smtp-ssl-perl</code>, Fedora Core: <code class="literal">perl-Net-SMTP-SSL</code>, openSuSE:
+          <code class="literal">perl-Net-SMTP-SSL</code>
+                  </p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. Benutzer- und Gruppenverwaltung&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.11. Drucken mit kivitendo</td></tr></table></div></body></html>
\ No newline at end of file
index 94228a0f8a0f08804a69db58262db5261a73cb70..78df092b15f6b90257c3ad30b252691d521d89d2 100644 (file)
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.11. OpenDocument-Vorlagen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s10.html" title="2.10. Drucken mit kivitendo"><link rel="next" href="ch02s12.html" title="2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.11. OpenDocument-Vorlagen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s12.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.11. OpenDocument-Vorlagen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="OpenDocument-Vorlagen"></a>2.11. OpenDocument-Vorlagen</h2></div></div></div><p>kivitendo unterstützt die Verwendung von Vorlagen im
-      OpenDocument-Format, wie es OpenOffice.org ab Version 2 erzeugt.
-      kivitendo kann dabei sowohl neue OpenDocument-Dokumente als auch aus
-      diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
-      OpenDocument-Vorlagen zu aktivieren muss in der Datei
-      <code class="filename">config/kivitendo.conf</code> die Variable
-      <code class="literal">opendocument</code> im Abschnitt
-      <code class="literal">print_templates</code> auf ‘<code class="literal">1</code>’ stehen.
-      Dieses ist die Standardeinstellung.</p><p>Weiterhin muss in der Datei
-      <code class="filename">config/kivitendo.conf</code> die Variable
-      <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code> auf
-      die Zeichenkodierung gesetzt werden, die auch bei der Speicherung der
-      Daten in der Datenbank verwendet wird. Diese ist in den meisten Fällen
-      "UTF-8".</p><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
-      weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
-      OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss
-      neben OpenOffice.org ab Version 2 auch der “X virtual frame buffer”
-      (xvfb) installiert werden. Bei Debian ist er im Paket “xvfb” enthalten.
-      Andere Distributionen enthalten ihn in anderen Paketen.</p><p>Nach der Installation müssen in der Datei
-      <code class="filename">config/kivitendo.conf</code> zwei weitere Variablen
-      angepasst werden: <code class="literal">openofficeorg_writer</code> muss den
-      vollständigen Pfad zur OpenOffice.org Writer-Anwendung enthalten.
-      <code class="literal">xvfb</code> muss den Pfad zum “X virtual frame buffer”
-      enthalten. Beide stehen im Abschnitt
-      <code class="literal">applications</code>.</p><p>Zusätzlich gibt es zwei verschiedene Arten, wie kivitendo mit
-      OpenOffice kommuniziert. Die erste Variante, die benutzt wird, wenn die
-      Variable <code class="literal">$openofficeorg_daemon</code> gesetzt ist, startet
-      ein OpenOffice, das auch nach der Umwandlung des Dokumentes gestartet
-      bleibt. Bei weiteren Umwandlungen wird dann diese laufende Instanz
-      benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung deutlich
-      reduziert wird, weil nicht für jedes Dokument ein OpenOffice gestartet
-      werden muss. Der Nachteil ist, dass diese Methode Python und die
-      Python-UNO-Bindings benötigt, die Bestandteil von OpenOffice 2
-      sind.</p><p>Ist <code class="literal">$openofficeorg_daemon</code> nicht gesetzt, so
-      wird für jedes Dokument OpenOffice neu gestartet und die Konvertierung
-      mit Hilfe eines Makros durchgeführt. Dieses Makro muss in der
-      Dokumentenvorlage enthalten sein und
-      “Standard.Conversion.ConvertSelfToPDF()” heißen. Die Beispielvorlage
-      ‘<code class="literal">templates/mastertemplates/German/invoice.odt</code>’
-      enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
-      ebenfalls enthalten sein muss.</p><p>Als letztes muss herausgefunden werden, welchen Namen
-      OpenOffice.org Writer dem Verzeichnis mit den Benutzereinstellungen
-      gibt. Unter Debian ist dies momentan
-      <code class="literal">~/.openoffice.org2</code>. Sollte der Name bei Ihrer
-      OpenOffice.org-Installation anders sein, so muss das Verzeichnis
-      <code class="literal">users/.openoffice.org2</code> entsprechend umbenannt werden.
-      Ist der Name z.B. einfach nur <code class="literal">.openoffice</code>, so wäre
-      folgender Befehl auszuführen:</p><p>
-            <code class="literal">mv users/.openoffice.org2
-      users/.openoffice</code>
-         </p><p>Dieses Verzeichnis, wie auch das komplette
-      <code class="literal">users</code>-Verzeichnis, muss vom Webserver beschreibbar
-      sein. Dieses wurde bereits erledigt (siehe <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber
-      erneut überprüft werden, wenn die Konvertierung nach PDF
-      fehlschlägt.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s12.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.10. Drucken mit kivitendo&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
-      EUR</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.11. Drucken mit kivitendo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s10.html" title="2.10. E-Mail-Versand aus kivitendo heraus"><link rel="next" href="ch02s12.html" title="2.12. OpenDocument-Vorlagen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.11. Drucken mit kivitendo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s12.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.11. Drucken mit kivitendo"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Drucken-mit-kivitendo"></a>2.11. Drucken mit kivitendo</h2></div></div></div><p>Das Drucksystem von kivitendo benutzt von Haus aus LaTeX-Vorlagen.  Um drucken zu können, braucht der Server ein geeignetes
+      LaTeX System. Am einfachsten ist dazu eine <code class="literal">texlive</code> Installation. Unter Debianoiden Betriebssystemen installiert man
+      die Pakete mit:</p><p>
+            </p><pre class="programlisting">aptitude install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
+  texlive-latex-extra texlive-lang-german texlive-generic-extra</pre><p>
+         </p><p>TODO: RPM-Pakete.</p><p>kivitendo bringt drei alternative Vorlagensätze mit:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Standard</p></li><li class="listitem"><p>f-tex</p></li><li class="listitem"><p>RB</p></li></ul></div><div class="sect2" title="2.11.1. Vorlagenverzeichnis anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagenverzeichnis-anlegen"></a>2.11.1. Vorlagenverzeichnis anlegen</h3></div></div></div><p>Im Administrationsbereich lässt sich bei einem Benutzer/Mandanten einer dieser Vorlagensätze als Basis für die zu
+        druckenden Dokumente auswählen. Rufen Sie dazu die <span class="guimenu">Benutzerverwaltung</span> auf.</p><p>Wählen Sie dort einen Benutzer aus oder legen Sie einen neuen an. In der Benutzerbearbeiten-Maske müssen Sie zwei Dinge
+        angeben:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+                     <code class="option">Name</code>: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
+          Bedingungen für Verzeichnisnamen frei gewählt werden.</p></li><li class="listitem"><p>
+                     <code class="option">Vorlagen auswählen</code>: Wählen Sie hier den Vorlagensatz aus, der kopiert werden soll
+          (<code class="filename">Standard</code>, <code class="filename">f-tex</code> oder <code class="filename">RB</code>.)</p></li></ol></div><p>Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.</p><p>Die Abhängigkeiten kann man prüfen mit:</p><pre class="programlisting">/scripts/installation_check.pl -l</pre></div><div class="sect2" title="2.11.2. Standard"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-Standard"></a>2.11.2. Standard</h3></div></div></div><p>Der Standard-Vorlagensatz von Kivitendo. Wie unter <a class="ulink" href="http://demo.kivitendo.org" target="_top">http://demo.kivitendo.org</a> zu
+        sehen.</p></div><div class="sect2" title="2.11.3. f-tex"><div class="titlepage"><div><div><h3 class="title"><a name="f-tex"></a>2.11.3. f-tex</h3></div></div></div><p>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur Verfügung stellt.</p><div class="sect3" title="2.11.3.1. Feature-Übersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Feature-%C3%9Cbersicht"></a>2.11.3.1. Feature-Übersicht</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage für alle briefartigen Dokumente verwendet. Also
+            Angebot, Rechnung, Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber etc..</p></li><li class="listitem"><p>Leichte Anpassung an das Firmen-Layout durch verwendung eines Hintergrund-PDF. Dieses kann leicht mit dem
+            eigenen Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp, Adobe*)</p></li><li class="listitem"><p>Hintergrund-PDF umschaltbar auf "nur erste Seite" (Standard) oder "alle Seiten" (Option
+            "<code class="option">bgPdfFirstPageOnly</code>" in Datei <code class="filename">letter.lco</code>)</p></li><li class="listitem"><p>Hintergrund-PDF für Ausdruck auf bereits bedrucktem Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
+            versendeten Dokumenten eingebunden (Option "<code class="option">bgPdfEmailOnly</code>" in Datei
+            <code class="filename">letter.lco</code>).</p></li><li class="listitem"><p>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch, Wiederholung von Kopfzeilen, Zwischensummen
+            etc. (danke an Kai-Martin Knaak für die Vorarbeit)</p></li><li class="listitem"><p>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom Land des eigenen Unternehmens abweicht (also die
+            Rechnung das Land verlässt).</p></li><li class="listitem"><p>Multisprachfähig leicht um weitere Sprachen zu erweitern, alle Übersetzungen in der Datei
+            <code class="filename">translatinos.tex</code>.</p></li><li class="listitem"><p>Auflistung von Bruttopreisen für Endverbraucher.</p></li></ul></div></div><div class="sect3" title="2.11.3.2. Die Installation"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Installation"></a>2.11.3.2. Die Installation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <a class="xref" href="ch02s11.html#Vorlagenverzeichnis-anlegen" title="2.11.1. Vorlagenverzeichnis anlegen">Vorlagenverzeichnis anlegen</a>. Das
+            Vorlagensystem funktioniert jetzt schon, hat allerdings noch einen Beispiel-Briefkopf.</p></li><li class="listitem"><p>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach <code class="filename">./letter_head.pdf</code>.</p></li><li class="listitem"><p>Editiere den Bereich "<code class="option">settings</code>" in der datei <code class="filename">letter.lco</code>.</p></li></ul></div><p>oder etwas Detaillierter:</p><p>
+            Es wird eine Datei <code class="filename">sample.lco</code> erstellt und diese nach <code class="filename">letter.lco</code> verlinkt.  Eigentlich
+            ist dies die Datei die für die Firmenspezifischen Anpassungen gedacht ist.  Da die Einstiegshürde in LaTeX nicht ganz niedrig
+            ist, wird in dieser Datei auf ein Hintergrundpdf verwiesen. Ich empfehle über dieses PDF die persönlichen Layoutanpassungen
+            vorzunehmen und <code class="filename">sample.lco</code> unverändert zu lassen. Die die Anpassung über eine
+            <code class="filename">*.lco</code>-Datei die letztlich auf <code class="filename">letter.lco</code> verlinkt ist ist aber auch möglich.
+          </p><p>
+            Es wird eine Datei <code class="filename">sample_head.pdf</code> mit ausgeliefert, diese wird nach <code class="filename">letter_head.pdf</code>
+            verlinkt. Damit gibt es schon mal eine Funktionsfähige Vorlage. Schau Dir nach Abschluss der Installation die Datei
+            <code class="filename">sample_haed.pdf</code> an und erstelle ein entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
+            Template Verzeichniss ablegen und statt <code class="filename">sample_head.pdf</code> nach <code class="filename">letter_head.pdf</code>
+            verlinken.
+          </p><p>
+            letzlich muss <code class="filename">letter_head.pdf</code> auf das passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
+            enthält. Bei Updates oder nach erneutem
+          </p><p>
+            Es wird eine Datei <code class="filename">mydata.tex.example</code> ausgeliefert, die nach <code class="filename">mytdata.tex</code> verlinkt
+            ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das Land verwendet. Die Datei muss also nicht angefasst
+            werden. Die Anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit nicht im öffentlichen Zweig).
+          </p><p>
+            Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.  sollten über die Hintergrund-PDF-Datei oder die
+            <code class="filename">*.lco</code>-Datei erfolgen.
+          </p></div><div class="sect3" title="2.11.3.3. f-tex Funktionsübersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Funktions%C3%BCbersicht"></a>2.11.3.3. f-tex Funktionsübersicht</h4></div></div></div><p>
+            Das Konzept von kivitendo sieht vor, für jedes Dokument (Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine LaTeX-Vorlage
+            vorzuhalten, dies ist sehr Wartungsunfreundlich. Auch das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
+            bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
+            briefartigen Dokumente mit Artikel-Tabellen eine einheitliche LaTeX-Vorlage verwendet, welche über Codeweichen die
+            Besonderheiten der jeweiligen Dokumente Berücksichtigt.
+          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Tabellen mit oder ohne Preis</p></li><li class="listitem"><p>Sprache der Tabellenüberschriften etc.</p></li><li class="listitem"><p>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus Angebotsnummer)</p></li><li class="listitem"><p>Darstellung von Brutto oder Netto-Preisen in der Auflistung (Endverbraucher versus Gewerblicher
+            Kunde)</p></li></ul></div><p>Nachteil:</p><p>
+             LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei <code class="filename">letter.tex</code> ist sehr komplex und verstärkt damit
+             diesen Effekt noch einmal erheblich.  Wer LaTeX-Erfahrung hat, oder geübt ist Scriptsparachen nachzuvollziehen kann natürlich
+             auch innerhalb der Tabellendarstellung gut persönliche Anpassungen vornehmen. Aber man kann sich hier bei Veränderungen sehr
+             schnell häftig in den Fuss schiessen.
+           </p><p>Wer nicht so tief in die Materie einsteigen will oder leicht zu frustrieren ist, sollte sein Hintergrund PDF auf Basis der
+           mitglieferten Datei <code class="filename">sample_head.pdf</code> erstellen, und sich an der Form der dargestellten Tabellen wie sie
+           ausgeliefert werden, erfreuen.
+           </p><p>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche Schritte gehen.</p></div><div class="sect3" title="2.11.3.4. Bruttopreise für Endverbraucher"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Bruttopreise"></a>2.11.3.4. Bruttopreise für Endverbraucher</h4></div></div></div><p>Der auszuweisende Bruttopreis wird innerhalb der LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen "alle
+                Preise Brutto" auszuwählen, aber:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>hierfür müssen die Preise auch in Brutto in der Datenbank stehen (ja - das lässt sich über die Preisgruppen und die
+              Zuordung einer Default-Preisgruppe handhaben)</p></li><li class="listitem"><p>man darf beim Anlegen des Vorgangs nicht vergessen Dieses Häkchen zu setzen.  (das ist in der Praxis wenn man sowohl
+              Endverbraucher- wie Gewerbekunden beliefert der eigentliche Knackpunkt)</p></li></ul></div><p>
+            Es gibt mit f-tex eine weitere Alternative. Die Information ob Brutto oder Nettorechnung wird mit den Zahlarten
+            verknüpft. Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben werden sollen, enden mit "_E" (für
+            Endverbraucher). Falls identische Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt man diese einfach doppelt
+            an (einmal mit der Namensendung "_E"). Gewinn:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Die Entscheidung, ob Netopreise ausgewiesen werden, ist nicht mehr fix mit einer Preisliste Verbunden.</p></li><li class="listitem"><p>Die Default-Zahlart kann im Kundendatensatz hinterlegt werden, und man muss nicht mehr daran denken, "alle Preise
+            Netto" auszuwählen.</p></li><li class="listitem"><p>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen werden, kann direkt beim Drucken reviediert werden,
+            ohne dass sich der Auftragswert ändert.</p></li></ul></div></div><div class="sect3" title="2.11.3.5. Lieferadressen"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-lieferadressen"></a>2.11.3.5. Lieferadressen</h4></div></div></div><p>In Lieferscheinen kommen <code class="varname">shipto*</code>-Variablen im Adressfeld zum Einsatz. Wenn die
+          <code class="varname">shipto*</code>-Variable leer ist, wird die entsprechende Adressvariable eingesetzt.  Wenn also die Lieferadresse in
+          Straße, Hausnummer und Ort abweicht, müssen auch nur diese Felder in der Lieferadresse ausgefüllt werden. Für den Firmenname wird
+          der Wert der Hauptadresse angezeigt.
+          </p></div></div><div class="sect2" title="2.11.4. RB"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-RB"></a>2.11.4. RB</h3></div></div></div><p>Vollständiger Dokumentensatz mit alternativem Design</p></div><div class="sect2" title="2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="allgemeine-hinweise-zu-latex"></a>2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen</h3></div></div></div><p>In den allermeisten Installationen sollte drucken jetzt schon
+        funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
+        Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
+        die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
+        Beispiel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>! LaTeX Error: File `eurosym.sty' not found. Die entsprechende
+            LaTeX-Bibliothek wurde nicht gefunden. Das tritt vor allem bei
+            Vorlagen aus der Community auf. Installieren Sie die entsprechenden
+            Pakete.</p></li><li class="listitem"><p>! Package inputenc Error: Unicode char \u8:... set up for
+            use with LaTeX. Dieser Fehler tritt auf, wenn sie versuchen mit
+            einer Standardinstallation exotische utf8 Zeichen zu drucken.
+            TeXLive unterstützt von Haus nur romanische Schriften und muss mit
+            diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
+            Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</p></li></ul></div><p>Wird garkein Fehler angezeigt sondern nur der Name des Templates,
+        heißt das normalerweise, dass das LaTeX Binary nicht gefunden wurde.
+        Prüfen Sie den Namen in der Konfiguration (Standard:
+        <code class="literal">pdflatex</code>), und stellen Sie sicher, dass pdflatex
+        (oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
+        darf.</p><p>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</p><p>
+                     </p><pre class="programlisting">keep_temp_files = 1;</pre><p>
+                  </p></li><li class="listitem"><p>bei fastcgi oder mod_perl den Webserver neu Starten</p></li><li class="listitem"><p>Nochmal einen Druckversuch im Webfrontend auslösen</p></li><li class="listitem"><p>wechsele in das users Verzeichnis von kivitendo</p><p>
+                     </p><pre class="programlisting">cd [kivitendo-home]/users</pre><p>
+                  </p></li><li class="listitem"><p>LaTeX Suchpfad anpassen:</p><p>
+                     </p><pre class="programlisting">export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"</pre><p>
+                  </p></li><li class="listitem"><p>Finde herraus welche Datei kivitendo beim letzten Durchlauf erstellt hat</p><p>
+                     </p><pre class="programlisting">ls -lahtr ./1*.tex</pre><p>
+                  </p><p>Es sollte die letzte Datei ganz unten sein</p></li><li class="listitem"><p>für besseren Hinweis auf Fehler texdatei nochmals übersetzen</p><p>
+                     </p><pre class="programlisting">pdflatex ./1*.tex</pre><p>
+                  </p><p>in der *.tex datei nach dem Fehler suchen.</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s12.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.10. E-Mail-Versand aus kivitendo heraus&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.12. OpenDocument-Vorlagen</td></tr></table></div></body></html>
\ No newline at end of file
index a78ea4aa7404f3ecfe0955391fc6a036e0c25ffd..ab27592cf9b07e5003f90b9bc0272aee1f731ed4 100644 (file)
@@ -1,65 +1,58 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s11.html" title="2.11. OpenDocument-Vorlagen"><link rel="next" href="ch02s13.html" title="2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
-      EUR</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s11.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s13.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.eur"></a>2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
-      EUR</h2></div></div></div><div class="sect2" title="2.12.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.introduction"></a>2.12.1. Einführung</h3></div></div></div><p>kivitendo besaß bis inklusive Version 2.6.3 einen Konfigurationsparameter namens <code class="varname">eur</code>, der sich in der
-        Konfigurationsdatei <code class="filename">config/kivitendo.conf</code> (damals noch <code class="filename">config/lx_office.conf</code>)
-        befand. Somit galt er für alle Mandanten, die in dieser Installation benutzt wurden.</p><p>Mit der nachfolgenden Version wurde der Parameter zum Einen in
-        die Mandantendatenbank verschoben und dabei auch gleich in drei
-        Einzelparameter aufgeteilt, mit denen sich das Verhalten genauer
-        steuern lässt.</p></div><div class="sect2" title="2.12.2. Konfigurationsparameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.parameters"></a>2.12.2. Konfigurationsparameter</h3></div></div></div><p>Es gibt drei Parameter, die die Gewinnermittlungsart,
-        Versteuerungsart und die Warenbuchungsmethode regeln:</p><div class="variablelist"><dl><dt><span class="term">
-                     <code class="varname">profit_determination</code>
-                  </span></dt><dd><p>Dieser Parameter legt die Berechnungsmethode für die
-              Gewinnermittlung fest. Er enthält entweder
-              <code class="literal">balance</code> für
-              Betriebsvermögensvergleich/Bilanzierung oder
-              <code class="literal">income</code> für die
-              Einnahmen-Überschuss-Rechnung.</p></dd><dt><span class="term">
-                     <code class="varname">accounting_method</code>
-                  </span></dt><dd><p>Dieser Parameter steuert die Buchungs- und
-              Berechnungsmethoden für die Versteuerungsart. Er enthält
-              entweder <code class="literal">accrual</code> für die Soll-Versteuerung
-              oder <code class="literal">cash</code> für die Ist-Versteuerung.</p></dd><dt><span class="term">
-                     <code class="varname">inventory_system</code>
-                  </span></dt><dd><p>Dieser Parameter legt die Warenbuchungsmethode fest. Er
-              enthält entweder <code class="literal">perpetual</code> für die
-              Bestandsmethode oder <code class="literal">periodic</code> für die
-              Aufwandsmethode.</p></dd></dl></div><p>Zum Vergleich der Funktionalität bis und nach 2.6.3:
-        <code class="varname">eur</code> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
-        Ist-Versteuerung und Aufwandsmethode. <code class="varname">eur</code> = 0
-        bedeutete hingegen Bilanzierung, Soll-Versteuerung und
-        Bestandsmethode.</p><p>Die Konfiguration "<code class="varname">eur</code>" unter
-        <code class="varname">[system]</code> in der <a class="link" href="ch02s03.html" title="2.3. kivitendo-Konfigurationsdatei">Konfigurationsdatei</a>
-        
-               <code class="filename">config/kivitendo.conf</code> wird nun nicht mehr
-        benötigt und kann entfernt werden. Dies muss manuell geschehen.</p></div><div class="sect2" title="2.12.3. Festlegen der Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.setting-parameters"></a>2.12.3. Festlegen der Parameter</h3></div></div></div><p>Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in
-        der Admininstration können diese Optionen nun unabhängig voneinander
-        eingestellt werden.</p><p>Beim Upgrade bestehender Mandanten wird eur ausgelesen und die
-        Variablen werden so gesetzt, daß sich an der Funktionalität nichts
-        ändert.</p><p>Die aktuelle Konfiguration wird unter Nummernkreise und
-        Standardkonten unter dem neuen Punkt "Einstellungen" (read-only)
-        angezeigt. Unter <span class="guimenu">System</span>
-        -&gt; <span class="guisubmenu">Mandantenkonfiguration</span> können
-        die Einstellungen auch geändert werden. Dabei ist zu beachten,
-        dass eine Änderung vorhandene Daten so belässt und damit
-        evtl. die Ergebnisse verfälscht. Dies gilt vor Allem für die
-        Warenbuchungsmethode (siehe auch
-        <a class="link" href="ch02s12.html#config.eur.inventory-system-perpetual" title="2.12.4. Bemerkungen zu Bestandsmethode">
-        Bemerkungen zu Bestandsmethode</a>).</p></div><div class="sect2" title="2.12.4. Bemerkungen zu Bestandsmethode"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.inventory-system-perpetual"></a>2.12.4. Bemerkungen zu Bestandsmethode</h3></div></div></div><p>Die Bestandsmethode ist eigentlich eine sehr elegante Methode,
-        funktioniert in kivitendo aber nur unter bestimmten Bedingungen:
-        Voraussetzung ist, daß auch immer alle Einkaufsrechnungen gepflegt
-        werden, und man beim Jahreswechsel nicht mit einer leeren Datenbank
-        anfängt, da bei jedem Verkauf anhand der gesamten Rechnungshistorie
-        der Einkaufswert der Ware nach dem FIFO-Prinzip aus den
-        Einkaufsrechnungen berechnet wird.</p><p>Die Bestandsmethode kann vom Prinzip her also nur funktioneren,
-        wenn man mit den Buchungen bei Null anfängt, und man kann auch nicht
-        im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode
-        wechseln.</p></div><div class="sect2" title="2.12.5. Bekannte Probleme"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.knonw-issues"></a>2.12.5. Bekannte Probleme</h3></div></div></div><p>Bei bestimmten Berichten kann man derzeit noch inviduell
-        einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es
-        werden im Code Variablen wie $accrual oder $cash gesetzt. Diese
-        Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
-        die Konfigurationsvariable
-        <code class="varname">$::lx_office_conf{system}-&gt;{eur}</code> ausgewertet
-        wurde.</p><p>Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die
-        Optionen bewirken, z.B. mit zwei Standardfällen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s11.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s13.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.11. OpenDocument-Vorlagen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.12. OpenDocument-Vorlagen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s11.html" title="2.11. Drucken mit kivitendo"><link rel="next" href="ch02s13.html" title="2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.12. OpenDocument-Vorlagen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s11.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s13.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.12. OpenDocument-Vorlagen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="OpenDocument-Vorlagen"></a>2.12. OpenDocument-Vorlagen</h2></div></div></div><p>kivitendo unterstützt die Verwendung von Vorlagen im
+      OpenDocument-Format, wie es OpenOffice.org ab Version 2 erzeugt.
+      kivitendo kann dabei sowohl neue OpenDocument-Dokumente als auch aus
+      diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
+      OpenDocument-Vorlagen zu aktivieren muss in der Datei
+      <code class="filename">config/kivitendo.conf</code> die Variable
+      <code class="literal">opendocument</code> im Abschnitt
+      <code class="literal">print_templates</code> auf ‘<code class="literal">1</code>’ stehen.
+      Dieses ist die Standardeinstellung.</p><p>Weiterhin muss in der Datei
+      <code class="filename">config/kivitendo.conf</code> die Variable
+      <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code> auf
+      die Zeichenkodierung gesetzt werden, die auch bei der Speicherung der
+      Daten in der Datenbank verwendet wird. Diese ist in den meisten Fällen
+      "UTF-8".</p><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
+      weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
+      OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss
+      neben OpenOffice.org ab Version 2 auch der “X virtual frame buffer”
+      (xvfb) installiert werden. Bei Debian ist er im Paket “xvfb” enthalten.
+      Andere Distributionen enthalten ihn in anderen Paketen.</p><p>Nach der Installation müssen in der Datei
+      <code class="filename">config/kivitendo.conf</code> zwei weitere Variablen
+      angepasst werden: <code class="literal">openofficeorg_writer</code> muss den
+      vollständigen Pfad zur OpenOffice.org Writer-Anwendung enthalten.
+      <code class="literal">xvfb</code> muss den Pfad zum “X virtual frame buffer”
+      enthalten. Beide stehen im Abschnitt
+      <code class="literal">applications</code>.</p><p>Zusätzlich gibt es zwei verschiedene Arten, wie kivitendo mit
+      OpenOffice kommuniziert. Die erste Variante, die benutzt wird, wenn die
+      Variable <code class="literal">$openofficeorg_daemon</code> gesetzt ist, startet
+      ein OpenOffice, das auch nach der Umwandlung des Dokumentes gestartet
+      bleibt. Bei weiteren Umwandlungen wird dann diese laufende Instanz
+      benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung deutlich
+      reduziert wird, weil nicht für jedes Dokument ein OpenOffice gestartet
+      werden muss. Der Nachteil ist, dass diese Methode Python und die
+      Python-UNO-Bindings benötigt, die Bestandteil von OpenOffice 2
+      sind.</p><p>Ist <code class="literal">$openofficeorg_daemon</code> nicht gesetzt, so
+      wird für jedes Dokument OpenOffice neu gestartet und die Konvertierung
+      mit Hilfe eines Makros durchgeführt. Dieses Makro muss in der
+      Dokumentenvorlage enthalten sein und
+      “Standard.Conversion.ConvertSelfToPDF()” heißen. Die Beispielvorlage
+      ‘<code class="literal">templates/mastertemplates/German/invoice.odt</code>’
+      enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
+      ebenfalls enthalten sein muss.</p><p>Als letztes muss herausgefunden werden, welchen Namen
+      OpenOffice.org Writer dem Verzeichnis mit den Benutzereinstellungen
+      gibt. Unter Debian ist dies momentan
+      <code class="literal">~/.openoffice.org2</code>. Sollte der Name bei Ihrer
+      OpenOffice.org-Installation anders sein, so muss das Verzeichnis
+      <code class="literal">users/.openoffice.org2</code> entsprechend umbenannt werden.
+      Ist der Name z.B. einfach nur <code class="literal">.openoffice</code>, so wäre
+      folgender Befehl auszuführen:</p><p>
+            <code class="literal">mv users/.openoffice.org2
+      users/.openoffice</code>
+         </p><p>Dieses Verzeichnis, wie auch das komplette
+      <code class="literal">users</code>-Verzeichnis, muss vom Webserver beschreibbar
+      sein. Dieses wurde bereits erledigt (siehe <a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber
+      erneut überprüft werden, wenn die Konvertierung nach PDF
+      fehlschlägt.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s11.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s13.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.11. Drucken mit kivitendo&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+      EUR</td></tr></table></div></body></html>
\ No newline at end of file
index dda1d399db554bd4da2a1e0a13ea442f991a7371..3b6141deba4fc6f67d7fa2fc7fd00030744eaa2f 100644 (file)
@@ -1,36 +1,65 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s12.html" title="2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><link rel="next" href="ch02s14.html" title="2.14. Einstellungen pro Mandant"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s14.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.skr04-update-3804"></a>2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</h2></div></div></div><div class="sect2" title="2.13.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.skr04-update-3804.introduction"></a>2.13.1. Einführung</h3></div></div></div><p>Die Umsatzsteuerumstellung auf 19% für SKR04 für die
-        Steuerschlüssel "EU ohne USt-ID Nummer" ist erst 2010 erfolgt.
-        kivitendo beinhaltet ein Upgradeskript, das das Konto 3804 automatisch
-        erstellt und die Steuereinstellungen korrekt einstellt. Hat der
-        Benutzer aber schon selber das Konto 3804 angelegt, oder gab es schon
-        Buchungen im Zeitraum nach dem 01.01.2007 auf das Konto 3803, wird das
-        Upgradeskript vorsichtshalber nicht ausgeführt, da der Benutzer sich
-        vielleicht schon selbst geholfen hat und mit seinen Änderungen
-        zufrieden ist. Die korrekten Einstellungen kann man aber auch per Hand
-        ausführen. Nachfolgend werden die entsprechenden Schritte anhand von
-        Screenshots dargestellt.</p><p>Für den Fall, daß Buchungen mit der Steuerschlüssel "EU ohne
-        USt.-IdNr." nach dem 01.01.2007 erfolgt sind, ist davon auszugehen,
-        dass diese mit dem alten Umsatzsteuersatz von 16% gebucht worden sind,
-        und diese Buchungen sollten entsprechend kontrolliert werden.</p></div><div class="sect2" title="2.13.2. Konto 3804 manuell anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="config.skr04-update-3804.create-chart"></a>2.13.2. Konto 3804 manuell anlegen</h3></div></div></div><p>Die folgenden Schritte sind notwendig, um das Konto manuell
-        anzulegen und zu konfigurieren. Zuerst wird in
-        <span class="guimenu">System</span> -&gt;
-        <span class="guisubmenu">Kontenübersicht</span> -&gt; <span class="guimenuitem">Konto
-        erfassen</span> das Konto angelegt.</p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/konto3804.png"></div></div><p>
-         Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst werden. Dazu unter <span class="guimenu">System</span> -&gt;
-         <span class="guisubmenu">Steuern</span> -&gt; <span class="guimenuitem">Bearbeiten</span> den Eintrag mit Steuerschlüssel 13 auswählen und ihn
-         wie im folgenden Screenshot angezeigt anpassen.
-        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuer3803.png"></div></div><p>
-         Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für Konto 3804 (19%) angelegt. Dazu unter <span class="guimenu">System</span> -&gt;
-         <span class="guisubmenu">Steuern</span> -&gt; <span class="guimenuitem">Erfassen</span> auswählen und die Werte aus dem Screenshot übernehmen.
-        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuer3804.png"></div></div><p>
-         Als Nächstes sind alle Konten anzupassen, die als Steuerautomatikkonto die 3803 haben, sodass sie ab dem 1.1.2007 auch
-         Steuerautomatik auf 3804 bekommen. Dies betrifft in der Standardkonfiguration die Konten 4315 und 4726. Als Beispiel für 4315
-         müssen Sie dazu unter <span class="guimenu">System</span> -&gt; <span class="guisubmenu">Kontenübersicht</span> -&gt; <span class="guimenuitem">Konten
-         anzeigen</span> das Konto 4315 anklicken und die Einstellungen wie im Screenshot gezeigt vornehmen.
-        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/konto4315.png"></div></div><p>
-         Als Letztes sollte die Steuerliste unter <span class="guimenu">System</span> -&gt; <span class="guisubmenu">Steuern</span> -&gt;
-         <span class="guimenuitem">Bearbeiten</span> kontrolliert werden. Zum Vergleich der Screenshot.
-        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuerliste.png"></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s14.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
-      EUR&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.14. Einstellungen pro Mandant</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s12.html" title="2.12. OpenDocument-Vorlagen"><link rel="next" href="ch02s14.html" title="2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+      EUR</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s14.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.eur"></a>2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+      EUR</h2></div></div></div><div class="sect2" title="2.13.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.introduction"></a>2.13.1. Einführung</h3></div></div></div><p>kivitendo besaß bis inklusive Version 2.6.3 einen Konfigurationsparameter namens <code class="varname">eur</code>, der sich in der
+        Konfigurationsdatei <code class="filename">config/kivitendo.conf</code> (damals noch <code class="filename">config/lx_office.conf</code>)
+        befand. Somit galt er für alle Mandanten, die in dieser Installation benutzt wurden.</p><p>Mit der nachfolgenden Version wurde der Parameter zum Einen in
+        die Mandantendatenbank verschoben und dabei auch gleich in drei
+        Einzelparameter aufgeteilt, mit denen sich das Verhalten genauer
+        steuern lässt.</p></div><div class="sect2" title="2.13.2. Konfigurationsparameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.parameters"></a>2.13.2. Konfigurationsparameter</h3></div></div></div><p>Es gibt drei Parameter, die die Gewinnermittlungsart,
+        Versteuerungsart und die Warenbuchungsmethode regeln:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">profit_determination</code>
+                  </span></dt><dd><p>Dieser Parameter legt die Berechnungsmethode für die
+              Gewinnermittlung fest. Er enthält entweder
+              <code class="literal">balance</code> für
+              Betriebsvermögensvergleich/Bilanzierung oder
+              <code class="literal">income</code> für die
+              Einnahmen-Überschuss-Rechnung.</p></dd><dt><span class="term">
+                     <code class="varname">accounting_method</code>
+                  </span></dt><dd><p>Dieser Parameter steuert die Buchungs- und
+              Berechnungsmethoden für die Versteuerungsart. Er enthält
+              entweder <code class="literal">accrual</code> für die Soll-Versteuerung
+              oder <code class="literal">cash</code> für die Ist-Versteuerung.</p></dd><dt><span class="term">
+                     <code class="varname">inventory_system</code>
+                  </span></dt><dd><p>Dieser Parameter legt die Warenbuchungsmethode fest. Er
+              enthält entweder <code class="literal">perpetual</code> für die
+              Bestandsmethode oder <code class="literal">periodic</code> für die
+              Aufwandsmethode.</p></dd></dl></div><p>Zum Vergleich der Funktionalität bis und nach 2.6.3:
+        <code class="varname">eur</code> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
+        Ist-Versteuerung und Aufwandsmethode. <code class="varname">eur</code> = 0
+        bedeutete hingegen Bilanzierung, Soll-Versteuerung und
+        Bestandsmethode.</p><p>Die Konfiguration "<code class="varname">eur</code>" unter
+        <code class="varname">[system]</code> in der <a class="link" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei">Konfigurationsdatei</a>
+        
+               <code class="filename">config/kivitendo.conf</code> wird nun nicht mehr
+        benötigt und kann entfernt werden. Dies muss manuell geschehen.</p></div><div class="sect2" title="2.13.3. Festlegen der Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.setting-parameters"></a>2.13.3. Festlegen der Parameter</h3></div></div></div><p>Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in
+        der Admininstration können diese Optionen nun unabhängig voneinander
+        eingestellt werden.</p><p>Beim Upgrade bestehender Mandanten wird eur ausgelesen und die
+        Variablen werden so gesetzt, daß sich an der Funktionalität nichts
+        ändert.</p><p>Die aktuelle Konfiguration wird unter Nummernkreise und
+        Standardkonten unter dem neuen Punkt "Einstellungen" (read-only)
+        angezeigt. Unter <span class="guimenu">System</span>
+        -&gt; <span class="guisubmenu">Mandantenkonfiguration</span> können
+        die Einstellungen auch geändert werden. Dabei ist zu beachten,
+        dass eine Änderung vorhandene Daten so belässt und damit
+        evtl. die Ergebnisse verfälscht. Dies gilt vor Allem für die
+        Warenbuchungsmethode (siehe auch
+        <a class="link" href="ch02s13.html#config.eur.inventory-system-perpetual" title="2.13.4. Bemerkungen zu Bestandsmethode">
+        Bemerkungen zu Bestandsmethode</a>).</p></div><div class="sect2" title="2.13.4. Bemerkungen zu Bestandsmethode"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.inventory-system-perpetual"></a>2.13.4. Bemerkungen zu Bestandsmethode</h3></div></div></div><p>Die Bestandsmethode ist eigentlich eine sehr elegante Methode,
+        funktioniert in kivitendo aber nur unter bestimmten Bedingungen:
+        Voraussetzung ist, daß auch immer alle Einkaufsrechnungen gepflegt
+        werden, und man beim Jahreswechsel nicht mit einer leeren Datenbank
+        anfängt, da bei jedem Verkauf anhand der gesamten Rechnungshistorie
+        der Einkaufswert der Ware nach dem FIFO-Prinzip aus den
+        Einkaufsrechnungen berechnet wird.</p><p>Die Bestandsmethode kann vom Prinzip her also nur funktioneren,
+        wenn man mit den Buchungen bei Null anfängt, und man kann auch nicht
+        im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode
+        wechseln.</p></div><div class="sect2" title="2.13.5. Bekannte Probleme"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.knonw-issues"></a>2.13.5. Bekannte Probleme</h3></div></div></div><p>Bei bestimmten Berichten kann man derzeit noch inviduell
+        einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es
+        werden im Code Variablen wie $accrual oder $cash gesetzt. Diese
+        Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
+        die Konfigurationsvariable
+        <code class="varname">$::lx_office_conf{system}-&gt;{eur}</code> ausgewertet
+        wurde.</p><p>Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die
+        Optionen bewirken, z.B. mit zwei Standardfällen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s14.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.12. OpenDocument-Vorlagen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</td></tr></table></div></body></html>
\ No newline at end of file
index cfcfe9111f2fd1aa114fce14db8d247a785c7c4a..4b29a6f110d455cc44b9bc055cf542d1168f9881 100644 (file)
@@ -1,20 +1,36 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.14. Einstellungen pro Mandant</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s13.html" title="2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"><link rel="next" href="ch02s15.html" title="2.15. kivitendo ERP verwenden"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.14. Einstellungen pro Mandant</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s13.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s15.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.14. Einstellungen pro Mandant"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.client"></a>2.14. Einstellungen pro Mandant</h2></div></div></div><p>Einige Einstellungen können von einem Benutzer mit dem
-      <a class="link" href="ch02s08.html#Zusammenh%C3%A4nge" title="2.8.1. Zusammenhänge">Recht</a> "Administration
-      (Für die Verwaltung der aktuellen Instanz aus einem Userlogin heraus)"
-      gemacht werden. Diese Einstellungen sind dann für die aktuellen
-      Mandanten-Datenbank gültig. Die Einstellungen sind
-      unter <span class="guimenu">System</span>
-      -&gt; <span class="guisubmenu">Mandantenkonfiguration</span> erreichbar.</p><p>Bitte beachten Sie die Hinweise zu den einzelnen
-      Einstellungen. Einige Einstellungen sollten nicht ohne Weiteres
-      im laufenden Betrieb geändert werden (siehe
-      auch <a class="link" href="ch02s12.html#config.eur.inventory-system-perpetual" title="2.12.4. Bemerkungen zu Bestandsmethode">Bemerkungen zu
-      Bestandsmethode</a>).</p><p>Die Einstellungen <code class="literal">show_bestbefore</code>
-      und <code class="literal">payments_changeable</code> aus dem
-      Abschnitt <code class="literal">features</code> und die Einstellungen im
-      Abschnitt <code class="literal">datev_check</code> (sofern schon vorhanden)
-      der <a class="link" href="ch02s03.html" title="2.3. kivitendo-Konfigurationsdatei">kivitendo-Konfigurationsdatei</a>
-      werden bei einem Datenbankupdate einer älteren Version automatisch
-      übernommen. Diese Einträge können danach aus der Konfigurationsdatei
-      entfernt werden.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s13.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s15.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.15. kivitendo ERP verwenden</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s13.html" title="2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><link rel="next" href="ch02s15.html" title="2.15. Einstellungen pro Mandant"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s13.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s15.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.skr04-update-3804"></a>2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</h2></div></div></div><div class="sect2" title="2.14.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.skr04-update-3804.introduction"></a>2.14.1. Einführung</h3></div></div></div><p>Die Umsatzsteuerumstellung auf 19% für SKR04 für die
+        Steuerschlüssel "EU ohne USt-ID Nummer" ist erst 2010 erfolgt.
+        kivitendo beinhaltet ein Upgradeskript, das das Konto 3804 automatisch
+        erstellt und die Steuereinstellungen korrekt einstellt. Hat der
+        Benutzer aber schon selber das Konto 3804 angelegt, oder gab es schon
+        Buchungen im Zeitraum nach dem 01.01.2007 auf das Konto 3803, wird das
+        Upgradeskript vorsichtshalber nicht ausgeführt, da der Benutzer sich
+        vielleicht schon selbst geholfen hat und mit seinen Änderungen
+        zufrieden ist. Die korrekten Einstellungen kann man aber auch per Hand
+        ausführen. Nachfolgend werden die entsprechenden Schritte anhand von
+        Screenshots dargestellt.</p><p>Für den Fall, daß Buchungen mit der Steuerschlüssel "EU ohne
+        USt.-IdNr." nach dem 01.01.2007 erfolgt sind, ist davon auszugehen,
+        dass diese mit dem alten Umsatzsteuersatz von 16% gebucht worden sind,
+        und diese Buchungen sollten entsprechend kontrolliert werden.</p></div><div class="sect2" title="2.14.2. Konto 3804 manuell anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="config.skr04-update-3804.create-chart"></a>2.14.2. Konto 3804 manuell anlegen</h3></div></div></div><p>Die folgenden Schritte sind notwendig, um das Konto manuell
+        anzulegen und zu konfigurieren. Zuerst wird in
+        <span class="guimenu">System</span> -&gt;
+        <span class="guisubmenu">Kontenübersicht</span> -&gt; <span class="guimenuitem">Konto
+        erfassen</span> das Konto angelegt.</p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/konto3804.png"></div></div><p>
+         Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst werden. Dazu unter <span class="guimenu">System</span> -&gt;
+         <span class="guisubmenu">Steuern</span> -&gt; <span class="guimenuitem">Bearbeiten</span> den Eintrag mit Steuerschlüssel 13 auswählen und ihn
+         wie im folgenden Screenshot angezeigt anpassen.
+        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuer3803.png"></div></div><p>
+         Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für Konto 3804 (19%) angelegt. Dazu unter <span class="guimenu">System</span> -&gt;
+         <span class="guisubmenu">Steuern</span> -&gt; <span class="guimenuitem">Erfassen</span> auswählen und die Werte aus dem Screenshot übernehmen.
+        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuer3804.png"></div></div><p>
+         Als Nächstes sind alle Konten anzupassen, die als Steuerautomatikkonto die 3803 haben, sodass sie ab dem 1.1.2007 auch
+         Steuerautomatik auf 3804 bekommen. Dies betrifft in der Standardkonfiguration die Konten 4315 und 4726. Als Beispiel für 4315
+         müssen Sie dazu unter <span class="guimenu">System</span> -&gt; <span class="guisubmenu">Kontenübersicht</span> -&gt; <span class="guimenuitem">Konten
+         anzeigen</span> das Konto 4315 anklicken und die Einstellungen wie im Screenshot gezeigt vornehmen.
+        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/konto4315.png"></div></div><p>
+         Als Letztes sollte die Steuerliste unter <span class="guimenu">System</span> -&gt; <span class="guisubmenu">Steuern</span> -&gt;
+         <span class="guimenuitem">Bearbeiten</span> kontrolliert werden. Zum Vergleich der Screenshot.
+        </p><div class="screenshot"><div class="mediaobject"><img src="images/skr04-update-3804/steuerliste.png"></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s13.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s15.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+      EUR&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.15. Einstellungen pro Mandant</td></tr></table></div></body></html>
\ No newline at end of file
index bc16a0722fc540c0a54e3f3e6b6475bbca35b6dc..c5be100664656a5bca4cbd50f84afb1934633334 100644 (file)
@@ -1,8 +1,20 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>2.15. kivitendo ERP verwenden</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s14.html" title="2.14. Einstellungen pro Mandant"><link rel="next" href="ch03.html" title="Kapitel 3. Features und Funktionen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.15. kivitendo ERP verwenden</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s14.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.15. kivitendo ERP verwenden"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kivitendo-ERP-verwenden"></a>2.15. kivitendo ERP verwenden</h2></div></div></div><p>Nach erfolgreicher Installation ist der Loginbildschirm unter
-      folgender URL erreichbar:</p><p>
-            <a class="ulink" href="http://localhost/kivitendo-erp/login.pl" target="_top">http://localhost/kivitendo-erp/login.pl</a>
-         </p><p>Die Administrationsseite erreichen Sie unter:</p><p>
-            <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
-         </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s14.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.14. Einstellungen pro Mandant&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;Kapitel 3. Features und Funktionen</td></tr></table></div></body></html>
\ No newline at end of file
+   <title>2.15. Einstellungen pro Mandant</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s14.html" title="2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb"><link rel="next" href="ch02s16.html" title="2.16. kivitendo ERP verwenden"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.15. Einstellungen pro Mandant</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s14.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s16.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.15. Einstellungen pro Mandant"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.client"></a>2.15. Einstellungen pro Mandant</h2></div></div></div><p>Einige Einstellungen können von einem Benutzer mit dem
+      <a class="link" href="ch02s09.html#Zusammenh%C3%A4nge" title="2.9.1. Zusammenhänge">Recht</a> "Administration
+      (Für die Verwaltung der aktuellen Instanz aus einem Userlogin heraus)"
+      gemacht werden. Diese Einstellungen sind dann für die aktuellen
+      Mandanten-Datenbank gültig. Die Einstellungen sind
+      unter <span class="guimenu">System</span>
+      -&gt; <span class="guisubmenu">Mandantenkonfiguration</span> erreichbar.</p><p>Bitte beachten Sie die Hinweise zu den einzelnen
+      Einstellungen. Einige Einstellungen sollten nicht ohne Weiteres
+      im laufenden Betrieb geändert werden (siehe
+      auch <a class="link" href="ch02s13.html#config.eur.inventory-system-perpetual" title="2.13.4. Bemerkungen zu Bestandsmethode">Bemerkungen zu
+      Bestandsmethode</a>).</p><p>Die Einstellungen <code class="literal">show_bestbefore</code>
+      und <code class="literal">payments_changeable</code> aus dem
+      Abschnitt <code class="literal">features</code> und die Einstellungen im
+      Abschnitt <code class="literal">datev_check</code> (sofern schon vorhanden)
+      der <a class="link" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei">kivitendo-Konfigurationsdatei</a>
+      werden bei einem Datenbankupdate einer älteren Version automatisch
+      übernommen. Diese Einträge können danach aus der Konfigurationsdatei
+      entfernt werden.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s14.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s16.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.16. kivitendo ERP verwenden</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s16.html b/doc/html/ch02s16.html
new file mode 100644 (file)
index 0000000..15b71bb
--- /dev/null
@@ -0,0 +1,8 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+   <title>2.16. kivitendo ERP verwenden</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s15.html" title="2.15. Einstellungen pro Mandant"><link rel="next" href="ch03.html" title="Kapitel 3. Features und Funktionen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.16. kivitendo ERP verwenden</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s15.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.16. kivitendo ERP verwenden"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kivitendo-ERP-verwenden"></a>2.16. kivitendo ERP verwenden</h2></div></div></div><p>Nach erfolgreicher Installation ist der Loginbildschirm unter
+      folgender URL erreichbar:</p><p>
+            <a class="ulink" href="http://localhost/kivitendo-erp/login.pl" target="_top">http://localhost/kivitendo-erp/login.pl</a>
+         </p><p>Die Administrationsseite erreichen Sie unter:</p><p>
+            <a class="ulink" href="http://localhost/kivitendo-erp/admin.pl" target="_top">http://localhost/kivitendo-erp/admin.pl</a>
+         </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s15.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.15. Einstellungen pro Mandant&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;Kapitel 3. Features und Funktionen</td></tr></table></div></body></html>
\ No newline at end of file
index 94be1a2f6d0cfe0dd27a4ee0dfdfa57010daf253..0d33263b76e54c8cdab67c5f4367e6896c28f07d 100644 (file)
@@ -1,6 +1,6 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>Kapitel 3. Features und Funktionen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch02s15.html" title="2.15. kivitendo ERP verwenden"><link rel="next" href="ch03s02.html" title="3.2. Dokumentenvorlagen und verfügbare Variablen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 3. Features und Funktionen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s15.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 3. Features und Funktionen"><div class="titlepage"><div><div><h2 class="title"><a name="features"></a>Kapitel 3. Features und Funktionen</h2></div></div></div><div class="sect1" title="3.1. Wiederkehrende Rechnungen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.periodic-invoices"></a>3.1. Wiederkehrende Rechnungen</h2></div></div></div><div class="sect2" title="3.1.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.introduction"></a>3.1.1. Einführung</h3></div></div></div><p>Wiederkehrende Rechnungen werden als normale Aufträge definiert
+   <title>Kapitel 3. Features und Funktionen</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch02s16.html" title="2.16. kivitendo ERP verwenden"><link rel="next" href="ch03s02.html" title="3.2. Dokumentenvorlagen und verfügbare Variablen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 3. Features und Funktionen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s16.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 3. Features und Funktionen"><div class="titlepage"><div><div><h2 class="title"><a name="features"></a>Kapitel 3. Features und Funktionen</h2></div></div></div><div class="sect1" title="3.1. Wiederkehrende Rechnungen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.periodic-invoices"></a>3.1. Wiederkehrende Rechnungen</h2></div></div></div><div class="sect2" title="3.1.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.introduction"></a>3.1.1. Einführung</h3></div></div></div><p>Wiederkehrende Rechnungen werden als normale Aufträge definiert
         und konfiguriert, mit allen dazugehörigen Kunden- und Artikelangaben.
         Die konfigurierten Aufträge werden später automatisch in Rechnungen
         umgewandelt, so als ob man den Workflow benutzen würde, und auch die
@@ -35,7 +35,7 @@
               automatisch nach hinten geschoben wird.</p></dd><dt><span class="term">Drucken</span></dt><dd><p>Sind Drucker konfiguriert, so kann man sich die erstellten
               Rechnungen auch gleich ausdrucken lassen.</p></dd></dl></div><p>Nach Erstellung der Rechnungen kann eine E-Mail mit
         Informationen zu den erstellten Rechnungen verschickt werden.
-        Konfiguriert wird dies in der <a class="link" href="ch02s03.html#config.config-file.sections-parameters" title="2.3.2. Abschnitte und Parameter">Konfigurationsdatei</a>
+        Konfiguriert wird dies in der <a class="link" href="ch02s04.html#config.config-file.sections-parameters" title="2.4.2. Abschnitte und Parameter">Konfigurationsdatei</a>
         
                <code class="filename">config/kivitendo.conf</code> im Abschnitt
         <code class="varname">[periodic_invoices]</code>.</p></div><div class="sect2" title="3.1.3. Auflisten"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.reports"></a>3.1.3. Auflisten</h3></div></div></div><p>Unter Verkauf-&gt;Berichte-&gt;Aufträge finden sich zwei neue
@@ -43,7 +43,7 @@
         Rechnungen inaktiv", mit denen man sich einen Überglick über die
         wiederkehrenden Rechnungen verschaffen kann.</p></div><div class="sect2" title="3.1.4. Erzeugung der eigentlichen Rechnungen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.task-server"></a>3.1.4. Erzeugung der eigentlichen Rechnungen</h3></div></div></div><p>Die zeitliche und periodische Überprüfung, ob eine
         wiederkehrende Rechnung automatisch erstellt werden soll, geschieht
-        durch den <a class="link" href="ch02s06.html" title="2.6. Der Task-Server">Taskserver</a>, einen
+        durch den <a class="link" href="ch02s07.html" title="2.7. Der Task-Server">Taskserver</a>, einen
         externen Dienst, der automatisch beim Start des Servers gestartet
         werden sollte.</p></div><div class="sect2" title="3.1.5. Erste Rechnung für aktuellen Monat erstellen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.create-for-current-month"></a>3.1.5. Erste Rechnung für aktuellen Monat erstellen</h3></div></div></div><p>Will man im laufenden Monat eine monatlich wiederkehrende
         Rechnung inkl. des laufenden Monats starten, stellt man das Startdatum
@@ -51,4 +51,4 @@
         den neu konfigurieren Auftrag erkennt und daraus eine Rechnung
         generiert hat. Alternativ setzt man das Startdatum auf den
         Monatsersten des Folgemonats und erstellt die erste Rechnung direkt
-        manuell über den Workflow.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s15.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.15. kivitendo ERP verwenden&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.2. Dokumentenvorlagen und verfügbare Variablen</td></tr></table></div></body></html>
\ No newline at end of file
+        manuell über den Workflow.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s16.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.16. kivitendo ERP verwenden&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.2. Dokumentenvorlagen und verfügbare Variablen</td></tr></table></div></body></html>
\ No newline at end of file
index e8b2f81d132575de3a02828ef1e862616e454d3b..0de985b9711678397eba06abd6b741a49b260c53 100644 (file)
                      </span></dt><dd><p>Telefonnummer des Lieferanten; nur für
                 Lieferanten</p></dd><dt><span class="term">
                         <code class="varname">zipcode</code>
-                     </span></dt><dd><p>Postleitzahl</p></dd></dl></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left"><a name="dokumentenvorlagen-und-variablen.anmerkung-shipto"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Anmerkung: Sind die <code class="varname">shipto*</code>-Felder in den
+                     </span></dt><dd><p>Postleitzahl</p></dd></dl></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left"><a name="dokumentenvorlagen-und-variablen.anmerkung-shipto"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Anmerkung: Sind die <code class="varname">shipto*</code>-Felder in den
             Stammdaten nicht eingetragen, so haben die Variablen
             <code class="varname">shipto*</code> den gleichen Wert wie die die
             entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich
                         <code class="varname">invdate</code>
                      </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
                         <code class="varname">invnumber</code>
-                     </span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4361"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
+                     </span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4421"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
           Rechnung. Allerdings heißen die Variablen, die mit
           <code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
           fangen sie mit <code class="varname">quo</code> für "quotation" an:
index 6f4616f0d49aeceb125bc0076e26982b18e5af83..6e505bb520f4ad172946b7ee68b7a0f9d43b8f67 100644 (file)
@@ -1,6 +1,6 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s03.html" title="3.3. Excel-Vorlagen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4968"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4974"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
+   <title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s03.html" title="3.3. Excel-Vorlagen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e5028"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5034"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
         "main", der von überall erreichbar ist. Darüber hinaus sind bareword
         globs global und die meisten speziellen Variablen sind...
         speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
@@ -25,7 +25,7 @@
               <code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
                      <code class="literal">local $form</code>
                   </span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
-              des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5075"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
+              des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5135"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
                <span class="productname">SQL-Ledger</span>™ hat fast alles im globalen
         namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
         Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder
@@ -39,7 +39,7 @@
         dies hat, seit der Einführung, u.a. schon so manche langwierige
         Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
         angegeben werden, werden die nicht geprüft, und somit kann sich
-        schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5108"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
+        schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5168"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
         globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
         vorgegebenen Eigenschaften, und alles andere sollte anderweitig
         umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
@@ -62,7 +62,7 @@
                      <code class="varname">$::request</code>
                   </p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im
         Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
-        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5172"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
+        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5232"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
               "<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden
               sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
               User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
   push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
   push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
   # ...
-}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5256"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
+}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5316"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
               zugegriffen wird</p></li><li class="listitem"><p>Wird bei jedem Request neu erstellt.</p></li><li class="listitem"><p>Enthält die Userdaten des aktuellen Logins</p></li><li class="listitem"><p>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
               extern serialisiert werden, weil da auch der Datenbankzugriff
               für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Listenbegrenzung vclimit,
           überwiegend die Daten, die sich unter <span class="guimenu">Programm</span>
           -&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die
           Informationen über den Benutzer die über die
-          Administrator-Schnittstelle (admin.pl) eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5295"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
+          Administrator-Schnittstelle (admin.pl) eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5355"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
               sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
               Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
-          Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5313"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
+          Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5373"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
               Funktionen</p></li></ul></div><p>
                   <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
           bereit, wie "<code class="function">enter_sub</code>" und
           "<code class="function">message</code>" und "<code class="function">dump</code>" mit
           denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
           packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
-$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5350"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
+$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5410"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
                   <code class="varname">$::auth</code> stellt Funktionen bereit um die
           Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
           vom aktuellen User abhängen wird das Objekt aus
           Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem
-          Request kurz resettet.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5371"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+          Request kurz resettet.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5431"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
               "<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
               <code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
           und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
@@ -149,17 +149,17 @@ $main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{
           verfügbar:</p><pre class="programlisting">[debug]
 file = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
           <code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
-          erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
-            Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5407"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+          erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
+            Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5467"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
               "<code class="classname">SL::InstanceConfiguration</code>"</p></li><li class="listitem"><p>wird pro Request neu erstellt</p></li></ul></div><p>Funktioniert wie <code class="varname">$::lx_office_conf</code>,
           speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
           ist hier eine Mandantendatenbank. Beispielsweise überprüft
           </p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
-          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5428"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5488"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
               "<code class="varname">SL::Dispatcher</code>"</p></li><li class="listitem"><p>wird pro Serverprozess erstellt.</p></li><li class="listitem"><p>enthält Informationen über die technische Verbindung zum
               Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
           global gespeichert wird. Wird vermutlich irgendwann in einem anderen
-          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5446"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
+          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5506"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
                   <code class="varname">$::request</code> ist ein generischer Platz um
           Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
           at a distance benutzt werden, sondern um lokales memoizing zu
@@ -172,20 +172,20 @@ file = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</
               <code class="varname">$::request</code>
                      </p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf
               zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
-              Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5488"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
-        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5493"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
+              Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5548"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
+        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5553"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
               Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
               Klassennamespace gehalten wird und über Requestgrenzen
               leaked</p></li><li class="listitem"><p>liegt jetzt unter
               <code class="varname">$::request-&gt;{cgi}</code>
-                     </p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5509"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
+                     </p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5569"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
               ein paar hundert mal pro Request eine Liste der Einheiten
               brauchen, und de als Parameter durch einen Riesenstack von
               Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter
               <code class="varname">$::request-&gt;{cache}{all_units}</code>
                      </p></li><li class="listitem"><p>Wird nur in
               <code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
-              gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5528"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
+              gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5588"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
               abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
               möglichen Rekursioenen darstellt, und da nie welche
               auftreten.</p></li><li class="listitem"><p>komplette recursion protection wurde entfernt.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.3. Excel-Vorlagen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;4.2. Entwicklung unter FastCGI</td></tr></table></div></body></html>
\ No newline at end of file
index bae0cca0f9085083955eab8805b43e5ceeb61f23..c542cbff6bdb2423ac8c0ccbce47a834289dc3fe 100644 (file)
@@ -1,6 +1,6 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>4.4. Translations and languages</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s03.html" title="4.3. SQL-Upgradedateien"><link rel="next" href="ch04s05.html" title="4.5. Die kivitendo-Test-Suite"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.4. Translations and languages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.4. Translations and languages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="translations-languages"></a>4.4. Translations and languages</h2></div></div></div><div class="sect2" title="4.4.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a name="translations-languages.introduction"></a>4.4.1. Introduction</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Dieser Abschnitt ist in Englisch geschrieben, um
+   <title>4.4. Translations and languages</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s03.html" title="4.3. SQL-Upgradedateien"><link rel="next" href="ch04s05.html" title="4.5. Die kivitendo-Test-Suite"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.4. Translations and languages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.4. Translations and languages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="translations-languages"></a>4.4. Translations and languages</h2></div></div></div><div class="sect2" title="4.4.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a name="translations-languages.introduction"></a>4.4.1. Introduction</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Dieser Abschnitt ist in Englisch geschrieben, um
           internationalen Übersetzern die Arbeit zu erleichtern.</p></td></tr></table></div><p>This section describes how localization packages in kivitendo
         are built. Currently the only language fully supported is German, and
         since most of the internal messages are held in English the English
index 9b8060127be2c33f7754d01794e7fcf46a38ad8f..96717ff567dcd602ce2517c8cfc5ccb3e1653acb 100644 (file)
@@ -1,9 +1,9 @@
 <html><head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-   <title>kivitendo: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo: Installation, Konfiguration, Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Ben%C3%B6tigte-Software-und-Pakete">2.1. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02.html#Betriebssystem">2.1.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02.html#Pakete">2.1.2. Pakete</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s02.html">2.2. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">2.3. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s03.html#config.config-file.introduction">2.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.sections-parameters">2.3.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.prior-versions">2.3.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s04.html">2.4. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.4.1. Zeichensätze/die Verwendung von UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#%C3%84nderungen-an-Konfigurationsdateien">2.4.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.4.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Datenbankbenutzer-anlegen">2.4.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#d0e592">2.5.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Apache-Konfiguration.FCGI">2.5.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Konfiguration-des-Task-Servers">2.6.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Einbinden-in-den-Boot-Prozess">2.6.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle">2.6.3. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle2">2.6.4. Task-Server mit mehreren Mandanten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Grundlagen-zur-Benutzerauthentifizierung">2.7.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Administratorpasswort">2.7.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Authentifizierungsdatenbank">2.7.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Passwort%C3%BCberpr%C3%BCfung">2.7.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Name-des-Session-Cookies">2.7.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Anlegen-der-Authentifizierungsdatenbank">2.7.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Zusammenh%C3%A4nge">2.8.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Datenbanken-anlegen">2.8.2. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppen-anlegen">2.8.3. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Benutzer-anlegen">2.8.4. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppenmitgliedschaften-verwalten">2.8.5. Gruppenmitgliedschaften verwalten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Migration-alter-Installationen">2.8.6. Migration alter Installationen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.sendmail">2.9.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.smtp">2.9.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Vorlagenverzeichnis-anlegen">2.10.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Vorlagen-Standard">2.10.2. Standard</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#f-tex">2.10.3. f-tex</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Vorlagen-RB">2.10.4. RB</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#allgemeine-hinweise-zu-latex">2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s12.html">2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
-      EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#config.eur.introduction">2.12.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.parameters">2.12.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.setting-parameters">2.12.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.inventory-system-perpetual">2.12.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.knonw-issues">2.12.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#config.skr04-update-3804.introduction">2.13.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.skr04-update-3804.create-chart">2.13.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s15.html">2.15. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.3. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.4. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.5. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.2.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.2.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.2.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.tag-style">3.2.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.2.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.2.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
+   <title>kivitendo: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo: Installation, Konfiguration, Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Pakete</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#config.config-file.introduction">2.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.sections-parameters">2.4.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.prior-versions">2.4.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.5.1. Zeichensätze/die Verwendung von UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#%C3%84nderungen-an-Konfigurationsdateien">2.5.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.5.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Datenbankbenutzer-anlegen">2.5.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#d0e652">2.6.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Apache-Konfiguration.FCGI">2.6.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-des-Task-Servers">2.7.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Einbinden-in-den-Boot-Prozess">2.7.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle">2.7.3. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle2">2.7.4. Task-Server mit mehreren Mandanten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Grundlagen-zur-Benutzerauthentifizierung">2.8.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Administratorpasswort">2.8.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Authentifizierungsdatenbank">2.8.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Passwort%C3%BCberpr%C3%BCfung">2.8.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Name-des-Session-Cookies">2.8.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Anlegen-der-Authentifizierungsdatenbank">2.8.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Zusammenh%C3%A4nge">2.9.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Datenbanken-anlegen">2.9.2. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Gruppen-anlegen">2.9.3. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Benutzer-anlegen">2.9.4. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Gruppenmitgliedschaften-verwalten">2.9.5. Gruppenmitgliedschaften verwalten</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Migration-alter-Installationen">2.9.6. Migration alter Installationen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#config.sending-email.sendmail">2.10.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#config.sending-email.smtp">2.10.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#Vorlagenverzeichnis-anlegen">2.11.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Vorlagen-Standard">2.11.2. Standard</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#f-tex">2.11.3. f-tex</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#Vorlagen-RB">2.11.4. RB</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#allgemeine-hinweise-zu-latex">2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s13.html">2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+      EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#config.eur.introduction">2.13.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.eur.parameters">2.13.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.eur.setting-parameters">2.13.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.eur.inventory-system-perpetual">2.13.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.eur.knonw-issues">2.13.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#config.skr04-update-3804.introduction">2.14.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#config.skr04-update-3804.create-chart">2.14.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s16.html">2.16. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.3. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.4. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.5. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.2.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.2.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.2.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.tag-style">3.2.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.2.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.2.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
         sind</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.invoice">3.2.8. Variablen in Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dunning">3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.andere-vorlagen">3.2.10. Variablen in anderen Vorlagen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.bloecke">3.2.11. Blöcke, bedingte Anweisungen und Schleifen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.markup">3.2.12. Markup-Code zur Textformatierung innerhalb von
-        Formularen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#excel-templates.summary">3.3.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.usage">3.3.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.syntax">3.3.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.limitations">3.3.4. Einschränkungen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e4974">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5075">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5108">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5488">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.known-issues">4.2.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.format">4.3.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.3. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#translations-languages.introduction">4.4.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.2. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3. 
+        Formularen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#excel-templates.summary">3.3.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.usage">3.3.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.syntax">3.3.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.limitations">3.3.4. Einschränkungen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e5034">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5135">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5168">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5548">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.known-issues">4.2.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.format">4.3.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.3. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#translations-languages.introduction">4.4.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.2. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3. 
           Existierende Tests ausführen
         </a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.meaning_of_scripts">4.5.4. 
           Bedeutung der verschiedenen Test-Scripte
diff --git a/doc/html/system/docbook-xsl/images/note.png b/doc/html/system/docbook-xsl/images/note.png
new file mode 100644 (file)
index 0000000..d0c3c64
Binary files /dev/null and b/doc/html/system/docbook-xsl/images/note.png differ
diff --git a/doc/html/system/docbook-xsl/images/warning.png b/doc/html/system/docbook-xsl/images/warning.png
new file mode 100644 (file)
index 0000000..1c33db8
Binary files /dev/null and b/doc/html/system/docbook-xsl/images/warning.png differ
index f945716e20e23dcc38a5752eb5b13b94cc469628..90284df1cd3f9444946dd91ce7f825b774678ae5 100644 (file)
Binary files a/doc/kivitendo-Dokumentation.pdf and b/doc/kivitendo-Dokumentation.pdf differ
index 22c18feae42d42d7381043b3fce9b11231ddc96d..2f52ff713a85ef8366428f2a8990416099a14c6f 100644 (file)
Binary files a/image/icons/16x16/Program--Version.png and b/image/icons/16x16/Program--Version.png differ
index 849a8a5a862cf57cffd6df7f026d0e190d78e550..82dedb8ea80c4345e292339e502c6fcb004b1bc9 100644 (file)
Binary files a/image/icons/24x24/Program--Version.png and b/image/icons/24x24/Program--Version.png differ
index 7e1b9bfee0516756ff6d239632de77ab5161f58b..d2546677f0293aad8d9e70d3c7e365d8140de4aa 100644 (file)
Binary files a/image/icons/32x32/Program--Version.png and b/image/icons/32x32/Program--Version.png differ
index ebd9b18f76756248e416a965d25c087d58591a9f..87ff0b102fd126c83e848e1c7ae452dc3008dbc3 100644 (file)
Binary files a/image/maps/icons16.png and b/image/maps/icons16.png differ
index ec72b78022a3350501665bf626c1085380ba95f6..4bd12060d68644a790099bff7265a1d8c9223e45 100644 (file)
Binary files a/image/maps/icons24.png and b/image/maps/icons24.png differ
index 94b95d1a366dd29c94d2aaacf3039e48dffdcc0c..a564f6e77f4801f22b227aa8ed514124bc7c476a 100644 (file)
Binary files a/image/maps/icons32.png and b/image/maps/icons32.png differ
index 7527a89133367d1a34f3579938e6775129581837..6b60dfc6a3096e04bf52b341798b013a71de4b04 100644 (file)
@@ -670,6 +670,7 @@ $self->{texts} = {
   'Do you want to store the existing onhand values into a new warehouse?' => 'M&ouml;chten Sie die vorhandenen Mengendaten in ein Lager &uuml;bertragen?',
   'Document'                    => 'Dokument',
   'Document Project Number'     => 'Projektnummer des Belegs',
+  'Documentation (in German)'   => 'Dokumentation',
   'Documents in the WebDAV repository' => 'Dokumente im WebDAV-Repository',
   'Done'                        => 'Fertig',
   'Download SEPA XML export file' => 'SEPA-XML-Exportdatei herunterladen',
@@ -2381,6 +2382,7 @@ $self->{texts} = {
   'kivitendo is about to update the database [ #1 ].' => 'kivitendo wird gleich die Datenbank [ #1 ] aktualisieren.',
   'kivitendo is now able to manage warehouses instead of just tracking the amount of goods in your system.' => 'kivitendo enth&auml;lt jetzt auch echte Lagerverwaultung anstatt reiner Mengenz&auml;hlung.',
   'kivitendo needs to update the authentication database before you can proceed.' => 'kivitendo muss die Authentifizierungsdatenbank aktualisieren, bevor Sie fortfahren können.',
+  'kivitendo website (external)' => 'kivitendo-Webseite (extern)',
   'kivitendo will then update the database automatically.' => 'kivitendo wird die Datenbank daraufhin automatisch aktualisieren.',
   'lead deleted!'               => 'Kundenquelle gelöscht',
   'lead saved!'                 => 'Kundenquelle geichert',
index fa99ded7ac91fde32060c7e0691e1904e7f3488a..e091277f5c72284f666410e53d96d1342c42da38 100644 (file)
--- a/menu.ini
+++ b/menu.ini
@@ -849,7 +849,14 @@ module=login.pl
 action=company_logo
 no_todo_list=1
 
+[Program--Documentation (in German)]
+href=doc/kivitendo-Dokumentation.pdf
+target=_top
+
+[Program--kivitendo website (external)]
+href=http://www.kivitendo.de/
+target=_top
+
 [Program--Logout]
 module=controller.pl
 action=LoginScreen/logout
-target=_top
index d7892c38e5116e486a04200773e2e2b2c51606ed..6362075a3cef7589d6cccaf22ebbf8c1f431b576 100755 (executable)
@@ -15,14 +15,17 @@ doc=${PWD}/doc
 
 html=1
 pdf=1
+images=1
 
 if [[ ! -z $1 ]] ; then
   html=0
   pdf=0
+  images=0
   while [[ ! -z $1 ]] ; do
     case $1 in
-      html) html=1 ;;
-      pdf)  pdf=1  ;;
+      html)   html=1   ;;
+      pdf)    pdf=1    ;;
+      images) images=1 ;;
       *)
         echo "Unknown parameter $1"
         exit 1
@@ -69,3 +72,15 @@ if [[ $html = 1 ]]; then
   mkdir ${doc}/html
   cp -R ${output}/html ${doc}/
 fi
+
+if [[ $images = 1 ]]; then
+  # copy system images from Dobudish directory
+  image_list=$(mktemp)
+  perl -nle 'print $1 while m{ (?: \.\./ )+ ( system/ [^\"]+ ) }xg' ${doc}/html/*.html | sort | uniq > $image_list
+  if [[ -s $image_list ]]; then
+    tar -c -f - -T $image_list | tar -x -f - -C ${doc}/html
+    perl -pi -e 's{ (\.\./)+ system }{system}xg' ${doc}/html/*.html
+  fi
+
+  rm $image_list
+fi
diff --git a/templates/print/Standard/credit_note.odt b/templates/print/Standard/credit_note.odt
new file mode 100644 (file)
index 0000000..1d9c4c9
Binary files /dev/null and b/templates/print/Standard/credit_note.odt differ
index 6eac45b0ed86b0dabab0d9a0f69e9117ab409c0d..4ac7557da2d83e0799a0fe79adebf6cfeefabfae 100644 (file)
Binary files a/templates/print/Standard/invoice.odt and b/templates/print/Standard/invoice.odt differ
diff --git a/templates/print/Standard/sales_delivery_order.odt b/templates/print/Standard/sales_delivery_order.odt
new file mode 100644 (file)
index 0000000..9c485f3
Binary files /dev/null and b/templates/print/Standard/sales_delivery_order.odt differ
diff --git a/templates/print/Standard/sales_order.odt b/templates/print/Standard/sales_order.odt
new file mode 100644 (file)
index 0000000..244ed4a
Binary files /dev/null and b/templates/print/Standard/sales_order.odt differ
index d42a867eccc4f1f9bb8d6f265381294a60bf6a7a..3bc98443e0a66f2102c05284e510b3c374e3ae08 100644 (file)
Binary files a/templates/print/Standard/sales_quotation.odt and b/templates/print/Standard/sales_quotation.odt differ
index 448b8a33f3c48f1377bb90a5c87bdd6c4c8294f8..728c80fc7709ba0aca8cf74f9b7ddac1f5e2fd22 100644 (file)
         </tr>
         <tr>
           <th align=right>[% 'Reference' | $T8 %]</th>
-          <td>[% L.input_tag('reference', reference,  size=20, readonly=id) %]</td>
+          <td>[% L.input_tag('reference', reference,  size=20, readonly=readonly) %]</td>
           <td align=left>
             <table>
               <tr>
                 <th align=right width=50% nowrap>[% 'Date' | $T8 %]</th>
-                <td>[% L.date_tag('transdate', transdate, readonly=id) %]</td>
+                <td>[% L.date_tag('transdate', transdate, readonly=readonly) %]</td>
               </tr>
             </table>
           </td>
 [%- IF id %]
         <tr>
           <th align=right>[% 'Belegnummer' | $T8 %]</th>
-          <td>[% L.input_tag('id', id,  size=20, readonly=id) %]</td>
+          <td>[% L.input_tag('id', id,  size=20, readonly=readonly) %]</td>
           <td align=left>
           <table>
               <tr>
                 <th align=right width=50%>[% 'Buchungsdatum' | $T8 %]</th>
-                <td align=left>[% L.date_tag('gldate', gldate, readonly=id) %]</td>
+                <td align=left>[% L.date_tag('gldate', gldate, readonly=1) %]</td>
               </tr>
             </table>
           </td>
@@ -97,7 +97,7 @@
 
         <tr>
           <th align=right width=1%>[% 'Description' | $T8 %]</th>
-          <td width=1%>[% L.areainput_tag('description', description, cols=50, readonly=id) %]</td>
+          <td width=1%>[% L.areainput_tag('description', description, cols=50, readonly=readonly) %]</td>
           <td>
             <table>
               <tr>
             <table width=100%>
               <tr>
                 <th align=right width=50%>[% 'Mitarbeiter' | $T8 %]</th>
-                <td align=left>[% L.input_tag('employee', employee, size=20, readonly=id) %]</td>
+                <td align=left>[% L.input_tag('employee', employee, size=20, readonly=readonly) %]</td>
               </tr>
             </table>
           </td>
index 4c51b6637a0af3f9149218683095bf5e3aaac95f..b54c9beb2942345a396c117397019cab2758f670 100644 (file)
@@ -38,7 +38,7 @@ $(clockon);
  [%- FOREACH mainitem = menu_items %]
   [%- SET main_id = main_id + 1 %]
   <li id="[% main_id %]"[% IF mainitem.image %] itemIcon="[% mainitem.image %]"[% END %]>
-   <a href="[% IF mainitem.href %][% mainitem.href %][% ELSE %]#[% END %]">
+   <a href="[% IF mainitem.href %][% mainitem.href %][% ELSE %]#[% END %]"[% IF mainitem.target && (mainitem.target != 'main_window') %] target="[% HTML.escape(mainitem.target) %]"[% END %]>
     [%- HTML.escape(mainitem.title) %]
    </a>
    [%- IF mainitem.subitems %]
@@ -47,7 +47,7 @@ $(clockon);
      [%- FOREACH sub1item = mainitem.subitems %]
       [%- SET sub1_id = sub1_id + 1 %]
       <li id="[% sub1_id %]"[% IF sub1item.image %] itemIcon="[% sub1item.image %]"[% END %]>
-       <a href="[% IF sub1item.href %][% sub1item.href %][% ELSE %]#[% END %]">
+       <a href="[% IF sub1item.href %][% sub1item.href %][% ELSE %]#[% END %]"[% IF sub1item.target && (sub1item.target != 'main_window') %] target="[% HTML.escape(sub1item.target) %]"[% END %]>
         [%- HTML.escape(sub1item.title) %]
        </a>
        [%- IF sub1item.subitems %]
@@ -56,7 +56,7 @@ $(clockon);
          [%- FOREACH sub2item = sub1item.subitems %]
           [%- SET sub2_id = sub2_id + 1 %]
           <li id="[% sub2_id %]"[% IF sub2item.image %] itemIcon="[% sub2item.image %]"[% END %]>
-           <a href="[% IF sub2item.href %][% sub2item.href %][% ELSE %]#[% END %]">
+           <a href="[% IF sub2item.href %][% sub2item.href %][% ELSE %]#[% END %]"[% IF sub2item.target && (sub2item.target != 'main_window') %] target="[% HTML.escape(sub2item.target) %]"[% END %]>
             [%- HTML.escape(sub2item.title) %]
            </a>
           </li>