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);
$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 {
sub error {
$main::lxdebug->enter_sub();
+ $main::lxdebug->show_backtrace();
+
my ($self, $msg) = @_;
if ($ENV{HTTP_USER_AGENT}) {
$msg =~ s/\n/<br>/g;
$additional_params->{"myconfig_jsc_dateformat"} = $jsc_dateformat;
}
- $additional_params->{"conf_jscalendar"} = $main::jscalendar;
- $additional_params->{"conf_lizenzen"} = $main::lizenzen;
- $additional_params->{"conf_latex_templates"} = $main::latex;
+ $additional_params->{"conf_webdav"} = $main::webdav;
+ $additional_params->{"conf_lizenzen"} = $main::lizenzen;
+ $additional_params->{"conf_latex_templates"} = $main::latex;
$additional_params->{"conf_opendocument_templates"} = $main::opendocument_templates;
my @additional_param_names = keys(%{$additional_params});
$main::lxdebug->enter_sub();
my ($self, $myconfig, $userspath) = @_;
- my $template;
+ my ($template, $out);
+
+ local (*IN, *OUT);
$self->{"cwd"} = getcwd();
$self->{"tmpdir"} = $self->{cwd} . "/${userspath}";
# OUT is used for the media, screen, printer, email
# for postscript we store a copy in a temporary file
my $fileid = time;
- $self->{tmpfile} ||= "$userspath/${fileid}.$self->{IN}";
+ my $prepend_userspath;
+
+ if (!$self->{tmpfile}) {
+ $self->{tmpfile} = "${fileid}.$self->{IN}";
+ $prepend_userspath = 1;
+ }
+
+ $prepend_userspath = 1 if substr($self->{tmpfile}, 0, length $userspath) eq $userspath;
+
+ $self->{tmpfile} =~ s|.*/||;
+ $self->{tmpfile} =~ s/[^a-zA-Z0-9\._\ \-]//g;
+ $self->{tmpfile} = "$userspath/$self->{tmpfile}" if $prepend_userspath;
+
if ($template->uses_temp_file() || $self->{media} eq 'email') {
$out = $self->{OUT};
$self->{OUT} = ">$self->{tmpfile}";
if ($self->{media} eq 'email') {
- use SL::Mailer;
-
my $mail = new Mailer;
map { $mail->{$_} = $self->{$_} }
}
- my $err = $mail->send($out);
+ my $err = $mail->send();
$self->error($self->cleanup . "$err") if ($err);
} else {
open(OUT, $self->{OUT})
or $self->error($self->cleanup . "$self->{OUT} : $!");
} else {
- $self->{attachment_filename} = $self->generate_attachment_filename();
+ $self->{attachment_filename} = ($self->{attachment_filename})
+ ? $self->{attachment_filename}
+ : $self->generate_attachment_filename();
# launch application
print qq|Content-Type: | . $template->get_mime_type() . qq|
$main::lxdebug->enter_sub();
my ($self, $myconfig) = @_;
-
+
# connect to database
$dbh =
DBI->connect($myconfig->{dbconnect}, $myconfig->{dbuser},
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();
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
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";
SET $set
WHERE curr = ?
AND transdate = ?|;
+
} else {
$query = qq|INSERT INTO exchangerate (curr, buy, sell, transdate)
VALUES (?, $buy, $sell, ?)|;
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();
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();
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});
+
+ 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 ($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 ($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();
}
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();
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();
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();
shiptocontact, shiptophone, shiptofax, shiptoemail, module)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|;
do_query($self, $dbh, $query, $id, @values, $module);
- }
+ }
}
}
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();
}
$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 = ?|,
map({ $self->{"salesman_$_"} =~ s/\\n/\n/g; } qw(address company));
}
- $dbh->disconnect();
-
$main::lxdebug->leave_sub();
}
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();
}
$key = "all_shipto" unless ($key);
# get shipping addresses
- my $query =
- qq|SELECT shipto_id, shiptoname, shiptodepartment_1 | .
- qq|FROM shipto | .
- qq|WHERE trans_id = ?|;
+ my $query = qq|SELECT * FROM shipto WHERE trans_id = ?|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query, $vc_id);
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 | .
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();
}
$key = "all_customers" unless ($key);
- my $query = qq|SELECT * FROM customer LIMIT $main::myconfig{vclimit}|;
+ my $query = qq|SELECT * FROM customer WHERE NOT obsolete ORDER BY name|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query);
$key = "all_vendors" unless ($key);
- my $query = qq|SELECT * FROM vendor|; # LIMIT $main::myconfig{vclimit}|;
+ my $query = qq|SELECT * FROM vendor WHERE NOT obsolete ORDER BY name|;
+
+ $self->{$key} = selectall_hashref_query($self, $dbh, $query);
+
+ $main::lxdebug->leave_sub();
+}
+
+sub _get_departments {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $dbh, $key) = @_;
+
+ $key = "all_departments" unless ($key);
+
+ my $query = qq|SELECT * FROM department ORDER BY description|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query);
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";
}
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"}) {
$self->_get_payments($dbh, $params{"payments"});
}
- $dbh->disconnect();
+ if($params{"departments"}) {
+ $self->_get_departments($dbh, $params{"departments"});
+ }
$main::lxdebug->leave_sub();
}
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";
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";
$self->{payment_terms} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
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
$self->{BUCHUNGSGRUPPEN} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
my ($self, $myconfig, $table) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $where;
if ($table eq 'customer') {
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") {
# 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}) {
}
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
my ($self, $myconfig, $thisdate, $days) = @_;
- my $dbh = $self->dbconnect($myconfig);
+ my $dbh = $self->get_standard_dbh($myconfig);
my $query;
$days *= 1;
($thisdate) = selectrow_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
return $thisdate;
}
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);
sub get_history {
$main::lxdebug->enter_sub();
- my $self = shift();
- my $dbh = shift();
- my $trans_id = shift();
- my $restriction = shift();
+ my ($self, $dbh, $trans_id, $restriction, $order) = @_;
+ my ($orderBy, $desc) = split(/\-\-/, $order);
+ $order = " ORDER BY " . ($order eq "" ? " h.itime " : ($desc == 1 ? $orderBy . " DESC " : $orderBy . " "));
my @tempArray;
my $i = 0;
if ($trans_id ne "") {
qq|SELECT h.employee_id, h.itime::timestamp(0) AS itime, h.addition, h.what_done, emp.name, h.snumbers, h.trans_id AS id | .
qq|FROM history_erp h | .
qq|LEFT JOIN employee emp ON (emp.id = h.employee_id) | .
- qq|WHERE trans_id = ? |
- . $restriction;
-
+ qq|WHERE trans_id = | . $trans_id
+ . $restriction . qq| |
+ . $order;
+
my $sth = $dbh->prepare($query) || $self->dberror($query);
- $sth->execute($trans_id) || $self->dberror("$query ($trans_id)");
+ $sth->execute() || $self->dberror("$query");
while(my $hash_ref = $sth->fetchrow_hashref()) {
$hash_ref->{addition} = $main::locale->text($hash_ref->{addition});
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
$self->{all_partsgroup} = selectall_hashref_query($self, $dbh, $query, @values);
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
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|;
$self->{all_pricegroup} = selectall_hashref_query($self, $dbh, $query);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
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),
push @all_years, $enddate--;
}
- $dbh->disconnect if $disconnect;
-
return @all_years;
$main::lxdebug->leave_sub();
}
-
1;