Home    Rohdaten    Datenstruktur   Satzkonverter   Stylesheet    Satzergebnis    Internet  
#!/usr/bin/perl -w

use DBI;

$::ENV{'INFORMIXSERVER'} = "twin";
$::ENV{'INFORMIXDIR'}    = "/opt/informix";
$::ENV{'DBDATE'}         = "dmy4.";

$dbase = "prinz";

my $dbh = DBI->connect("dbi:Informix:$dbase", '', '',
                       { AutoCommit => 1, PrintError => 1})
    or Carp::confess($DBI::errstr);

$sql_ark  = "select id,             ";
$sql_ark .= "       sequence,	    ";
$sql_ark .= "       bild,	    ";
$sql_ark .= "       SB_column,	    ";
$sql_ark .= "       arkname,	    ";
$sql_ark .= "       arkformat,	    ";
$sql_ark .= "       material,	    ";
$sql_ark .= "       beschreibung,   ";
$sql_ark .= "       beschreibung1,  ";
$sql_ark .= "       arkname_e,	    ";
$sql_ark .= "       arkformat_e,    ";
$sql_ark .= "       material_e,	    ";
$sql_ark .= "       beschreibung_e, ";
$sql_ark .= "       beschreibung1_e,";
$sql_ark .= "       arkname_f,	    ";
$sql_ark .= "       arkformat_f,    ";
$sql_ark .= "       material_f,	    ";
$sql_ark .= "       beschreibung_f, ";
$sql_ark .= "       beschreibung1_f ";
$sql_ark .= "  from ark             ";
$sql_ark .= " order by sequence     ";
$sql_arkhnd = $dbh->prepare($sql_ark) or Carp::confess("$sql_ark: $DBI::errstr");

$sql_ueb  = "select id,        ";
$sql_ueb .= "       ark_id,    ";
$sql_ueb .= "       Spalte1,   ";
$sql_ueb .= "       Spalte2,   ";
$sql_ueb .= "       Spalte3,   ";
$sql_ueb .= "       Spalte4,   ";
$sql_ueb .= "       Spalte5,   ";
$sql_ueb .= "       Spalte6,   ";
$sql_ueb .= "       Spalte7,   ";
$sql_ueb .= "       Spalte1_e, ";
$sql_ueb .= "       Spalte2_e, ";
$sql_ueb .= "       Spalte3_e, ";
$sql_ueb .= "       Spalte4_e, ";
$sql_ueb .= "       Spalte5_e, ";
$sql_ueb .= "       Spalte6_e, ";
$sql_ueb .= "       Spalte7_e, ";
$sql_ueb .= "       Spalte1_f, ";
$sql_ueb .= "       Spalte2_f, ";
$sql_ueb .= "       Spalte3_f, ";
$sql_ueb .= "       Spalte4_f, ";
$sql_ueb .= "       Spalte5_f, ";
$sql_ueb .= "       Spalte6_f, ";
$sql_ueb .= "       Spalte7_f  ";
$sql_ueb .= "  from ueberschrift ";
$sql_ueb .= " where ark_id = ? ";
$sql_uebhnd = $dbh->prepare($sql_ueb) or Carp::confess("$sql_ueb: $DBI::errstr");

$sql_art  = "select sequence,                           ";
$sql_art .= "       ausfuehrung.Ausfuehrung,            ";
$sql_art .= "       ausfuehrung.Ausfuehrung_e,		";
$sql_art .= "       ausfuehrung.Ausfuehrung_f,		";
$sql_art .= "       farbe.farbe,			";
$sql_art .= "       farbe.farbe_e,			";
$sql_art .= "       farbe.farbe_f,			";
$sql_art .= "       artikel.Laenge,			";
$sql_art .= "       artikel.vp,				";
$sql_art .= "       artikel.ArtNr,			";
$sql_art .= "       artikel.EAN_Code,			";
$sql_art .= "       artikel.VE,				";
$sql_art .= "       artikel.preis,			";
$sql_art .= "       artikel.Einheit			";
$sql_art .= "  from ausfuehrung, farbe, artikel		";
$sql_art .= " where artikel.ark_id     = ?		";
$sql_art .= "   and ausfuehrung.ark_id = artikel.ark_id	";
$sql_art .= "   and artikel.farb_id    = farbe.id       ";
$sql_art .= " order by sequence                         ";
$sql_arthnd = $dbh->prepare($sql_art) or Carp::confess("$sql_ueb: $DBI::errstr");

