use Fcntl qw(:seek);
#use SL::Auth;
+use SL::DBConnect;
use SL::DBUpgrade2;
use SL::DBUtils;
use SL::Iconv;
sub new {
$main::lxdebug->enter_sub();
- my ($type, $login) = @_;
+ my ($type, %params) = @_;
my $self = {};
- if ($login ne "") {
- my %user_data = $main::auth->read_user($login);
+ if ($params{id} || $params{login}) {
+ my %user_data = $main::auth->read_user(%params);
map { $self->{$_} = $user_data{$_} } keys %user_data;
}
my @dir = grep(!/(^\.\.?$|\..*)/, readdir(DIR));
foreach my $dir (@dir) {
- next unless open(FH, "locale/$dir/LANGUAGE");
- @language = <FH>;
- close FH;
+ next unless open(my $fh, '<:encoding(UTF-8)', "locale/$dir/LANGUAGE");
+ @language = <$fh>;
+ close $fh;
$cc{$dir} = "@language";
}
my $rc = -3;
if ($self->{login}) {
- my %myconfig = $main::auth->read_user($self->{login});
+ my %myconfig = $main::auth->read_user(login => $self->{login});
# check if database is down
- my $dbh =
- DBI->connect($myconfig{dbconnect}, $myconfig{dbuser},
- $myconfig{dbpasswd})
+ my $dbh = SL::DBConnect->connect($myconfig{dbconnect}, $myconfig{dbuser}, $myconfig{dbpasswd})
or $self->error($DBI::errstr);
# we got a connection, check the version
$self->create_schema_info_table($form, $dbh);
+ my $dbupdater_auth = SL::DBUpgrade2->new(form => $form, dbdriver => 'Pg', auth => 1)->parse_dbupdate_controls;
+ if ($dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect)) {
+ $::lxdebug->leave_sub;
+ return -3;
+ }
+
$rc = 0;
my $dbupdater = SL::DBUpgrade2->new(form => $form, dbdriver => $myconfig{dbdriver})->parse_dbupdate_controls;
$dbh->disconnect;
if ($update_available) {
- $form->{"stylesheet"} = "lx-office-erp.css";
$form->{"title"} = $main::locale->text("Dataset upgrade");
$form->header();
print $form->parse_html_template("dbupgrade/header");
}
# update the tables
- if (!open(FH, ">$main::userspath/nologin")) {
+ if (!$::lx_office_conf{debug}->{keep_installation_unlocked} && !open(FH, ">", $::lx_office_conf{paths}->{userspath} . "/nologin")) {
$form->show_generic_error($main::locale->text('A temporary file could not be created. ' .
'Please verify that the directory "#1" is writeable by the webserver.',
- $main::userspath),
+ $::lx_office_conf{paths}->{userspath}),
'back_button' => 1);
}
$self->dbupdate($form);
$self->dbupdate2($form, $dbupdater);
+ SL::DBUpgrade2->new(form => $::form, dbdriver => 'Pg', auth => 1)->apply_admin_dbupgrade_scripts(0);
close(FH);
# remove lock file
- unlink("$main::userspath/nologin");
-
- my $menufile =
- $self->{"menustyle"} eq "v3" ? "menuv3.pl" :
- $self->{"menustyle"} eq "neu" ? "menunew.pl" :
- $self->{"menustyle"} eq "js" ? "menujs.pl" :
- $self->{"menustyle"} eq "xml" ? "menuXML.pl" :
- "menu.pl";
+ unlink($::lx_office_conf{paths}->{userspath} . "/nologin");
- print $form->parse_html_template("dbupgrade/footer", { "menufile" => $menufile });
+ print $form->parse_html_template("dbupgrade/footer");
$rc = -2;
-
}
}
'Pg' => { 'yy-mm-dd' => 'set DateStyle to \'ISO\'',
'yyyy-mm-dd' => 'set DateStyle to \'ISO\'',
'mm/dd/yy' => 'set DateStyle to \'SQL, US\'',
- 'mm-dd-yy' => 'set DateStyle to \'POSTGRES, US\'',
'dd/mm/yy' => 'set DateStyle to \'SQL, EUROPEAN\'',
- 'dd-mm-yy' => 'set DateStyle to \'POSTGRES, EUROPEAN\'',
'dd.mm.yy' => 'set DateStyle to \'GERMAN\''
},
'Oracle' => {
'yy-mm-dd' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'YY-MM-DD\'',
'yyyy-mm-dd' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'YYYY-MM-DD\'',
'mm/dd/yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'MM/DD/YY\'',
- 'mm-dd-yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'MM-DD-YY\'',
'dd/mm/yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD/MM/YY\'',
- 'dd-mm-yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD-MM-YY\'',
'dd.mm.yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD.MM.YY\'',
});
$form->{sid} = $form->{dbdefault};
&dbconnect_vars($form, $form->{dbdefault});
- my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
if ($form->{dbdriver} eq 'Pg') {
next if ($db =~ /^template/);
&dbconnect_vars($form, $db);
- my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
$query =
dbconnect_vars($form, $form->{dbdefault});
- my $dbh = DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) || $form->dberror();
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) || $form->dberror();
my $query = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|;
my ($cluster_encoding) = $dbh->selectrow_array($query);
$dbh->disconnect();
$form->{sid} = $form->{dbdefault};
&dbconnect_vars($form, $form->{dbdefault});
my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
$form->{db} =~ s/\"//g;
my %dbcreate = (
&dbconnect_vars($form, $form->{db});
- $dbh = DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
my $db_charset = $Common::db_encoding_to_charset{$form->{encoding}};
$query = "UPDATE defaults SET coa = ?";
do_query($form, $dbh, $query, $form->{chart});
+ $query = "UPDATE defaults SET accounting_method = ?";
+ do_query($form, $dbh, $query, $form->{accounting_method});
+ $query = "UPDATE defaults SET profit_determination = ?";
+ do_query($form, $dbh, $query, $form->{profit_determination});
+ $query = "UPDATE defaults SET inventory_system = ?";
+ do_query($form, $dbh, $query, $form->{inventory_system});
+ $query = "UPDATE defaults SET curr = ?";
+ do_query($form, $dbh, $query, $form->{defaultcurrency});
$dbh->disconnect;
$form->{sid} = $form->{dbdefault};
&dbconnect_vars($form, $form->{dbdefault});
- my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
my $query = $dbdelete{$form->{dbdriver}};
do_query($form, $dbh, $query);
map { $form->{$_} = $member->{$_} } qw(dbname dbuser dbpasswd dbhost dbport);
dbconnect_vars($form, $form->{dbname});
- my $dbh = DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd});
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd});
next unless $dbh;
closedir(SQLDIR);
}
- my $db_charset = $main::dbcharset;
+ my $db_charset = $::lx_office_conf{system}->{dbcharset};
$db_charset ||= Common::DEFAULT_CHARSET;
my $dbupdater = SL::DBUpgrade2->new(form => $form, dbdriver => $form->{dbdriver});
$db =~ s/^db//;
&dbconnect_vars($form, $db);
- my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
or $form->dberror;
$dbh->do($form->{dboptions}) if ($form->{dboptions});
$form->{sid} = $form->{dbdefault};
my $rc = -2;
- my $db_charset = $main::dbcharset || Common::DEFAULT_CHARSET;
+ my $db_charset = $::lx_office_conf{system}->{dbcharset} || Common::DEFAULT_CHARSET;
map { $_->{description} = SL::Iconv::convert($_->{charset}, $db_charset, $_->{description}) } values %{ $dbupdater->{all_controls} };
$db =~ s/^db//;
&dbconnect_vars($form, $db);
- my $dbh = DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) or $form->dberror;
+ my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) or $form->dberror;
$dbh->do($form->{dboptions}) if ($form->{dboptions});
$main::lxdebug->enter_sub();
my ($self) = @_;
- my $form = \%main::form;
# format dbconnect and dboptions string
dbconnect_vars($self, $self->{dbname});
$main::auth->save_user($self->{login}, map { $_, $self->{$_} } config_vars());
- my $dbh = DBI->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd});
+ my $dbh = SL::DBConnect->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd});
if ($dbh) {
- $self->create_employee_entry($form, $dbh, $self, 1);
+ $self->create_employee_entry($::form, $dbh, $self, 1);
$dbh->disconnect();
}
# add login to employee table if it does not exist
# no error check for employee table, ignore if it does not exist
- my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login});
+ my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login});
+ my ($good_db) = selectrow_query($form, $dbh, qq|select * from pg_tables where tablename = ? and schemaname = ?|, 'schema_info', 'public');
+ my $can_delete;
+ ($can_delete) = selectrow_query($form, $dbh, qq|SELECT tag FROM schema_info WHERE tag = ?|, 'employee_deleted') if $good_db;
if (!$id) {
my $query = qq|INSERT INTO employee (login, name, workphone, role) VALUES (?, ?, ?, ?)|;
do_query($form, $dbh, $query, ($self->{login}, $myconfig->{name}, $myconfig->{tel}, "user"));
- } elsif ($update_existing) {
- my $query = qq|UPDATE employee SET name = ?, workphone = ?, role = 'user' WHERE id = ?|;
+ } elsif ($update_existing && $can_delete) {
+ my $query = qq|UPDATE employee SET name = ?, workphone = ?, role = 'user', deleted = 'f' WHERE id = ?|;
do_query($form, $dbh, $query, $myconfig->{name}, $myconfig->{tel}, $id);
}
my @conf = qw(address admin businessnumber company countrycode
currency dateformat dbconnect dbdriver dbhost dbport dboptions
dbname dbuser dbpasswd email fax name numberformat password
- printer role sid signature stylesheet tel templates vclimit angebote
+ printer sid signature stylesheet tel templates vclimit angebote
bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen
taxnumber co_ustid duns menustyle template_format default_media
default_printer_id copies show_form_details favorites
pdonumber sdonumber hide_cvar_search_options mandatory_departments
- sepa_creditor_id);
+ sepa_creditor_id taxincluded_checked);
$main::lxdebug->leave_sub();
$main::lxdebug->leave_sub();
}
-1;
+sub data {
+ +{ %{ $_[0] } }
+}
+1;