sub _fill {
$main::lxdebug->enter_sub();
- my $text = shift;
+ my $text = shift // '';
my $field_len = shift;
my $fill_char = shift;
my $alignment = shift || 'right';
- my $text_len = length($text // '');
+ my $text_len = length $text;
if ($field_len < $text_len) {
$text = substr $text, 0, $field_len;
ct.name, ct.ustid,
c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
ar.invoice,
- t.rate AS taxrate
+ t.rate AS taxrate,
+ 'ar' as table
FROM acc_trans ac
LEFT JOIN ar ON (ac.trans_id = ar.id)
LEFT JOIN customer ct ON (ar.customer_id = ct.id)
ct.name,ct.ustid,
c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
ap.invoice,
- t.rate AS taxrate
+ t.rate AS taxrate,
+ 'ap' as table
FROM acc_trans ac
LEFT JOIN ap ON (ac.trans_id = ap.id)
LEFT JOIN vendor ct ON (ap.vendor_id = ct.id)
gl.description AS name, NULL as ustid,
c.accno, c.taxkey_id as charttax, c.datevautomatik, c.id, ac.chart_link AS link,
FALSE AS invoice,
- t.rate AS taxrate
+ t.rate AS taxrate,
+ 'gl' as table
FROM acc_trans ac
LEFT JOIN gl ON (ac.trans_id = gl.id)
LEFT JOIN chart c ON (ac.chart_id = c.id)
# Problem: we can't distinguish between AR and AP and normal invoices via boolean "invoice"
# for AR and AP transaction exit the loop as soon as an AR or AP account is found
# there must be only one AR or AP chart in the booking
- if ( $trans->[$j]->{'link'} eq 'AR' or $trans->[$j]->{'link'} eq 'AP') {
+ # since it is possible to do this kind of things with GL too, make sure those don't get aborted in case someone
+ # manually pays an invoice in GL.
+ if ($trans->[$j]->{table} ne 'gl' and ($trans->[$j]->{'link'} eq 'AR' or $trans->[$j]->{'link'} eq 'AP')) {
$notsplitindex = $j; # position in booking with highest amount
$absumsatz = $trans->[$j]->{'amount'};
last;
$header .= _fill($stamm->{dfvkz}, 2, '0');
$header .= _fill($stamm->{beraternr}, 7, '0');
$header .= _fill($stamm->{mandantennr}, 5, '0');
- $header .= _fill($stamm->{abrechnungsnr} . $jahr, 6, '0');
+ $header .= _fill(($stamm->{abrechnungsnr} // '') . $jahr, 6, '0');
$header .= $self->from ? $self->from->strftime('%d%m%y') : '';
$header .= $self->to ? $self->to->strftime('%d%m%y') : '';
if ($transaction->[$haben]->{'name'} ne "") {
$buchungstext = "\x1E" . $transaction->[$haben]->{'name'} . "\x1C";
}
- if ($transaction->[$haben]->{'ustid'} ne "") {
+ if (($transaction->[$haben]->{'ustid'} // '') ne "") {
$ustid = "\xBA" . $transaction->[$haben]->{'ustid'} . "\x1C";
}
- if ($transaction->[$haben]->{'duedate'} ne "") {
+ if (($transaction->[$haben]->{'duedate'} // '') ne "") {
$belegfeld2 = "\xBE" . &datetofour($transaction->[$haben]->{'duedate'}, 1) . "\x1C";
}
}
print(EV $ev_header);
foreach my $file (@ed_versionset) {
- print(EV $ed_versionset[$file]);
+ print(EV $file);
}
close(EV);
###