use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(bignum find_descr flag_names get_bitmap);
use Dbase::Help qw(Do DoFn);
use Fehler qw(warnung);
use Loader qw(log_update select_flags);

sub set_ipnr_flags($;$) {
	my($id,$kn) = @_;

	my ( $kl, $kunde_id ) = DoFn "SELECT flags, kunde FROM ipkunde WHERE id = $id";
	my $nkl = select_flags $kl, 'ipflags', 'Flags', '!hide';
	
	return undef unless defined $nkl;
	return $nkl if $kl == $nkl;

	log_update ipkunde => id => $id, undef, 'flags', undef,
		scalar flag_names($nkl,"ipflags",$kl);
	Do "UPDATE ipkunde SET flags=$nkl WHERE id=$id";

	if ( defined( my $descr_ipflags_monitoring = find_descr( ipflags => 'monitoring' ) ) ) {
		if ( $nkl & bignum(1) << $descr_ipflags_monitoring ) {
			warnung <<'1' unless DoFn <<2;
Bei diesem Kunden gibt es noch keine Person mit einem Usernamen und einer
Assoziierung, die einen Monitoring-Contact erzeugt (vgl. etwa RT#250055).
1
	SELECT 1
	FROM   descr_typ, descr, kundemail, person
	WHERE  kundemail.dienst = descr.descr
	   AND descr_typ.name = 'dienst'
	   AND descr_typ.id = descr.typ
	   AND kundemail.kunde  = $kunde_id
	   AND kundemail.person = person.id
	   AND descr.bla LIKE 'monitor%'
	   AND person.user IS NOT NULL
	LIMIT  1
2
		}
	}

	if ( defined( my $descr_ipflags_monitoring_bf = find_descr( ipflags => 'monitoring-bf' ) ) ) {
		if ( $nkl & bignum(1) << $descr_ipflags_monitoring_bf ) {
			my $bitmap = get_bitmap( kunde => monitoring => 1 );
			warnung <<'1' unless DoFn(<<2);
Bei diesem Kunden ist noch kein Flag gesetzt, das einen Monitoring-Contact
für Betriebsführung definieren würde, vgl. RT#250055.
1
	SELECT 1 FROM kunde WHERE id = $kunde_id AND flags & $bitmap
2
		}
	}
}

1;
