X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=SL%2FForm.pm;h=5a9272465e7fc3d41e1b36f3f953ba2476aa8a41;hb=088f6a9721fece191bcc8d11a144b3b958b6c0c8;hp=c6e146468928d3432eca36cdf9ba4fb9f31d28b5;hpb=68339fe0776df11b47728f747f5b16c807bdf09d;p=kivitendo-erp.git
diff --git a/SL/Form.pm b/SL/Form.pm
index c6e146468..5a9272465 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -40,6 +40,7 @@ use Data::Dumper;
use Cwd;
use HTML::Template;
+use Template;
use SL::Template;
use CGI::Ajax;
use SL::DBUtils;
@@ -49,6 +50,15 @@ use SL::User;
use SL::Common;
use CGI;
+my $standard_dbh;
+
+sub DESTROY {
+ if ($standard_dbh) {
+ $standard_dbh->disconnect();
+ undef $standard_dbh;
+ }
+}
+
sub _input_to_hash {
$main::lxdebug->enter_sub(2);
@@ -171,7 +181,7 @@ sub new {
$self->{action} = lc $self->{action};
$self->{action} =~ s/( |-|,|\#)/_/g;
- $self->{version} = "2.4.2";
+ $self->{version} = "2.4.3";
$main::lxdebug->leave_sub();
@@ -376,10 +386,15 @@ sub header {
if ($ENV{HTTP_USER_AGENT}) {
- if ($self->{stylesheet} && (-f "css/$self->{stylesheet}")) {
- $stylesheet =
- qq|
- |;
+ my $stylesheets = "$self->{stylesheet} $self->{stylesheets}";
+
+ $stylesheets =~ s|^\s*||;
+ $stylesheets =~ s|\s*$||;
+ foreach my $file (split m/\s+/, $stylesheets) {
+ $file =~ s|.*/||;
+ next if (! -f "css/$file");
+
+ $stylesheet .= qq|\n|;
}
$self->{favicon} = "favicon.ico" unless $self->{favicon};
@@ -465,7 +480,7 @@ sub header {
$main::lxdebug->leave_sub();
}
-sub parse_html_template {
+sub _prepare_html_template {
$main::lxdebug->enter_sub();
my ($self, $file, $additional_params) = @_;
@@ -499,14 +514,6 @@ sub parse_html_template {
die($info);
}
- my $template = HTML::Template->new("filename" => $file,
- "die_on_bad_params" => 0,
- "strict" => 0,
- "case_sensitive" => 1,
- "loop_context_vars" => 1,
- "global_vars" => 1);
-
- $additional_params = {} unless ($additional_params);
if ($self->{"DEBUG"}) {
$additional_params->{"DEBUG"} = $self->{"DEBUG"};
}
@@ -530,16 +537,68 @@ sub parse_html_template {
$additional_params->{"conf_latex_templates"} = $main::latex;
$additional_params->{"conf_opendocument_templates"} = $main::opendocument_templates;
- my @additional_param_names = keys(%{$additional_params});
+ if (%main::debug_options) {
+ map { $additional_params->{'DEBUG_' . uc($_)} = $main::debug_options{$_} } keys %main::debug_options;
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $file;
+}
+
+sub parse_html_template {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $file, $additional_params) = @_;
+
+ $additional_params ||= { };
+
+ $file = $self->_prepare_html_template($file, $additional_params);
+
+ my $template = HTML::Template->new("filename" => $file,
+ "die_on_bad_params" => 0,
+ "strict" => 0,
+ "case_sensitive" => 1,
+ "loop_context_vars" => 1,
+ "global_vars" => 1);
+
foreach my $key ($template->param()) {
- my $param = $self->{$key};
- $param = $additional_params->{$key} if (grep(/^${key}$/, @additional_param_names));
+ my $param = $additional_params->{$key} || $self->{$key};
$param = [] if (($template->query("name" => $key) eq "LOOP") && (ref($param) ne "ARRAY"));
$template->param($key => $param);
}
my $output = $template->output();
+ $output = $main::locale->{iconv}->convert($output) if ($main::locale);
+
+ $main::lxdebug->leave_sub();
+
+ return $output;
+}
+
+sub parse_html_template2 {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $file, $additional_params) = @_;
+
+ $additional_params ||= { };
+
+ $file = $self->_prepare_html_template($file, $additional_params);
+
+ my $template = Template->new({ 'INTERPOLATE' => 0,
+ 'EVAL_PERL' => 0,
+ 'ABSOLUTE' => 1,
+ 'CACHE_SIZE' => 0,
+ }) || die;
+
+ map { $additional_params->{$_} ||= $self->{$_} } keys %{ $self };
+
+ my $output;
+ $template->process($file, $additional_params, \$output);
+
+ $output = $main::locale->{iconv}->convert($output) if ($main::locale);
+
$main::lxdebug->leave_sub();
return $output;
@@ -636,7 +695,9 @@ sub redirect {
if ($self->{callback}) {
- ($script, $argv) = split(/\?/, $self->{callback});
+ ($script, $argv) = split(/\?/, $self->{callback}, 2);
+ $script =~ s|.*/||;
+ $script =~ s|[^a-zA-Z0-9_\.]||g;
exec("perl", "$script", $argv);
} else {
@@ -926,8 +987,10 @@ Content-Length: $numbytes
$main::lxdebug->leave_sub();
}
-sub generate_attachment_filename {
- my ($self) = @_;
+sub get_formname_translation {
+ my ($self, $formname) = @_;
+
+ $formname ||= $self->{formname};
my %formname_translations = (
bin_list => $main::locale->text('Bin List'),
@@ -944,7 +1007,13 @@ sub generate_attachment_filename {
storno_packing_list => $main::locale->text('Storno Packing List'),
);
- my $attachment_filename = $formname_translations{$self->{"formname"}};
+ return $formname_translations{$formname}
+}
+
+sub generate_attachment_filename {
+ my ($self) = @_;
+
+ my $attachment_filename = $self->get_formname_translation();
my $prefix =
(grep { $self->{"type"} eq $_ } qw(invoice credit_note)) ? "inv"
: ($self->{"type"} =~ /_quotation$/) ? "quo"
@@ -1057,7 +1126,7 @@ sub dbconnect_noauto {
$main::lxdebug->enter_sub();
my ($self, $myconfig) = @_;
-
+
# connect to database
$dbh =
DBI->connect($myconfig->{dbconnect}, $myconfig->{dbuser},
@@ -1074,6 +1143,18 @@ sub dbconnect_noauto {
return $dbh;
}
+sub get_standard_dbh {
+ $main::lxdebug->enter_sub(2);
+
+ my ($self, $myconfig) = @_;
+
+ $standard_dbh ||= $self->dbconnect_noauto($myconfig);
+
+ $main::lxdebug->leave_sub(2);
+
+ return $standard_dbh;
+}
+
sub update_balance {
$main::lxdebug->enter_sub();
@@ -1106,6 +1187,16 @@ sub update_exchangerate {
if ($curr eq '') {
$main::lxdebug->leave_sub();
return;
+ }
+ my $query = qq|SELECT curr FROM defaults|;
+
+ my ($currency) = selectrow_query($self, $dbh, $query);
+ my ($defaultcurrency) = split m/:/, $currency;
+
+
+ if ($curr eq $defaultcurrency) {
+ $main::lxdebug->leave_sub();
+ return;
}
my $query = qq|SELECT e.curr FROM exchangerate e
@@ -1113,6 +1204,16 @@ sub update_exchangerate {
FOR UPDATE|;
my $sth = prepare_execute_query($self, $dbh, $query, $curr, $transdate);
+ if ($buy == 0) {
+ $buy = "";
+ }
+ if ($sell == 0) {
+ $sell = "";
+ }
+
+ $buy = conv_i($buy, "NULL");
+ $sell = conv_i($sell, "NULL");
+
my $set;
if ($buy != 0 && $sell != 0) {
$set = "buy = $buy, sell = $sell";
@@ -1127,6 +1228,7 @@ sub update_exchangerate {
SET $set
WHERE curr = ?
AND transdate = ?|;
+
} else {
$query = qq|INSERT INTO exchangerate (curr, buy, sell, transdate)
VALUES (?, $buy, $sell, ?)|;
@@ -1144,12 +1246,15 @@ sub save_exchangerate {
my $dbh = $self->dbconnect($myconfig);
- my ($buy, $sell) = (0, 0);
+ my ($buy, $sell);
+
$buy = $rate if $fld eq 'buy';
$sell = $rate if $fld eq 'sell';
+
$self->update_exchangerate($dbh, $currency, $transdate, $buy, $sell);
+
$dbh->disconnect;
$main::lxdebug->leave_sub();
@@ -1165,13 +1270,21 @@ sub get_exchangerate {
return 1;
}
+ my $query = qq|SELECT curr FROM defaults|;
+
+ my ($currency) = selectrow_query($self, $dbh, $query);
+ my ($defaultcurrency) = split m/:/, $currency;
+
+ if ($currency eq $defaultcurrency) {
+ $main::lxdebug->leave_sub();
+ return 1;
+ }
+
my $query = qq|SELECT e.$fld FROM exchangerate e
WHERE e.curr = ? AND e.transdate = ?|;
my ($exchangerate) = selectrow_query($self, $dbh, $query, $curr, $transdate);
- if (!$exchangerate) {
- $exchangerate = 1;
- }
+
$main::lxdebug->leave_sub();
@@ -1188,14 +1301,19 @@ sub check_exchangerate {
return "";
}
- my $dbh = $self->dbconnect($myconfig);
+ my ($defaultcurrency) = $self->get_default_currency($myconfig);
+ if ($currency eq $defaultcurrency) {
+ $main::lxdebug->leave_sub();
+ return 1;
+ }
+
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT e.$fld FROM exchangerate e
WHERE e.curr = ? AND e.transdate = ?|;
+
my ($exchangerate) = selectrow_query($self, $dbh, $query, $currency, $transdate);
- $dbh->disconnect();
- $exchangerate = 1 if ($exchangerate == 0);
$exchangerate = 1 if ($exchangerate eq "");
$main::lxdebug->leave_sub();
@@ -1203,90 +1321,122 @@ sub check_exchangerate {
return $exchangerate;
}
+sub get_default_currency {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig) = @_;
+ my $dbh = $self->get_standard_dbh($myconfig);
+
+ my $query = qq|SELECT curr FROM defaults|;
+
+ my ($curr) = selectrow_query($self, $dbh, $query);
+ my ($defaultcurrency) = split m/:/, $curr;
+
+ $main::lxdebug->leave_sub();
+
+ return $defaultcurrency;
+}
+
+
sub set_payment_options {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $transdate) = @_;
- if ($self->{payment_id}) {
+ return $main::lxdebug->leave_sub() unless ($self->{payment_id});
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
- my $query =
- qq|SELECT p.terms_netto, p.terms_skonto, p.percent_skonto, p.description_long | .
- qq|FROM payment_terms p | .
- qq|WHERE p.id = ?|;
+ my $query =
+ qq|SELECT p.terms_netto, p.terms_skonto, p.percent_skonto, p.description_long | .
+ qq|FROM payment_terms p | .
+ qq|WHERE p.id = ?|;
- ($self->{terms_netto}, $self->{terms_skonto}, $self->{percent_skonto},
- $self->{payment_terms}) =
- selectrow_query($self, $dbh, $query, $self->{payment_id});
+ ($self->{terms_netto}, $self->{terms_skonto}, $self->{percent_skonto},
+ $self->{payment_terms}) =
+ selectrow_query($self, $dbh, $query, $self->{payment_id});
- if ($transdate eq "") {
- if ($self->{invdate}) {
- $transdate = $self->{invdate};
- } else {
- $transdate = $self->{transdate};
- }
+ if ($transdate eq "") {
+ if ($self->{invdate}) {
+ $transdate = $self->{invdate};
+ } else {
+ $transdate = $self->{transdate};
}
+ }
+
+ $query =
+ qq|SELECT ?::date + ?::integer AS netto_date, ?::date + ?::integer AS skonto_date | .
+ qq|FROM payment_terms|;
+ ($self->{netto_date}, $self->{skonto_date}) =
+ selectrow_query($self, $dbh, $query, $transdate, $self->{terms_netto}, $transdate, $self->{terms_skonto});
+ my ($invtotal, $total);
+ my (%amounts, %formatted_amounts);
+
+ if ($self->{type} =~ /_order$/) {
+ $amounts{invtotal} = $self->{ordtotal};
+ $amounts{total} = $self->{ordtotal};
+
+ } elsif ($self->{type} =~ /_quotation$/) {
+ $amounts{invtotal} = $self->{quototal};
+ $amounts{total} = $self->{quototal};
+
+ } else {
+ $amounts{invtotal} = $self->{invtotal};
+ $amounts{total} = $self->{total};
+ }
+
+ map { $amounts{$_} = $self->parse_amount($myconfig, $amounts{$_}) } keys %amounts;
+
+ $amounts{skonto_amount} = $amounts{invtotal} * $self->{percent_skonto};
+ $amounts{invtotal_wo_skonto} = $amounts{invtotal} * (1 - $self->{percent_skonto});
+ $amounts{total_wo_skonto} = $amounts{total} * (1 - $self->{percent_skonto});
+
+ foreach (keys %amounts) {
+ $amounts{$_} = $self->round_amount($amounts{$_}, 2);
+ $formatted_amounts{$_} = $self->format_amount($myconfig, $amounts{$_}, 2);
+ }
+
+ if ($self->{"language_id"}) {
$query =
- qq|SELECT ?::date + ?::integer AS netto_date, ?::date + ?::integer AS skonto_date | .
- qq|FROM payment_terms|;
- ($self->{netto_date}, $self->{skonto_date}) =
- selectrow_query($self, $dbh, $query, $transdate, $self->{terms_netto}, $transdate, $self->{terms_skonto});
-
- my $total = ($self->{invtotal}) ? $self->{invtotal} : $self->{ordtotal};
- my $skonto_amount = $self->parse_amount($myconfig, $total) *
- $self->{percent_skonto};
-
- $self->{skonto_amount} =
- $self->format_amount($myconfig, $skonto_amount, 2);
-
- if ($self->{"language_id"}) {
- $query =
- qq|SELECT t.description_long, l.output_numberformat, l.output_dateformat, l.output_longdates | .
- qq|FROM translation_payment_terms t | .
- qq|LEFT JOIN language l ON t.language_id = l.id | .
- qq|WHERE (t.language_id = ?) AND (t.payment_terms_id = ?)|;
- my ($description_long, $output_numberformat, $output_dateformat,
- $output_longdates) =
- selectrow_query($self, $dbh, $query,
- $self->{"language_id"}, $self->{"payment_id"});
-
- $self->{payment_terms} = $description_long if ($description_long);
-
- if ($output_dateformat) {
- foreach my $key (qw(netto_date skonto_date)) {
- $self->{$key} =
- $main::locale->reformat_date($myconfig, $self->{$key},
- $output_dateformat,
- $output_longdates);
- }
+ qq|SELECT t.description_long, l.output_numberformat, l.output_dateformat, l.output_longdates | .
+ qq|FROM translation_payment_terms t | .
+ qq|LEFT JOIN language l ON t.language_id = l.id | .
+ qq|WHERE (t.language_id = ?) AND (t.payment_terms_id = ?)|;
+ my ($description_long, $output_numberformat, $output_dateformat,
+ $output_longdates) =
+ selectrow_query($self, $dbh, $query,
+ $self->{"language_id"}, $self->{"payment_id"});
+
+ $self->{payment_terms} = $description_long if ($description_long);
+
+ if ($output_dateformat) {
+ foreach my $key (qw(netto_date skonto_date)) {
+ $self->{$key} =
+ $main::locale->reformat_date($myconfig, $self->{$key},
+ $output_dateformat,
+ $output_longdates);
}
+ }
- if ($output_numberformat &&
- ($output_numberformat ne $myconfig->{"numberformat"})) {
- my $saved_numberformat = $myconfig->{"numberformat"};
- $myconfig->{"numberformat"} = $output_numberformat;
- $self->{skonto_amount} =
- $self->format_amount($myconfig, $skonto_amount, 2);
- $myconfig->{"numberformat"} = $saved_numberformat;
- }
+ if ($output_numberformat &&
+ ($output_numberformat ne $myconfig->{"numberformat"})) {
+ my $saved_numberformat = $myconfig->{"numberformat"};
+ $myconfig->{"numberformat"} = $output_numberformat;
+ map { $formatted_amounts{$_} = $self->format_amount($myconfig, $amounts{$_}) } keys %amounts;
+ $myconfig->{"numberformat"} = $saved_numberformat;
}
+ }
- $self->{payment_terms} =~ s/<%netto_date%>/$self->{netto_date}/g;
- $self->{payment_terms} =~ s/<%skonto_date%>/$self->{skonto_date}/g;
- $self->{payment_terms} =~ s/<%skonto_amount%>/$self->{skonto_amount}/g;
- $self->{payment_terms} =~ s/<%total%>/$self->{total}/g;
- $self->{payment_terms} =~ s/<%invtotal%>/$self->{invtotal}/g;
- $self->{payment_terms} =~ s/<%currency%>/$self->{currency}/g;
- $self->{payment_terms} =~ s/<%terms_netto%>/$self->{terms_netto}/g;
- $self->{payment_terms} =~ s/<%account_number%>/$self->{account_number}/g;
- $self->{payment_terms} =~ s/<%bank%>/$self->{bank}/g;
- $self->{payment_terms} =~ s/<%bank_code%>/$self->{bank_code}/g;
+ $self->{payment_terms} =~ s/<%netto_date%>/$self->{netto_date}/g;
+ $self->{payment_terms} =~ s/<%skonto_date%>/$self->{skonto_date}/g;
+ $self->{payment_terms} =~ s/<%currency%>/$self->{currency}/g;
+ $self->{payment_terms} =~ s/<%terms_netto%>/$self->{terms_netto}/g;
+ $self->{payment_terms} =~ s/<%account_number%>/$self->{account_number}/g;
+ $self->{payment_terms} =~ s/<%bank%>/$self->{bank}/g;
+ $self->{payment_terms} =~ s/<%bank_code%>/$self->{bank_code}/g;
- $dbh->disconnect;
- }
+ map { $self->{payment_terms} =~ s/<%${_}%>/$formatted_amounts{$_}/g; } keys %formatted_amounts;
$main::lxdebug->leave_sub();
@@ -1300,10 +1450,9 @@ sub get_template_language {
my $template_code = "";
if ($self->{language_id}) {
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT template_code FROM language WHERE id = ?|;
($template_code) = selectrow_query($self, $dbh, $query, $self->{language_id});
- $dbh->disconnect;
}
$main::lxdebug->leave_sub();
@@ -1319,10 +1468,9 @@ sub get_printer_code {
my $template_code = "";
if ($self->{printer_id}) {
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT template_code, printer_command FROM printers WHERE id = ?|;
($template_code, $self->{printer_command}) = selectrow_query($self, $dbh, $query, $self->{printer_id});
- $dbh->disconnect;
}
$main::lxdebug->leave_sub();
@@ -1338,11 +1486,10 @@ sub get_shipto {
my $template_code = "";
if ($self->{shipto_id}) {
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT * FROM shipto WHERE shipto_id = ?|;
my $ref = selectfirst_hashref_query($self, $dbh, $query, $self->{shipto_id});
map({ $self->{$_} = $ref->{$_} } keys(%$ref));
- $dbh->disconnect;
}
$main::lxdebug->leave_sub();
@@ -1355,6 +1502,7 @@ sub add_shipto {
my $shipto;
my @values;
+
foreach my $item (qw(name department_1 department_2 street zipcode city country
contact phone fax email)) {
if ($self->{"shipto$item"}) {
@@ -1362,6 +1510,7 @@ sub add_shipto {
}
push(@values, $self->{"shipto${item}"});
}
+
if ($shipto) {
if ($self->{shipto_id}) {
my $query = qq|UPDATE shipto set
@@ -1390,8 +1539,10 @@ sub add_shipto {
shiptocontact = ? AND
shiptophone = ? AND
shiptofax = ? AND
- shiptoemail = ?|;
- my $insert_check = selectfirst_hashref_query($self, $dbh, $query, @values);
+ shiptoemail = ? AND
+ module = ? AND
+ trans_id = ?|;
+ my $insert_check = selectfirst_hashref_query($self, $dbh, $query, @values, $module, $id);
if(!$insert_check){
$query =
qq|INSERT INTO shipto (trans_id, shiptoname, shiptodepartment_1, shiptodepartment_2,
@@ -1399,7 +1550,7 @@ sub add_shipto {
shiptocontact, shiptophone, shiptofax, shiptoemail, module)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|;
do_query($self, $dbh, $query, $id, @values, $module);
- }
+ }
}
}
@@ -1425,7 +1576,7 @@ sub get_salesman {
$main::lxdebug->leave_sub() and return unless $salesman_id;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my ($login) =
selectrow_query($self, $dbh, qq|SELECT login FROM employee WHERE id = ?|,
@@ -1444,8 +1595,6 @@ sub get_salesman {
map({ $self->{"salesman_$_"} =~ s/\\n/\n/g; } qw(address company));
}
- $dbh->disconnect();
-
$main::lxdebug->leave_sub();
}
@@ -1454,10 +1603,9 @@ sub get_duedate {
my ($self, $myconfig) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT current_date + terms_netto FROM payment_terms WHERE id = ?|;
($self->{duedate}) = selectrow_query($self, $dbh, $query, $self->{payment_id});
- $dbh->disconnect();
$main::lxdebug->leave_sub();
}
@@ -1697,7 +1845,7 @@ sub _get_customers {
$key = "all_customers" unless ($key);
- my $query = qq|SELECT * FROM customer ORDER BY name|;
+ my $query = qq|SELECT * FROM customer WHERE NOT obsolete ORDER BY name|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query);
@@ -1711,7 +1859,7 @@ sub _get_vendors {
$key = "all_vendors" unless ($key);
- my $query = qq|SELECT * FROM vendor ORDER BY name|;
+ my $query = qq|SELECT * FROM vendor WHERE NOT obsolete ORDER BY name|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query);
@@ -1738,7 +1886,7 @@ sub get_lists {
my $self = shift;
my %params = @_;
- my $dbh = $self->dbconnect(\%main::myconfig);
+ my $dbh = $self->get_standard_dbh(\%main::myconfig);
my ($sth, $query, $ref);
my $vc = $self->{"vc"} eq "customer" ? "customer" : "vendor";
@@ -1814,8 +1962,6 @@ sub get_lists {
$self->_get_departments($dbh, $params{"departments"});
}
- $dbh->disconnect();
-
$main::lxdebug->leave_sub();
}
@@ -1826,7 +1972,7 @@ sub get_name {
my ($self, $myconfig, $table) = @_;
# connect to database
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
$table = $table eq "customer" ? "customer" : "vendor";
my $arap = $self->{arap} eq "ar" ? "ar" : "ap";
@@ -1875,7 +2021,7 @@ sub all_vc {
my ($self, $myconfig, $table, $module) = @_;
my $ref;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
$table = $table eq "customer" ? "customer" : "vendor";
@@ -1945,8 +2091,6 @@ sub all_vc {
$self->{payment_terms} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
@@ -1955,7 +2099,7 @@ sub language_payment {
my ($self, $myconfig) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
# get languages
my $query = qq|SELECT id, description
FROM language
@@ -1983,7 +2127,6 @@ sub language_payment {
$self->{BUCHUNGSGRUPPEN} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
@@ -1993,7 +2136,7 @@ sub all_departments {
my ($self, $myconfig, $table) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $where;
if ($table eq 'customer') {
@@ -2008,15 +2151,13 @@ sub all_departments {
delete($self->{all_departments}) unless (@{ $self->{all_departments} });
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
sub create_links {
$main::lxdebug->enter_sub();
- my ($self, $module, $myconfig, $table) = @_;
+ my ($self, $module, $myconfig, $table, $provided_dbh) = @_;
my ($fld, $arap);
if ($table eq "customer") {
@@ -2033,7 +2174,7 @@ sub create_links {
# get last customers or vendors
my ($query, $sth, $ref);
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $provided_dbh ? $provided_dbh : $self->get_standard_dbh($myconfig);
my %xkeyref = ();
if (!$self->{id}) {
@@ -2227,8 +2368,6 @@ sub create_links {
}
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
@@ -2276,7 +2415,7 @@ sub current_date {
my ($self, $myconfig, $thisdate, $days) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query;
$days *= 1;
@@ -2291,8 +2430,6 @@ sub current_date {
($thisdate) = selectrow_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
return $thisdate;
@@ -2486,12 +2623,12 @@ sub save_history {
&get_employee($self, $dbh);
}
-my $query =
+ my $query =
qq|INSERT INTO history_erp (trans_id, employee_id, addition, what_done, snumbers) | .
qq|VALUES (?, (SELECT id FROM employee WHERE login = ?), ?, ?, ?)|;
- my @values = (conv_i($self->{id}), $self->{login},
- $self->{addition}, $self->{what_done}, "$self->{snumbers}");
- do_query($self, $dbh, $query, @values);
+ my @values = (conv_i($self->{id}), $self->{login},
+ $self->{addition}, $self->{what_done}, "$self->{snumbers}");
+ do_query($self, $dbh, $query, @values);
$main::lxdebug->leave_sub();
}
@@ -2548,8 +2685,14 @@ sub update_defaults {
my ($var) = $sth->fetchrow_array;
$sth->finish;
- $var =~ s/\d+$/ sprintf '%0*d', length($&), $&+1 /e;
- $var ||= 1;
+ if ($var =~ m/\d+$/) {
+ my $new_var = (substr $var, $-[0]) * 1 + 1;
+ my $len_diff = length($var) - $-[0] - length($new_var);
+ $var = substr($var, 0, $-[0]) . ($len_diff > 0 ? '0' x $len_diff : '') . $new_var;
+
+ } else {
+ $var = $var . '1';
+ }
$query = qq|UPDATE defaults SET $fld = ?|;
do_query($self, $dbh, $query, $var);
@@ -2580,8 +2723,15 @@ sub update_business {
WHERE id = ? FOR UPDATE|;
my ($var) = selectrow_query($self, $dbh, $query, $business_id);
- $var =~ s/\d+$/ sprintf '%0*d', length($&), $&+1 /e;
-
+ if ($var =~ m/\d+$/) {
+ my $new_var = (substr $var, $-[0]) * 1 + 1;
+ my $len_diff = length($var) - $-[0] - length($new_var);
+ $var = substr($var, 0, $-[0]) . ($len_diff > 0 ? '0' x $len_diff : '') . $new_var;
+
+ } else {
+ $var = $var . '1';
+ }
+
$query = qq|UPDATE business
SET customernumberinit = ?
WHERE id = ?|;
@@ -2602,7 +2752,7 @@ sub get_partsgroup {
my ($self, $myconfig, $p) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT DISTINCT pg.id, pg.partsgroup
FROM partsgroup pg
@@ -2641,7 +2791,6 @@ sub get_partsgroup {
$self->{all_partsgroup} = selectall_hashref_query($self, $dbh, $query, @values);
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
@@ -2650,7 +2799,7 @@ sub get_pricegroup {
my ($self, $myconfig, $p) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query = qq|SELECT p.id, p.pricegroup
FROM pricegroup p|;
@@ -2664,8 +2813,6 @@ sub get_pricegroup {
$self->{all_pricegroup} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
@@ -2678,11 +2825,7 @@ sub all_years {
my ($self, $myconfig, $dbh) = @_;
- my $disconnect = 0;
- if (! $dbh) {
- $dbh = $self->dbconnect($myconfig);
- $disconnect = 1;
- }
+ $dbh ||= $self->get_standard_dbh($myconfig);
# get years
my $query = qq|SELECT (SELECT MIN(transdate) FROM acc_trans),
@@ -2707,12 +2850,9 @@ sub all_years {
push @all_years, $enddate--;
}
- $dbh->disconnect if $disconnect;
-
return @all_years;
$main::lxdebug->leave_sub();
}
-
1;