X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FForm.pm;h=464405ca40eae528f61cf8632e7298cc4c0b73e3;hb=0a25d5a4019fabab620cae0ff7a0a713d132d2fa;hp=7803fc394b94aca0928c7051f47b4a8cc95719d2;hpb=41a039692bf1d655df629fd833fd6d6d428eb29b;p=kivitendo-erp.git diff --git a/SL/Form.pm b/SL/Form.pm index 7803fc394..464405ca4 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -43,11 +43,21 @@ use HTML::Template; use SL::Template; use CGI::Ajax; use SL::DBUtils; +use SL::Mailer; use SL::Menu; 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); @@ -69,61 +79,77 @@ sub _request_to_hash { $main::lxdebug->enter_sub(2); my ($input) = @_; - my ($i, $loc, $key, $val); - my (%ATTACH, $f, $header, $header_body, $len, $buf); - my ($boundary, @list, $size, $body, $x, $blah, $name); - - if ($ENV{'CONTENT_TYPE'} - && ($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data; boundary=(.+)$/)) { - $boundary = quotemeta('--' . $1); - @list = split(/$boundary/, $input); - - # For some reason there are always 2 extra, that are empty - $size = @list - 2; - - for ($x = 1; $x <= $size; $x++) { - $header_body = $list[$x]; - $header_body =~ /\r\n\r\n|\n\n/; - - # Here we split the header and body - $header = $`; - $body = $'; #' - $body =~ s/\r\n$//; - - # Now we try to get the file name - $name = $header; - $name =~ /name=\"(.+)\"/; - ($name, $blah) = split(/\"/, $1); - - # If the form name is not attach, then we need to parse this like - # regular form data - if ($name ne "attach") { - $body =~ s/%([0-9a-fA-Z]{2})/pack("c",hex($1))/eg; - $ATTACH{$name} = $body; - - # Otherwise it is an attachment and we need to finish it up - } elsif ($name eq "attach") { - $header =~ /filename=\"(.+)\"/; - $ATTACH{'FILE_NAME'} = $1; - $ATTACH{'FILE_NAME'} =~ s/\"//g; - $ATTACH{'FILE_NAME'} =~ s/\s//g; - $ATTACH{'FILE_CONTENT'} = $body; - - for ($i = $x; $list[$i]; $i++) { - $list[$i] =~ s/^.+name=$//; - $list[$i] =~ /\"(\w+)\"/; - $ATTACH{$1} = $'; #' + + if (!$ENV{'CONTENT_TYPE'} + || ($ENV{'CONTENT_TYPE'} !~ /multipart\/form-data\s*;\s*boundary\s*=\s*(.+)$/)) { + $main::lxdebug->leave_sub(2); + return _input_to_hash($input); + } + + my ($name, $filename, $headers_done, $content_type, $boundary_found, $need_cr); + my %params; + + my $boundary = '--' . $1; + + foreach my $line (split m/\n/, $input) { + last if (($line eq "${boundary}--") || ($line eq "${boundary}--\r")); + + if (($line eq $boundary) || ($line eq "$boundary\r")) { + $params{$name} =~ s|\r?\n$|| if $name; + + undef $name, $filename; + + $headers_done = 0; + $content_type = "text/plain"; + $boundary_found = 1; + $need_cr = 0; + + next; + } + + next unless $boundary_found; + + if (!$headers_done) { + $line =~ s/[\r\n]*$//; + + if (!$line) { + $headers_done = 1; + next; + } + + if ($line =~ m|^content-disposition\s*:.*?form-data\s*;|i) { + if ($line =~ m|filename\s*=\s*"(.*?)"|i) { + $filename = $1; + substr $line, $-[0], $+[0] - $-[0], ""; + } + + if ($line =~ m|name\s*=\s*"(.*?)"|i) { + $name = $1; + substr $line, $-[0], $+[0] - $-[0], ""; } + + $params{$name} = ""; + $params{FILENAME} = $filename if ($filename); + + next; + } + + if ($line =~ m|^content-type\s*:\s*(.*?)$|i) { + $content_type = $1; } + + next; } - $main::lxdebug->leave_sub(2); - return %ATTACH; + next unless $name; - } else { - $main::lxdebug->leave_sub(2); - return _input_to_hash($input); + $params{$name} .= "${line}\n"; } + + $params{$name} =~ s|\r?\n$|| if $name; + + $main::lxdebug->leave_sub(2); + return %params; } sub new { @@ -523,6 +549,8 @@ sub parse_html_template { my $output = $template->output(); + $output = $main::locale->{iconv}->convert($output) if ($main::locale); + $main::lxdebug->leave_sub(); return $output; @@ -812,8 +840,6 @@ sub parse_template { if ($self->{media} eq 'email') { - use SL::Mailer; - my $mail = new Mailer; map { $mail->{$_} = $self->{$_} } @@ -1042,7 +1068,7 @@ sub dbconnect_noauto { $main::lxdebug->enter_sub(); my ($self, $myconfig) = @_; - + # connect to database $dbh = DBI->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, @@ -1059,6 +1085,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(); @@ -1091,6 +1129,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 @@ -1098,6 +1146,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"; @@ -1112,6 +1170,7 @@ sub update_exchangerate { SET $set WHERE curr = ? AND transdate = ?|; + } else { $query = qq|INSERT INTO exchangerate (curr, buy, sell, transdate) VALUES (?, $buy, $sell, ?)|; @@ -1129,12 +1188,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(); @@ -1150,13 +1212,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(); @@ -1173,103 +1243,125 @@ 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 eq ""); $main::lxdebug->leave_sub(); 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 $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); - } - } + $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}); - 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; + 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); } } - $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; - - $dbh->disconnect; + 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; + } } + $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; + $main::lxdebug->leave_sub(); } @@ -1282,10 +1374,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(); @@ -1301,10 +1392,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(); @@ -1320,11 +1410,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(); @@ -1381,7 +1470,7 @@ sub add_shipto { shiptocontact, shiptophone, shiptofax, shiptoemail, module) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|; do_query($self, $dbh, $query, $id, @values, $module); - } + } } } @@ -1394,8 +1483,8 @@ sub get_employee { my ($self, $dbh) = @_; my $query = qq|SELECT id, name FROM employee WHERE login = ?|; - ($self->{employee_id}, $self->{employee}) = selectrow_query($self, $dbh, $query, $self->{login}); - $self->{employee_id} *= 1; + ($self->{"employee_id"}, $self->{"employee"}) = selectrow_query($self, $dbh, $query, $self->{login}); + $self->{"employee_id"} *= 1; $main::lxdebug->leave_sub(); } @@ -1407,7 +1496,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 = ?|, @@ -1426,8 +1515,6 @@ sub get_salesman { map({ $self->{"salesman_$_"} =~ s/\\n/\n/g; } qw(address company)); } - $dbh->disconnect(); - $main::lxdebug->leave_sub(); } @@ -1436,10 +1523,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(); } @@ -1552,7 +1638,7 @@ sub _get_charts { my $transdate = quote_db_date($params->{transdate}); my $query = - qq|SELECT c.accno, c.description, c.link, tk.taxkey_id, tk.tax_id | . + qq|SELECT c.id, c.accno, c.description, c.link, tk.taxkey_id, tk.tax_id | . qq|FROM chart c | . qq|LEFT JOIN taxkeys tk ON | . qq|(tk.id = (SELECT id FROM taxkeys | . @@ -1596,11 +1682,10 @@ sub _get_taxzones { sub _get_employees { $main::lxdebug->enter_sub(); - my ($self, $dbh, $key) = @_; + my ($self, $dbh, $default_key, $key) = @_; - $key = "all_employees" unless ($key); - $self->{$key} = - selectall_hashref_query($self, $dbh, qq|SELECT * FROM employee|); + $key = $default_key unless ($key); + $self->{$key} = selectall_hashref_query($self, $dbh, qq|SELECT * FROM employee ORDER BY name|); $main::lxdebug->leave_sub(); } @@ -1680,7 +1765,7 @@ sub _get_customers { $key = "all_customers" unless ($key); - my $query = qq|SELECT * FROM customer|; + my $query = qq|SELECT * FROM customer WHERE NOT obsolete ORDER BY name|; $self->{$key} = selectall_hashref_query($self, $dbh, $query); @@ -1694,7 +1779,7 @@ sub _get_vendors { $key = "all_vendors" unless ($key); - my $query = qq|SELECT * FROM vendor|; + my $query = qq|SELECT * FROM vendor WHERE NOT obsolete ORDER BY name|; $self->{$key} = selectall_hashref_query($self, $dbh, $query); @@ -1708,7 +1793,7 @@ sub _get_departments { $key = "all_departments" unless ($key); - my $query = qq|SELECT * FROM department|; + my $query = qq|SELECT * FROM department ORDER BY description|; $self->{$key} = selectall_hashref_query($self, $dbh, $query); @@ -1721,7 +1806,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"; @@ -1762,7 +1847,11 @@ sub get_lists { } if ($params{"employees"}) { - $self->_get_employees($dbh, $params{"employees"}); + $self->_get_employees($dbh, "all_employees", $params{"employees"}); + } + + if ($params{"salesmen"}) { + $self->_get_employees($dbh, "all_salesmen", $params{"salesmen"}); } if ($params{"business_types"}) { @@ -1793,8 +1882,6 @@ sub get_lists { $self->_get_departments($dbh, $params{"departments"}); } - $dbh->disconnect(); - $main::lxdebug->leave_sub(); } @@ -1805,7 +1892,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"; @@ -1854,7 +1941,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"; @@ -1924,8 +2011,6 @@ sub all_vc { $self->{payment_terms} = selectall_hashref_query($self, $dbh, $query); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -1934,7 +2019,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 @@ -1962,7 +2047,6 @@ sub language_payment { $self->{BUCHUNGSGRUPPEN} = selectall_hashref_query($self, $dbh, $query); - $dbh->disconnect; $main::lxdebug->leave_sub(); } @@ -1972,7 +2056,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') { @@ -1987,15 +2071,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") { @@ -2012,7 +2094,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}) { @@ -2206,8 +2288,6 @@ sub create_links { } - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -2255,7 +2335,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; @@ -2270,8 +2350,6 @@ sub current_date { ($thisdate) = selectrow_query($self, $dbh, $query); - $dbh->disconnect; - $main::lxdebug->leave_sub(); return $thisdate; @@ -2466,9 +2544,9 @@ sub save_history { } my $query = - qq|INSERT INTO history_erp (trans_id, employee_id, addition, what_done, snumbers) | . - qq|VALUES (?, ?, ?, ?, ?)|; - my @values = (conv_i($self->{id}), conv_i($self->{employee_id}), + 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); @@ -2581,7 +2659,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 @@ -2620,7 +2698,6 @@ sub get_partsgroup { $self->{all_partsgroup} = selectall_hashref_query($self, $dbh, $query, @values); - $dbh->disconnect; $main::lxdebug->leave_sub(); } @@ -2629,7 +2706,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|; @@ -2643,8 +2720,6 @@ sub get_pricegroup { $self->{all_pricegroup} = selectall_hashref_query($self, $dbh, $query); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -2657,11 +2732,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), @@ -2686,12 +2757,9 @@ sub all_years { push @all_years, $enddate--; } - $dbh->disconnect if $disconnect; - return @all_years; $main::lxdebug->leave_sub(); } - 1;