EekBoek

 view release on metacpan or  search on metacpan

lib/EB/Report/Open.pm  view on Meta::CPAN

			     " AND bsr_bsk_id = bsk_id AND bsr_nr = 1".
			     " AND bsk_date <= ?".
			     $sel.
			     " ORDER BY dbk_acc_id, bsr_rel_code, bsk_date",
			     $per, @$args);

    $rep->start(_T("Openstaande posten"));

    my $cur_rel;
    my $cur_cat;
    my $did;
    while ( my $rr = $sth->fetchrow_arrayref ) {
	my ($bsk_id, $dbk_id, $dbk_desc, $bsk_nr, $bsk_desc, $bsk_date,
	    $bsk_amount, $dbk_type, $dbk_acc_id, $bsr_rel, $bsk_bky) = @$rr;


	# Correct for future payments.
	my $rop = $dbh->do("SELECT sum(bsr_amount)".
			   " FROM Boekstukregels".
			   " WHERE bsr_type IN (@{[DBKTYPE_INKOOP]},@{[DBKTYPE_VERKOOP]})".
			   " AND bsr_date > ?".
			   " AND bsr_paid = ?",
			   $per, $bsk_id);

	if ( $rop && $rop->[0] ) {
	    $bsk_amount -= $rop->[0];
	}

	next unless $bsk_amount;

	if ( defined($cur_rel) && $bsr_rel ne $cur_rel ) {
	    $rep->add({ _style => "trelatie",
			desc => __x("Totaal {rel}", rel  => $cur_rel),
			amt  => numfmt($rtot),
		      });
	    $rtot = 0;
	}

	if ( defined($cur_cat) && $dbk_acc_id ne $cur_cat ) {
	    $rep->add({ _style => "tdebcrd",
			desc => __x("Totaal {debcrd}",
				    debcrd => $dbh->lookup($cur_cat, qw(Accounts acc_id acc_desc))),
			amt  => numfmt($gtot),
		      });
	    $gtot = 0;
	    $rtot = 0;
	}

	$bsk_amount = 0-$bsk_amount if $dbk_type == DBKTYPE_INKOOP;

	if ( $eb ) {
	    my $t = lc($dbk_desc);
	    $t =~ s/\s+/_/g;
	    print {$eb} ("adm_relatie ",
			 join(":", $t, $bsk_bky, $bsk_nr), " ",
			 $bsk_date, " \"", $bsr_rel, "\" \"", $bsk_desc, "\" ",
			 numfmt_plain($bsk_amount), "\n");
	}

	my $bsk;
	my $style = $dbk_type == DBKTYPE_INKOOP ? "cdata" :
	  $dbk_type == DBKTYPE_VERKOOP ? "ddata" : "data";
	if ( $bsk_date lt $rep->{per_begin} ) {
	    $bsk = join(":", $dbk_desc, $bsk_bky, $bsk_nr);
	    $style = "prevdata";
	}
	else {
	    $bsk = join(":", $dbk_desc, $bsk_nr);
	}

	$rep->add({ _style => $style,
		    date => datefmt($bsk_date),
		    bsk  => $bsk,
		    desc => $bsk_desc,
		    rel  => $bsr_rel,
		    amt  => numfmt($bsk_amount),
		  });
	$gtot += $bsk_amount;
	$rtot += $bsk_amount;
	$cur_rel = $bsr_rel;
	$cur_cat = $dbk_acc_id;
	$did++;
    }

    if ( defined($cur_rel) ) {
	$rep->add({ _style => "trelatie",
		    desc => __x("Totaal {rel}", rel  => $cur_rel),
		    amt  => numfmt($rtot),
		  });
	$rtot = 0;
    }

    if ( defined($cur_cat) ) {
	$rep->add({ _style => "tdebcrd",
		    desc => __x("Totaal {debcrd}",
				debcrd => $dbh->lookup($cur_cat, qw(Accounts acc_id acc_desc))),
		    amt  => numfmt($gtot),
		  });
    }

    if ( $did ) {
	$rep->add({ _style => "last" });
	$rep->finish;
    }
    else {
	return "!"._T("Geen openstaande posten gevonden");
    }
    return;
}

package EB::Report::Open::Text;

use strict;
use warnings;
use base qw(EB::Report::Reporter::Text);

# Style mods.

sub style {
    my ($self, $row, $cell) = @_;



( run in 0.655 second using v1.01-cache-2.11-cpan-5837b0d9d2c )