$sql_cnt  = "select count(*)                            ";
$sql_cnt .= "  from ausfuehrung, farbe, artikel		";
$sql_cnt .= " where artikel.ark_id     = ?		";
$sql_cnt .= "   and ausfuehrung.ark_id = artikel.ark_id	";
$sql_cnt .= "   and artikel.farb_id    = farbe.id       ";
$sql_cnthnd = $dbh->prepare($sql_cnt) or Carp::confess("$sql_cnt: $DBI::errstr");

$sql_col  = "select count(*),                            ";
$sql_col .= "       farbe.farbe				 ";
$sql_col .= "  from ausfuehrung, farbe, artikel		 ";
$sql_col .= " where artikel.ark_id     = ?		 ";
$sql_col .= "   and ausfuehrung.ark_id = artikel.ark_id  ";
$sql_col .= "   and artikel.farb_id    = farbe.id	 ";
$sql_col .= " group by 2                                 ";
$sql_colhnd = $dbh->prepare($sql_col) or Carp::confess("$sql_col: $DBI::errstr");

print "\\input Satzmacros.tex";

$sql_arkhnd->execute();

while( ($id,
	$sequence,
        $Bild,
        $SB_column,
	$arkname,
	$arkformat,
	$material,
	$beschreibung,
	$beschreibung1,
	$arkname_e,
	$arkformat_e,
	$material_e,
	$beschreibung_e,
	$beschreibung1_e,
	$arkname_f,
	$arkformat_f,
	$material_f,
	$beschreibung_f,
	$beschreibung1_f) = $sql_arkhnd->fetchrow_array)
  {
    print "\n\n\\vbox{%\n\\Kopf{%\n";
    print "\\ark $arkname", ';;', $arkname_e, ';;', $arkname_f, ";;\n";
    print "\\format $arkformat", ";;\n";
    print "\\material $material", ';;', $material_e, ';;', $material_f, ";;\n";
    print "\\beschreibung $beschreibung", ';;', $beschreibung_e, ';;', $beschreibung_f, ";;\n";
    print "\\erklaerung $beschreibung1", ';;', $beschreibung1_e, ';;', $beschreibung1_f, ";;\n";
    
    print "}\n";
    print "\n";
    print "\\vskip2dd\n";
    print "\n";

    $sql_uebhnd->execute($id);

    while( ($ueb_id,
	    $ark_id,
	    $Spalte1,
	    $Spalte2,
	    $Spalte3,
	    $Spalte4,
	    $Spalte5,
	    $Spalte6,
	    $Spalte7,
	    $Spalte1_e,
	    $Spalte2_e,
	    $Spalte3_e,
	    $Spalte4_e,
	    $Spalte5_e,
	    $Spalte6_e,
	    $Spalte7_e,
	    $Spalte1_f,
	    $Spalte2_f,
	    $Spalte3_f,
	    $Spalte4_f,
	    $Spalte5_f,
	    $Spalte6_f,
	    $Spalte7_f) = $sql_uebhnd->fetchrow_array)
      {
        $Bild =~ /(.*?)\s*$/s;
	print "\\Tabelle{$1}{%\n";

        print "\\SB = 3,5mm\n";
        print "\\SB = 9,5mm\n" if $SB_column eq "N";
	print "\\ueb $Spalte1",   ';;', $Spalte2,   ';;', $Spalte3,   ';;', $Spalte5,   ';;', $Spalte6,   ';;', $Spalte7,  ";;EUR;; ;;\n";
	print "\\ueb $Spalte1_e", ';;', $Spalte2_e, ';;', $Spalte3_e, ';;', $Spalte5_e, ';;', $Spalte6_e, ';;', $Spalte7_e,";;   ;; ;;\n";
	print "\\ueb $Spalte1_f", ';;', $Spalte2_f, ';;', $Spalte3_f, ';;', $Spalte5_f, ';;', $Spalte6_f, ';;', $Spalte7_f,";;   ;; ;;\n";

	print "\n";
	print "\\vskip8dd\n";
	print "\n";
	
	$sql_arthnd->execute($id);
	
        $old_farbe = "NEU";
        $old_ausfuehrung = "NEU";

        $sql_colhnd->execute($id);
	while( ($count,
		$farbe) = $sql_colhnd->fetchrow_array)
	  {
          $count =~ s/,/./;
          $dieFarbe{$farbe} = $count;
	  }
        $dieFarbe{' '} = 0;

        $sql_cnthnd->execute($id);
        $Anzahl = $sql_cnthnd->fetchrow_array;

	while( ($sequence_a,
                $Ausfuehrung,
		$Ausfuehrung_e,
		$Ausfuehrung_f,
		$farbe,
		$farbe_e,
		$farbe_f,
		$Laenge,
		$vp,
		$ArtNr,
		$EAN_Code,
		$VE,
		$preis,
		$Einheit) = $sql_arthnd->fetchrow_array)
	  {

            if ($old_ausfuehrung eq $Ausfuehrung)
	      {
		$Ausfuehrung   = ' ';
		$Ausfuehrung_e = ' ';
		$Ausfuehrung_f = ' ';
	      }
            else
	      {
		$old_ausfuehrung = $Ausfuehrung;
	      }

            if ($old_farbe eq $farbe)
	      {
		$farbe   = ' ';
		$farbe_e = ' ';
		$farbe_f = ' ';
	      }
            else
	      {
		print "\\vskip.9\\baselineskip\n" unless $old_farbe =~ /NEU/;
		$old_farbe = $farbe;
	      }

            $table_type = "artikel";
            $table_type = "artikelN" if $SB_column eq 'N';

            if ( $dieFarbe{$farbe} == 1 && $farbe !~ /' '/ )
              {
                if ( $Anzahl == 1 )
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '** ** **;;',
		          "\\farbe $farbe", '** ** **;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
                else
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '**', $Ausfuehrung_e, '**', $Ausfuehrung_f, '**;;',
		          "\\farbe $farbe", '** ** **;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
	      }
            elsif ( $dieFarbe{$farbe} == 2 && $farbe !~ /' '/ )
              {
                $farbe_ef = $farbe_e . " / " . $farbe_f;
                if ( $Anzahl == 1 )
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '** ** **;;',
		          "\\farbe $farbe", '**', $farbe_ef, '** **;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
		else
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '**', $Ausfuehrung_e, '**', $Ausfuehrung_f, '**;;',
		          "\\farbe $farbe", '**', $farbe_ef, '** **;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
                  }
	      }
            elsif ( $dieFarbe{$farbe} == 3 && $farbe !~ /' '/ )
              {
                if ( $Anzahl == 1 )
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '** ** **;;',
		          "\\farbe $farbe", '**', $farbe_e, '**', $farbe_f, '**;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
		else
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '**', $Ausfuehrung_e, '**', $Ausfuehrung_f, '**;;',
		          "\\farbe $farbe", '**', $farbe_e, '**', $farbe_f, '**;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
	      }
            else
	      {
                if ( $Anzahl == 1 )
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '** ** **;;',
		          "\\farbe $farbe", '**', $farbe_e, '**', $farbe_f, '**;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
                else
		  {
		    print "\\$table_type\\ausfuehrung $Ausfuehrung", '**', $Ausfuehrung_e, '**', $Ausfuehrung_f, '**;;',
		          "\\farbe $farbe", '**', $farbe_e, '**', $farbe_f, '**;;',
                          $Laenge, ';;', $vp, ';;', $ArtNr, ';;', $EAN_Code, ';;', $VE, ';;', $preis, ';;', $Einheit, ";;\n";
		  }
	      }
	  }
      }
    print "}\n";
    print "}\n";
    print "\\vfill\n";
    print "\\hrule\n";
    print "\\vfill\n";
    print "\n";
  }

print "\n";
print "\\bye\n\n";