-#====================================================================
+#========= ===========================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
undef $standard_dbh;
}
+sub read_version {
+ my ($self) = @_;
+
+ open VERSION_FILE, "VERSION"; # New but flexible code reads version from VERSION-file
+ my $version = <VERSION_FILE>;
+ $version =~ s/[^0-9A-Za-z\.\_\-]//g; # only allow numbers, letters, points, underscores and dashes. Prevents injecting of malicious code.
+ close VERSION_FILE;
+
+ return $version;
+}
+
sub new {
$main::lxdebug->enter_sub();
bless $self, $type;
- open VERSION_FILE, "VERSION"; # New but flexible code reads version from VERSION-file
- $self->{version} = <VERSION_FILE>;
- close VERSION_FILE;
- $self->{version} =~ s/[^0-9A-Za-z\.\_\-]//g; # only allow numbers, letters, points, underscores and dashes. Prevents injecting of malicious code.
+ $self->{version} = $self->read_version;
$main::lxdebug->leave_sub();
foreach my $idx (0 .. scalar @{ $curr->{$key} } - 1) {
my $first_array_entry = 1;
- foreach my $hash_key (sort keys %{ $curr->{$key}->[$idx] }) {
- push @result, $self->_flatten_variables_rec($curr->{$key}->[$idx], $prefix . $key . ($first_array_entry ? '[+].' : '[].'), $hash_key);
- $first_array_entry = 0;
+ my $element = $curr->{$key}[$idx];
+
+ if ('HASH' eq ref $element) {
+ foreach my $hash_key (sort keys %{ $element }) {
+ push @result, $self->_flatten_variables_rec($element, $prefix . $key . ($first_array_entry ? '[+].' : '[].'), $hash_key);
+ $first_array_entry = 0;
+ }
+ } else {
+ @result = ({ 'key' => $prefix . $key . ($first_array_entry ? '[+]' : '[]'), 'value' => $element });
}
}
}
my ($self, $myconfig) = @_;
# connect to database
- my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options)
- or $self->dberror;
+ my $dbh = SL::DBConnect->connect or $self->dberror;
# set db options
if ($myconfig->{dboptions}) {
my ($self, $myconfig) = @_;
# connect to database
- my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options(AutoCommit => 0))
- or $self->dberror;
+ my $dbh = SL::DBConnect->connect(SL::DBConnect->get_connect_args(AutoCommit => 0)) or $self->dberror;
# set db options
if ($myconfig->{dboptions}) {
return $closed;
}
+# prevents bookings to the to far away future
+sub date_max_future {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $date, $myconfig) = @_;
+ my $dbh = $self->dbconnect($myconfig);
+
+ my $query = "SELECT 1 FROM defaults WHERE ? - current_date > max_future_booking_interval";
+ my $sth = prepare_execute_query($self, $dbh, $query, conv_date($date));
+
+ my ($max_future_booking_interval) = $sth->fetchrow_array;
+
+ $main::lxdebug->leave_sub();
+
+ return $max_future_booking_interval;
+}
+
+
sub update_balance {
$main::lxdebug->enter_sub();
my $query = qq|SELECT count(*) FROM $table $obsolete|;
my ($count) = selectrow_query($self, $dbh, $query);
- if ($count < $myconfig->{vclimit}) {
+ if ($count <= $myconfig->{vclimit}) {
$query = qq|SELECT id, name, salesman_id
FROM $table $obsolete
ORDER BY name|;