#!/usr/local/bin/perl

# $Id: verguetungen.pl,v 1.1.1.1 2006/06/01 14:15:57 beuster Exp $

# alter table verguetung add unter_branche char(100) null;
use strict;
use CGI ':standard';
use CGI::Carp 'fatalsToBrowser';
use lib '../../cgi-include';
use params;
use schluessel;
use Text::Tmpl;

print header();

#
my $ctx = new Text::Tmpl;

# Lade Textfile, formatiere auf Zeilenlaenge und erstze Umlaute
my $tariftext = params::lade_html_text ($params::tariftext, 100);
$ctx->set_value ('tariftext', $tariftext);

my $ost_west = 0;
my $durchschnitt = param ('durchschnitt');

my $gebiet = undef;

$ctx->set_value ('durchschnitt', $durchschnitt);

my $dbh = params::DB();

#move_kommentar_2_unter_branche();
#move_branche_in_die_schluessel();

my $where;
if ($gebiet) {
  $where = "gebiet='$gebiet' and ";
}
my $sql = qq(select schluessel.id,schluessel.bezeichnung,unter_branche,kommentar,gebiet,durchschnitt,eins,zwei,drei,vier 
             from verguetung,schluessel 
             where $where 
             schluessel.id='verguetungs_branche' and
             schluessel.interne_ident = branche
             order by schluessel.sortierung, unter_branche
            );
my %verguetungen;
my %durchschnitt;

my $i = 0;
my $sth = $dbh->prepare ($sql) or die $dbh->errstr;
$sth->execute () or die $dbh->errstr;
while (my $ref = $sth->fetchrow_hashref()) {
  if ($ref->{durchschnitt}) {
    $durchschnitt{$gebiet} = {map {$_ => $ref->{$_}} %$ref};
    print "habe $i ";
  }
  else {
    push @{$verguetungen{$ref->{bezeichnung}}}, {map {$_ => $ref->{$_}} %$ref};
  }
}

my $jahr = 1;
for my $gehalt (qw (eins zwei drei vier)) {
  next if (!$durchschnitt{w}->{$gehalt} && !$durchschnitt{o}->{$gehalt});
  my $sctx = $ctx->loop_iteration ('durchschnitts_loop');
  $sctx->set_value ('jahr', $jahr++);
  $sctx->set_value ('geld', params::wandle_geld ($durchschnitt{w}->{$gehalt}));
  $sctx->set_value ('geld2', params::wandle_geld ($durchschnitt{o}->{$gehalt}));
}

foreach my $v (sort {$a cmp $b} keys %verguetungen) {
  my $sctx = $ctx->loop_iteration ('branchen_loop');
  $sctx->set_value ('branche', $v);
  foreach my $ub (@{$verguetungen{$v}}) {
    my $ssctx = $sctx->loop_iteration ('unter_branchen_loop');
    $ssctx->set_value ('unter_branche', $ub->{unter_branche});
    foreach (qw (eins zwei drei vier)) {
      my $sssctx = $ssctx->loop_iteration ('geld_loop');
      $sssctx->set_value ('geld', $ub->{$_} > 0 ? params::double_2_geld_string ($ub->{$_}) : '&nbsp;');
    }
    $ssctx->set_value ('kommentar', $ub->{kommentar} ? $ub->{kommentar} : '&nbsp;');
  }
}

print $ctx->parse_file ('verguetungen.tmpl');



