#!/usr/bin/perl -w

use utf8;
use strict;
use warnings;

BEGIN {
    unshift @INC, ( $ENV{POPHOME} || '@POPHOME@' ) . '/lib'
      unless $ENV{KUNDE_NO_PERLPATH};
}

use Dbase::Getopt qw(:DEFAULT);
use Dbase::Globals qw(content);
use Dbase::Help qw(DoSelect);
use Loader qw(process_template);

GetOptions(
    'dateinamen-template=s' => \(
        my $DateinamenTemplate =
          '[% USE date(format="%Y-%m-%d"); date.format %].[% user %]'
    ),
);

my %fh;
DoSelect {
    my (
        $ap_vertrieb_user, $kunde_id, $kunde_name,
        $oberkunde_id,     $oberkunde_name
    ) = @_;

    unless ( $fh{$ap_vertrieb_user} ) {
        process_template( { user => $ap_vertrieb_user },
            \$DateinamenTemplate, \my $filename );
        die <<_ unless content($filename);
Konnte für $ap_vertrieb_user keinen Dateinamen ermitteln.
_
        open $fh{$ap_vertrieb_user}, '>', $filename or die <<_;
Kann Datei "$filename" für $ap_vertrieb_user nicht zum Schreiben öffnen: $!
_
        printf { $fh{$ap_vertrieb_user} } <<_;
Kunde                                 Oberkunde
----------------------------------------------------------------------------
_
    }
    printf { $fh{$ap_vertrieb_user} } ( '%-38s' x 2 ) . "\n",
      map $_ && sprintf( '%4d:%s', $_->[0], $_->[1] ),
      [ $kunde_id, $kunde_name ],
      defined $oberkunde_id && [ $oberkunde_id, $oberkunde_name ];
}
<<_
	SELECT    person.user,
	          kunde.id, kunde.name, oberkunde.id, oberkunde.name
	FROM      kunde
	JOIN      person          ON kunde.ap_vertrieb = person.id
	LEFT JOIN kunde oberkunde ON kunde.kunde = oberkunde.id
	WHERE     ( kunde.ende IS NULL OR kunde.ende >= UNIX_TIMESTAMP(NOW()) )
	      AND person.user IS NOT NULL
	ORDER BY  kunde.id
_

__END__

=head1 NAME

kunden_nach_vertrieblichen_ansprechpartnern -
Liste von Kunden jedes vertrieblichen Ansprechpartners erzeugen

=head1 BESCHREIBUNG

Das Programm erzeugt pro vertrieblichem Ansprechpartner eine Datei mit der Liste
der zugehörigen aktiven Kunden, sortiert nach Kundennummer.

=head1 OPTIONEN

=over 4

=item -dateinamen-template Template

Template zur Generierung der Dateinamen.
Voreinstellung:
    [% USE date(format="%Y-%m-%d"); date.format %].[% user %]
D. h., die Datei wird im aktuellen Verzeichnis angelegt und nach dem aktuellen
Datum gefolgt von einem Punkt und dem Benutzernamen des jeweiligen
vertrieblichen Ansprechpartners benannt.

=item -help

=item -?

um (nur) diese Dokumentation anzeigen zu lassen

=back

