sub authenticate {
$main::lxdebug->enter_sub();
- my $self = shift;
+ my ($self, $login, $password) = @_;
$main::lxdebug->leave_sub();
- my $result = $self->{authenticator}->authenticate(@_);
+ my $result = $login ? $self->{authenticator}->authenticate($login, $password) : ERR_USER;
return OK if $result eq OK;
sleep 5;
return $result;
$main::lxdebug->message(LXDebug->DEBUG1, "Auth::dbconnect DSN: $dsn");
- $self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { pg_enable_utf8 => $::locale->is_utf8, AutoCommit => 0 });
+ $self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { pg_enable_utf8 => $::locale->is_utf8, AutoCommit => 1 });
if (!$may_fail && !$self->{dbh}) {
$main::form->error($main::locale->text('The connection to the authentication database failed:') . "\n" . $DBI::errstr);
my ($sth, $query, $user_id);
+ $dbh->begin_work;
+
$query = qq|SELECT id FROM auth."user" WHERE login = ?|;
($user_id) = selectrow_query($form, $dbh, $query, $login);
my $form = $main::form;
my $dbh = $self->dbconnect();
+
+ $dbh->begin_work;
+
my $query = qq|SELECT id FROM auth."user" WHERE login = ?|;
my ($id) = selectrow_query($form, $dbh, $query, $login);
- return $main::lxdebug->leave_sub() if (!$id);
+ $dbh->rollback and return $main::lxdebug->leave_sub() if (!$id);
do_query($form, $dbh, qq|DELETE FROM auth.user_group WHERE user_id = ?|, $id);
do_query($form, $dbh, qq|DELETE FROM auth.user_config WHERE user_id = ?|, $id);
while (my $ref = $sth->fetchrow_hashref()) {
$self->{SESSION}->{$ref->{sess_key}} = $ref->{sess_value};
- $form->{$ref->{sess_key}} = $self->_load_value($ref->{sess_value}) if (!defined $form->{$ref->{sess_key}});
+ next if defined $form->{$ref->{sess_key}};
+
+ my $params = $self->_load_value($ref->{sess_value});
+ $form->{$ref->{sess_key}} = $params->{data} if $params->{auto_restore} || $params->{simple};
}
$sth->finish();
}
sub _load_value {
- return $_[1] if $_[1] !~ m/^---/;
+ my ($self, $value) = @_;
+
+ return { simple => 1, data => $value } if $value !~ m/^---/;
- my $value;
+ my %params = ( simple => 1 );
eval {
- $value = YAML::Load($_[1]);
+ my $data = YAML::Load($value);
+
+ if (ref $data eq 'HASH') {
+ map { $params{$_} = $data->{$_} } keys %{ $data };
+ $params{simple} = 0;
+
+ } else {
+ $params{data} = $data;
+ }
+
1;
- } or return $_[1];
+ } or $params{data} = $value;
- return $value;
+ return \%params;
}
sub destroy_session {
if ($session_id) {
my $dbh = $self->dbconnect();
+ $dbh->begin_work;
+
do_query($main::form, $dbh, qq|DELETE FROM auth.session_content WHERE session_id = ?|, $session_id);
do_query($main::form, $dbh, qq|DELETE FROM auth.session WHERE id = ?|, $session_id);
my $self = shift;
my $dbh = $self->dbconnect();
+
+ $dbh->begin_work;
+
my $query =
qq|DELETE FROM auth.session_content
WHERE session_id IN
$form = $main::form;
$dbh = $self->dbconnect();
+ $dbh->begin_work;
+ do_query($::form, $dbh, qq|LOCK auth.session_content|);
+
$query = qq|SELECT id FROM auth.session WHERE id = ?|;
($id) = selectrow_query($form, $dbh, $query, $session_id);
my $self = shift;
my $provided_dbh = shift;
- my $dbh = $provided_dbh || $self->dbconnect();
+ my $dbh = $provided_dbh || $self->dbconnect(1);
+
+ return unless $dbh;
+
+ $dbh->begin_work unless $provided_dbh;
+ do_query($::form, $dbh, qq|LOCK auth.session_content|);
do_query($::form, $dbh, qq|DELETE FROM auth.session_content WHERE session_id = ?|, $session_id);
if (%{ $self->{SESSION} }) {
$self->{SESSION} ||= { };
while (my ($key, $value) = each %params) {
- $self->{SESSION}->{ $key } = YAML::Dump($value);
+ $self->{SESSION}->{ $key } = YAML::Dump(ref($value) eq 'HASH' ? { data => $value } : $value);
}
$main::lxdebug->leave_sub();
sub get_session_value {
$main::lxdebug->enter_sub();
- my $self = shift;
- my $value = $self->{SESSION} ? $self->_load_value($self->{SESSION}->{ $_[0] }) : undef;
+ my $self = shift;
+ my $params = $self->{SESSION} ? $self->_load_value($self->{SESSION}->{ $_[0] }) : {};
$main::lxdebug->leave_sub();
- return $value;
+ return $params->{data};
+}
+
+sub create_unique_sesion_value {
+ my ($self, $value, %params) = @_;
+
+ $self->{SESSION} ||= { };
+
+ my @now = gettimeofday();
+ my $key = "$$-" . ($now[0] * 1000000 + $now[1]) . "-";
+ $self->{unique_counter} ||= 0;
+
+ $self->{unique_counter}++ while exists $self->{SESSION}->{$key . $self->{unique_counter}};
+ $self->{unique_counter}++;
+
+ $value = { expiration => $params{expiration} ? ($now[0] + $params{expiration}) * 1000000 + $now[1] : undef,
+ no_auto => !$params{auto_restore},
+ data => $value,
+ };
+
+ $self->{SESSION}->{$key . $self->{unique_counter}} = YAML::Dump($value);
+
+ return $key . $self->{unique_counter};
+}
+
+sub save_form_in_session {
+ my ($self, %params) = @_;
+
+ my $form = delete($params{form}) || $::form;
+ my $non_scalars = delete $params{non_scalars};
+ my $data = {};
+
+ my %skip_keys = map { ( $_ => 1 ) } (qw(login password stylesheet version titlebar), @{ $params{skip_keys} || [] });
+
+ foreach my $key (grep { !$skip_keys{$_} } keys %{ $form }) {
+ $data->{$key} = $form->{$key} if !ref($form->{$key}) || $non_scalars;
+ }
+
+ return $self->create_unique_sesion_value($data, %params);
+}
+
+sub restore_form_from_session {
+ my ($self, $key, %params) = @_;
+
+ my $data = $self->get_session_value($key);
+ return $self unless $data;
+
+ my $form = delete($params{form}) || $::form;
+ my $clobber = exists $params{clobber} ? $params{clobber} : 1;
+
+ map { $form->{$_} = $data->{$_} if $clobber || !exists $form->{$_} } keys %{ $data };
+
+ return $self;
+}
+
+sub expire_session_keys {
+ my ($self) = @_;
+
+ $self->{SESSION} ||= { };
+
+ my @now = gettimeofday();
+ my $now = $now[0] * 1000000 + $now[1];
+
+ $self->delete_session_value(map { $_->[0] }
+ grep { $_->[1]->{expiration} && ($now > $_->[1]->{expiration}) }
+ map { [ $_, $self->_load_value($self->{SESSION}->{$_}) ] }
+ keys %{ $self->{SESSION} });
+
+ return $self;
+}
+
+sub _has_expiration {
+ my ($value) = @_;
+ return (ref $value eq 'HASH') && exists($value->{expiration}) && $value->{data};
}
sub set_cookie_environment_variable {
my $form = $main::form;
my $dbh = $self->dbconnect();
+ $dbh->begin_work;
+
my ($query, $sth, $row, $rights);
if (!$group->{id}) {
my $form = $main::from;
my $dbh = $self->dbconnect();
+ $dbh->begin_work;
do_query($form, $dbh, qq|DELETE FROM auth.user_group WHERE group_id = ?|, $id);
do_query($form, $dbh, qq|DELETE FROM auth.group_rights WHERE group_id = ?|, $id);
}
1;
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::Auth - Authentication and session handling
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<set_session_value %values>
+
+Store all key/value pairs in C<%values> in the session. All of these
+values are copied back into C<$::form> in the next request
+automatically.
+
+The values can be any Perl structure. They are stored as YAML dumps.
+
+=item C<get_session_value $key>
+
+Retrieve a value from the session. Returns C<undef> if the value
+doesn't exist.
+
+=item C<create_unique_sesion_value $value, %params>
+
+Create a unique key in the session and store C<$value>
+there.
+
+If C<$params{expiration}> is set then it is interpreted as a number of
+seconds after which the value is removed from the session. It will
+never expire if that parameter is falsish.
+
+If C<$params{auto_restore}> is trueish then the value will be copied
+into C<$::form> upon the next request automatically. It defaults to
+C<false> and has therefore different behaviour than
+L</set_session_value>.
+
+Returns the key created in the session.
+
+=item C<expire_session_keys>
+
+Removes all keys from the session that have an expiration time set and
+whose expiration time is in the past.
+
+=item C<save_session>
+
+Stores the session values in the database. This is the only function
+that actually stores stuff in the database. Neither the various
+setters nor the deleter access the database.
+
+=item <save_form_in_session %params>
+
+Stores the content of C<$params{form}> (default: C<$::form>) in the
+session using L</create_unique_sesion_value>.
+
+If C<$params{non_scalars}> is trueish then non-scalar values will be
+stored as well. Default is to only store scalar values.
+
+The following keys will never be saved: C<login>, C<password>,
+C<stylesheet>, C<titlebar>, C<version>. Additional keys not to save
+can be given as an array ref in C<$params{skip_keys}>.
+
+Returns the unique key under which the form is stored.
+
+=item <restore_form_from_session $key, %params>
+
+Restores the form from the session into C<$params{form}> (default:
+C<$::form>).
+
+If C<$params{clobber}> is falsish then existing values with the same
+key in C<$params{form}> will not be overwritten. C<$params{clobber}>
+is on by default.
+
+Returns C<$self>.
+
+=back
+
+=head1 BUGS
+
+Nothing here yet.
+
+=head1 AUTHOR
+
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
+
+=cut
ERR => [ qw(
ERR_PASSWORD
ERR_BACKEND
+ ERR_USER
) ],
SESSION => [ qw(
SESSION_OK
use constant OK => 0;
use constant ERR_PASSWORD => 1;
+use constant ERR_USER => 2;
use constant ERR_BACKEND => 100;
use constant SESSION_OK => 0;
package SL::Auth::DB;
+use strict;
+
+use Carp;
+
use SL::Auth::Constants qw(:all);
use SL::DBUtils;
-use strict;
-
sub new {
$main::lxdebug->enter_sub();
my $self = shift;
my $login = shift;
my $password = shift;
- my $is_crypted = shift;
my $dbh = $self->{auth}->dbconnect();
my $query = qq|SELECT password FROM auth."user" WHERE login = ?|;
my ($stored_password) = $dbh->selectrow_array($query, undef, $login);
- $password = crypt $password, substr($login, 0, 2) if (!$password || !$is_crypted);
- $stored_password = crypt $stored_password, substr($login, 0, 2) if (!$stored_password);
+ my ($algorithm, $algorithm2);
+
+ # Empty password hashes in the database mean just that -- empty
+ # passwords. Hash it for easier comparison.
+ $stored_password = $self->hash_password(password => $stored_password) unless $stored_password;
+ ($algorithm, $stored_password) = $self->parse_password_entry($stored_password);
+ ($algorithm2, $password) = $self->parse_password_entry($self->hash_password(password => $password, algorithm => $algorithm, login => $login));
$main::lxdebug->leave_sub();
return ERR_BACKEND;
}
- $password = crypt $password, substr($login, 0, 2) if (!$is_crypted);
+ $password = $self->hash_password(password => $password) unless $is_crypted;
do_query($main::form, $dbh, qq|UPDATE auth."user" SET password = ? WHERE login = ?|, $password, $login);
return 1;
}
+sub hash_password {
+ my ($self, %params) = @_;
+
+ if (!$params{algorithm}) {
+ $params{algorithm} = 'SHA1';
+ $params{fallback_algorithm} = 'MD5';
+ }
+
+ if ($params{algorithm} eq 'SHA1') {
+ if (eval { require Digest::SHA1; 1 }) {
+ return '{SHA1}' . Digest::SHA1::sha1_hex($params{password});
+
+ } elsif ($params{fallback_algorithm}) {
+ return $self->hash_password(%params, algorithm => $params{fallback_algorithm});
+
+ } else {
+ die 'Digest::SHA1 not available';
+ }
+
+ } elsif ($params{algorithm} eq 'MD5') {
+ require Digest::MD5;
+ return '{MD5}' . Digest::MD5::md5_hex($params{password});
+
+ } elsif ($params{algorithm} eq 'CRYPT') {
+ return '{CRYPT}' . crypt($params{password}, substr($params{login}, 0, 2));
+
+ } else {
+ croak 'Unsupported hash algorithm ' . $params{algorithm};
+ }
+}
+
+sub parse_password_entry {
+ my ($self, $password) = @_;
+
+ return ($1, $2) if $password =~ m/^\{ ([^\}]+) \} (.+)/x;
+ return ('CRYPT', $password);
+}
+
1;
my ($form) = @_;
return $main::lxdebug->leave_sub()
- unless ($::lx_office_conf{system}->{webdav} && $form->{id});
+ unless ($::lx_office_conf{features}->{webdav} && $form->{id});
my ($path, $number);
my %params = ( %locals,
AUTH => $::auth,
+ FLASH => $::form->{FLASH},
FORM => $::form,
LOCALE => $::locale,
LXCONFIG => \%::lx_office_conf,
} elsif ($type eq 'LXOFFICE_AUTH') {
%connect_settings = ( driver => $::myconfig{dbdriver} || 'Pg',
database => $::auth->{DB_config}->{db},
- host => $::auth->{DB_config}->{host},
+ host => $::auth->{DB_config}->{host} || 'localhost',
port => $::auth->{DB_config}->{port} || 5432,
username => $::auth->{DB_config}->{user},
password => $::auth->{DB_config}->{password},
%connect_settings = ( driver => $::myconfig{dbdriver} || 'Pg',
database => $::myconfig{dbname},
- host => $::myconfig{dbhost},
+ host => $::myconfig{dbhost} || 'localhost',
port => $::myconfig{dbport} || 5432,
username => $::myconfig{dbuser},
password => $::myconfig{dbpasswd},
-# This file has been auto-generated only because it didn't exist.
-# Feel free to modify it at will; it will not be overwritten automatically.
-
package SL::DB::Buchungsgruppe;
use strict;
use SL::DB::MetaSetup::Buchungsgruppe;
-
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
+use SL::DB::Manager::Buchungsgruppe;
sub income_accno_id {
my ($self, $taxzone) = @_;
use SL::DB::PeriodicInvoicesConfig;
use SL::DB::PriceFactor;
use SL::DB::Pricegroup;
-use SL::DB::Prices;
+use SL::DB::Price;
use SL::DB::Printer;
use SL::DB::Project;
use SL::DB::PurchaseInvoice;
payment_terms => 'payment_term',
periodic_invoices => 'periodic_invoice',
periodic_invoices_configs => 'periodic_invoices_config',
- prices => 'prices',
+ prices => 'price',
price_factors => 'price_factor',
pricegroup => 'pricegroup',
printers => 'Printer',
--- /dev/null
+package SL::DB::Manager::Buchungsgruppe;
+
+use strict;
+
+use SL::DB::Helper::Manager;
+use base qw(SL::DB::Helper::Manager);
+
+use SL::DB::Helper::Sorted;
+
+sub object_class { 'SL::DB::Buchungsgruppe' }
+
+__PACKAGE__->make_manager_methods;
+
+sub _sort_spec {
+ return ( default => [ 'sortkey', 1 ],
+ columns => { SIMPLE => 'ALL',
+ description => 'lower(description)',
+ });
+}
+
+1;
--- /dev/null
+package SL::DB::Manager::Pricegroup;
+
+use strict;
+
+use SL::DB::Helper::Manager;
+use base qw(SL::DB::Helper::Manager);
+
+use SL::DB::Helper::Sorted;
+
+sub object_class { 'SL::DB::Pricegroup' }
+
+__PACKAGE__->make_manager_methods;
+
+sub _sort_spec {
+ return ( default => [ 'pricegroup', 1 ],
+ columns => { SIMPLE => 'ALL',
+ map { ( $_ => "lower(pricegroup.${_})" ) } qw(pricegroup),
+ });
+}
+
+1;
--- /dev/null
+# This file has been auto-generated. Do not modify it; it will be overwritten
+# by rose_auto_create_model.pl automatically.
+package SL::DB::Price;
+
+use strict;
+
+use base qw(SL::DB::Object);
+
+__PACKAGE__->meta->setup(
+ table => 'prices',
+
+ columns => [
+ parts_id => { type => 'integer' },
+ pricegroup_id => { type => 'integer' },
+ price => { type => 'numeric', precision => 5, scale => 15 },
+ id => { type => 'serial', not_null => 1 },
+ ],
+
+ primary_key_columns => [ 'id' ],
+
+ foreign_keys => [
+ parts => {
+ class => 'SL::DB::Part',
+ key_columns => { parts_id => 'id' },
+ },
+
+ pricegroup => {
+ class => 'SL::DB::Pricegroup',
+ key_columns => { pricegroup_id => 'id' },
+ },
+ ],
+);
+
+1;
+;
+++ /dev/null
-# This file has been auto-generated. Do not modify it; it will be overwritten
-# by rose_auto_create_model.pl automatically.
-package SL::DB::Prices;
-
-use strict;
-
-use base qw(SL::DB::Object);
-
-__PACKAGE__->meta->setup(
- table => 'prices',
-
- columns => [
- parts_id => { type => 'integer' },
- pricegroup_id => { type => 'integer' },
- price => { type => 'numeric', precision => 5, scale => 15 },
- id => { type => 'serial', not_null => 1 },
- ],
-
- primary_key_columns => [ 'id' ],
-
- foreign_keys => [
- parts => {
- class => 'SL::DB::Part',
- key_columns => { parts_id => 'id' },
- },
-
- pricegroup => {
- class => 'SL::DB::Pricegroup',
- key_columns => { pricegroup_id => 'id' },
- },
- ],
-);
-
-1;
-;
class => 'SL::DB::PriceFactor',
column_map => { price_factor_id => 'id' },
},
+ prices => {
+ type => 'one to many',
+ class => 'SL::DB::Price',
+ column_map => { id => 'parts_id' },
+ },
);
__PACKAGE__->meta->initialize;
--- /dev/null
+# This file has been auto-generated only because it didn't exist.
+# Feel free to modify it at will; it will not be overwritten automatically.
+
+package SL::DB::Price;
+
+use strict;
+
+use SL::DB::MetaSetup::Price;
+
+# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
+__PACKAGE__->meta->make_manager_class;
+
+1;
-# This file has been auto-generated only because it didn't exist.
-# Feel free to modify it at will; it will not be overwritten automatically.
-
package SL::DB::Pricegroup;
use strict;
use SL::DB::MetaSetup::Pricegroup;
-
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
+use SL::DB::Manager::Pricegroup;
1;
+++ /dev/null
-# This file has been auto-generated only because it didn't exist.
-# Feel free to modify it at will; it will not be overwritten automatically.
-
-package SL::DB::Prices;
-
-use strict;
-
-use SL::DB::MetaSetup::Prices;
-
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
-
-1;
return $self;
}
+sub interface_type {
+ my ($self) = @_;
+ return $self->{interface} eq 'cgi' ? 'CGI' : 'FastCGI';
+}
+
sub pre_request_checks {
if (!$::auth->session_tables_present) {
if ($::form->{script} eq 'admin.pl') {
{
no warnings 'once';
$::lxdebug = LXDebug->new;
- $::auth = SL::Auth->new;
$::form = undef;
%::myconfig = ();
%::called_subs = (); # currently used for recursion detection
$self->unrequire_bin_mozilla;
+ $::auth = SL::Auth->new;
$::cgi = CGI->new('');
$::locale = Locale->new($::lx_office_conf{system}->{language});
$::form = Form->new;
$::locale = Locale->new($::myconfig{countrycode});
- show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password}, 0);
+ show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password});
$::auth->set_session_value('login', $::form->{login}, 'password', $::form->{password});
$::auth->create_or_refresh_session;
- $::auth->delete_session_value('FLASH')->save_session();
+ $::auth->delete_session_value('FLASH');
delete $::form->{password};
if ($action) {
$::locale = undef;
$::form = undef;
$::myconfig = ();
- Form::disconnect_standard_dbh unless $self->_interface_is_fcgi;
+ Form::disconnect_standard_dbh;
+ $::auth->expire_session_keys->save_session;
+ $::auth->dbdisconnect;
$::lxdebug->end_request;
$::lxdebug->leave_sub;
my $self = shift;
my $input = shift;
+ my $uploads = {};
if (!$ENV{'CONTENT_TYPE'}
|| ($ENV{'CONTENT_TYPE'} !~ /multipart\/form-data\s*;\s*boundary\s*=\s*(.+)$/)) {
$self->_input_to_hash($input);
$main::lxdebug->leave_sub(2);
- return;
+ return $uploads;
}
my ($name, $filename, $headers_done, $content_type, $boundary_found, $need_cr, $previous);
substr $line, $-[0], $+[0] - $-[0], "";
}
- $previous = $self->_store_value($name, '') if ($name);
+ $previous = _store_value($uploads, $name, '') if ($name);
$self->{FILENAME} = $filename if ($filename);
next;
${ $previous } =~ s|\r?\n$|| if $previous;
$main::lxdebug->leave_sub(2);
+
+ return $uploads;
}
sub _recode_recursively {
$self->_input_to_hash($ENV{QUERY_STRING}) if $ENV{QUERY_STRING};
$self->_input_to_hash($ARGV[0]) if @ARGV && $ARGV[0];
+ my $uploads;
if ($ENV{CONTENT_LENGTH}) {
my $content;
read STDIN, $content, $ENV{CONTENT_LENGTH};
- $self->_request_to_hash($content);
+ $uploads = $self->_request_to_hash($content);
}
my $db_charset = $::lx_office_conf{system}->{dbcharset};
_recode_recursively(SL::Iconv->new($encoding, $db_charset), $self);
+ map { $self->{$_} = $uploads->{$_} } keys %{ $uploads } if $uploads;
+
#$self->{version} = "2.6.1"; # Old hardcoded but secure style
open VERSION_FILE, "VERSION"; # New but flexible code reads version from VERSION-file
$self->{version} = <VERSION_FILE>;
}
$additional_params->{"conf_dbcharset"} = $::lx_office_conf{system}->{dbcharset};
- $additional_params->{"conf_webdav"} = $::lx_office_conf{system}->{webdav};
- $additional_params->{"conf_lizenzen"} = $::lx_office_conf{system}->{lizenzen};
+ $additional_params->{"conf_webdav"} = $::lx_office_conf{features}->{webdav};
+ $additional_params->{"conf_lizenzen"} = $::lx_office_conf{features}->{lizenzen};
$additional_params->{"conf_latex_templates"} = $::lx_office_conf{print_templates}->{latex};
$additional_params->{"conf_opendocument_templates"} = $::lx_office_conf{print_templates}->{opendocument};
- $additional_params->{"conf_vertreter"} = $::lx_office_conf{system}->{vertreter};
- $additional_params->{"conf_show_best_before"} = $::lx_office_conf{system}->{show_best_before};
+ $additional_params->{"conf_vertreter"} = $::lx_office_conf{features}->{vertreter};
+ $additional_params->{"conf_show_best_before"} = $::lx_office_conf{features}->{show_best_before};
$additional_params->{"conf_parts_image_css"} = $::lx_office_conf{features}->{parts_image_css};
$additional_params->{"conf_parts_listing_images"} = $::lx_office_conf{features}->{parts_listing_images};
$additional_params->{"conf_parts_show_image"} = $::lx_office_conf{features}->{parts_show_image};
}
sub flash_later {
- $::auth->set_session_value(FLASH => _store_flash($::auth->get_session_value('FLASH'), @_))->save_session();
+ $::auth->set_session_value(FLASH => _store_flash($::auth->get_session_value('FLASH'), @_));
}
sub render_flash {
# set values which could be empty
my $taxzone_id = $form->{taxzone_id} * 1;
- $form->{department_id} = (split /--/, $form->{department})[1];
+
+ # Seit neuestem wird die department_id schon übergeben UND $form->department nicht mehr
+ # korrekt zusammengebaut. Sehr wahrscheinlich beim Umstieg auf T8 kaputt gegangen
+ # Ich lass den Code von 2005 erstmal noch stehen ;-) jb 03-2011
+ # copy & paste von IS.pm
+ if (!$form->{department_id}){
+ $form->{department_id} = (split /--/, $form->{department})[1];
+ }
$form->{invnumber} = $form->{id} unless $form->{invnumber};
$taxzone_id = 0 if (3 < $taxzone_id) || (0 > $taxzone_id);
}
$form->{defaultcurrency} = $form->get_default_currency($myconfig);
-
- ($null, $form->{department_id}) = split(/--/, $form->{department});
+ # Seit neuestem wird die department_id schon übergeben UND $form->department nicht mehr
+ # korrekt zusammengebaut. Sehr wahrscheinlich beim Umstieg auf T8 kaputt gegangen
+ # Ich lass den Code von 2005 erstmal noch stehen ;-) jb 03-2011
+ if (!$form->{department_id}){
+ ($null, $form->{department_id}) = split(/--/, $form->{department});
+ }
my $all_units = AM->retrieve_units($myconfig, $form);
cp_id = ?, marge_total = ?, marge_percent = ?,
globalproject_id = ?, delivery_customer_id = ?,
transaction_description = ?, delivery_vendor_id = ?,
- donumber = ?
+ donumber = ?, invnumber_for_credit_note = ?
WHERE id = ?|;
@values = ( $form->{"invnumber"}, $form->{"ordnumber"}, $form->{"quonumber"}, $form->{"cusordnumber"},
conv_date($form->{"invdate"}), conv_date($form->{"orddate"}), conv_date($form->{"quodate"}), conv_i($form->{"customer_id"}),
conv_i($form->{"cp_id"}), 1 * $form->{marge_total} , 1 * $form->{marge_percent},
conv_i($form->{"globalproject_id"}), conv_i($form->{"delivery_customer_id"}),
$form->{transaction_description}, conv_i($form->{"delivery_vendor_id"}),
- $form->{"donumber"}, #das entsprechende feld lieferscheinnummer aus der html-form 12.02.09 jb
+ $form->{"donumber"}, $form->{"invnumber_for_credit_note"},
conv_i($form->{"id"}));
do_query($form, $dbh, $query, @values);
a.duedate, a.taxincluded, a.curr AS currency, a.shipto_id, a.cp_id,
a.employee_id, a.salesman_id, a.payment_id,
a.language_id, a.delivery_customer_id, a.delivery_vendor_id, a.type,
- a.transaction_description,
+ a.transaction_description, a.donumber, a.invnumber_for_credit_note,
a.marge_total, a.marge_percent,
- e.name AS employee, a.donumber
+ e.name AS employee
FROM ar a
LEFT JOIN employee e ON (e.id = a.employee_id)
WHERE a.id = ?|;
my $value_title_sub = $options{value_title_sub};
- my %selected = map { ( $_ => 1 ) } @{ ref($options{default}) eq 'ARRAY' ? $options{default} : $options{default} ? [ $options{default} ] : [] };
+ my %selected = map { ( $_ => 1 ) } @{ ref($options{default}) eq 'ARRAY' ? $options{default} : defined($options{default}) ? [ $options{default} ] : [] };
my $access = sub {
my ($element, $index, $key, $sub) = @_;
my $code = '';
foreach my $result (@elements) {
my %attributes = ( value => $result->[0] );
- $attributes{selected} = 'selected' if $selected{ $result->[0] || '' };
+ $attributes{selected} = 'selected' if $selected{ defined($result->[0]) ? $result->[0] : '' };
$code .= $self->html_tag('option', _H($result->[1]), %attributes);
}
use DBI;
use CGI;
+use Encode;
use English qw(-no_match_vars);
use Fcntl;
use File::Copy;
$form->{favicon} = "favicon.ico";
if ($form->{action}) {
- if ($auth->authenticate_root($form->{rpw}, 0) != $auth->OK()) {
+ if ($auth->authenticate_root($form->{rpw}) != $auth->OK()) {
$form->{error_message} = $locale->text('Incorrect Password!');
adminlogin();
} else {
delete $members{"root login"};
- map { $_->{templates} =~ s|.*/||; } values %members;
+ for (values %members) {
+ $_->{templates} =~ s|.*/||;
+ $_->{login_url} = $::locale->is_utf8 ? Encode::encode('utf-8-strict', $_->{login}) : $_->{login_url};
+ }
$form->{title} = "Lx-Office ERP " . $locale->text('Administration');
$form->{LOCKED} = -e _nologin_file_name();
$form->{title} = $locale->text('Type of Business');
my @column_index = qw(description discount customernumberinit);
- push @column_index, 'salesman' if $::lx_office_conf{system}->{vertreter};
+ push @column_index, 'salesman' if $::lx_office_conf{features}->{vertreter};
my %column_header;
$column_header{description} =
qq|<th class=listheading width=60%>|
$form->format_amount(\%myconfig, $form->{discount} * 100);
my $salesman_code;
- if ($::lx_office_conf{system}->{vertreter}) {
+ if ($::lx_office_conf{features}->{vertreter}) {
$salesman_code = qq|
<tr>
<th align="right">| . $locale->text('Representative') . qq|</th>
taxzones => "ALL_TAXZONES");
$form->get_pricegroup(\%myconfig, { all => 1 });
- $form->get_lists(customers => { key => "ALL_SALESMAN_CUSTOMERS", business_is_salesman => 1 }) if $::lx_office_conf{system}->{vertreter};
+ $form->get_lists(customers => { key => "ALL_SALESMAN_CUSTOMERS", business_is_salesman => 1 }) if $::lx_office_conf{features}->{vertreter};
$form->{ALL_SALESMEN} = $form->{ALL_EMPLOYEES};
$form->{taxincluded} = ($form->{taxincluded}) ? "checked" : "";
$::form->isblank("name", $::locale->text("Name missing!"));
- if ($::form->{new_salesman_id} && $::lx_office_conf{system}->{vertreter}) {
+ if ($::form->{new_salesman_id} && $::lx_office_conf{features}->{vertreter}) {
$::form->{salesman_id} = $::form->{new_salesman_id};
delete $::form->{new_salesman_id};
}
$form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP");
# retrieve order/quotation
- $form->{webdav} = $::lx_office_conf{system}->{webdav};
+ $form->{webdav} = $::lx_office_conf{features}->{webdav};
$form->{jsscript} = 1;
my $editing = $form->{id};
my $pinfo = $part_info_map{$request->{parts_id}};
my $binfo = $bin_info_map{$request->{bin_id}};
- if ($::lx_office_conf{system}->{show_best_before}) {
+ if ($::lx_office_conf{features}->{show_best_before}) {
push @{ $form->{ERRORS} }, $locale->text("There is not enough available of '#1' at warehouse '#2', bin '#3', #4, #5, for the transfer of #6.",
$pinfo->{description},
$binfo->{warehouse_description},
$form->{draft_description} = $description;
$form->{remove_draft} = 'checked';
}
-
+ # Ich vergesse bei Rechnungsentwürfe das Rechnungsdatum zu ändern. Dadurch entstehen
+ # ungültige Belege. Vielleicht geht es anderen ähnlich jan 19.2.2011
+ $form->{invdate} = $form->current_date(\%myconfig); # Aktuelles Rechnungsdatum ...
+ $form->{duedate} = $form->current_date(\%myconfig); # Aktuelles Fälligkeitsdatum ...
update();
$main::lxdebug->leave_sub();
$auth->assert('part_service_assembly_edit');
- my ($parts_id, %newform, $previousform, $amount, $callback);
+ my ($parts_id, %newform, $amount, $callback);
# check if there is a part number - commented out, cause there is an automatic allocation of numbers
# $form->isblank("partnumber", $locale->text(ucfirst $form->{item}." Part Number missing!"));
# save the new form variables before splitting previousform
map { $newform{$_} = $form->{$_} } keys %$form;
- $previousform = $form->unescape($form->{previousform});
-
# don't trample on previous variables
map { delete $form->{$_} } keys %newform;
my $ic_cvar_configs = CVar->get_configs(module => 'IC');
my @ic_cvar_fields = map { "cvar_$_->{name}" } @{ $ic_cvar_configs };
- # now take it apart and restore original values
- foreach my $item (split /&/, $previousform) {
- my ($key, $value) = split m/=/, $item, 2;
- $value =~ s/%26/&/g;
- $form->{$key} = $value;
- }
+ # restore original values
+ $::auth->restore_form_from_session($newform{previousform}, form => $form);
$form->{taxaccounts} = $newform{taxaccount2};
if ($form->{item} eq 'assembly') {
qw(bin listprice inventory_accno income_accno expense_accno unit weight
assembly taxaccounts partsgroup formel longdescription not_discountable
part_payment_id partnotes id lastcost price_factor_id price_factor);
- push @new_fields, "lizenzen" if $::lx_office_conf{system}->{lizenzen};
+ push @new_fields, "lizenzen" if $::lx_office_conf{features}->{lizenzen};
push @new_fields, grep { m/^ic_cvar_/ } keys %{ $form->{item_list}->[0] };
my $i = 0;
foreach my $ref (@{ $form->{item_list} }) {
my $checked = ($i++) ? "" : "checked";
- if ($::lx_office_conf{system}->{lizenzen}) {
+ if ($::lx_office_conf{features}->{lizenzen}) {
if ($ref->{inventory_accno} > 0) {
$ref->{"lizenzen"} = qq|<option></option>|;
foreach my $item (@{ $form->{LIZENZEN}{ $ref->{"id"} } }) {
$form->{payment_id} = $form->{"part_payment_id_$i"};
}
- if ($::lx_office_conf{system}->{lizenzen}) {
+ if ($::lx_office_conf{features}->{lizenzen}) {
map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(lizenzen);
}
$form->{old_callback} = $form->escape($form->{callback}, 1);
$form->{callback} = $form->escape("$form->{script}?action=display_form", 1);
- # save all form variables except action in a previousform variable
- my $previousform = join '&', map { my $value = $form->{$_}; $value =~ s/&/%26/; "$_=$value" } grep { !/action/ } keys %$form;
+ # save all form variables except action in the session and keep the key in the previousform variable
+ my $previousform = $::auth->save_form_in_session(skip_keys => [ qw(action) ]);
my @HIDDENS;
- push @HIDDENS, { 'name' => 'previousform', 'value' => $form->escape($previousform, 1) };
+ push @HIDDENS, { 'name' => 'previousform', 'value' => $previousform };
push @HIDDENS, map +{ 'name' => $_, 'value' => $form->{$_} }, qw(rowcount vc);
push @HIDDENS, map +{ 'name' => $_, 'value' => $form->{"${_}_$form->{rowcount}"} }, qw(partnumber description unit);
push @HIDDENS, { 'name' => 'taxaccount2', 'value' => $form->{taxaccounts} };
$form->{vc} = 'vendor';
# create links
- $form->{webdav} = $::lx_office_conf{system}->{webdav};
+ $form->{webdav} = $::lx_office_conf{features}->{webdav};
$form->{jsscript} = 1;
$form->create_links("AP", \%myconfig, "vendor");
$form->{vc} = 'customer';
# create links
- $form->{webdav} = $::lx_office_conf{system}->{webdav};
- $form->{lizenzen} = $::lx_office_conf{system}->{lizenzen};
+ $form->{webdav} = $::lx_office_conf{features}->{webdav};
+ $form->{lizenzen} = $::lx_office_conf{features}->{lizenzen};
$form->create_links("AR", \%myconfig, "customer");
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"});
- if ($::lx_office_conf{system}->{lizenzen}) {
+ if ($::lx_office_conf{features}->{lizenzen}) {
if ($form->{"inventory_accno_$i"} ne "") {
$form->{"lizenzen_$i"} = qq|<option></option>|;
foreach my $item (@{ $form->{LIZENZEN}{ $form->{"id_$i"} } }) {
$form->{title} = $locale->text('Add Credit Note');
$form->{script} = 'is.pl';
-
+ # Bei Gutschriften bezug zur Rechnungsnummer
+ $form->{invnumber_for_credit_note} = $form->{invnumber};
# bo creates the id, reset it
map { delete $form->{$_} }
qw(id invnumber subject message cc bcc printed emailed queued);
$form->{title} = $locale->text('Add License');
- if (!$::lx_office_conf{system}->{lizenzen}) {
+ if (!$::lx_office_conf{features}->{lizenzen}) {
$form->error(
$locale->text(
'The licensing module has been deactivated in the configuration.')
$form->{title} = $locale->text('Licenses');
- if (!$::lx_office_conf{system}->{lizenzen}) {
+ if (!$::lx_office_conf{features}->{lizenzen}) {
$form->error(
$locale->text(
'The licensing module has been deactivated in the configuration.')
%::myconfig = $auth->read_user($form->{login}) if ($form->{login});
$::locale = Locale->new($::myconfig{countrycode}) if $::myconfig{countrycode};
- if (!$::myconfig{login} || (SL::Auth::OK != $auth->authenticate($form->{login}, $form->{password}, 0))) {
+ if (SL::Auth::OK != $auth->authenticate($::myconfig{login}, $form->{password})) {
$form->{error_message} = $::locale->text('Incorrect username or password!');
login_screen();
} else {
$form->{stylesheet} = $myconfig{stylesheet};
$form->{title} = $::locale->text('Lx-Office');
+ $form->{interface} = $::dispatcher->interface_type;
# create the logo screen
$form->header() unless $form->{noheader};
$form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP");
# retrieve order/quotation
- $form->{webdav} = $::lx_office_conf{system}->{webdav};
+ $form->{webdav} = $::lx_office_conf{features}->{webdav};
$form->{jsscript} = 1;
my $editing = $form->{id};
print $form->parse_html_template("oe/form_footer", {
%TMPL_VAR,
- webdav => $::lx_office_conf{system}->{webdav},
+ webdav => $::lx_office_conf{features}->{webdav},
print_options => print_options(inline => 1),
label_edit => $locale->text("Edit the $form->{type}"),
label_workflow => $locale->text("Workflow $form->{type}"),
my $company_given = ($form->{company} ne '')
? qq|<h3>$form->{company}</h3>\n|
- : qq|<a href="am.pl?action=config|
- . qq|&level=Programm--Preferences">|
+ : qq|<a href="am.pl?action=config">|
. $locale->text('No Company Name given') . qq|!</a><br>|;
$form->error($locale->text('The warehouse or the bin is missing.'));
}
- if (!$::lx_office_conf{system}->{show_best_before}) {
+ if (!$::lx_office_conf{features}->{show_best_before}) {
$form->{bestbefore} = '';
}
[system]
# EUR: Einnahmen-Überschussrechnung (net income method). Set this to 1
-# if your company uses the net income method and to 0 for balacing.
+# if your company uses the net income method and to 0 for balancing.
eur = 1
# Set language for login and admin forms. Currently "de" (German),
--- /dev/null
+am.pl
\ No newline at end of file
border-style:solid;
border-width:thin;
}
+.message_error_label {
+ font-size: 0.8em;
+ padding:5px;
+ background-color: #FEE;
+ font-weight:normal;
+ text-align:left;
+ border-style:solid;
+ border-width:thin;
+}
/*
Überschriftsbalken
# Zugriff über cgi
Alias /web/path/to/lx-office-erp /path/to/lx-office-erp
- # Zugriff mit mod_fastcgi:
+ # Zugriff mit mod_fcgid:
AliasMatch ^/web/path/to/lx-office-erp-fcgid/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
Alias /web/path/to/lx-office-erp-fcgid/ /path/to/lx-office-erp/
Alias /web/path/to/lx-office-erp-fastcgi/ /path/to/lx-office-erp/
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
-und unter C</web/opath/to/lx-office-erp-fcgid/> bzw.
-C</web/opath/to/lx-office-erp-fastcgi/> die FastCGI Version.
+und unter C</web/path/to/lx-office-erp-fcgid/> bzw.
+C</web/path/to/lx-office-erp-fastcgi/> die FastCGI Version.
Achtung:
=head2 Entwicklungsaspekte
Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der
-Server neu gestartet werden.
+Webserver neu gestartet werden.
Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte
kanonischen globalen Variablen listet und erklärt. Bitte keine anderen
einführen ohne das sauber zu dokumentieren.
-Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht,
+Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sicher geht,
dass man die richtige erwischt.
=head2 Performance und Statistiken
@c %**start of header
@setfilename INSTALL.info
@documentencoding UTF-8
+@afourpaper
@settitle Lx-Office Installationsanleitung
@c %**end of header
<title>Administratorpasswort - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung" title="Grundlagen zur Benutzerauthentifizierung">
</head>
<body>
<div class="node">
-<a name="Administratorpasswort"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
-Previous: <a rel="previous" accesskey="p" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<a name="Administratorpasswort"></a>
+nächstes: <a rel="next" accesskey="n" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
+voriges: <a rel="previous" accesskey="p" href="Grundlagen-zur-Benutzerauthentifizierung.html#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Aktuelle Hinweise - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="index.html#Top" title="Top">
<link rel="next" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
</head>
<body>
<div class="node">
-<a name="Aktuelle-Hinweise"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
-Previous: <a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<a name="Aktuelle-Hinweise"></a>
+nächstes: <a rel="next" accesskey="n" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
+voriges: <a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Anlegen der Authentifizierungsdatenbank - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies" title="Name des Session-Cookies">
</head>
<body>
<div class="node">
-<a name="Anlegen-der-Authentifizierungsdatenbank"></a>
<p>
-Previous: <a rel="previous" accesskey="p" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<a name="Anlegen-der-Authentifizierungsdatenbank"></a>
+voriges: <a rel="previous" accesskey="p" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Anpassung der PostgreSQL-Konfiguration - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes" title="Manuelle Installation des Programmpaketes">
<link rel="next" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration" title="Apache-Konfiguration">
</head>
<body>
<div class="node">
+<p>
<a name="Anpassung-der-PostgreSQL-Konfiguration"></a>
<a name="Anpassung-der-PostgreSQL_002dKonfiguration"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
-Previous: <a rel="previous" accesskey="p" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+nächstes: <a rel="next" accesskey="n" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
+voriges: <a rel="previous" accesskey="p" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Apache-Konfiguration - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="next" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
</head>
<body>
<div class="node">
+<p>
<a name="Apache-Konfiguration"></a>
<a name="Apache_002dKonfiguration"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
-Previous: <a rel="previous" accesskey="p" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+nächstes: <a rel="next" accesskey="n" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
+voriges: <a rel="previous" accesskey="p" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Authentifizierungsdatenbank - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Administratorpasswort.html#Administratorpasswort" title="Administratorpasswort">
</head>
<body>
<div class="node">
-<a name="Authentifizierungsdatenbank"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
-Previous: <a rel="previous" accesskey="p" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<a name="Authentifizierungsdatenbank"></a>
+nächstes: <a rel="next" accesskey="n" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
+voriges: <a rel="previous" accesskey="p" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Benötigte Software und Pakete - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise" title="Aktuelle Hinweise">
<link rel="next" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes" title="Manuelle Installation des Programmpaketes">
</head>
<body>
<div class="node">
+<p>
<a name="Ben%c3%b6tigte-Software-und-Pakete"></a>
<a name="Ben_00c3_00b6tigte-Software-und-Pakete"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
-Previous: <a rel="previous" accesskey="p" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+nächstes: <a rel="next" accesskey="n" href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
+voriges: <a rel="previous" accesskey="p" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Benutzer anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Gruppen-anlegen.html#Gruppen-anlegen" title="Gruppen anlegen">
</head>
<body>
<div class="node">
-<a name="Benutzer-anlegen"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
-Previous: <a rel="previous" accesskey="p" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<a name="Benutzer-anlegen"></a>
+nächstes: <a rel="next" accesskey="n" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
+voriges: <a rel="previous" accesskey="p" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Benutzer- und Gruppenverwaltung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="next" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen" title="OpenDocument-Vorlagen">
</head>
<body>
<div class="node">
+<p>
<a name="Benutzer--und-Gruppenverwaltung"></a>
<a name="Benutzer_002d-und-Gruppenverwaltung"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
-Previous: <a rel="previous" accesskey="p" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+nächstes: <a rel="next" accesskey="n" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
+voriges: <a rel="previous" accesskey="p" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Benutzerauthentifizierung und Administratorpasswort - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration" title="Apache-Konfiguration">
<link rel="next" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
</head>
<body>
<div class="node">
-<a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
-Previous: <a rel="previous" accesskey="p" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>
+nächstes: <a rel="next" accesskey="n" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
+voriges: <a rel="previous" accesskey="p" href="Apache_002dKonfiguration.html#Apache_002dKonfiguration">Apache-Konfiguration</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Betriebssystem - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="next" href="Pakete.html#Pakete" title="Pakete">
</head>
<body>
<div class="node">
-<a name="Betriebssystem"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Pakete.html#Pakete">Pakete</a>,
-Up: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
+<a name="Betriebssystem"></a>
+nächstes: <a rel="next" accesskey="n" href="Pakete.html#Pakete">Pakete</a>,
+aufwärts: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
<hr>
</div>
geben.
<p>Alternativ dazu kann die normale Installation durchgeführt werden
-(see <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
+(siehe <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
Kompatibilitätspaket installiert wird, das die fehlenden Pakete bereitstellt.
Das Paket ist auf <a href="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.2/">Sourceforge</a> unter dem Namen <code>lx-erp-perl-libs-compat-v2.tar.gz</code> hinterlegt.
<p><code>libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</code>
- <p>Danach sollte der Installationscheck (see <a href="Pakete.html#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
+ <p>Danach sollte der Installationscheck (siehe <a href="Pakete.html#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
</body></html>
<title>Datenbankbenutzer anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren" title="Erweiterung für servergespeicherte Prozeduren">
</head>
<body>
<div class="node">
-<a name="Datenbankbenutzer-anlegen"></a>
<p>
-Previous: <a rel="previous" accesskey="p" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
-Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+<a name="Datenbankbenutzer-anlegen"></a>
+voriges: <a rel="previous" accesskey="p" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
+aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Datenbanken anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge" title="Zusammenhänge">
</head>
<body>
<div class="node">
-<a name="Datenbanken-anlegen"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
-Previous: <a rel="previous" accesskey="p" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<a name="Datenbanken-anlegen"></a>
+nächstes: <a rel="next" accesskey="n" href="Gruppen-anlegen.html#Gruppen-anlegen">Gruppen anlegen</a>,
+voriges: <a rel="previous" accesskey="p" href="Zusammenh_00c3_00a4nge.html#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Erweiterung für servergespeicherte Prozeduren - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien" title="Änderungen an Konfigurationsdateien">
</head>
<body>
<div class="node">
+<p>
<a name="Erweiterung-f%c3%bcr-servergespeicherte-Prozeduren"></a>
<a name="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Datenbankbenutzer-anlegen.html#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
-Previous: <a rel="previous" accesskey="p" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
-Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+nächstes: <a rel="next" accesskey="n" href="Datenbankbenutzer-anlegen.html#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
+voriges: <a rel="previous" accesskey="p" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
+aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Grundlagen zur Benutzerauthentifizierung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="next" href="Administratorpasswort.html#Administratorpasswort" title="Administratorpasswort">
</head>
<body>
<div class="node">
-<a name="Grundlagen-zur-Benutzerauthentifizierung"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+<a name="Grundlagen-zur-Benutzerauthentifizierung"></a>
+nächstes: <a rel="next" accesskey="n" href="Administratorpasswort.html#Administratorpasswort">Administratorpasswort</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Gruppen anlegen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Datenbanken-anlegen.html#Datenbanken-anlegen" title="Datenbanken anlegen">
</head>
<body>
<div class="node">
-<a name="Gruppen-anlegen"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
-Previous: <a rel="previous" accesskey="p" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<a name="Gruppen-anlegen"></a>
+nächstes: <a rel="next" accesskey="n" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
+voriges: <a rel="previous" accesskey="p" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Gruppenmitgliedschaften verwalten - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Benutzer-anlegen.html#Benutzer-anlegen" title="Benutzer anlegen">
</head>
<body>
<div class="node">
-<a name="Gruppenmitgliedschaften-verwalten"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Migration-alter-Installationen.html#Migration-alter-Installationen">Migration alter Installationen</a>,
-Previous: <a rel="previous" accesskey="p" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<a name="Gruppenmitgliedschaften-verwalten"></a>
+nächstes: <a rel="next" accesskey="n" href="Migration-alter-Installationen.html#Migration-alter-Installationen">Migration alter Installationen</a>,
+voriges: <a rel="previous" accesskey="p" href="Benutzer-anlegen.html#Benutzer-anlegen">Benutzer anlegen</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Lx-Office ERP verwenden - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen" title="OpenDocument-Vorlagen">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
</head>
<body>
<div class="node">
+<p>
<a name="Lx-Office-ERP-verwenden"></a>
<a name="Lx_002dOffice-ERP-verwenden"></a>
-<p>
-Previous: <a rel="previous" accesskey="p" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+voriges: <a rel="previous" accesskey="p" href="OpenDocument_002dVorlagen.html#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Manuelle Installation des Programmpaketes - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="next" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
</head>
<body>
<div class="node">
-<a name="Manuelle-Installation-des-Programmpaketes"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
-Previous: <a rel="previous" accesskey="p" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<a name="Manuelle-Installation-des-Programmpaketes"></a>
+nächstes: <a rel="next" accesskey="n" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
+voriges: <a rel="previous" accesskey="p" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<title>Migration alter Installationen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="prev" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten" title="Gruppenmitgliedschaften verwalten">
</head>
<body>
<div class="node">
-<a name="Migration-alter-Installationen"></a>
<p>
-Previous: <a rel="previous" accesskey="p" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+<a name="Migration-alter-Installationen"></a>
+voriges: <a rel="previous" accesskey="p" href="Gruppenmitgliedschaften-verwalten.html#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Name des Session-Cookies - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung" title="Passwortüberprüfung">
</head>
<body>
<div class="node">
+<p>
<a name="Name-des-Session-Cookies"></a>
<a name="Name-des-Session_002dCookies"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Anlegen-der-Authentifizierungsdatenbank.html#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
-Previous: <a rel="previous" accesskey="p" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+nächstes: <a rel="next" accesskey="n" href="Anlegen-der-Authentifizierungsdatenbank.html#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
+voriges: <a rel="previous" accesskey="p" href="Passwort_00c3_00bcberpr_00c3_00bcfung.html#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>OpenDocument-Vorlagen - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="next" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden" title="Lx-Office ERP verwenden">
</head>
<body>
<div class="node">
+<p>
<a name="OpenDocument-Vorlagen"></a>
<a name="OpenDocument_002dVorlagen"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>,
-Previous: <a rel="previous" accesskey="p" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
-Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
+nächstes: <a rel="next" accesskey="n" href="Lx_002dOffice-ERP-verwenden.html#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>,
+voriges: <a rel="previous" accesskey="p" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
+aufwärts: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<p>Dieses Verzeichnis, wie auch das komplette <code>users</code>-Verzeichnis, muss vom
Webserver beschreibbar sein. Dieses wurde bereits erledigt
-(see <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut überprüft
+(siehe <a href="Manuelle-Installation-des-Programmpaketes.html#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut überprüft
werden, wenn die Konvertierung nach PDF fehlschlägt.
<!-- -->
<title>Pakete - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete" title="Benötigte Software und Pakete">
<link rel="prev" href="Betriebssystem.html#Betriebssystem" title="Betriebssystem">
</head>
<body>
<div class="node">
-<a name="Pakete"></a>
<p>
-Previous: <a rel="previous" accesskey="p" href="Betriebssystem.html#Betriebssystem">Betriebssystem</a>,
-Up: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
+<a name="Pakete"></a>
+voriges: <a rel="previous" accesskey="p" href="Betriebssystem.html#Betriebssystem">Betriebssystem</a>,
+aufwärts: <a rel="up" accesskey="u" href="Ben_00c3_00b6tigte-Software-und-Pakete.html#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
<hr>
</div>
<title>Passwortüberprüfung - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort" title="Benutzerauthentifizierung und Administratorpasswort">
<link rel="prev" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank" title="Authentifizierungsdatenbank">
</head>
<body>
<div class="node">
+<p>
<a name="Passwort%c3%bcberpr%c3%bcfung"></a>
<a name="Passwort_00c3_00bcberpr_00c3_00bcfung"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
-Previous: <a rel="previous" accesskey="p" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
-Up: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
+nächstes: <a rel="next" accesskey="n" href="Name-des-Session_002dCookies.html#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
+voriges: <a rel="previous" accesskey="p" href="Authentifizierungsdatenbank.html#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzerauthentifizierung-und-Administratorpasswort.html#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
<hr>
</div>
<title>Zeichensätze/die Verwendung von UTF-8 - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="next" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien" title="Änderungen an Konfigurationsdateien">
</head>
<body>
<div class="node">
+<p>
<a name="Zeichens%c3%a4tze%2fdie-Verwendung-von-UTF-8"></a>
<a name="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
-Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+nächstes: <a rel="next" accesskey="n" href="_00c3_0084nderungen-an-Konfigurationsdateien.html#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
+aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Zusammenhänge - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung" title="Benutzer- und Gruppenverwaltung">
<link rel="next" href="Datenbanken-anlegen.html#Datenbanken-anlegen" title="Datenbanken anlegen">
</head>
<body>
<div class="node">
+<p>
<a name="Zusammenh%c3%a4nge"></a>
<a name="Zusammenh_00c3_00a4nge"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
-Up: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
+nächstes: <a rel="next" accesskey="n" href="Datenbanken-anlegen.html#Datenbanken-anlegen">Datenbanken anlegen</a>,
+aufwärts: <a rel="up" accesskey="u" href="Benutzer_002d-und-Gruppenverwaltung.html#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
<hr>
</div>
<title>Änderungen an Konfigurationsdateien - Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration" title="Anpassung der PostgreSQL-Konfiguration">
<link rel="prev" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8" title="Zeichensätze/die Verwendung von UTF-8">
</head>
<body>
<div class="node">
+<p>
<a name="%c3%84nderungen-an-Konfigurationsdateien"></a>
<a name="g_t_00c3_0084nderungen-an-Konfigurationsdateien"></a>
-<p>
-Next: <a rel="next" accesskey="n" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
-Previous: <a rel="previous" accesskey="p" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
-Up: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
+nächstes: <a rel="next" accesskey="n" href="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren.html#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
+voriges: <a rel="previous" accesskey="p" href="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8.html#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
+aufwärts: <a rel="up" accesskey="u" href="Anpassung-der-PostgreSQL_002dKonfiguration.html#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
<hr>
</div>
<title>Lx-Office Installationsanleitung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Lx-Office Installationsanleitung">
-<meta name="generator" content="makeinfo 4.13">
+<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="#Top">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<meta http-equiv="Content-Style-Type" content="text/css">
<div class="node">
-<a name="Top"></a>
<p>
-Next: <a rel="next" accesskey="n" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
-Up: <a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
+<a name="Top"></a>
+nächstes: <a rel="next" accesskey="n" href="Aktuelle-Hinweise.html#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
+aufwärts: <a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
<hr>
</div>
+# The Installation Documentation is being written in 'INSTALL.texi' using
+# the texinfo syntax. Visit http://www.gnu.org/software/texinfo/ and
+# http://cvs.savannah.gnu.org/viewvc/*checkout*/texinfo/doc/refcard/txirefcard-a4.pdf?root=texinfo
+#
+# In order to generate the files INSTALL.txt and the HTML files under
+# INSTALL/ you have to install the 'make' and 'textinfo' packages of
+# your operating system.
+# Possibly a 'Lx-Office_Installation_DE.pdf' will generated too.
+#
+# Usage:
+# cd doc/
+# make
+
all:
rm -f INSTALL/*.html
- makeinfo --html --document-language=de_DE.UTF-8 INSTALL.texi
- makeinfo --plaintext --document-language=de_DE.UTF-8 -o INSTALL.txt INSTALL.texi
+ makeinfo --html --document-language=de_DE.UTF-8 INSTALL.texi
+ makeinfo --plaintext --document-language=de_DE.UTF-8 -o INSTALL.txt INSTALL.texi
+ texi2pdf -p -c -q -o Lx-Office_Installation_DE.pdf INSTALL.texi
# Veränderungen von Lx-Office ERP #
###################################
+ ab Feb 2011 Release 2.7-unstable
+
+
+
+ Kleinere neue Features und Detailverbesserungen:
+
+ - Beim Laden von Rechnungsentwürfen, das Fälligkeits- und Rechnungsdatum duch
+ das Tagesdatum ersetzen
+
+ - Bei Verkaufsgutschriften zusätzlich noch die Rechnungsnummer mitnehmen, damit der Bezug klarer ist.
+
+ Liste gefixter Bugs aus dem Bugtracker:
+
+ - Bugfix 1613: Status teilweise
+
+
2011-02-02 - Release 2.6.2
Größere neue Features:
<td><code>serialnumber</code></td>
<td>Seriennummer</td>
</tr>
+ <tr>
+ <td><code>tax_rate</code></td>
+ <td>Steuersatz</td>
+ </tr>
<tr>
<td><code>transdate_oe</code></td>
<td>Auftragsdatum des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde</td>
'For AP transactions it will replace the sales taxkeys with input taxkeys with the same tax rate.' => 'Bei Kreditorenbuchungen werden die Umsatzsteuer-Steuerschlüssel durch Vorsteuer-Steuerschlüssel mit demselben Steuersatz ersetzt.',
'For AR transactions it will replace the input taxkeys with sales taxkeys with the same tax rate.' => 'Bei Debitorenbuchungen werden die Vorsteuer-Steuerschlüssel durch Umsatzsteuer-Steuerschlüssel mit demselben Steuersatz ersetzt.',
'For each unit there\'s either no or exactly one base unit. If you chose a base unit then you also have to chose a factor. That way the new unit will be defined as a multiple of the base unit. The base unit must be the "smaller" one. A factor may not be less than 1. Therefore you may define "kg" with the base unit "g" and a factor of "1", but not the other way round.' => 'Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind. Wenn Sie eine Basiseinheit auswählen, dann müssen Sie auch einen Faktor eingeben. Sie müssen Einheiten als ein Vielfaches einer kleineren Einheit eingeben. So ist die Definition von "kg" mit der Basiseinheit "g" und dem Faktor 1000 zulässig, die Definition von "g" mit der Basiseinheit "kg" und dem Faktor "0,001" hingegen nicht.',
+ 'For further information read this:' => 'Für weitere Informationen zu diesem Thema lesen Sie bitte:',
'Foreign Exchange Gain' => 'Wechselkurserträge',
'Foreign Exchange Loss' => 'Wechselkursaufwendungen',
'Foreign Expenses' => 'Aufwand Ausland',
'Incoming Payments' => 'Zahlungseingänge',
'Incoming invoice number' => 'Eingangsrechnungsnummer',
'Incorrect Password!' => 'Ungültiges Passwort!',
+ 'Incorrect password!.' => 'Ungültiges Passwort!.',
'Incorrect username or password!' => 'Ungültiger Benutzername oder falsches Passwort!',
'Increase' => 'Erhöhen',
'Individual Items' => 'Einzelteile',
'Not done yet' => 'Noch nicht fertig',
'Not obsolete' => 'Gültig',
'Note' => 'Hinweis',
+ 'Note: For Firefox 4 and later the menu XUL menu requires the addon <a href="#1">Remote XUL Manager</a> and the Lx-Office server to be white listed.' => 'Bitte beachten: Ab Firefox 4 benötigt das XUL Menü das Addon <a href="#1">Remote XUL Manager</a>, in dem der Lx-Office Server eingetragen sein muss.',
'Note: Taxkeys must have a "valid from" date, and will not behave correctly without.' => 'Hinweis: Steuerschlüssel sind fehlerhaft ohne "Gültig ab" Datum',
'Notes' => 'Bemerkungen',
'Notes (will appear on hard copy)' => 'Bemerkungen',
'Openings' => 'Öffnungszeiten',
'Optional comment' => 'Optionaler Kommentar',
'Options' => 'Optionen',
+ 'Or download the whole Installation Documentation as PDF (110kB) for off-line study (currently in German Language).' => 'Oder laden Sie die komplette Installationsbeschreibung als PDF (110kB) herunter.',
'Order' => 'Auftrag',
'Order Date' => 'Auftragsdatum',
'Order Date missing!' => 'Auftragsdatum fehlt!',
'Supplies' => 'Lieferungen',
'Switch Menu on / off' => 'Menü ein- / ausklappen',
'System' => 'System',
+ 'System currently down for maintenance!' => 'Lx-Office ist momentan zwecks Wartungsarbeiten nicht zugänglich.',
'TODO list' => 'Aufgabenliste',
'TODO list options' => 'Aufgabenlistenoptionen',
'TOP100' => 'Top 100',
'Warning' => 'Warnung',
'Warnings during template upgrade' => 'Warnungen bei Aktualisierung der Dokumentenvorlagen',
'WebDAV link' => 'WebDAV-Link',
+ 'Webserver interface' => 'Webserverschnittstelle',
'Weight' => 'Gewicht',
'Weight unit' => 'Gewichtseinheit',
'What <b>term</b> you are looking for?' => 'Nach welchem <b>Begriff</b> wollen Sie suchen?',
'[email]' => '[email]',
'account_description' => 'Beschreibung',
'accrual' => 'Bilanzierung (Soll-Versteuerung)',
+ 'action= not defined!' => 'action= nicht definiert!',
'active' => 'aktiv',
'all entries' => 'alle Einträge',
'ap_aging_list' => 'liste_offene_verbindlichkeiten',
'Bin From' => 'von Lagerplatz',
'Bin List' => 'Lagerliste',
'Bin To' => 'nach Lagerplatz',
- 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'Binding to the LDAP server as "#1" failed. Please check config/lx_office.conf.' => '',
'Bins saved.' => 'Lagerplätze gespeichert.',
'Bins that have been used in the past cannot be deleted anymore. For these bins there\'s no checkbox in the "Delete" column.' => 'Lagerplätze, die bereits benutzt wurden, können nicht mehr gelöscht werden. Deswegen fehlt bei ihnen die Checkbox in der Spalte "Löschen".',
'Birthday' => 'Geburtstag',
'For AP transactions it will replace the sales taxkeys with input taxkeys with the same tax rate.' => 'Bei Kreditorenbuchungen werden die Umsatzsteuer-Steuerschlüssel durch Vorsteuer-Steuerschlüssel mit demselben Steuersatz ersetzt.',
'For AR transactions it will replace the input taxkeys with sales taxkeys with the same tax rate.' => 'Bei Debitorenbuchungen werden die Vorsteuer-Steuerschlüssel durch Umsatzsteuer-Steuerschlüssel mit demselben Steuersatz ersetzt.',
'For each unit there\'s either no or exactly one base unit. If you chose a base unit then you also have to chose a factor. That way the new unit will be defined as a multiple of the base unit. The base unit must be the "smaller" one. A factor may not be less than 1. Therefore you may define "kg" with the base unit "g" and a factor of "1", but not the other way round.' => 'Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind. Wenn Sie eine Basiseinheit auswählen, dann müssen Sie auch einen Faktor eingeben. Sie müssen Einheiten als ein Vielfaches einer kleineren Einheit eingeben. So ist die Definition von "kg" mit der Basiseinheit "g" und dem Faktor 1000 zulässig, die Definition von "g" mit der Basiseinheit "kg" und dem Faktor "0,001" hingegen nicht.',
+ 'For further information read this:' => 'Für weitere Informationen zu diesem Thema lesen Sie bitte:',
'Foreign Exchange Gain' => 'Wechselkurserträge',
'Foreign Exchange Loss' => 'Wechselkursaufwendungen',
'Foreign Expenses' => 'Aufwand Ausland',
'If you chose to let Lx-Office do the migration then Lx-Office will also remove the old member file after creating a backup copy of it in the directory "#1".' => 'Falls Sie sich entscheiden, Lx-Office die Migration durchführen zu lassen, so wird Lx-Office ein Backup der alten Dateien im Verzeichnis "#1" erstellen und die Dateien anschließend löschen.',
'If you enter values for the part number and / or part description then only those bins containing parts whose part number or part description match your input will be shown.' => 'Wenn Sie für die Artikelnummer und / oder die Beschreibung etwas eingeben, so werden nur die Lagerplätze angezeigt, in denen Waren eingelagert sind, die Ihre Suchbegriffe enthalten.',
'If you see this message, you most likely just setup your LX-Office and haven\'t added any entry types. If this is the case, the option is accessible for administrators in the System menu.' => 'Wenn Sie diese Meldung sehen haben Sie wahrscheinlich ein frisches LX-Office Setup und noch keine Buchungsgruppen eingerichtet. Ein Administrator kann dies im Systemmenü erledigen.',
- 'If you want to change any of these parameters then press the "Back" button, edit the file "config/authentication.pl" and login into the admin module again.' => 'Wenn Sie einen der Parameter ändern wollen, so drücken Sie auf den "Zurück"-Button, bearbeiten Sie die Datei "config/authentication.pl", und melden Sie sich erneut im Administrationsbereich an.',
+ 'If you want to change any of these parameters then press the "Back" button, edit the file "config/lx_office.conf" and login into the admin module again.' => '',
'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' => 'Wenn Sie eine solche Datenbank löschen wollen, so müssen Sie zuerst die Benutzer bearbeiten, die die fragliche Datenbank benutzen, und sie so ändern, dass sie eine andere Datenbank benutzen.',
'If you want to set up the authentication database yourself then log in to the administration panel. Lx-Office will then create the database and tables for you.' => 'Wenn Sie die Authentifizierungsdatenbank selber einrichten wollen, so melden Sie sich an der Administrationsoberfläche an. Lx-Office wird dann die Datenbank und die Tabellen für Sie anlegen.',
'If you yourself want to upgrade the installation then please read the file "doc/UPGRADE" and follow the steps outlined in this file.' => 'Wenn Sie selber die Aktualisierung bzw. Einrichtung übernehmen wollen, so lesen Sie bitte die Datei "doc/UPGRADE" und folgen Sie den dort beschriebenen Schritten.',
'No group has been selected, or the group does not exist anymore.' => 'Es wurde keine Gruppe ausgewählt, oder die Gruppe wurde in der Zwischenzeit gelöscht.',
'No groups have been added yet.' => 'Es wurden noch keine Gruppen angelegt.',
'No licenses were found that match the search criteria.' => 'Es wurden keine Lizenzen gefunden, auf die die Suchkriterien zutreffen.',
- 'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/authentication.pl" angegeben.',
+ 'No or an unknown authenticantion module specified in "config/lx_office.conf".' => '',
'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
'No prices will be updated because no prices have been entered.' => 'Es werden keine Preise aktualisiert, weil keine gültigen Preisänderungen eingegeben wurden.',
'No problems were recognized.' => 'Es wurden keine Probleme gefunden.',
'Openings' => 'Öffnungszeiten',
'Optional comment' => 'Optionaler Kommentar',
'Options' => 'Optionen',
+ 'Or download the whole Installation Documentation as PDF (110kB) for off-line study (currently in German Language).' => 'Oder laden Sie die komplette Installationsbeschreibung als PDF (110kB) herunter.',
'Order' => 'Auftrag',
'Order Date' => 'Auftragsdatum',
'Order Date missing!' => 'Auftragsdatum fehlt!',
'The AP transaction #1 has been deleted.' => 'Die Kreditorenbuchung #1 wurde gelöscht.',
'The AR transaction #1 has been deleted.' => 'Die Debitorenbuchung #1 wurde gelöscht.',
'The GL transaction #1 has been deleted.' => 'Die Dialogbuchung #1 wurde gelöscht.',
- 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'The LDAP server "#1:#2" is unreachable. Please check config/lx_office.conf.' => '',
'The SEPA export has been created.' => 'Der SEPA-Export wurde erstellt',
'The SEPA strings have been saved.' => 'Die bei SEPA-Überweisungen verwendeten Begriffe wurden gespeichert.',
'The access rights have been saved.' => 'Die Zugriffsrechte wurden gespeichert.',
'The account 3804 will not be added automatically.' => 'Das Konto 3804 wird nicht automatisch hinzugefÃŒgt.',
'The assembly has been created.' => 'Das Erzeugnis wurde hergestellt.',
'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => 'Der Korrekturassistent konnte kein Problem bei #1 feststellen. Eventuell wurde das Problem in der Zwischenzeit bereits behoben.',
- 'The authentication configuration file "config/authentication.pl" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => 'Die Konfigurationsdatei für die Authentifizierung "config/authentication.pl" wurde nicht gefunden. Diese Lx-Office-Installation wurde vermutlich noch nicht vollständig aktualisiert oder eingerichtet. Bitte wenden Sie sich an Ihren Administrator.',
+ 'The authentication configuration file "config/lx_office.conf" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => '',
'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => 'Die Authentifizierungsdatenbank kann momentan nicht erreicht werden. Entweder wurde sie noch nicht eingerichtet, oder der Datenbankserver antwortet nicht. Bitte wenden Sie sich an Ihren Administrator.',
'The available options depend on the varibale type:' => 'Die verfügbaren Optionen hängen vom Datenfeldtypen ab:',
'The backup you upload here has to be a file created with "pg_dump -o -Ft".' => 'Die von Ihnen hochzuladende Sicherungsdatei muss mit dem Programm und den Parametern "pg_dump -o -Ft" erstellt worden sein.',
'The base unit does not exist.' => 'Die Basiseinheit existiert nicht.',
'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => 'Die Beziehungen der Einheiten dürfen keine Schleifen beinhalten (z.B. wenn gesagt wird, dass Einheit As Basiseinheit B, Bs Basiseinheit C und Cs Basiseinheit A ist) in Zeile %d.',
'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => 'Die Spalten "Zahlbar bis", "Kumulierte Gebühren" und "Zinsen" zeigen Daten der letzten für diese Rechnung erzeugten Mahnung.',
- 'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ungütigen Perl-Code:',
- 'The config file "config/authentication.pl" was not found.' => 'Die Konfigurationsdatei "config/authentication.pl" wurde nicht gefunden.',
- 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.' => 'Die Verbindung zum LDAP-Server kann nicht verschlüsselt werden (Fehler bei SSL/TLS-Initialisierung). Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/lx_office.conf.' => '',
'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
'The connection to the database could not be established.' => 'Die Verbindung zur Datenbank konnte nicht hergestellt werden.',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'Warning' => 'Warnung',
'Warnings during template upgrade' => 'Warnungen bei Aktualisierung der Dokumentenvorlagen',
'WebDAV link' => 'WebDAV-Link',
+ 'Webserver interface' => 'Webserver nutzt',
'Weight' => 'Gewicht',
'Weight unit' => 'Gewichtseinheit',
'What <b>term</b> you are looking for?' => 'Nach welchem <b>Begriff</b> wollen Sie suchen?',
'close' => 'schließen',
'closed' => 'geschlossen',
'companylogo_subtitle' => 'Warenwirtschaft und Finanzbuchhaltung',
- 'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schlüsselwort "DB_config" fehlt.',
- 'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schlüssel "LDAP_config" fehlt.',
- 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Fehlende Parameter in "DB_config". Benötigte Parameter sind "host", "db" und "user".',
- 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Fehlende Parameter in "LDAP_config". Benötigt werden "host", "attribute" und "base_dn".',
+ 'config/lx_office.conf: Key "DB_config" is missing.' => '',
+ 'config/lx_office.conf: Key "authentication/ldap" is missing.' => '',
+ 'config/lx_office.conf: Missing parameters in "authentication/database". Required parameters are "host", "db" and "user".' => '',
+ 'config/lx_office.conf: Missing parameters in "authentication/ldap". Required parameters are "host", "attribute" and "base_dn".' => '',
'continue' => 'weiter',
'correction' => 'Korrektur',
'cp_greeting to cp_gender migration' => 'Datenumwandlung von Titel nach Geschlecht (cp_greeting to cp_gender)',
'4. Quarter' => '',
'<b>What</b> do you want to look for?' => '',
'A Buchungsgruppe consists of a descriptive name and the account numbers for the income and expense accounts for those four tax zones as well as the inventory account number.' => '',
+ 'A digit is required.' => '',
'A group named "Full Access" has been created.' => '',
'A group with that name does already exist.' => '',
'A lot of the usability of Lx-Office has been enhanced with javascript. Although it is currently possible to use every aspect of Lx-Office without javascript, we strongly recommend it. In a future version this may change and javascript may be necessary to access advanced features.' => '',
+ 'A lower-case character is required.' => '',
+ 'A special character is required (valid characters: #1).' => '',
'A temporary directory could not be created:' => '',
'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.' => '',
'A temporary file could not be created:' => '',
'Amount' => '',
'Amount Due' => '',
'Amount has to be greater then zero! Wrong row number: ' => '',
+ 'An invalid character was used (invalid characters: #1).' => '',
+ 'An invalid character was used (valid characters: #1).' => '',
+ 'An upper-case character is required.' => '',
'Annotations' => '',
'Another user with the login #1 does already exist.' => '',
'Ap aging on %s' => '',
'Bin From' => '',
'Bin List' => '',
'Bin To' => '',
- 'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => '',
+ 'Binding to the LDAP server as "#1" failed. Please check config/lx_office.conf.' => '',
'Bins saved.' => '',
'Bins that have been used in the past cannot be deleted anymore. For these bins there\'s no checkbox in the "Delete" column.' => '',
'Birthday' => '',
'Company Name' => '',
'Compare to' => '',
'Configuration of individual TODO items' => '',
+ 'Configure' => '',
'Confirm' => '',
'Confirm!' => '',
'Confirmation' => '',
'Database Host' => '',
'Database User' => '',
'Database User missing!' => '',
- 'Database backups and restorations are disabled in lx-erp.conf.' => '',
+ 'Database backups and restorations are disabled in the configuration.' => '',
'Database name' => '',
'Database template' => '',
'Database update error:' => '',
'Edit rights' => '',
'Edit templates' => 'Templates, edit',
'Edit the Delivery Order' => '',
+ 'Edit the configuration for periodic invoices' => '',
'Edit the membership of all users in all groups:' => '',
'Edit the purchase_order' => '',
'Edit the request_quotation' => '',
'Element disabled' => '',
'Employee' => '',
'Empty transaction!' => '',
+ 'End date' => '',
'Enter a description for this new draft.' => '',
'Enter longdescription' => '',
'Enter the requested execution date or leave empty for the quickest possible execution:' => '',
'Export date' => '',
'Export date from' => '',
'Export date to' => '',
+ 'Extend automatically by n months' => '',
'Extended' => '',
'Extension Of Time' => '',
'Factor' => '',
'For AP transactions it will replace the sales taxkeys with input taxkeys with the same tax rate.' => '',
'For AR transactions it will replace the input taxkeys with sales taxkeys with the same tax rate.' => '',
'For each unit there\'s either no or exactly one base unit. If you chose a base unit then you also have to chose a factor. That way the new unit will be defined as a multiple of the base unit. The base unit must be the "smaller" one. A factor may not be less than 1. Therefore you may define "kg" with the base unit "g" and a factor of "1", but not the other way round.' => '',
+ 'For further information read this:' => '',
'Foreign Exchange Gain' => '',
'Foreign Exchange Loss' => '',
'Foreign Expenses' => '',
'Help Template Variables' => '',
'Here\'s an example command line:' => '',
'Hide by default' => '',
- 'History' => '',
'History Search' => '',
'History Search Engine' => '',
'Homepage' => '',
'If you chose to let Lx-Office do the migration then Lx-Office will also remove the old member file after creating a backup copy of it in the directory "#1".' => '',
'If you enter values for the part number and / or part description then only those bins containing parts whose part number or part description match your input will be shown.' => '',
'If you see this message, you most likely just setup your LX-Office and haven\'t added any entry types. If this is the case, the option is accessible for administrators in the System menu.' => '',
- 'If you want to change any of these parameters then press the "Back" button, edit the file "config/authentication.pl" and login into the admin module again.' => '',
+ 'If you want to change any of these parameters then press the "Back" button, edit the file "config/lx_office.conf" and login into the admin module again.' => '',
'If you want to delete such a dataset you have to edit the user(s) that are using the dataset in question and have them use another dataset.' => '',
'If you want to set up the authentication database yourself then log in to the administration panel. Lx-Office will then create the database and tables for you.' => '',
'If you yourself want to upgrade the installation then please read the file "doc/UPGRADE" and follow the steps outlined in this file.' => '',
'No group has been selected, or the group does not exist anymore.' => '',
'No groups have been added yet.' => '',
'No licenses were found that match the search criteria.' => '',
- 'No or an unknown authenticantion module specified in "config/authentication.pl".' => '',
+ 'No or an unknown authenticantion module specified in "config/lx_office.conf".' => '',
'No part was found matching the search parameters.' => '',
'No prices will be updated because no prices have been entered.' => '',
'No problems were recognized.' => '',
'Openings' => '',
'Optional comment' => '',
'Options' => '',
+ 'Or download the whole Installation Documentation as PDF (110kB) for off-line study (currently in German Language).' => '',
'Order' => '',
'Order Date' => '',
'Order Date missing!' => '',
'Payment posted!' => '',
'Payment terms deleted!' => '',
'Payments' => '',
+ 'Per. Inv.' => '',
'Period' => '',
'Period:' => '',
+ 'Periodic Invoices' => '',
+ 'Periodic invoices active' => '',
+ 'Periodic invoices inactive' => '',
+ 'Periodicity' => '',
'Personal settings' => '',
'Pg Database Administration' => '',
'Phone' => '',
'Pricegroups' => '',
'Print' => '',
'Print and Post' => '',
+ 'Print automatically' => '',
'Print dunnings' => '',
'Print list' => '',
'Print options' => '',
'Spoolfile' => '',
'Start Dunning Process' => '',
'Start analysis' => '',
+ 'Start date' => '',
'Start the correction assistant' => '',
'Startdate_coa' => '',
'Starting Balance' => '',
'Statement Balance' => '',
'Statement sent to' => '',
'Statements sent to printer!' => '',
+ 'Status' => '',
'Step 1 of 3: Parts' => '',
'Step 2' => '',
'Step 2 of 3: Services' => '',
'The AP transaction #1 has been deleted.' => '',
'The AR transaction #1 has been deleted.' => '',
'The GL transaction #1 has been deleted.' => '',
- 'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => '',
+ 'The LDAP server "#1:#2" is unreachable. Please check config/lx_office.conf.' => '',
'The SEPA export has been created.' => '',
'The SEPA strings have been saved.' => '',
'The access rights have been saved.' => '',
'The account 3804 will not be added automatically.' => '',
'The assembly has been created.' => '',
'The assistant could not find anything wrong with #1. Maybe the problem has been solved in the meantime.' => '',
- 'The authentication configuration file "config/authentication.pl" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => '',
+ 'The authentication configuration file "config/lx_office.conf" does not exist. This Lx-Office installation has probably not been updated correctly yet. Please contact your administrator.' => '',
'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' => '',
'The available options depend on the varibale type:' => '',
'The backup you upload here has to be a file created with "pg_dump -o -Ft".' => '',
'The base unit does not exist.' => '',
'The base unit relations must not contain loops (e.g. by saying that unit A\'s base unit is B, B\'s base unit is C and C\'s base unit is A) in row %d.' => '',
'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => '',
- 'The config file "config/authentication.pl" contained invalid Perl code:' => '',
- 'The config file "config/authentication.pl" was not found.' => '',
- 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/authentication.pl.' => '',
+ 'The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/lx_office.conf.' => '',
'The connection to the authentication database failed:' => '',
'The connection to the database could not be established.' => '',
'The connection to the template database failed:' => '',
'The dunning process started' => '',
'The dunnings have been printed.' => '',
'The email address is missing.' => '',
+ 'The end date is the last day for which invoices will possibly be created.' => '',
'The factor is missing in row %d.' => '',
'The factor is missing.' => '',
'The first reason is that Lx-Office contained a bug which resulted in the wrong taxkeys being recorded for transactions in which two entries are posted for the same chart with different taxkeys.' => '',
'The group has been saved.' => '',
'The group memberships have been saved.' => '',
'The group name is missing.' => '',
- 'The licensing module has been deactivated in lx-erp.conf.' => '',
+ 'The licensing module has been deactivated in the configuration.' => '',
'The list has been printed.' => '',
'The login is missing.' => '',
'The name in row %d has already been used before.' => '',
'The parts have been removed.' => '',
'The parts have been stocked.' => '',
'The parts have been transferred.' => '',
+ 'The password is too long (maximum length: #1).' => '',
+ 'The password is too short (minimum length: #1).' => '',
+ 'The password is weak (e.g. it can be found in a dictionary).' => '',
'The payments have been posted.' => '',
'The pg_dump process could not be started.' => '',
'The pg_restore process could not be started.' => '',
'The selected warehouse does not exist.' => '',
'The selected warehouse is empty, or no stocked items where found that match the filter settings.' => '',
'The session is invalid or has expired.' => '',
+ 'The settings were saved, but the password was not changed.' => '',
'The source warehouse does not contain any bins.' => '',
+ 'The start date is missing.' => '',
'The subject is missing.' => '',
'The tables for user management and authentication do not exist. They will be created in the next step in the following database:' => '',
'The tabulator character' => '',
'Warning' => '',
'Warnings during template upgrade' => '',
'WebDAV link' => '',
+ 'Webserver interface' => '',
'Weight' => '',
'Weight unit' => '',
'What <b>term</b> you are looking for?' => '',
'[email]' => '',
'account_description' => '',
'accrual' => '',
+ 'active' => '',
'all entries' => '',
'ap_aging_list' => '',
'ar_aging_list' => '',
'close' => '',
'closed' => '',
'companylogo_subtitle' => '',
- 'config/authentication.pl: Key "DB_config" is missing.' => '',
- 'config/authentication.pl: Key "LDAP_config" is missing.' => '',
- 'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => '',
- 'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => '',
+ 'config/lx_office.conf: Key "DB_config" is missing.' => '',
+ 'config/lx_office.conf: Key "authentication/ldap" is missing.' => '',
+ 'config/lx_office.conf: Missing parameters in "authentication/database". Required parameters are "host", "db" and "user".' => '',
+ 'config/lx_office.conf: Missing parameters in "authentication/ldap". Required parameters are "host", "attribute" and "base_dn".' => '',
'continue' => '',
'correction' => '',
'cp_greeting to cp_gender migration' => '',
'general_ledger_list' => '',
'history' => '',
'history search engine' => '',
+ 'inactive' => '',
'invoice' => '',
'invoice_list' => '',
'lead deleted!' => '',
'mark as paid' => '',
'missing' => '',
'month' => '',
+ 'monthly' => '',
'new Window' => '',
'no' => '',
'no bestbefore' => '',
'no chargenumber' => '',
'none (pricegroup)' => '',
+ 'not configured' => '',
'not executed' => '',
'not transferred in yet' => '',
'not transferred out yet' => '',
'purchase_order' => '',
'purchase_order_list' => '',
'quarter' => '',
+ 'quarterly' => '',
'quotation_list' => '',
'release_material' => '',
'report_generator_dispatch_to is not defined.' => '',
'tax_taxdescription' => '',
'tax_taxkey' => '',
'taxnumber' => '',
+ 'terminated' => '',
'to (date)' => '',
'to (time)' => '',
'transfer' => '',
'warehouse_journal_list' => '',
'warehouse_report_list' => '',
'wrongformat' => '',
+ 'yearly' => '',
'yes' => '',
};
This module is documented in C<SL:InstallationCheck> to be necessary, or is a
dependancy of one of these. Everything alright.
-= item !missing
+=item !missing
These modules are neither core, nor included, nor required. This is ok for
developer tools, but should never occur for modules the actual program uses.
+=back
+
=head1 AUTHOR
http://www.ledgersmb.org/ - The LedgerSMB team
my $basedir = "../..";
my $locales_dir = ".";
my $bindir = "$basedir/bin/mozilla";
-my @progdirs = ( "$basedir/SL/Controller", "$basedir/SL/Template/Plugin", "$basedir/SL/Auth" );
+my @progdirs = ( "$basedir/SL" );
my $dbupdir = "$basedir/sql/Pg-upgrade";
my $dbupdir2 = "$basedir/sql/Pg-upgrade2";
my $menufile = "menu.ini";
init();
-opendir DIR, "$bindir" or die "$!";
-my @progfiles = map { [ $_, $bindir ] } grep { /\.pl$/ && !/(_custom|^\.)/ } readdir DIR;
-seekdir DIR, 0;
-my @customfiles = grep /_custom/, readdir DIR;
-closedir DIR;
+sub find_files {
+ my ($dir_name, $files) = @_;
-foreach my $dir (@progdirs) {
- opendir DIR, $dir or die "$!";
- push @progfiles, map { [ $_, $dir ] } grep { /\.pm$/ } readdir DIR;
- closedir DIR;
+ $files ||= [];
+
+ my @dirs_to_check;
+
+ opendir my $dir, $dir_name or die "$! $dir_name";
+
+ foreach my $name (readdir $dir) {
+ next if $name eq '.' || $name eq '..';
+
+ my $full_name = "${dir_name}/${name}";
+ if (-d $full_name) {
+ push @dirs_to_check, $full_name;
+ } else {
+ push @{ $files }, $full_name;
+ }
+ }
+
+ closedir $dir;
+
+ map { find_files($_, $files) } @dirs_to_check;
+
+ return @{ $files };
}
+my @bindir_files = find_files($bindir);
+my @progfiles = map { m:^(.+)/([^/]+)$:; [ $2, $1 ] } grep { /\.pl$/ && !/_custom/ } @bindir_files;
+my @customfiles = grep /_custom/, @bindir_files;
+
+push @progfiles, map { m:^(.+)/([^/]+)$:; [ $2, $1 ] } grep { /\.pm$/ } map { find_files($_) } @progdirs;
+
# put customized files into @customfiles
my @menufiles;
--- /dev/null
+-- @tag: ar_add_invnumber_for_credit_note
+-- @description: Die Rechnungsnummer wird bei Gutschriften bisher nicht uebernommen. Das aendert sich mit diesem Update. Hierfuer muss allerdings die Rechnungstabelle ar um einen entsprechenden Eintrag erweitert werden. (invnumber_for_credit_note in ar)
+-- @depends: delivery_orders
+alter table ar add column invnumber_for_credit_note text;
+
next;
}
while (my $file_line = <FILE>) {
- if ($file_line =~ m/(<\/?$tags>)/) {
+ last if $file_line =~ /^__END__/;
+ if ($file_line =~ m/(<\/?$tags>)/o) {
$found_html_count++;
$found_html .= $1;
}
\rightline{\LARGE\textbf{\textit{Gutschrift}}} \vspace*{0.2cm}
\rightline{\large\textbf{\textit{Nr. <%invnumber%>% \vspace*{0.2cm}
}}}
+ für Rechnung: \hfill <%invnumber_for_credit_note%>
Gutschriftdatum:\hfill <%invdate%>
<p>
<select name="group_id" size="10">
[% FOREACH row = GROUPS %]
- <option value="[% HTML.escape(row.id) %]">[% HTML.escape(row.name) %][% IF row.description %] ([% HTML.escape(row.description) %])[% END %]</option>
+ <option value="[% HTML.escape(row.id) %]"[% ' selected' IF loop.first %]>[% HTML.escape(row.name) %][% IF row.description %] ([% HTML.escape(row.description) %])[% END %]</option>
[% END %]
</select>
</p>
[% FOREACH row = MEMBERS %]
<tr class="listrow[% loop.count % 2 %]">
- <td> <a href="admin.pl?action=edit&login=[% HTML.url(row.login) %]">[% HTML.escape(row.login) %]</a></td>
+ <td> <a href="admin.pl?action=edit&login=[% HTML.url(row.login_url) %]">[% HTML.escape(row.login) %]</a></td>
<td> [% HTML.escape(row.name) %]</td>
<td> [% HTML.escape(row.company) %]</td>
<td> [% HTML.escape(row.templates) %]</td>
[%- USE T8 %]
+[%- USE LxERP %]
[% USE HTML %]<body onLoad="fokus()">
<p>
</tr>
</table>
+ <p>[% LxERP.t8('Note: For Firefox 4 and later the menu XUL menu requires the addon <a href="#1">Remote XUL Manager</a> and the Lx-Office server to be white listed.', 'https://addons.mozilla.org/de/firefox/addon/remote-xul-manager/') %]</p>
+
<br style="clear: left" />
</div>
[% USE HTML %]<body>
<div class="message_error">[% IF title_error %][% title_error %][% ELSE %][% 'Error!' | $T8 %][% END %]
- <p>[% label_error %]</p>
+ <p class="message_error_label">[% label_error %]</p>
</div>
<p style="text-align: left;"><input type="button" class="submit" onclick="history.back()" value="[% 'Back' | $T8 %]"></p>
[%- IF SHOW_BACK_BUTTON %]
<form>
<p>
- <!--- show back button always hack
+ <!--- TODO: show back button always hack
In which situation is it necessary to hide it?
<input type="button" onclick="history.back()" value="[% 'Back' | $T8 %]">
-->
</tr>
[%- END %]
<tr>
- <th align="right" nowrap><label for="shop">[% 'Has serial number' | $T8 %]</label></th>
+ <th align="right" nowrap><label for="has_sernumber">[% 'Has serial number' | $T8 %]</label></th>
<td><input class="checkbox" type="checkbox" name="has_sernumber" id="has_sernumber" value="1" [% IF has_sernumber %]checked[% END %]></td>
</tr>
<tr>
<th align="right" nowrap>[% 'Credit Note Number' | $T8 %]</th>
<td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
</tr>
+ <tr>
+ <th align="right" nowrap>[% 'Invoice Number' | $T8 %]</th>
+ <td colspan="3"><input size='11' name="invnumber_for_credit_note" value="[% HTML.escape(invnumber_for_credit_note) %]"></td>
+ </tr>
<tr>
<th align="right">[% 'Credit Note Date' | $T8 %]</th>
<td nowrap>
<p>[%- 'The authentication database is not reachable at the moment. Either it hasn\'t been set up yet or the database server might be down. Please contact your administrator.' | $T8 %]</p>
<p>[% 'If you want to set up the authentication database yourself then log in to the administration panel. Lx-Office will then create the database and tables for you.' | $T8 %]</p>
-
+ <hr>
+ <p>[% 'For further information read this:' | $T8 %] <a href="doc/INSTALL/Benutzerauthentifizierung-und-Administratorpasswort.html" target="_blank">Lx-Office Installation</a><br>
+ [% 'Or download the whole Installation Documentation as PDF (110kB) for off-line study (currently in German Language).' | $T8 %] <a href="doc/Lx-Office_Installation_DE.pdf">Lx-Office_Installation_DE.pdf</a></p>
+
+ <hr>
<p>
<a href="login.pl" target="_top">[% 'Login' | $T8 %]</a> |
<a href="admin.pl" target="_top">[% 'Administration' | $T8 %]</a>
<table border="0">
<tr>
- <th align="left"><a href="am.pl?action=config&level=Program--Preferences" title="[% 'Preferences' | $T8 %]">[% 'User' | $T8 %]</a></th>
+ <th align="left"><a href="am.pl?action=config" title="[% 'Preferences' | $T8 %]">[% 'User' | $T8 %]</a></th>
<td>[% HTML.escape(myconfig_name) %]</td>
</tr>
<tr>
- <th align="left"><a href="am.pl?action=config&level=Program--Preferences" title="[% 'Preferences' | $T8 %]">[% 'Language' | $T8 %]</a></th>
+ <th align="left"><a href="am.pl?action=config" title="[% 'Preferences' | $T8 %]">[% 'Language' | $T8 %]</a></th>
<td>[% HTML.escape(myconfig_countrycode) %]</td>
</tr>
<tr>
<th align="left">[% 'Database Host' | $T8 %]</th>
<td>[% HTML.escape(myconfig_dbhost) %]</td>
</tr>
+ <tr>
+ <th align="left">[% 'Webserver interface' | $T8 %]</th>
+ <td>[% HTML.escape(interface) %]</td>
+ </tr>
<tr class="nomobile">
<th align="left">[% 'Lx-Office Homepage' | $T8 %]:</th>
<td><a href="http://lx-office.org" target="_blank" title="[% 'Lx-Office Homepage' | $T8 %]">http://lx-office.org</a></td>