use SL::User;
use SL::Common;
use CGI;
+use List::Util qw(max min sum);
my $standard_dbh;
if (($line eq $boundary) || ($line eq "$boundary\r")) {
$params{$name} =~ s|\r?\n$|| if $name;
- undef $name, $filename;
+ undef $name;
+ undef $filename;
$headers_done = 0;
$content_type = "text/plain";
$main::lxdebug->leave_sub();
}
+# calculates the number of rows in a textarea based on the content and column number
+# can be capped with maxrows
sub numtextrows {
$main::lxdebug->enter_sub();
-
my ($self, $str, $cols, $maxrows) = @_;
- my $rows = 0;
-
- map { $rows += int(((length) - 2) / $cols) + 1 } split /\r/, $str;
-
- $maxrows = $rows unless defined $maxrows;
+ my $rows = sum map { int((length() - 2) / $cols) + 1 } split /\r/, $str;
+ $maxrows ||= $rows;
$main::lxdebug->leave_sub();
-
- return ($rows > $maxrows) ? $maxrows : $rows;
+ return min $rows, $maxrows;
}
sub dberror {
my ($stylesheet, $favicon);
if ($ENV{HTTP_USER_AGENT}) {
+ my $doctype;
+
+ if ($ENV{'HTTP_USER_AGENT'} =~ m/MSIE\s+\d/) {
+ # Only set the DOCTYPE for Internet Explorer. Other browsers have problems displaying the menu otherwise.
+ $doctype = qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n|;
+ }
my $stylesheets = "$self->{stylesheet} $self->{stylesheets}";
}
print qq|Content-Type: text/html; charset=${db_charset};
-<html>
+${doctype}<html>
<head>
<title>$self->{titlebar}</title>
$stylesheet
'EVAL_PERL' => 0,
'ABSOLUTE' => 1,
'CACHE_SIZE' => 0,
+ 'PLUGIN_BASE' => 'SL::Template::Plugin',
}) || die;
map { $additional_params->{$_} ||= $self->{$_} } keys %{ $self };
sub show_generic_error {
my ($self, $error, $title, $action) = @_;
- my $add_params = {};
- $add_params->{"title"} = $title if ($title);
- $self->{"label_error"} = $error;
+ my $add_params = {
+ 'title_error' => $title,
+ 'label_error' => $error,
+ };
my @vars;
if ($action) {
}
$add_params->{"VARIABLES"} = \@vars;
+ $self->{title} = $title if ($title);
+
$self->header();
- print($self->parse_html_template("generic/error", $add_params));
+ print $self->parse_html_template2("generic/error", $add_params);
die("Error: $error\n");
}
sub show_generic_information {
- my ($self, $error, $title) = @_;
+ my ($self, $text, $title) = @_;
+
+ my $add_params = {
+ 'title_information' => $title,
+ 'label_information' => $text,
+ };
- my $add_params = {};
- $add_params->{"title"} = $title if ($title);
- $self->{"label_information"} = $error;
+ $self->{title} = $title if ($title);
$self->header();
- print($self->parse_html_template("generic/information", $add_params));
+ print $self->parse_html_template2("generic/information", $add_params);
die("Information: $error\n");
}
$formname ||= $self->{formname};
my %formname_translations = (
- bin_list => $main::locale->text('Bin List'),
- credit_note => $main::locale->text('Credit Note'),
- invoice => $main::locale->text('Invoice'),
- packing_list => $main::locale->text('Packing List'),
- pick_list => $main::locale->text('Pick List'),
- proforma => $main::locale->text('Proforma Invoice'),
- purchase_order => $main::locale->text('Purchase Order'),
- request_quotation => $main::locale->text('RFQ'),
- sales_order => $main::locale->text('Confirmation'),
- sales_quotation => $main::locale->text('Quotation'),
- storno_invoice => $main::locale->text('Storno Invoice'),
- storno_packing_list => $main::locale->text('Storno Packing List'),
+ bin_list => $main::locale->text('Bin List'),
+ credit_note => $main::locale->text('Credit Note'),
+ invoice => $main::locale->text('Invoice'),
+ packing_list => $main::locale->text('Packing List'),
+ pick_list => $main::locale->text('Pick List'),
+ proforma => $main::locale->text('Proforma Invoice'),
+ purchase_order => $main::locale->text('Purchase Order'),
+ request_quotation => $main::locale->text('RFQ'),
+ sales_order => $main::locale->text('Confirmation'),
+ sales_quotation => $main::locale->text('Quotation'),
+ storno_invoice => $main::locale->text('Storno Invoice'),
+ storno_packing_list => $main::locale->text('Storno Packing List'),
);
return $formname_translations{$formname}
$main::lxdebug->enter_sub();
my ($self, $dbh, $curr, $transdate, $buy, $sell) = @_;
-
+ my ($query);
# some sanity check for currency
if ($curr eq '') {
$main::lxdebug->leave_sub();
return;
}
- my $query = qq|SELECT curr FROM defaults|;
+ $query = qq|SELECT curr FROM defaults|;
my ($currency) = selectrow_query($self, $dbh, $query);
my ($defaultcurrency) = split m/:/, $currency;
return;
}
- my $query = qq|SELECT e.curr FROM exchangerate e
+ $query = qq|SELECT e.curr FROM exchangerate e
WHERE e.curr = ? AND e.transdate = ?
FOR UPDATE|;
my $sth = prepare_execute_query($self, $dbh, $query, $curr, $transdate);
$main::lxdebug->enter_sub();
my ($self, $dbh, $curr, $transdate, $fld) = @_;
+ my ($query);
unless ($transdate) {
$main::lxdebug->leave_sub();
return 1;
}
- my $query = qq|SELECT curr FROM defaults|;
+ $query = qq|SELECT curr FROM defaults|;
my ($currency) = selectrow_query($self, $dbh, $query);
my ($defaultcurrency) = split m/:/, $currency;
return 1;
}
- my $query = qq|SELECT e.$fld FROM exchangerate e
+ $query = qq|SELECT e.$fld FROM exchangerate e
WHERE e.curr = ? AND e.transdate = ?|;
my ($exchangerate) = selectrow_query($self, $dbh, $query, $curr, $transdate);
sub _get_customers {
$main::lxdebug->enter_sub();
- my ($self, $dbh, $key) = @_;
+ my ($self, $dbh, $key, $limit) = @_;
$key = "all_customers" unless ($key);
+ $limit_clause = "LIMIT $limit" if $limit;
- my $query = qq|SELECT * FROM customer WHERE NOT obsolete ORDER BY name|;
+ my $query = qq|SELECT * FROM customer WHERE NOT obsolete ORDER BY name $limit_clause|;
$self->{$key} = selectall_hashref_query($self, $dbh, $query);
}
if($params{"customers"}) {
- $self->_get_customers($dbh, $params{"customers"});
+ if (ref $params{"customers"} eq 'HASH') {
+ $self->_get_customers($dbh, $params{"customers"}{key}, $params{"customers"}{limit});
+ } else {
+ $self->_get_customers($dbh, $params{"customers"});
+ }
}
if($params{"vendors"}) {
- $self->_get_vendors($dbh, $params{"vendors"});
+ if (ref $params{"vendors"} eq 'HASH') {
+ $self->_get_vendors($dbh, $params{"vendors"}{key}, $params{"vendors"}{limit});
+ } else {
+ $self->_get_vendors($dbh, $params{"vendors"});
+ }
}
if($params{"payments"}) {
LEFT JOIN taxkeys tk ON (tk.chart_id = c.id)
WHERE c.link LIKE ?
AND (tk.id = (SELECT id FROM taxkeys WHERE taxkeys.chart_id = c.id AND startdate <= $transdate ORDER BY startdate DESC LIMIT 1)
- OR c.link LIKE '%_tax%')
+ OR c.link LIKE '%_tax%' OR c.taxkey_id IS NULL)
ORDER BY c.accno|;
$sth = $dbh->prepare($query);
my @ndx = ();
- map { push @ndx, { num => $new->[$_ - 1]->{runningnumber}, ndx => $_ } }
- (1 .. $count);
+ map { push @ndx, { num => $new->[$_ - 1]->{runningnumber}, ndx => $_ } } 1 .. $count;
my $i = 0;
my $formnames = $self->{printed};
my $emailforms = $self->{emailed};
- my $query = qq|DELETE FROM status
+ $query = qq|DELETE FROM status
WHERE (formname = ?) AND (trans_id = ?)|;
do_query($self, $dbh, $query, $self->{formname}, $self->{id});