$self->{action} = lc $self->{action};
$self->{action} =~ s/( |-|,|\#)/_/g;
- $self->{version} = "2.3.9";
+ $self->{version} = "2.4-RC2";
$main::lxdebug->leave_sub();
$jsscript
$ajax
$fokus
+ <meta name="robots" content="noindex,nofollow" />
<script type="text/javascript" src="js/highlight_input.js"></script>
<link rel="stylesheet" type="text/css" href="css/tabcontent.css" />
$main::lxdebug->enter_sub(2);
my ($self, $myconfig, $amount, $places, $dash) = @_;
+
+ if ($amount eq "") {
+ $amount = 0;
+ }
my $neg = ($amount =~ s/-//);
$amount = $self->round_amount($amount, $places) if ($places =~ /\d/);
my @d = map { s/\d//g; reverse split // } my $tmp = $myconfig->{numberformat}; # get delim chars
- my @p = split /\./, $amount ; # split amount at decimal point
+ my @p = split(/\./, $amount); # split amount at decimal point
$p[0] =~ s/\B(?=(...)*$)/$d[1]/g if $d[1]; # add 1,000 delimiters
$amount = $p[0];
$amount .= $d[0].$p[1].(0 x ($places - length $p[1])) if ($places || $p[1] ne '');
-
+
$amount = do {
($dash =~ /-/) ? ($neg ? "($amount)" : "$amount" ) :
($dash =~ /DRCR/) ? ($neg ? "$amount DR" : "$amount CR" ) :
($neg ? "-$amount" : "$amount" ) ;
};
-
+
+
$main::lxdebug->leave_sub(2);
return $amount;
}
} elsif (($self->{"format"} =~ /html/i) ||
(!$self->{"format"} && ($self->{"IN"} =~ /html$/i))) {
$template = HTMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+ } elsif (($self->{"format"} =~ /xml/i) ||
+ (!$self->{"format"} && ($self->{"IN"} =~ /xml$/i))) {
+ $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+ } elsif ( $self->{"format"} =~ /elsterwinston/i ) {
+ $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+ } elsif ( $self->{"format"} =~ /elstertaxbird/i ) {
+ $template = XMLTemplate->new($self->{"IN"}, $self, $myconfig, $userspath);
+ } elsif ( defined $self->{'format'}) {
+ $self->error("Outputformat not defined. This may be a future feature: $self->{'format'}");
+ } elsif ( $self->{'format'} eq '' ) {
+ $self->error("No Outputformat given: $self->{'format'}");
+ } else { #Catch the rest
+ $self->error("Outputformat not defined: $self->{'format'}");
}
# Copy the notes from the invoice/sales order etc. back to the variable "notes" because that is where most templates expect it to be.
# 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}";
+ $self->{tmpfile} = "$userspath/${fileid}.$self->{IN}" if ( $self->{tmpfile} eq '' );
if ($template->uses_temp_file() || $self->{media} eq 'email') {
$out = $self->{OUT};
$self->{OUT} = ">$self->{tmpfile}";
my ($query, $sth);
my $dbh = $self->dbconnect($myconfig);
-
my %xkeyref = ();
- # now get the account numbers
- $query = qq|SELECT c.accno, c.description, c.link, c.taxkey_id
- FROM chart c
- WHERE c.link LIKE '%$module%'
- ORDER BY c.accno|;
-
- $sth = $dbh->prepare($query);
- $sth->execute || $self->dberror($query);
-
- $self->{accounts} = "";
- while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
-
- foreach my $key (split /:/, $ref->{link}) {
- if ($key =~ /$module/) {
+ if (!$self->{id}) {
- # cross reference for keys
- $xkeyref{ $ref->{accno} } = $key;
-
- push @{ $self->{"${module}_links"}{$key} },
- { accno => $ref->{accno},
- description => $ref->{description},
- taxkey => $ref->{taxkey_id} };
-
- $self->{accounts} .= "$ref->{accno} " unless $key =~ /tax/;
+ my $transdate = "current_date";
+ if ($self->{transdate}) {
+ $transdate = qq|'$self->{transdate}'|;
+ }
+
+ # now get the account numbers
+ $query = qq|SELECT c.accno, c.description, c.link, c.taxkey_id, tk.tax_id
+ FROM chart c, taxkeys tk
+ WHERE c.link LIKE '%$module%' AND c.id=tk.chart_id AND tk.id = (SELECT id from taxkeys where taxkeys.chart_id =c.id AND startdate<=$transdate ORDER BY startdate desc LIMIT 1)
+ ORDER BY c.accno|;
+
+ $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ $self->{accounts} = "";
+ while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
+
+ foreach my $key (split(/:/, $ref->{link})) {
+ if ($key =~ /$module/) {
+
+ # cross reference for keys
+ $xkeyref{ $ref->{accno} } = $key;
+
+ push @{ $self->{"${module}_links"}{$key} },
+ { accno => $ref->{accno},
+ description => $ref->{description},
+ taxkey => $ref->{taxkey_id},
+ tax_id => $ref->{tax_id} };
+
+ $self->{accounts} .= "$ref->{accno} " unless $key =~ /tax/;
+ }
}
}
}
- $sth->finish;
# get taxkeys and description
- $query = qq|SELECT taxkey, taxdescription
+ $query = qq|SELECT id, taxkey, taxdescription
FROM tax|;
$sth = $dbh->prepare($query);
$sth->execute || $self->dberror($query);
}
$sth->finish;
+
+ my $transdate = "current_date";
+ if ($self->{transdate}) {
+ $transdate = qq|'$self->{transdate}'|;
+ }
+
+ # now get the account numbers
+ $query = qq|SELECT c.accno, c.description, c.link, c.taxkey_id, tk.tax_id
+ FROM chart c, taxkeys tk
+ WHERE c.link LIKE '%$module%' AND (((tk.chart_id=c.id) AND NOT(c.link like '%_tax%')) OR (NOT(tk.chart_id=c.id) AND (c.link like '%_tax%'))) AND (((tk.id = (SELECT id from taxkeys where taxkeys.chart_id =c.id AND startdate<=$transdate ORDER BY startdate desc LIMIT 1)) AND NOT(c.link like '%_tax%')) OR (c.link like '%_tax%'))
+ ORDER BY c.accno|;
+
+ $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ $self->{accounts} = "";
+ while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
+
+ foreach my $key (split(/:/, $ref->{link})) {
+ if ($key =~ /$module/) {
+
+ # cross reference for keys
+ $xkeyref{ $ref->{accno} } = $key;
+
+ push @{ $self->{"${module}_links"}{$key} },
+ { accno => $ref->{accno},
+ description => $ref->{description},
+ taxkey => $ref->{taxkey_id},
+ tax_id => $ref->{tax_id} };
+
+ $self->{accounts} .= "$ref->{accno} " unless $key =~ /tax/;
+ }
+ }
+ }
+
+
# get amounts from individual entries
$query = qq|SELECT c.accno, c.description, a.source, a.amount, a.memo,
- a.transdate, a.cleared, a.project_id, p.projectnumber, a.taxkey, t.rate
+ a.transdate, a.cleared, a.project_id, p.projectnumber, a.taxkey, t.rate, t.id
FROM acc_trans a
JOIN chart c ON (c.id = a.chart_id)
LEFT JOIN project p ON (p.id = a.project_id)
- LEFT Join tax t ON (a.taxkey = t.taxkey)
- WHERE a.trans_id = $self->{id}
+ LEFT JOIN tax t ON (t.id=(SELECT tk.tax_id from taxkeys tk WHERE (tk.taxkey_id=a.taxkey) AND ((CASE WHEN a.chart_id IN (SELECT chart_id FROM taxkeys WHERE taxkey_id=a.taxkey) THEN tk.chart_id=a.chart_id ELSE 1=1 END) OR (c.link='%tax%')) AND startdate <=a.transdate ORDER BY startdate DESC LIMIT 1))
+ WHERE a.trans_id = $self->{id}
AND a.fx_transaction = '0'
ORDER BY a.oid,a.transdate|;
$sth = $dbh->prepare($query);
push @{ $self->{acc_trans}{ $xkeyref{ $ref->{accno} } } }, $ref;
}
- $sth->finish;
+ $sth->finish;
$query = qq|SELECT d.curr AS currencies, d.closedto, d.revtrans,
(SELECT c.accno FROM chart c
WHERE d.fxgain_accno_id = c.id) AS fxgain_accno,
if ($self->{"$self->{vc}_id"}) {
# only setup currency
- ($self->{currency}) = split /:/, $self->{currencies};
+ ($self->{currency}) = split(/:/, $self->{currencies});
} else {
}
+ $sth->finish;
+
$dbh->disconnect;
$main::lxdebug->leave_sub();