#!/usr/bin/perl

# Source: @RPM_PACKAGE_VERSION@-@RPM_PACKAGE_RELEASE@

use utf8;
use strict;
use warnings;

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

select(STDERR); $|=1; select(STDOUT);

print "*** Domains anlegen\n\n" if -t STDIN;

use Umlaut qw(textmodus);
use Dbase::Help;
use Dbase::Help qw(DoTime);
use Dbase::Globals;
use Loader qw(add_kunde_domain set_domain_tarif
	acct_domain_gebuehr);

sub Usage() {
	my $vers = '@RPM_PACKAGE_VERSION@-@RPM_PACKAGE_RELEASE@';

	textmodus(\*STDERR);
    die <<END;
Usage: $0 -- Anlegen von Domains
		-d DATUM  ab diesem Datum
		-t TARIF  anzulegender Tarif (Default: keine Berechnung)
		-s Status zu setzender Status (Default: 'todo')
		-a Art zu setzender Accountingeintrag (Default: 'neu')
        Kunde Domain...

Legt Domains an (mit deren Tarifen).

Version: $vers
END
  exit 1;
}

use Getopt::Std;
use vars qw( $opt_h $opt_a $opt_d $opt_s $opt_t );
getopts("a:d:hs:t:") or Usage;
Usage if @ARGV < 2;

my $kunde;
{
	my $k = shift;
	$kunde = get_kunde($k);
	die "Kunde '$k' nicht gefunden\n" unless $kunde;
}

my $datum;
if($opt_d) {
	$datum = unixtime($opt_d);
	die "Datum '$opt_d' nicht erkannt.\n" unless $datum;
} else {
	$datum = DoTime;
}

use Loader qw(add_kunde_domain);
$opt_s="todo" unless defined $opt_s;
$opt_s=find_descr("domainstatus",$opt_s) or die "Status nicht bekannt.\n";
$opt_a=find_descr("acctinfo",$opt_a) or die "Status nicht bekannt.\n" if defined $opt_a;

## CODE ##
foreach my $domain(@ARGV) {
	my($dom,$kd,$tar) = DoFn("select id,kunde,ktarif from domainkunde where domain = '$domain' and ( ende is null or ende > $datum )");
	if($dom) {
		if($kd == $kunde and $opt_t and not $tar) {
	        set_domain_tarif($dom,$kunde,$opt_t,1);
	        acct_domain_gebuehr($dom,$kunde);
			next;
		}
		print STDERR "Fehler: #$dom $domain: Gibt es bereits.\n";
		next;
	}
	$dom = add_kunde_domain($kunde,(defined $opt_t)|2,"Neu:$domain",$domain,$datum,$opt_t);
	if($dom) {
		print "OK: #$dom $domain angelegt.\n";
	} else {
		print STDERR "Fehler: $domain: Nicht angelegt.\n";
		next;
	}
	acct_domain_gebuehr($dom,$kunde,2,$opt_a) if $opt_a;
	Do("update domainkunde set status=$opt_s where id=$dom");
}

=head1 Name

makedomains -- legt Domains und Tarife an

=head1 Zusammenfassung

	makedomains [-d Datum] Kunde Domain...
	          -d Datum  als Startdatum verwenden (Default: jetzt)
			  Kunde     für diesen Kunden DOmains anlegen
	          Domain... diese Domains anlegen

=head1 Beschreibung

Lege für einen Kunden einen haufen Domains und Tarife an.

Beantragt werden die Teile (noch) nicht!

=head2 Optionen

=over 4

=item C<-d Datum>

Verwendet dieses Datum als Startdatum

Default: Aktuelle Zeit.

=item C<-t Tarif>

Verwendet diesen Tarif.

Default: Keiner => manuell bitte.

=item C<-h>

Kurzhilfe.

=item C<Kunde>

Der Besitzer dieser Domains.

=item C<Domain>

Die anzulegenden Domainnamen.

=back

=cut