sub  move_kommentar_2_unter_branche {
  return;
  my $sql  = 'select id, kommentar from verguetung';
  my $ref  = $dbh->selectall_arrayref ($sql) or die;
  foreach (@$ref) {
    my $unter_branche = $dbh->quote ($$_[1]);
    $sql = "update verguetung set unter_branche=$unter_branche,kommentar=null where id=$$_[0]";
    print $sql;
    $dbh->do ($sql) or die;
  }
  exit;
} # move_kommentar_2_unter_branche()
sub move_branche_in_die_schluessel {
  return;
  # insert into schluessel_pflege values ('verguetungs_branche', 'Vergütungsbranchen');
  my $create = q
    (
     CREATE TABLE `tmp_verguetung` (
                                `id` int(11) NOT NULL default '0',
                                `branche` int not null,
                                `unter_branche` char(100) default NULL,
                                `kommentar` char(100) default NULL,
                                `gebiet` char(1) NOT NULL default '',
                                `durchschnitt` tinyint(1) default NULL,
                                `eins` decimal(8,2) NOT NULL default '0.00',
                                `zwei` decimal(8,2) NOT NULL default '0.00',
                                `drei` decimal(8,2) default NULL,
                                `vier` decimal(8,2) default NULL,
                                    PRIMARY KEY (`id`)
                                   )
    );
  #$dbh->do ($create) or die;

  my $sql = 'select max(interne_ident)+1 from schluessel';
  my $ref = $dbh->selectall_arrayref ($sql) or die;
  my $interne_ident = $ref->[0]->[0];
  print $interne_ident;
  
  my $sql = "select id,branche,unter_branche,kommentar,gebiet,durchschnitt,eins,zwei,drei,vier from verguetung order by branche, unter_branche";
  my %verguetungen;
  my %durchschnitt;
  
  my $sth = $dbh->prepare ($sql) or die $dbh->errstr;
  $sth->execute () or die $dbh->errstr;
  while (my $ref = $sth->fetchrow_hashref()) {
    push @{$verguetungen{$ref->{branche}}}, {map {$_ => $ref->{$_}} %$ref};
  }

  $dbh->do ("delete from schluessel where id='verguetungs_branche'") or die;
  $dbh->do ("delete from tmp_verguetung") or die;
  $dbh->do (qq(insert into schluessel(id,interne_ident, sortierung, bezeichnung)
               values ('verguetungs_branche',$schluessel::keine_branche_gewaehlt, 0, '-- keine --')
              )) or die;
  $sql = qq(insert into tmp_verguetung(id, branche,unter_branche,kommentar,
                                       gebiet, durchschnitt,eins,zwei, drei, vier)
            values (?,?,?,?,?,?,?,?,?,?));
  my $sth = $dbh->prepare ($sql) or die;
  my $i = 10;
  foreach (sort (keys %verguetungen)) {
    $sql = qq(insert into schluessel(id,interne_ident, sortierung, bezeichnung)
              values ('verguetungs_branche', $interne_ident, $i, '$_'));
    $dbh->do ($sql) or die $dbh->errstr;
    foreach (@{$verguetungen{$_}}) {
      $sth->execute ($_->{id}, $interne_ident, $_->{unter_branche}, $_->{kommentar},
                     $_->{gebiet}, $_->{durchschnitt}, $_->{eins}, $_->{zwei},
                     $_->{drei}, $_->{vier}) or die $dbh->errstr;
    }
    $interne_ident++;
    $i += 10;
  }
  exit;
} # move_branche_in_die_schluessel()

sub lade_html_text {

    my ($filename,$breite) = @_;
    my $text;

    open (File, "<$filename");
    while (<File>) { $text .= $_; }
    close File;

    $text =~ s/&/&amp;/g;
    $text =~ s/>/&gt;/g;
    $text =~ s/</&lt;/g;
    $text =~ s/"/&quot;/g;

    my $format = "";
    my $n = 0;

    foreach (split (/\s+/,$text)) {
  	    if ($breite - $n >= length $_) {
	         $format .= $_." ";
	  		   $n += (length $_) + 1;
	      }
	      elsif (length $_ > $breite) {
           $format .= $_."<br>";
			     $n = 0;
        }
	      else {
	         $format .= "<br>".$_." ";   
	         $n = length $_;
	      }
    }      	    

    $format .= "<br>";
    $format =~ s/ä/&auml;/g;
    $format =~ s/Ä/&Auml;/g;
    $format =~ s/ö/&ouml;/g;
    $format =~ s/Ö/&Ouml;/g;
    $format =~ s/ü/&uuml;/g;
    $format =~ s/Ü/&Uuml;/g;
    $format =~ s/ß/&szlig;/g;

    return $format;
} # lade_html_text( Dateiname, Zeilenlaenge)







