if(!function_exists('getSammelformMengenAbschlagPlano')) {
function getSammelformMengenAbschlagPlano($menge) {
       return 1;
    }// ####### BEGINN KOPIERSEKTION PSC #######

// Druckfarbenkosten berechnen Offsetdruck
function FarbkostenBerechnen($what, $KalkProdukt,$DruckbogenBreite, $Druckbogenhoehe, $anzahlDruckfarben, $drucklack, $bedruckteSeiten, $nettobg, $zuschuss, $anzahlFarbw, $druckfarben_inhalt) {
    $DruckfarbenAufschlag = 1.2; // Preisfaktor für Fremdkosten
    $Druckfarbe_Kilopreis_Euroskala = 8.5; // Kilopreis in Euro für Euroskala
    $Druckfarbe_Kilopreis_Sonderfarbe = 50; // Kilopreis in Euro für Sonderfarbe (Pantone, HKS, Metallic etc.)
    $Drucklack_Kilopreis = 12.5; // Kilopreis in Euro für Drucklack
    $Druckfarbe_Flächendeckung_Euroskala = 25; // Standard Flächendeckung in Prozent
    $Druckfarbe_Flächendeckung_Sonderfarbe = 60 + $anzahlFarbw * 10; 
    $Druckfarbe_Flächendeckung_Lack = 80; // Standard Flächendeckung in Prozent für Lack
    $DurchschnittlicheFarbVerbrauchsmenge = 1.4; // Durchschnittliche Verbrauchsmenge in Gramm pro Quadratmeter (hier: ungestrichene Papieroberfläche)
    $GrundfarbmengeFarbwerk = 0.150; // Grundfarbmenge pro Farbwerk in Kilogramm

    if ($drucklack != 0) {
        $drucklack = 1; // Wenn Drucklack verwendet wird, dann 1, sonst 0
    }

    // Korrekturfaktor, da Broschüren etc. erfahrungsgemäß weniger Sonderfarbe verbrauchen
    $korrrekturSonderfarbe = 1; 
    if ($bedruckteSeiten != 1 || $KalkProdukt == 'BRO') {
        $korrrekturSonderfarbe = 0.8;
    }

    // Anzahl der Sonderfarben, wird nur einmal gezählt
    if ($anzahlFarbw > 0) {
        $SonderfarbZaehler = 1; 
    }else{
        $SonderfarbZaehler = 0;}

    $KGjeFarbe_Euroskala = round((($anzahlDruckfarben - $anzahlFarbw) * (($nettobg + $zuschuss) * $bedruckteSeiten * $DruckbogenBreite / 100 * $Druckbogenhoehe / 100 * $Druckfarbe_Flächendeckung_Euroskala / 100 * $DurchschnittlicheFarbVerbrauchsmenge) / 1000 + $GrundfarbmengeFarbwerk / 2), 1);

    $KGjeFarbe_Sonderfarbe = round($SonderfarbZaehler * ((($nettobg + $zuschuss) * $korrrekturSonderfarbe * $DruckbogenBreite / 100 * $Druckbogenhoehe / 100 * $Druckfarbe_Flächendeckung_Sonderfarbe / 100 * $DurchschnittlicheFarbVerbrauchsmenge) / 1000 + $GrundfarbmengeFarbwerk), 1);  

    $KG_Lack = round($drucklack * ((($nettobg + $zuschuss) * $korrrekturSonderfarbe * $DruckbogenBreite / 100 * $Druckbogenhoehe / 100 *
    $Druckfarbe_Flächendeckung_Lack / 100 * $DurchschnittlicheFarbVerbrauchsmenge) / 1000 + $GrundfarbmengeFarbwerk), 1);  

    $farbkostenEuroskala = $KGjeFarbe_Euroskala * $Druckfarbe_Kilopreis_Euroskala * $DruckfarbenAufschlag; // Kosten für Euroskala
    $farbkostenSonderfarbe = $KGjeFarbe_Sonderfarbe * $Druckfarbe_Kilopreis_Sonderfarbe * $DruckfarbenAufschlag; // Kosten für Sonderfarben
    $farbkostenLack = $KG_Lack * $Drucklack_Kilopreis * $DruckfarbenAufschlag; // Kosten für Drucklack

    if ($druckfarben_inhalt == 18 || $druckfarben_inhalt == 19) { // Wenn Farbe = MGA / MAG migrationsarm
        $farbkostenEuroskala *= 1.7; // Kosten für Euroskala erhöhen
        $farbkostenSonderfarbe /= 3.5; // Kosten für Sonderfarbe reduzieren
    }
   
    // neue Formel ab 1.7.2025
    $farbkosten = $farbkostenEuroskala + $farbkostenSonderfarbe + $farbkostenLack;
    $farbkosten = round($farbkosten, 2); // auf 2 Nachkommastellen runden
    if ($farbkosten < 0) {
        $farbkosten = 0; // negative Kosten vermeiden
    }
   
    // Ausgabe der Ergebnisse
    if ($what == 'debug') {
        echo "Testfall: " . $DruckbogenBreite . "x" . $Druckbogenhoehe . " cm | " . $anzahlDruckfarben . "|" . $drucklack . "|" . $bedruckteSeiten . "|" . $nettobg . "+" . $zuschuss . "|" . $anzahlFarbw . " => Farbkosten: " . $farbkosten . " € | \n";
        echo ("Euroskala: " . $KGjeFarbe_Euroskala . " kg | \n");
        echo ("Sonderfarbe: " . $KGjeFarbe_Sonderfarbe . " kg | \n");
        echo ("Lack: " . $KG_Lack . " kg\n");
        echo ("-------------------------\n");
    }

    return $farbkosten;
}


// Test
function getTest23($auflage){
    $internarr = array('$parameter 1' => '250', '$parameter2' => 'test2', '$parameter3' => 'ja');
    $intern = Array2String($internarr);
    $ergebnis = array('$eigenkosten' => $auflage, '$fremdkosten' => 650, '$preisaend' => -100, '$versandgewicht' => 7250, '$intern' => $intern);
    return $ergebnis;
}

// Für unbenötigte Rückgabewerte = alles "0"
function getZeroPlanoFa23($name){
    $internarray = array('$name' => $name);
    $intern = Array2String($internarray);
    $ergebnis = array('eigenkosten' => 0, 'fremdkosten' => 0, 'preisaend' => 0, 'versandgewicht' => 0, 'intern' => $intern);  
    return $ergebnis;
}

// Arrays für Ausgabe umwandeln
function Array2String($array) {
	$glue = ' ### ';
	$symbol = ' = ';
    return implode($glue, array_map(
            function($k, $v) use($symbol) { 
                return $k . $symbol . $v;
            }, 
            array_keys($array), 
            array_values($array)
            )
        );
}
// Interpolation aus Tabelle erzeugen
function getInterpolationswertAusTabelle($input, $table) {
    // Exakt gefunden
    foreach ($table as $pair) {
        if (($pair[0] == $input) && ($pair[1] !== 0)) return $pair[1];
    }
    
    // Unter dem kleinsten Wert
    if ($input <= $table[0][0]) return $table[0][1];
    
    // Über dem höchsten Wert
    if ($input >= $table[count($table)-1][0]) return $table[count($table)-1][1];
    
    // Zwischen Werten interpolieren
    for ($i = 0; $i < count($table) - 1; $i++) {
        if ($input >= $table[$i][0] && $input < $table[$i+1][0]) {
            $x1 = $table[$i][0];
            $y1 = $table[$i][1];
            $x2 = $table[$i+1][0];
            $y2 = $table[$i+1][1];
            return $y1 + ($input - $x1) * ($y2 - $y1) / ($x2 - $x1);
        }
    }
    
    return 0; // Fallback
}

// FormatCheck für WTV o.ä.
function FormatCheck($breite, $hoehe, $minbreite, $minhoehe, $maxbreite, $maxhoehe, $drehenmoeglich){
    if($hoehe >= $minhoehe && $hoehe <= $maxhoehe && $breite >= $minbreite && $breite <= $maxbreite){
        return True;
    }else if($breite >= $minhoehe && $breite <= $maxhoehe && $hoehe >= $minbreite && $hoehe <= $maxbreite && $drehenmoeglich == True){
        return True;
    }else{
        return false;
    }
}

//Stanzung, Perfo berechnen
function StanzPerfoKostenBerechnen($stanzung, $stanzart, $auflage, $sortenzahl, $anzblattjeblock, $breite_offen, $hoehe_offen, $drucknutzen, $Pstundensatz_wtv_maschinen) {
    $stanzung = intval($stanzung);
    $stanzart = intval($stanzart);
    $Pplano_stanzen_fix1 = 35;
    $Pplano_stanzen_fix2 = 97.5;
    $Pplano_stanzen_var1 = 14;
    $Pplano_stanzen_var2 = 37.5;
    $kosten_stanzung = 0;
    $zeit_stanzung = 0;
    $kosten_werkzeug_stanzung_1N = 0;
    $kosten_werkzeug_stanzung = 0;
    $nutzen_stanzung = 1;
    $stanzmaschine = 'keine';
    $maxnutzenanzTiegel = max(floor(33 / ($breite_offen + 1)) * floor(23 / ($hoehe_offen + 1)), floor(23 / ($breite_offen + 1)) * floor(33 / ($hoehe_offen + 1))); //Nutzenberechnung
    $maxnutzenanzZylinder = max(floor(98 / ($breite_offen + 1)) * floor(68 / ($hoehe_offen + 1)), floor(68 / ($breite_offen + 1)) * floor(98 / ($hoehe_offen + 1)));  //Nutzenberechnung
    if ($stanzung != 0 && $stanzung != 99) {
        $stanzwerkzeug_sorten = 1;
        if ($stanzung == 3) {
            $stanzwerkzeug_sorten = $sortenzahl;
        }
      
        $wtvzuschusspapier = ($auflage * $anzblattjeblock * 0.01 + 50) / $drucknutzen;
        $kosten_werkzeug_stanzung_1N = (sqrt($breite_offen * $hoehe_offen) * 2 + 85) * $stanzwerkzeug_sorten;
        if (($breite_offen > 33 || $hoehe_offen > 33) || ($breite_offen > 23 && $hoehe_offen > 23)) {
            $kosten_stanzung = $Pplano_stanzen_fix2 + ($auflage * $anzblattjeblock) * $Pplano_stanzen_var2 / 1000;
            $stanzmaschine = "zylinder";
            if ($stanzung > 1) {
                $kosten_stanzung += $kosten_werkzeug_stanzung_1N;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N;
            }
        } else {
            $kosten_stanzung = $Pplano_stanzen_fix1 + ($auflage * $anzblattjeblock) * $Pplano_stanzen_var1 / 1000;
            $stanzmaschine = "tiegel";
            if ($stanzung > 1) {
                $kosten_stanzung += $kosten_werkzeug_stanzung_1N;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N;
            }
        }
        $kosten_stanzen_fix = $Pplano_stanzen_fix2;
        $kosten_stanzen_var = $Pplano_stanzen_var2;
        $stanzmaschine_temp = "zylinder";
        for ($ntz = 1; $ntz <= $maxnutzenanzZylinder; $ntz++) {
            $kosten_sta_temp = $kosten_stanzen_fix + $auflage * $kosten_stanzen_var / 1000 / $ntz + $kosten_werkzeug_stanzung_1N * $ntz;
            if ($kosten_sta_temp < $kosten_stanzung) {
                $kosten_stanzung = $kosten_sta_temp;
                $nutzen_stanzung = $ntz;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N * $ntz;
                $stanzmaschine = $stanzmaschine_temp;
            }
        }
        $kosten_stanzen_fix = $Pplano_stanzen_fix1;
        $kosten_stanzen_var = $Pplano_stanzen_var1;
        $stanzmaschine_temp = "tiegel";
        for ($ntz = 1; $ntz <= $maxnutzenanzTiegel; $ntz++) {
            $kosten_sta_temp = $kosten_stanzen_fix + $auflage * $kosten_stanzen_var / 1000 / $ntz + $kosten_werkzeug_stanzung_1N * $ntz;
            if ($kosten_sta_temp < $kosten_stanzung) {
                $kosten_stanzung = $kosten_sta_temp;
                $nutzen_stanzung = $ntz;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N * $ntz;
                $stanzmaschine = $stanzmaschine_temp;
            }
        }

        //Sonderfall Banderolen korrigieren
        if ($stanzmaschine == 'zylinder' && $stanzung == 1 && ($nutzen_stanzung * $breite_offen < 20 || $nutzen_stanzung * $hoehe_offen < 20)) {
            $kosten_stanzung += 35;
        }

        //Sonderfall Perfo/Rillen für vorh. Werkzeug korrigieren (hier andere Parameterübergabe beachten!)
        if ($stanzung == 1 && $stanzart == 3) {
            $kosten_werkzeug_stanzung = 10 + $sortenzahl * 5;
            if ($stanzmaschine == 'zylinder') {
                $kosten_stanzung = $kosten_werkzeug_stanzung + $Pplano_stanzen_fix2 + $auflage * $Pplano_stanzen_var2 / 1000 / $drucknutzen;
                $nutzen_stanzung = $drucknutzen;
            } else {
                $kosten_stanzung = $kosten_werkzeug_stanzung + $Pplano_stanzen_fix1 + $auflage * $Pplano_stanzen_var1 / 1000 / $maxnutzenanzTiegel;
                $nutzen_stanzung = $maxnutzenanzTiegel;
            }
        }

        $zeit_stanzung = $kosten_stanzung / $Pstundensatz_wtv_maschinen;

        return array($kosten_stanzung, $zeit_stanzung, $kosten_werkzeug_stanzung, $nutzen_stanzung, $stanzmaschine, $wtvzuschusspapier);
    }else{
        return array(0, 0, 0, 0, 'keine', 0);
    }
}


// DIGITALDRUCK
function getPrePressDIGI23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $loseblatt, $personalisierung, $seiten_inhalt, $seiten_umschlag){
    //Parameter
    $Pstundensatz_vorstufe = 75;
    $Pplano_fa_aufpreis_anderes_dateiformat = 30;
    $Pumweltzeichen_fsc = 25;
    $Pumweltzeichen_blauerengel = 50;
    $Psortenzeit_vorstufe = 3;
    $Pgrundzeit_vorstufe = 10;
    $Pgrundzeit_loseblatt = 10;

    $bedruckteSeiten = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt)[1];

    $anzahlSeiten = $seiten_umschlag + $seiten_inhalt;
    if($anzahlSeiten == 0){$anzahlSeiten = $bedruckteSeiten;}

    $datenuebernahme_kosten = ($Pgrundzeit_loseblatt * $loseblatt + $Pgrundzeit_vorstufe + ($sortenzahl * 0.25) * $bedruckteSeiten * $Psortenzeit_vorstufe + $anzahlSeiten/4)/60 * $Pstundensatz_vorstufe;

    $dateiformat_kosten = 0;
    if(($dateiformat_geliefert != 1) && ($dateiformat_geliefert != 5)){
        $dateiformat_kosten = $Pplano_fa_aufpreis_anderes_dateiformat + $anzahlSeiten *1;
    }

    $korrekturabzug_kosten = 0;
    if($korrekturabzug == 2){
        $korrekturabzug_kosten = max(8, 0.3 * ($sortenzahl*$bedruckteSeiten + $anzahlSeiten));
    }

    $umweltzeichen_kosten = 0;
    if($umweltzeichen == 2){
        $umweltzeichen_kosten = $Pumweltzeichen_fsc;
    }
    if($umweltzeichen == 3){
        $umweltzeichen_kosten = $Pumweltzeichen_blauerengel;
    }

    $eigenkosten_prepress = $datenuebernahme_kosten + $dateiformat_kosten + $korrekturabzug_kosten + $umweltzeichen_kosten;

    return $eigenkosten_prepress;
}

function getDruckNutzenDIGI($breite_offen, $hoehe_offen, $huellendruck){
    $Druckbogenbreite = 48.7;
    $Druckbogenhoehe = 33;
    $DruckbgRaender = 1;

    if ($huellendruck == 0){
    $drucknutzen = max(
        (floor(($Druckbogenbreite-$DruckbgRaender)/$breite_offen))*(floor(($Druckbogenhoehe-$DruckbgRaender)/$hoehe_offen)),
        (floor(($Druckbogenhoehe-$DruckbgRaender)/$breite_offen))*(floor(($Druckbogenbreite-$DruckbgRaender)/$hoehe_offen))
    );
    }else{    
        $drucknutzen = 1;
        $Druckbogenbreite = $breite_offen;
        $Druckbogenhoehe = $hoehe_offen;
    }

    return [$drucknutzen, $Druckbogenbreite, $Druckbogenhoehe, $DruckbgRaender];
}

// Digitaldruck Klickkosten kalkulieren
# EK A4 einseitig Dewart 4/2022: 4c = 0,035 €, 1c = 0,01 €
# Return = VK Klickpreis je Druck DIN A3 einseitig
function getKlickKostenDigitaldruck ($druckbogenmenge, $bedruckteSeiten, $druckfarben_inhalt, $huellendruck){
    $KlickKosten_A4_4C_EK = 0.035;    //= EK Dewart DIN A4 Klick 4/2022 x Faktor Farbe >>> VK DIN A3 4C einseitig, EK Dewart wäre neu ab 7/2024: 0,035 je DIN A3 Klick
    $KlickKosten_A4_SW_EK = 0.01;    //= EK Dewart DIN A4 Klick 4/2022 x Faktor SW >>> VK DIN A3 SW einseitig, EK Dewart wäre neu ab 7/2024: 0,01 sw  DIN A3 Klick

    $mengenAufschlagDigiDruck = 1.8 - log10($druckbogenmenge * $druckbogenmenge * $bedruckteSeiten) / 50;

    if($druckfarben_inhalt == 1 || $druckfarben_inhalt == 3){
        $klickkosten = $KlickKosten_A4_4C_EK * 2.2;
    }else{
        $klickkosten = $KlickKosten_A4_SW_EK * 3.5;
    }

    $klickkosten *= $mengenAufschlagDigiDruck;

    if ($huellendruck == 1){
        $klickkosten *= 2;
    }

    return $klickkosten;
}



function getPrintDIGIPlanoFa23($what, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $sortenzahl, $papiersorte_sammelform, $anzblattjeblock, $wtvzuschusspapier, $papiersorte_papiertyp1, $papiersorte_papiertyp2, $papiersorte_papiertyp3, $papiersorte_papiertyp4, $papiersorte_papiertyp5, $papiersorte_papiertyp6, $papiersorte_papiertyp7, $papiersorte_papiertyp8, $papiersorte_papiertyp9, $papiersorte_papiertyp10, $papiersorte_papiertyp11, $papiersorte_papiertyp12, $papiersorte_papiertyp13, $papiersorte_papiertyp14){


    [$anzahlDruckfarben, $bedruckteSeiten] = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt);

 
    // Hüllendruck? Papierkosten per o/oo + Druckkosten !
    if(($papiersorte_papiertyp5) || ($papiersorte_papiertyp6) || ($papiersorte_papiertyp7) || ($papiersorte_papiertyp8) || ($papiersorte_papiertyp9) || ($papiersorte_papiertyp10)) {
        $huellendruck = 1;
        //echo('Hüllendruck!');
    }else{
        $huellendruck = 0;
        //echo('Kein Hüllendruck');
    }
    
    [$drucknutzen, $Druckbogenbreite, $Druckbogenhoehe, $DruckbgRaender] = getDruckNutzenDIGI($breite_offen, $hoehe_offen, $huellendruck);

    // sonst zu teuer für Einzelausdrucke mehrere Seiten
    if ($sortenzahl == $auflage){
        $sortenzahl = 1;
    }

    $auflage *= $anzblattjeblock; // löst FEHLER AUS !!!

    if ($drucknutzen > 0) {

        $nettobg = ceil($auflage / $drucknutzen);
        $zuschuss_digitaldruck = ceil(7 * $bedruckteSeiten + (($sortenzahl - 1) * 3 / $drucknutzen) + $nettobg * 0.03);
        $bruttobg = $nettobg + $wtvzuschusspapier + $zuschuss_digitaldruck;

        $klickkosten = getKlickKostenDigitaldruck($bruttobg, $bedruckteSeiten, $druckfarben_inhalt, $huellendruck);

        if ($huellendruck == 1){
            $papierkosten = $bruttobg * $papiersorte_value / 1000 * 1.3;
        } else {
            $papierkosten = ($Druckbogenbreite * $Druckbogenhoehe * $papiersorte_grammatur * $papiersorte_value / 1000000000 * $bruttobg) * 1.3;
        }

        $druckkosten = $bruttobg * $klickkosten * $bedruckteSeiten ;
    }else{
        $nettobg = $zuschuss_digitaldruck = $bruttobg = $mengenAufschlagDigiDruck = 0;
        $papierkosten = $druckkosten = 999999;
    }

    if(($papiersorte_sammelform == 0) || ($huellendruck == 1)){
        $ruestkosten = 20 + ($sortenzahl-1) * 1;
    }else{
        $ruestkosten = 5 + ($sortenzahl-1) * 1;
    }
    
    $eigenkosten_digitaldruck = $ruestkosten + $druckkosten;
    $fremdkosten_digitaldruck = $papierkosten;

    return [$eigenkosten_digitaldruck, $fremdkosten_digitaldruck, $nettobg, $zuschuss_digitaldruck, $papierkosten, $bruttobg, $ruestkosten, $druckkosten, $klickkosten];
    
}

function getWTVDIGIPlanoFa23($what, $auflage, $drucknutzen, $hoehe_offen, $breite_offen, $hoehe_geschl, $breite_geschl, $papiersorte_grammatur, $papiersorte_value, $sortenzahl, $falzung, $falzart, $loseblatt, $bohren_lochen, $verschluss, $klebepunkte_durchmesser, $ecken_runden, $personalisierung, $buendeln, $stanzung, $stanzart, $nutlinien, $oesen, $anzblattjeblock, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender){

    //Parameter Digitaldruck
    $Druckbogenbreite = 45;
    $Druckbogenhoehe = 32;
    $Pstundensatz_wtv_hand = 30;
    $Pstundensatz_wtv_maschinen = 50;
    $Pfaktor_klein_gross_falzung = 2.5;
    $Pfalzbruch_ruesten = 10;
    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $wtvzuschusspapier = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = $auflage * $papiersorte_grammatur * $hoehe_offen * $breite_offen / 10000 * 1.1;
    $grammaturfaktor_geschw_wtv = (100-sqrt((150-$papiersorte_grammatur)*(150-$papiersorte_grammatur))/3.6)/100;
    $wtvgeschwindigkeit = (log10($auflage*$auflage)*900)*(100-sqrt((150-$papiersorte_grammatur)*(150-$papiersorte_grammatur))/3.6)/100;
    $Pklebepunkte_lose_fix = 25;
    $Pklebepunkte_lose_pro_tausend = 12;
    $Pklebepunkte_vorkonf_fix = 15;
    $Pklebepunkte_vorkonf_pro_tausend = 47;
    $Phaftstreifen_lose_fix = 25;
    $Phaftstreifen_lose_pro_tausend = 7;
    $Phaftstreifen_vorkonf_fix = 45;
    $Phaftstreifen_vorkonf_pro_tausend = 77;
    $haftstreifen_material_pro_cm = 0.002;
    $Poesen_fixpreis= 45;
    $Poesen_stkpreis = 0.20;
    $Pplano_fa_fixpreis_buendeln = 15;
    $Pplano_fa_preis_je_buendel = 0.09;

    if($anzblattjeblock == 0){
        $anzblattjeblock=1;
    }

    // sonst zu teuer für Einzelausdrucke mehrere Seiten
    if ($sortenzahl == $auflage){
        $sortenzahl = 1;
    }

    //endschneiden + verpacken Digitaldruck
    $zeit_endschneiden = (20+5*$sortenzahl+(sqrt($auflage * $anzblattjeblock/5)))/60;
    $kosten_endschneiden = $zeit_endschneiden*$Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_endschneiden;
    $wtvzuschusspapier += (10 + $auflage * $anzblattjeblock * 0.002) / $drucknutzen;

    //falzung Digitaldruck
    $zeit_falzung = 0;
    $fakt_falzung = 1;

    if(!($falzung == 'nein' || $falzung == 0)){
        $zeit_falzung = (15+$falzung*$Pfalzbruch_ruesten)/60+($auflage/3000);
        if (($breite_offen> 14.7 && $hoehe_offen > 14.7 && $breite_offen< 85 && $hoehe_offen < 55 && $breite_geschl > 3.6 && $hoehe_geschl > 3.6 && $falzung < 6) ||
        ($breite_offen > 14.7 && $hoehe_offen > 14.7 && $breite_offen < 55 && $hoehe_offen < 85 && $breite_offen > 3.6 && $hoehe_geschl > 3.6 && $falzung < 6)){
            $fakt_falzung = 1;
        }else{
            $fakt_falzung = $Pfaktor_klein_gross_falzung;
            if($falzung >5){
                $fakt_falzung *= 1.5;
            }
        }
        if($falzart==5 || $falzart==6){
            $zeit_falzung += 1 + $auflage/$wtvgeschwindigkeit*0.3;
        }
        if($falzart==99){
            $zeit_falzung += 1 + $auflage/$wtvgeschwindigkeit*0.3;
        }

        $wtvzuschusspapier += ($auflage * 0.005 + $falzung * 20) / $drucknutzen;
        if($falzung == 1 && $papiersorte_grammatur > 169){   //wenn nur Morgana nötig ist
            $zeit_falzung = 0.1;
        }
    }
    $kosten_falzung = $zeit_falzung * $fakt_falzung * $Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_falzung;


    //nuten Digitaldruck
    $zeit_nuten = 0;
    if($papiersorte_grammatur > 169 && (!(($falzung == 'nein') || ($falzung == 0))) || !($nutlinien == 0)){
        $zeit_nuten = ( $auflage / 1000 + 0.5 );
        $wtvzuschusspapier += ($auflage * 0.005 + 30) / $drucknutzen;
    }
    $kosten_nuten = $zeit_nuten * $Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_nuten;


    //loseblatt Digitaldruck
    $kosten_loseblatt = $zeit_loseblatt = 0;
    if ($stanzung == 0){
        $faktor_loseblatt = 1;
    }else{
        $faktor_loseblatt = 1.3;
    }

    if ($loseblatt != 0) {
        $kosten_loseblatt = $loseblatt * 20 * $faktor_loseblatt;
        $zeit_loseblatt = 0.5;
    }

    //ecken runden Digitaldruck
    $EinsatzFaktor = 1;
    if($stanzung != 0){$EinsatzFaktor = 2;}
    if($falzung != 0){$EinsatzFaktor = $falzung * 2;}
    $ExplJeEinsatz = 40 / $papiersorte_grammatur * 1000 / $EinsatzFaktor;
    $zeit_eckenrunden = 0;
    $kosten_eckenrunden = 0;
    if($ecken_runden == 3 || $ecken_runden == 5) {
        $zeit_eckenrunden = 0.5 + 4 * $auflage / $ExplJeEinsatz * 25 / 3600;
        $kosten_eckenrunden = $zeit_eckenrunden * $Pstundensatz_wtv_hand;
        $wtvzuschusspapier += ($auflage * 0.005 + 30) / $drucknutzen;
    }
    $wtveigenkosten += $kosten_eckenrunden;


    //bohren, lochen Digitaldruck
    $zeit_bohren_lochen = 0;
    if($bohren_lochen != 0){
        $bohrformatliste = array(array(0.1,2),array(5,1.6),array(10,1.3),array(20,1),array(650,1.2),array(1300,1.4));
        foreach($bohrformatliste as $n){
            if($breite_offen*$hoehe_offen >= $n[0]){
                $bohraufschlag = $n[1];
            }
        }

        if($stanzung != 0 && $stanzung != 99){
            $bohraufschlag *= 1.7;
        }
        if(!($falzung == 'nein' || $falzung == 0)){
            $bohraufschlag *= 2;  
        }
        if(($bohren_lochen == 2) && ($bohraufschlag == 1)){$bohren_lochen = 1;}  //für DIN A4 2-fach Sonderpreis

        $bohreinsaetzeJeExpl = ceil($bohren_lochen / 2);
        $maxbohrhoehe = 40;         //mm
        $zeitjebohreinsatz = 1.5;   //Minuten je Bohreinsatz
        $dicke = $papiersorte_grammatur / 1000 * $auflage * $anzblattjeblock;
        $anzahlbohreinsaetze = $bohreinsaetzeJeExpl * ($dicke / $maxbohrhoehe);
        $zeit_bohren_lochen = ((5 * $bohren_lochen + $anzahlbohreinsaetze * $zeitjebohreinsatz) / 60)* $bohraufschlag;
        $wtvzuschusspapier += ($auflage * 0.005 + 30) / $drucknutzen;
    }
    $kosten_bohren_lochen = $zeit_bohren_lochen * $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_bohren_lochen;

    //verschluss Digitaldruck
    $kosten_verschluss = 0;
    $zeit_verschluss = 0;
    $kosten_haftstreifen_material_gesamt = $haftstreifen_material_pro_cm * min($hoehe_offen, $breite_offen) * $auflage;

    if($verschluss == 1){
        $kosten_verschluss = $Pklebepunkte_lose_pro_tausend/1000*$auflage+$Pklebepunkte_lose_fix;
        $zeit_verschluss = 0.1;
    }
    if($verschluss == 2){
        $kosten_verschluss = $Pklebepunkte_vorkonf_pro_tausend/1000*$auflage+$Pklebepunkte_vorkonf_fix;
        $zeit_verschluss = $auflage / 600;
    }
    if($verschluss == 3){
        $kosten_verschluss = $Phaftstreifen_lose_pro_tausend/1000*$auflage+$Phaftstreifen_lose_fix+$kosten_haftstreifen_material_gesamt;
        $zeit_verschluss = 0.1;
    }
    if($verschluss == 4){
        $kosten_verschluss = $Phaftstreifen_vorkonf_pro_tausend/1000*$auflage+$Phaftstreifen_vorkonf_fix+$kosten_haftstreifen_material_gesamt;
        $zeit_verschluss = $auflage / 400;
    }

    if($verschluss == 6){
        $kosten_verschluss = 0.42*$auflage+95;
        $zeit_verschluss = $auflage / 300;
    }

    if($verschluss != 0){
        $wtvzuschusspapier += ($auflage * 0.01 + 30) / $drucknutzen;
    }
    $wtvfremdkosten += $kosten_verschluss;


    //nummerierung, codierung Digitaldruck
    $kosten_personalisierung = 0;

    if($personalisierung != 0){
        $kosten_personalisierung = 50 + ($personalisierung * 20 * $auflage * $anzblattjeblock / 1000);
        $wtvzuschusspapier += ($auflage * $anzblattjeblock * 0.01 + 50) / $drucknutzen;
    }
    $wtvfremdkosten += $kosten_personalisierung;


    //oesen Digitaldruck
    $kosten_oesen = 0;
    if($oesen != 0){
        $kosten_oesen = $Poesen_fixpreis + $auflage * $anzblattjeblock * $Poesen_stkpreis;
        $wtvzuschusspapier += ($auflage * $anzblattjeblock * 0.005 + 30) / $drucknutzen;
    }
    $wtveigenkosten += $kosten_oesen;


    //stanzung Digitaldruck
    $stanzarray = StanzPerfoKostenBerechnen($stanzung, $stanzart, $auflage, $sortenzahl, $anzblattjeblock, $breite_offen, $hoehe_offen, $drucknutzen, $Pstundensatz_wtv_maschinen);
    $kosten_stanzung = $stanzarray[0];
    $zeit_stanzung = $stanzarray[1];
    $kosten_werkzeug_stanzung = $stanzarray[2];
    $nutzen_stanzung = $stanzarray[3];
    $perfmaschine = $stanzarray[4];
    $wtvzuschusspapier += $stanzarray[5];
    if($stanzung != 0){
        $wtvzuschusspapier += 50;
    }
    $wtvfremdkosten += $kosten_stanzung;


    //bündeln Digitaldruck
    $kosten_buendeln = 0;
    if($hoehe_geschl > 29.7 || $breite_geschl > 29.7 || $hoehe_offen > 29.7 || $breite_offen > 29.7){
        $buendelfaktor = 3;
    }else{
        $buendelfaktor = 1;
    }

    if ($falzung == 'nein' || $falzung == 0 || $stanzung = !0) {
        $buendelfaktor *= 1.2;
    }

    if($buendeln != 0){
        $kosten_buendeln = $Pplano_fa_fixpreis_buendeln + $auflage / $buendeln * $Pplano_fa_preis_je_buendel * $buendelfaktor;
    }
    $wtveigenkosten += $kosten_buendeln;
    $zeit_buendeln = $kosten_buendeln / $Pstundensatz_wtv_hand;



    //freie Positionen
    $kosten_freipos10 = $frei10fixpreis + $frei10tsdpreis / 1000 * $auflage;
    $kosten_freipos20 = $frei20fixpreis + $frei20tsdpreis / 1000 * $auflage;
    $wtvfremdkosten += $kosten_freipos10 + $kosten_freipos20;   


    //Musterversand
    $kosten_musterversand = $musterversand * 8;
    $wtvfremdkosten += $kosten_musterversand;


    //Neutralversand, Absender
    $kosten_absender = $absender * 0;
    $wtvfremdkosten += $kosten_absender;

    
    //Endabrechnung
    $wtvzuschusspapier = ceil($wtvzuschusspapier);
    $wtvzuschusspapier_kosten = ($Druckbogenbreite * $Druckbogenhoehe * $papiersorte_grammatur * $papiersorte_value * $wtvzuschusspapier) / 1000000000;

    return [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung, $kosten_endschneiden, $zeit_endschneiden, $kosten_falzung, $zeit_falzung, $fakt_falzung, $kosten_nuten, $zeit_nuten, $kosten_personalisierung, $kosten_eckenrunden, $zeit_eckenrunden, $kosten_bohren_lochen, $zeit_bohren_lochen, $kosten_loseblatt, $zeit_buendeln, $zeit_verschluss, $zeit_loseblatt, $kosten_stanzung, $zeit_stanzung, $kosten_werkzeug_stanzung, $kosten_oesen, $kosten_buendeln, $kosten_freipos10, $kosten_freipos20, $kosten_musterversand, $kosten_absender];

}

function getDigiWTVFormate($breite_offen, $hoehe_offen, $stanzung, $stanzart, $nutlinien, $huellendruck){
    if($stanzung != 0){
        $breite_offen += 0.6;
        $hoehe_offen += 0.6;
    }
    return [$breite_offen, $hoehe_offen];
}

function getZUABPlanoDigiFA23($what, $auflage, $eigenkosten, $fremdkosten, $papiersorte_sammelform, $produktionszeit, $qualitaet, $sortenzahl, $provisionsart, $provisionswert){
    $preisaend = 0;
    $provisions_betrag = 0;
    $produktionszeit_betrag = 0;
    $qualitaet_betrag = 0;

    if($papiersorte_sammelform != 1){$preisaend += -10;}

    if ($provisionsart == "1") {
        $provisions_betrag = $provisionswert / 100 * ($eigenkosten + $fremdkosten);
    }

    if ($produktionszeit == 1) {
        $produktionszeit_betrag = $eigenkosten * -0.05;}
    if ($produktionszeit == 3) {
        $produktionszeit_betrag = ($eigenkosten + $fremdkosten) * 0.1 + 15;}

    $preisaend += $provisions_betrag + $produktionszeit_betrag + $qualitaet_betrag;

    //Schrottpreise vermeiden, Mindestauftragswert beachten: (Auftragswert, Faktor)
    $auftragswert = $eigenkosten + $fremdkosten - $preisaend;
    $preisaendliste = array(array(999999999,1), array(90,0.98), array(85,0.96), array(80,0.94), array(75, 0.92),array(70,0.90), array(65,0.88));
    foreach($preisaendliste as $p){
        if($auftragswert < $p[0]){
            $preisaendfaktor = $p[1];
        }
    }
    $preisaend *= $preisaendfaktor;

    return $preisaend;
}

function getZUABBRODigiFA23($what, $auflage, $eigenkosten, $fremdkosten, $papier_inhalt_sammelform, $papier_umschlag_sammelform, $produktionszeit, $qualitaet, $sortenzahl, $provisionsart, $provisionswert){
    $preisaend = 0;
    $provisions_betrag = 0;
    $produktionszeit_betrag = 0;
    $qualitaet_betrag = 0;

    if($papier_inhalt_sammelform != 1){$preisaend += -10;}
    if($papier_umschlag_sammelform != 1){$preisaend += -10;}

    if ($provisionsart == "1") {
        $provisions_betrag = $provisionswert / 100 * ($eigenkosten + $fremdkosten);
    }

    if ($produktionszeit == "1") {
        $produktionszeit_betrag = $eigenkosten * -0.05;}
    if ($produktionszeit == "3") {
        $produktionszeit_betrag = ($eigenkosten + $fremdkosten) * 0.1 + 15;}

    $preisaend += $provisions_betrag + $produktionszeit_betrag + $qualitaet_betrag;

    return $preisaend;
}

function getDigitALLBRO23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $auflage, $breite_geschl, $hoehe_geschl, $papier_inhalt_papiertyp1, $papier_inhalt_papiertyp2, $papier_inhalt_papiertyp3, $papier_inhalt_papiertyp4, $papier_inhalt_papiertyp5, $papier_inhalt_papiertyp6, $papier_inhalt_papiertyp7, $papier_inhalt_papiertyp8, $papier_inhalt_papiertyp9, $papier_inhalt_papiertyp10, $papier_inhalt_papiertyp11, $papier_inhalt_papiertyp12, $papier_inhalt_papiertyp13, $papier_inhalt_papiertyp14, $papier_inhalt_grammatur, $papier_inhalt_value, $papier_inhalt_vs_rs_unterschiedlich, $seiten_inhalt, $druckfarben_inhalt, $papier_inhalt_sammelform, $inhaltidentisch, $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14, $papier_umschlag_grammatur, $papier_umschlag_value, $seiten_umschlag, $zussorten_umschlag, $papier_umschlag_vs_rs_unterschiedlich, $druckfarben_umschlag, $papier_umschlag_sammelform, $zusatz_sorten_umschlag, $veredelung_umschlag, $papier_inhalt_art_nr, $papier_umschlag_art_nr, $weiterverarbeitung, $ausfuehrung, $klammerung, $buendeln, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $blankomuster, $musterversand, $absender, $qualitaet, $produktionszeit, $provisionsart, $provisionswert)
{

    // $weiterverarbeitung: 1=RDH, 2=PUR, 3=Wire-O, 4=HDCOVER, 5=HDCOVER LEINEN, 6=WAKAL, 7=FÄLZELBAND
    // $ausfuehrung: 1=ohne Umschlag, 2=Umschlag 4 Seiten, 3=Front+Rückkarton, 4=Überzug auf Pappe, 5=Umschlag 6 Seiten, 6=Kapitalband, Leseband, Prägung, VNS
    //  Liste x,y,buchruecken ja/nein, BuBi-Pappe = ja/nein

    //Parameter
    $Pplano_fa_mindpreis_kaschierung = 165;
    $Pplano_fa_kaschierung_mk = 0.8;
    $Pplano_fa_kaschierung_gl = 0.6;
    $druckgeschwindigkeit_inhalt = 300;
    $huellendruck = 0;

    if ($weiterverarbeitung == '2' || $weiterverarbeitung == '3' || $weiterverarbeitung == '6' || $weiterverarbeitung == '7') {
        $wtvFalzBg = 2;
    }else{
        $wtvFalzBg = 4;
        }
    
    if ($ausfuehrung == '1'){
        $seiten_umschlag = 0;
    }

    $beschnittliste_hor_vert = array(array(0.6, 0.2, FALSE, FALSE), array(1.2, 0.6, TRUE, FALSE), array(0.1, 0.1, TRUE, FALSE), array(0.6, 0.6, TRUE, TRUE), array(0.6, 0.6, TRUE, TRUE), array(0.2, 0.2, TRUE, FALSE), array(0.1, 0.1, TRUE, FALSE));
    $beschnitt_horiz = $beschnittliste_hor_vert[$weiterverarbeitung - 1][0];
    $beschnitt_vert = $beschnittliste_hor_vert[$weiterverarbeitung - 1][1];
    $breite_offen_inhalt = $breite_geschl * $wtvFalzBg/2 + $beschnitt_horiz;
    $hoehe_offen_inhalt = $hoehe_geschl + $beschnitt_vert;

    if ($beschnittliste_hor_vert[$weiterverarbeitung - 1][3] == FALSE) {
        $bubipappe = 0;
    } else {
        $bubipappe = 0.4;
    }

    $heftdicke = ($papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000) * 1.1 + $bubipappe;

    if ($beschnittliste_hor_vert[$weiterverarbeitung - 1][2] == FALSE) {
        $buchruecken = 0;
    } else {
        $buchruecken = $papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000 + $bubipappe;
    }

    $breite_offen_umschlag = $breite_geschl * $wtvFalzBg/2 + $beschnitt_horiz + $bubipappe + $buchruecken;
    $hoehe_offen_umschlag = $hoehe_geschl + $beschnitt_vert;

    $eigenkosten_prepress = getPrePressDIGI23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen_inhalt, $hoehe_offen_inhalt, 0, 0, $seiten_inhalt, $seiten_umschlag);

    [$drucknutzen_inhalt, $druckbogen_breite_inhalt, $druckbogen_hoehe_inhalt, $DruckbgRaender_inhalt] = getDruckNutzenDIGI($breite_offen_inhalt, $hoehe_offen_inhalt, $huellendruck);


    // WTV DIGI BRO

    $Pstundensatz_wtv_hand = 30;
    $Pstundensatz_wtv_maschinen = 50;
    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $wtvzuschusspapier_inhalt = 0;
    $wtvzuschusspapier_umschlag = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = $auflage * $hoehe_geschl * $breite_geschl * ($seiten_inhalt / 2 * $papier_inhalt_grammatur + $seiten_umschlag / 2 * $papier_umschlag_grammatur) / 10000 * 1.1;
    $wtvfrachtpreis = 90 + $wtvfrachtgewicht / 400000 * 15;

    $wtvgeschwindigkeit_hfs_digitaldrucke = 300; //???
    $Pplano_fa_fixpreis_buendeln = 15;
    $Pbro_preis_je_buendel = 0.09;

    $druckbogen_breite_umschlag = $druckbogen_breite_inhalt;
    $druckbogen_hoehe_umschlag = $druckbogen_hoehe_inhalt;

    if ($drucknutzen_inhalt < 1) {
        $drucknutzen_inhalt = 1;
    }
    $drucknutzen_umschlag = $drucknutzen_inhalt;
        if ($drucknutzen_umschlag < 1) {
        $drucknutzen_umschlag = 1;
    }
    $anzDruckbg_inhalt = ceil(($seiten_inhalt / 2) / $drucknutzen_inhalt);
    $anzDruckbg_umschlag = ceil(($seiten_umschlag / 2) / $drucknutzen_umschlag);


    // endschneiden + verpacken DIGI
    $zeit_endschneiden_inhalt = $zeit_endschneiden_umschlag = 0;
    $kosten_endschneiden_inhalt = $kosten_endschneiden_umschlag = $wtvkostenverpackung= 0;
    if ($weiterverarbeitung == '1' || $weiterverarbeitung == '3' || $weiterverarbeitung == '6' || $weiterverarbeitung == '7') {
        $zeit_endschneiden_inhalt = max(20, 15 + $seiten_inhalt * 0.5 + $seiten_inhalt * $auflage / 1900) / 60;
        if ($seiten_umschlag > 0) {
            $zeit_endschneiden_umschlag = (15 + $anzDruckbg_umschlag * $auflage / 600) / 60;
        }
        $kosten_endschneiden_inhalt = $zeit_endschneiden_inhalt * $Pstundensatz_wtv_maschinen;
        $kosten_endschneiden_umschlag = $zeit_endschneiden_umschlag * $Pstundensatz_wtv_maschinen;
        $wtveigenkosten += $kosten_endschneiden_inhalt + $kosten_endschneiden_umschlag;
        // Verpackungsmaterial
        $wtvkostenverpackung = $wtvfrachtgewicht / 5000 * 0.6;
        $wtvfremdkosten += $wtvkostenverpackung;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (2 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (2 + $auflage * 0.005);
    } elseif ($weiterverarbeitung == '4') {
        if ($seiten_umschlag > 0) {
            $zeit_endschneiden_umschlag = (15 + $anzDruckbg_umschlag * $auflage / 600) / 60;
        }
        $kosten_endschneiden_umschlag = $zeit_endschneiden_umschlag * $Pstundensatz_wtv_maschinen;
        $wtveigenkosten += $kosten_endschneiden_umschlag;
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (2 + $auflage * 0.005);
    }

    // RDH DIGI
    $zeit_rdh = $kosten_rdh = 0;
    if($weiterverarbeitung == '1'){
        $heftdicke = ($papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000) * 1.1;
        if($breite_geschl < 25 && $breite_geschl >= 9.0 && $hoehe_geschl >= 10.5 && ($seiten_inhalt + $seiten_umschlag) <= 96 && $heftdicke*10 < 4){
            $zeit_rdh = 0.25 + ($seiten_inhalt + $seiten_umschlag)/60 + ($auflage/$wtvgeschwindigkeit_hfs_digitaldrucke);
            if($hoehe_geschl < 14.8){
                $zeit_rdh *= 1.3;
                $zeit_rdh += 0.5;
            }
        }elseif($breite_geschl < 25 && $breite_geschl >= 9.0 && $hoehe_geschl >= 10 && ($seiten_inhalt + $seiten_umschlag) <= 96 && $heftdicke*10 < 5){
            $zeit_rdh = (1 + ($seiten_inhalt + $seiten_umschlag)/60 + ($auflage/$wtvgeschwindigkeit_hfs_digitaldrucke)) * 1.4;
        }elseif($heftdicke*10 < 6){
            $zeit_rdh = (3 + ($seiten_inhalt + $seiten_umschlag)/60 + ($auflage/$wtvgeschwindigkeit_hfs_digitaldrucke)) * 1.9;
            $wtvfrachtkosten += $wtvfrachtpreis;
        }else{
            $zeit_rdh = 99999999;
        }

        $kosten_ringoesen = $klammerung * 60;

        $kosten_umschlag_nuten = 0;
        if ($papier_umschlag_grammatur >= 170 && $ausfuehrung != '1') {
            $kosten_umschlag_nuten = min(($auflage / 3000 + 0.5) * $Pstundensatz_wtv_maschinen, $auflage / $drucknutzen_umschlag / 1000 * 33 + 110);
        }

        $kosten_rdh = $zeit_rdh * $Pstundensatz_wtv_maschinen + $kosten_ringoesen + $kosten_umschlag_nuten;
        $wtveigenkosten += $kosten_rdh;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (10 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (10 + $auflage * 0.02);
    }



    // PUR DIGI   
    $zeit_pur = $kosten_pur = 0;
    $fixkosten_pur_digitaldruck = 280;
    $kosten_pur_expl_digitaldruck = 0.40;

    if ($weiterverarbeitung == '2') {

        if($seiten_umschlag > 4){
            $umschlagfaktor_pur = 1.3;
        }else{
            $umschlagfaktor_pur = 1;
        }

        $kosten_pur = 1.3 * ($fixkosten_pur_digitaldruck + $auflage * $kosten_pur_expl_digitaldruck) * $umschlagfaktor_pur;
        $zeit_pur = 24 * 4;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (10 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (10 + $auflage * 0.02);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $kosten_pur;
    }

    // Wire-O DIGI
    $zeit_wireo = $kosten_wireo = 0;
    $kosten_loseblatt_digitaldruck = 15 + $auflage * 0.2;

    if ($weiterverarbeitung == '3') {

        //Wire-O stanzen + binden + Spirale DIGI
        $fk_wireo_fix = 200;
        $fk_wireo_spirale = 0.08 + ceil(max($hoehe_geschl, $breite_geschl) / 15) * 0.06;
        $fk_wireo_sta = ceil($buchruecken / 1.8) * 0.15;
        $fk_wireo_binden = 0.25;
        $fk_wireo = ($fk_wireo_fix + $auflage * ($fk_wireo_spirale + $fk_wireo_sta + $fk_wireo_binden));

        $kosten_wireo = $fk_wireo + $kosten_loseblatt;
        $zeit_wireo = 24 * 5;

        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.005);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $fk_wireo;
    }



    // HDCOVER DIGI
    $zeit_hdcover = $kosten_hdcover = 0;
    if ($weiterverarbeitung == '4') {
        $kosten_hdcover = 999999;
        $zeit_hdcover = 24 * 12;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.02);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $kosten_hdcover;
    }


    // HDCOVER Leinen DIGI
    $zeit_hdcover_leinen = $kosten_hdcover_leinen = 0;
    if($weiterverarbeitung == '5'){    
        $kosten_hdcover_leinen_fix = 500;
        $kosten_hdcover_leinen_var = (1/log(($auflage+650)/450)*4)+0.4+$seiten_inhalt/900;
        $zeit_hdcover_leinen = 24 * 15;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.01);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $kosten_hdcover_leinen = ($kosten_hdcover_leinen_fix + $auflage * $kosten_hdcover_leinen_var) * 1.25;
        $wtvfremdkosten += $kosten_hdcover_leinen;
    }
    

    // WAKAL = Wandkalender
    $zeit_wakal = $kosten_wakal = 0;
    if ($weiterverarbeitung == '6') {
        if ($breite_geschl < 12 || $breite_geschl > 43 || $hoehe_geschl < 12 || $hoehe_geschl > 43) {
            $wireo_faktor = 2;
        } else {
            $wireo_faktor = 1;
        }
        $ek_wireo_zu = $wireo_faktor * ((0.5 + (ceil((($seiten_inhalt + $seiten_umschlag) / 2) / 23) * $auflage) / 2000) * $Pstundensatz_wtv_maschinen) + (($seiten_inhalt * $auflage / 600) / 60 * $Pstundensatz_wtv_maschinen);
        $fk_wireo_sta_bind = ((1 / pow(2, log10($auflage / 20))) + ((max([$breite_geschl, $hoehe_geschl]) + 15) / 300) + 0.03 * (ceil(($buchruecken / 0.4)) - 1)) * ($auflage) * 1.4;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.02);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $fk_wireo_sta_bind;
        $wtveigenkosten += $ek_wireo_zu;
        $kosten_wakal = $fk_wireo_sta_bind + $ek_wireo_zu;
        $zeit_wakal = 24 * 5;
    }


    // FÄLZEL = gefälzelte Broschüre
    $zeit_faelzeln = $kosten_faelzeln = 0;
    if ($weiterverarbeitung == '7') {
        $zeit_faelzeln = 0.5 + $auflage * 2.50 / 60;
        $materialkosten_faelzelband30cm = 0.16;
        $kosten_faelzeln = $zeit_faelzeln * $Pstundensatz_wtv_hand;
        $wtveigenkosten += $kosten_faelzeln;
        $wtvfremdkosten += $materialkosten_faelzelband30cm * $auflage;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (1 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (10 + $auflage * 0.02);
    }    


    //Verdelung Umschlag = folien kaschierung oder lack UM
    $kosten_kaschierung = 0;
    $zeit_kaschierung = 0;
    $flaechekaschierung = ($breite_offen_umschlag*$wtvFalzBg/2+2)*($hoehe_offen_umschlag+2);
    if($veredelung_umschlag == "6"){
        $kosten_kaschierung = max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_mk*$flaechekaschierung/10000*$auflage);
    }
    if($veredelung_umschlag == "7"){
        $kosten_kaschierung = max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_gl*$flaechekaschierung/10000*$auflage);
    }
    
    if($veredelung_umschlag != "0"){
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.002);
        $zeit_kaschierung = 240;
        $wtvfrachtkosten += 25;
        $wtvfremdkosten += $kosten_kaschierung;
    }

    //bündeln DIGI
    $kosten_buendeln = 0;
    if ($buendeln != 0) {
        $kosten_buendeln = $Pplano_fa_fixpreis_buendeln + $auflage / $buendeln * $Pbro_preis_je_buendel;
    }
    $zeit_buendeln = $kosten_buendeln / $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_buendeln;

    // Blankomuster vorab DIGI
    $kosten_blankomuster = 115 * $blankomuster;
    $wtveigenkosten += $kosten_blankomuster;

    //freie Positionen DIGI
    $kosten_freipos10 = $frei10fixpreis + $frei10tsdpreis / 1000 * $auflage;
    $kosten_freipos20 = $frei20fixpreis + $frei20tsdpreis / 1000 * $auflage;
    $wtvfremdkosten += $kosten_freipos10 + $kosten_freipos20;

    //Musterversand DIGI
    $kosten_musterversand = $musterversand * 8;
    $wtvfremdkosten += $kosten_musterversand;

    //Neutralversand, Absender DIGI
    $kosten_absender = $absender * 0;
    $wtvfremdkosten += $kosten_absender;

    // Digitaldruck BRO Umschlag   

    if ($seiten_umschlag > 0) {
        [$drucknutzen_umschlag, $druckbogen_breite_umschlag, $druckbogen_hoehe_umschlag, $DruckbgRaender_umschlag] = getDruckNutzenDIGI($breite_offen_umschlag, $hoehe_offen_umschlag, $huellendruck);

        if($wtvFalzBg==2){
            $auflage_umschlag = $auflage * 2;
        }else{
            $auflage_umschlag = $auflage;
        }

        [$eigenkosten_digitaldruck_umschlag, $fremdkosten_digitaldruck_umschlag, $nettobg_umschlag, $zuschuss_digitaldruck_umschlag, $papierkosten_umschlag, $bruttobg_umschlag, $ruestkosten_umschlag, $druckkosten_umschlag, $klickkosten_umschlag] = getPrintDIGIPlanoFa23($what, $papier_umschlag_grammatur, $papier_umschlag_value, $auflage_umschlag, $druckfarben_umschlag, $breite_offen_umschlag, $hoehe_offen_umschlag, $sortenzahl, $papier_umschlag_sammelform, 1, $wtvzuschusspapier_umschlag, $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14);
    } else {
        [$eigenkosten_digitaldruck_umschlag, $fremdkosten_digitaldruck_umschlag, $nettobg_umschlag, $zuschuss_digitaldruck_umschlag, $papierkosten_umschlag, $bruttobg_umschlag, $ruestkosten_umschlag, $druckkosten_umschlag, $klickkosten_umschlag, $drucknutzen_umschlag, $druckbogen_breite_umschlag, $druckbogen_hoehe_umschlag, $DruckbgRaender_umschlag] = [0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0];
    }
  

    // Digitaldruck BRO Inhalt

    $price_inhalt = 9999999;

    $formate = array();

/*
    $papierType1 = $result->papiertyp1;    // 63x88 
    $papierType2 = $result->papiertyp2;    // 70 x 100 
    $papierType3 = $result->papiertyp3;    // 50 x 70
    $papierType4 = $result->papiertyp4;   // 61 x 43
    $papierType5 = $result->papiertyp5;   // Hüllen 22,9 x 11,4
    $papierType6 = $result->papiertyp6;   // Hüllen C4
    $papierType7 = $result->papiertyp7;   // Hüllen B4
    $papierType8 = $result->papiertyp8;   // Hüllen C5
    $papierType9 = $result->papiertyp9;   // Hüllen DIN lang 22 x 11
    $papierType10 = $result->papiertyp10;  // Hüllen 22 x 22
    $papierType11 = $result->papiertyp11;   // 65 x 92
    $papierType12 = $result->papiertyp12;  // 64 x 45
    $papierType13 = $result->papiertyp13;   // 31,5 x 44 und 22 x 31.5 (!)
    $papierType14 = $result->papiertyp14;   // 72 x 102
*/

    if ($papier_inhalt_papiertyp1) {
        $formate[] = array('breite' => 44, 'hoehe' => 31.5, 'ntz_rohbg' => 4);
    }

    if ($papier_inhalt_papiertyp2) {
        $formate[] = array('breite' => 48.7, 'hoehe' => 33, 'ntz_rohbg' => 4);
    }

    if ($papier_inhalt_papiertyp3) {
        $formate[] = array('breite' => 48.7, 'hoehe' => 33, 'ntz_rohbg' => 2);
    }

    if ($papier_inhalt_papiertyp4) {
        $formate[] = array('breite' => 30.5, 'hoehe' => 43, 'ntz_rohbg' => 2);
    }

    if ($papier_inhalt_papiertyp11) {
        $formate[] = array('breite' => 32.5, 'hoehe' => 46, 'ntz_rohbg' => 4);
    }

    if ($papier_inhalt_papiertyp12) {
        $formate[] = array('breite' => 32, 'hoehe' => 45, 'ntz_rohbg' => 2);
    }

    if ($papier_inhalt_papiertyp13) {
        $formate[] = array('breite' => 31.5, 'hoehe' => 44, 'ntz_rohbg' => 1);
    }

    if ($papier_inhalt_papiertyp14) {
        $formate[] = array('breite' => 48.7, 'hoehe' => 33, 'ntz_rohbg' => 4);
    }


    foreach ($formate as $key => $format) {

        $calc1 = floor(($format['breite'] - $DruckbgRaender_inhalt) / $breite_offen_inhalt) * floor(($format['hoehe'] - $DruckbgRaender_inhalt) / $hoehe_offen_inhalt);
        $calc2 = floor(($format['breite'] - $DruckbgRaender_inhalt) / $hoehe_offen_inhalt) * floor(($format['hoehe'] - $DruckbgRaender_inhalt) / ($breite_offen_inhalt));
        $drucknutzen_inhalt1 = ($calc1 > $calc2) ? $calc1 : $calc2;

        if ($drucknutzen_inhalt1 > 0) {
            $papiernutzen_inhalt1 = $format['ntz_rohbg'];
            $nettobg_inhalt1 = ceil(($seiten_inhalt / $wtvFalzBg / $drucknutzen_inhalt1) * $auflage);
            $zuschuss_inhalt1 = ceil(20 + ($seiten_inhalt / ($drucknutzen_inhalt1 * 2) * $auflage * 0.03) + $wtvzuschusspapier_inhalt);
            $klickkosten_inhalt = getKlickKostenDigitaldruck($nettobg_inhalt1 + $zuschuss_inhalt1, 2, $druckfarben_inhalt, 0);
            $druckkosten_inhalt1 = ($nettobg_inhalt1 + $zuschuss_inhalt1) * $klickkosten_inhalt * 2;
            $druckzeitfortdruck1 = ($zuschuss_inhalt1 + $nettobg_inhalt1) / $druckgeschwindigkeit_inhalt;
            $papierkosten_inhalt1 = (($nettobg_inhalt1 + $zuschuss_inhalt1) * $format['hoehe'] * $format['breite'] * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000);
            $price_inhalt_calc = $papierkosten_inhalt1 + $druckkosten_inhalt1;
        } else {
            $price_inhalt_calc = 1000000;
            $papierkosten_inhalt1 = $nettobg_inhalt1 = $zuschuss_inhalt1 = $papiernutzen_inhalt1  =  $druckzeitfortdruck1 = 0;
        }

        if ($price_inhalt_calc < $price_inhalt) {
            $price_inhalt = $price_inhalt_calc;
            $drucknutzen_inhalt = $drucknutzen_inhalt1;
            $zuschuss_inhalt = $zuschuss_inhalt1;
            $nettobg_inhalt = $nettobg_inhalt1;
            $druckbogen_hoehe_inhalt = $format['hoehe'];
            $druckbogen_breite_inhalt = $format['breite'];
            $papiernutzen_inhalt = $format['ntz_rohbg'];
            $druckzeitfortdruck_inhalt = $druckzeitfortdruck1;
            $papierkosten_inhalt = $papierkosten_inhalt1;
        }
    }

    $papieraufschlagfaktor_inhalt = 1.7;
    $price_inhalt -= $papierkosten_inhalt;
    $papierkosten_inhalt *= $papieraufschlagfaktor_inhalt;
    $price_inhalt += $papierkosten_inhalt;
    $eigenkosten_inhalt = $price_inhalt - $papierkosten_inhalt;
    $fremdkosten_inhalt = $price_inhalt - $eigenkosten_inhalt;

    //Endabrechnung DIGI
    $wtvzuschusspapier_inhalt = ceil($wtvzuschusspapier_inhalt);
    $wtvzuschusspapier_umschlag = ceil($wtvzuschusspapier_umschlag);
    $wtvzuschusspapier_kosten_inhalt = ($druckbogen_breite_inhalt * $druckbogen_hoehe_inhalt * $papier_inhalt_grammatur * $papier_inhalt_value * $wtvzuschusspapier_inhalt) / 1000000000;
    $wtvzuschusspapier_kosten_umschlag = ($druckbogen_breite_umschlag * $druckbogen_hoehe_umschlag * $papier_umschlag_grammatur * $papier_umschlag_value * $wtvzuschusspapier_umschlag) / 1000000000;

    $versandgewicht = $auflage * $hoehe_geschl * $breite_geschl * ($seiten_inhalt / 2 * $papier_inhalt_grammatur + $seiten_umschlag / 2 * $papier_umschlag_grammatur) / 10000 * 1.2;

    $eigenkosten = $eigenkosten_prepress + $eigenkosten_digitaldruck_umschlag + $eigenkosten_inhalt + $wtveigenkosten;
    $fremdkosten = $fremdkosten_digitaldruck_umschlag + $fremdkosten_inhalt + $wtvfremdkosten + $wtvfrachtkosten + $wtvzuschusspapier_kosten_inhalt + $wtvzuschusspapier_kosten_umschlag;

    $preisaend = getZUABBRODigiFA23($what, $auflage, $eigenkosten, $fremdkosten, $papier_inhalt_sammelform, $papier_umschlag_sammelform, $produktionszeit, $qualitaet, $sortenzahl, $provisionsart, $provisionswert);

    $basispreisnetto = $eigenkosten + $fremdkosten + $preisaend;

    // Einzelwerte ausgeben
    if ($what == 'debug') {
        echo ('-------------------- Digitaldruck PrePress --------------------' . "\n<br />");
        $Ausgabeliste = array('Vorstufe: ' => $eigenkosten_prepress);
        foreach ($Ausgabeliste as $bez => $wert) {
            if ($wert != 0) {
                echo ($bez . number_format($wert, 2 , ',', '.') . " € \n<br />");
            }
        }
    }

    // Einzelwerte ausgeben
    if (($what == 'debug') && ($seiten_umschlag > 0)) {
        echo ('--------------------  Digitaldruck Print UMSCHLAG -------------------- ' . "\n<br />");
        echo ('Format offen:' . $breite_offen_umschlag . ' x ' . $hoehe_offen_umschlag . ' cm' . "\n<br />");
        echo ('Papier: ' . $druckbogen_breite_umschlag . ' x ' . $druckbogen_hoehe_umschlag . ' cm mit ' . $nettobg_umschlag . ' Nettobg. + ' . $zuschuss_digitaldruck_umschlag . ' ZU Druck + ' . $wtvzuschusspapier_umschlag . ' ZU WTV'."\n<br />");
        echo (" = ".number_format($bruttobg_umschlag + $wtvzuschusspapier_umschlag, 0) . ' Bg. zu ' . $drucknutzen_umschlag . ' Drucknutzen' . "\n<br />");
        echo ('Rüstkosten: ' . number_format($ruestkosten_umschlag, 2 , ',', '.') . " € | ");
        echo ('Druckkosten: ' . (number_format($druckkosten_umschlag, 2 , ',', '.')) . " €\n<br />");
        echo ('Papier: ' . number_format($papierkosten_umschlag, 2 , ',', '.') . " €\n<br />");
        echo ('VK Klick DIN A3 : ' . number_format($klickkosten_inhalt, 2, ',', '.') . " € \n<br />");
        echo ('Druck Eigenkosten: ' . number_format($eigenkosten_digitaldruck_umschlag, 2 , ',', '.') . " €\n<br />");
        echo ('Druck Fremdkosten: ' . number_format($fremdkosten_digitaldruck_umschlag, 2 , ',', '.') . " € \n<br />");
        echo ('Gesamtkosten Print Umschlag: ' . (number_format($eigenkosten_digitaldruck_umschlag + $fremdkosten_digitaldruck_umschlag, 2 , ',', '.')) . " €\n\n<br />");
    }

    // Einzelwerte ausgeben
    if ($what == 'debug') {
        echo ('-------------------- Digitaldruck Print INHALT --------------------' . "\n<br />");
        echo ('offenes Format: ' . number_format($breite_offen_inhalt, 2 , ',', '.') . ' x ' . number_format($hoehe_offen_inhalt, 2 , ',', '.') . " cm \n<br />");
        echo ('Heftdicke: ' . number_format($heftdicke, 2 , ',', '.') . ' cm' . "\n<br />");
        echo ('Papier: ' . $druckbogen_breite_inhalt . ' x ' . $druckbogen_hoehe_inhalt . ' cm mit ' . number_format($nettobg_inhalt, 0, ',', '.') . ' Nettobg. + ' . number_format($zuschuss_inhalt, 0, ',', '.') . ' ZU Druck/WTV'."\n<br />");
        echo (" = ".number_format($zuschuss_inhalt + $nettobg_inhalt, 0, ',', '.') . ' Bg. zu ' . $drucknutzen_inhalt . " Nutzen \n<br />");
        echo ('Rohbogen mit ' . $papiernutzen_inhalt . " Nutzen \n<br />");
        
        echo ('Papier: ' . number_format($papierkosten_inhalt, 2 , ',', '.') . ' €' . "\n<br />");
        echo ('VK Klick DIN A3 : ' . number_format($klickkosten_inhalt, 2, ',', '.') . " € \n<br />");

        echo ('Druck Eigenkosten: ' . number_format($eigenkosten_inhalt, 2 , ',', '.') . " €\n<br />");
        echo ('Druck Fremdkosten: ' . number_format($fremdkosten_inhalt, 2 , ',', '.') . " €\n<br />");
        echo ('Gesamtkosten Print Inhalt: ' . (number_format($eigenkosten_inhalt + $fremdkosten_inhalt, 2 , ',', '.')) . " €\n\n<br />");
        echo ('-------------------- WTV BRO DIGI --------------------' . "\n<br />");
        if ($seiten_umschlag > 0) {
            echo ('Kosten Endschneiden UM: ' . number_format($kosten_endschneiden_umschlag, 2 , ',', '.') . ' € |  Zeit: ' . number_format($zeit_endschneiden_umschlag, 2 , ',', '.') . " h\n<br />");
        }
        echo ('Kosten Endschneiden INH: ' . number_format($kosten_endschneiden_inhalt, 2 , ',', '.') . ' € |  Zeit: ' . number_format($zeit_endschneiden_inhalt, 2 , ',', '.') . " h\n<br />");

        if ($kosten_rdh > 0) {
            echo ('Kosten RDH (ggf. inkl. nuten): ' . number_format($kosten_rdh, 2 , ',', '.') . ' € |  Zeit: ' . number_format($zeit_rdh, 2 , ',', '.') . " h\n<br />");
            echo ('WTV Geschw. HFS: ' . $wtvgeschwindigkeit_hfs_digitaldrucke . " Expl./h \n<br />");
        }
        if ($kosten_pur > 0) {
            echo ('Kosten PUR: ' . number_format($kosten_pur, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_wireo > 0) {
            echo ('Kosten Wire-O: ' . number_format($kosten_wireo, 2 , ',', '.') . " € \n<br />");
        }
        if ($kosten_hdcover > 0) {
            echo ('Kosten HDCOVER: ' . number_format($kosten_hdcover, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_hdcover_leinen > 0) {
            echo ('Kosten HDCOVER-LEINEN: ' . number_format($kosten_hdcover_leinen, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_wakal > 0) {
            echo ('Kosten WaKal: ' . number_format($kosten_wakal, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_faelzeln > 0) {
            echo ('Kosten Fälzel: ' . number_format($kosten_faelzeln, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_kaschierung > 0) {
            echo ('Kosten Kaschierung: ' . number_format($kosten_kaschierung, 2 , ',', '.') . ' | Zeit : ' . number_format($zeit_kaschierung, 2 , ',', '.') . " h\n<br />");
        }
        if ($kosten_buendeln > 0) {
            echo ('Kosten bündeln: ' . number_format($kosten_buendeln, 2 , ',', '.') . ' | Zeit : ' . number_format($zeit_buendeln, 2 , ',', '.') . " h\n<br />");
        }
        if ($kosten_blankomuster > 0) {
            echo ('Kosten Blankomuster: ' . number_format($kosten_blankomuster, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_musterversand > 0) {
            echo ('Kosten Musterversand: ' . number_format($kosten_musterversand, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_absender > 0) {
            echo ('Kosten Absender: ' . number_format($kosten_absender, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_freipos10 > 0) {
            echo ('Kosten freipos10: ' . number_format($kosten_freipos10, 2 , ',', '.') . " €\n<br />");
        }
        if ($kosten_freipos20 > 0) {
            echo ('Kosten freipos20: ' . number_format($kosten_freipos20, 2 , ',', '.') . " €\n<br />");
        }
        if ($seiten_umschlag > 0) {
            echo ('WTV Zuschuss Papier UM: ' . number_format($wtvzuschusspapier_kosten_umschlag, 2 , ',', '.') . ' € | ' . number_format($wtvzuschusspapier_umschlag, 0 , ',', '.') . " Bg. \n<br />");
        }
        echo ('WTV Zuschuss Papier INH: ' . number_format($wtvzuschusspapier_kosten_inhalt, 2 , ',', '.') . ' € | ' . number_format($wtvzuschusspapier_inhalt, 0 , ',', '.') . " Bg.\n<br />");
        echo ('Versandgewicht: ' . number_format($versandgewicht / 1000, 2 , ',', '.') . " kg \n<br />");
        echo ('  WTV Eigenkosten: ' . number_format($wtveigenkosten, 2 , ',', '.') . " €\n<br />");
        echo ('+ WTV Fremdkosten: ' . number_format($wtvfremdkosten, 2 , ',', '.') . " €\n<br />");
        echo ('+ WTV Papierkosten ZU: ' . number_format( $wtvzuschusspapier_kosten_inhalt + $wtvzuschusspapier_kosten_umschlag, 2 , ',', '.') . " €\n<br />");
        echo ('+ WTV Frachtkosten: ' . number_format($wtvfrachtkosten, 2 , ',', '.') . " €\n<br />");
        echo ('= WTV Gesamtkosten: ' . number_format($wtvfremdkosten+$wtveigenkosten+$wtvzuschusspapier_kosten_inhalt + $wtvzuschusspapier_kosten_umschlag, 2 , ',', '.') . " €\n<br />");

        echo ('============== Gesamt ==============' . "\n<br />");
        echo ('  Eigenkosten: ' . number_format($eigenkosten, 2 , ',', '.') . " € \n<br />");
        echo ('+ Fremdkosten: ' . number_format($fremdkosten, 2 , ',', '.') . " € \n<br />");
        echo ('+ Preisänderung: ' . number_format($preisaend, 2 , ',', '.') . " € \n<br />");
        echo ('= Basispreis Netto: ' . number_format($basispreisnetto, 2 , ',', '.') . " €\n<br />");
    }

    $internarray = array('test' => 'testtext');
    $intern = Array2String($internarray);
    
    $ergebnis = array('eigenkosten' => $eigenkosten, 'fremdkosten' => $fremdkosten, 'preisaend' => $preisaend, 'versandgewicht' => $versandgewicht, 'intern' => $intern);

    return $ergebnis;

}

// Offsetdruck
function getOffsetALLPlanoFa23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $breite_geschl, $hoehe_geschl, $papierType1, $papierType2, $papierType3, $papierType4, $papierType5, $papierType6, $papierType7, $papierType8, $papierType9, $papierType10, $papierType11, $papierType12, $papierType13, $papierType14, $papiersorte_grammatur, $papiersorte_value, $auflage, $drucklack, $papier_vs_rs_unterschiedlich, $anzblattjeblock, $zusdruckplatten, $zusfarbwechsel, $lackart, $papiersorte_sammelform, $loseblatt, $falzung, $falzart, $leimung, $buendeln, $perforation, $duftdruck, $oesen, $praegung, $stanzung, $stanzart, $cito_anstanzung, $verschluss, $durchmesser_klebepkt, $beilage, $nummerierung, $laserstanzung, $ecken_runden, $bohren_lochen, $kaschierung, $kaschierung_anzahl, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender, $qualitaet, $produktionszeit, $provisionsart, $provisionswert)

{
    if($drucklack == '0'){
        $lackart = 0;
    }

    if($anzblattjeblock == 0){
        $anzblattjeblock = 1;
        $leimung = 0;
    }
    
    if($anzblattjeblock != 1){
        $leimung = 1;
    }

    $prepress_kosten = getPrePressPlanoFa23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen);

    // Hüllendruck? 
    if (($papierType5) || ($papierType6) || ($papierType7) || ($papierType8) || ($papierType9) || ($papierType10)) {
        $huellendruck = 1;
    }else{
        $huellendruck = 0;
    }

    if ($huellendruck == 1){
        if ($papierType5){
            $breite_offen = 22.9;
            $hoehe_offen = 11.4;
        }
        if ($papierType6){
            $breite_offen = 32.4;
            $hoehe_offen = 22.9;
        }
        if ($papierType7){
            $breite_offen = 35.3;
            $hoehe_offen = 25;
        }
        if ($papierType8){
            $breite_offen = 22.9;
            $hoehe_offen = 16.2;
        }
        if ($papierType9){
            $breite_offen = 22;
            $hoehe_offen = 11;
        }
        if ($papierType10){
            $breite_offen = 22;
            $hoehe_offen = 22;
        }
    }

    if ($falzung == 'nein' || $falzung == 0) {
        $breite_geschl = $breite_offen;
        $hoehe_geschl = $hoehe_offen;
    }

    // Format wegen WTV vergrößern?
    $breite_offen_print = $breite_offen;
    $hoehe_offen_print = $hoehe_offen;
    if(($stanzung != 0 && $stanzung != 99) || ($praegung != 0) || ($perforation != 0) || ($kaschierung != 0)){
        $breite_offen_print += 0.6;
        $hoehe_offen_print += 0.6;
    }

    $printarray = getPrintPlanoFa23($what, $papierType1, $papierType2, $papierType3, $papierType4, $papierType5, $papierType6, $papierType7, $papierType8, $papierType9, $papierType10, $papierType11, $papierType12, $papierType13, $papierType14, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen_print, $hoehe_offen_print, $drucklack, $papier_vs_rs_unterschiedlich, $sortenzahl, $anzblattjeblock, $zusdruckplatten, $zusfarbwechsel, $lackart, $papiersorte_sammelform, $produktionszeit, $stanzung);

    $druckbogen_breite = $printarray[8];
    $druckbogen_hoehe = $printarray[7];
    $druckbogen_nettomenge = $printarray[10];
    $druckbogen_zuschussmenge = $printarray[11];
    $drucknutzen = $printarray[9];
    $druckzeitruesten = $printarray[18];
    $druckzeitfortdruck = $printarray[19];
    $ctp = $printarray[3];
    $rohbogenformate = $printarray[26];
    $drucklegung_text = $printarray[27];

    $wtvarray = getWTVPlanoFa23($what, $auflage, $hoehe_offen, $breite_offen, $hoehe_geschl, $breite_geschl, $papiersorte_grammatur, $papiersorte_value, $drucknutzen, $sortenzahl, $loseblatt, $druckbogen_breite, $druckbogen_hoehe, $druckbogen_nettomenge, $druckbogen_zuschussmenge, $falzung, $falzart, $leimung, $anzblattjeblock, $buendeln, $perforation, $duftdruck, $oesen, $praegung, $stanzung, $stanzart, $cito_anstanzung, $verschluss, $durchmesser_klebepkt, $beilage, $nummerierung, $laserstanzung, $ecken_runden, $bohren_lochen, $kaschierung, $kaschierung_anzahl, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender, $huellendruck);

    $wtveigenkosten = $wtvarray[0];
    $wtvfremdkosten = $wtvarray[1];
    $wtvfrachtkosten = $wtvarray[2];
    $wtvzuschusspapier_kosten = $wtvarray[3];
    $wtvzuschusspapier = $wtvarray[4];
    $nutzen_stanzung = $wtvarray[5];
    $versandgewicht = $wtvarray[6];
    $zeit_endschneiden = $wtvarray[7];
    $zeit_falzung = $wtvarray[8];
    $zeit_nuten = $wtvarray[9];
    $zeit_leimen = $wtvarray[10];
    $zeit_buendeln = $wtvarray[11];
    $zeit_perforation = $wtvarray[12];
    $zeit_stanzung = $wtvarray[13];
    $zeit_duftdruck =$wtvarray[14];
    $zeit_oesen = $wtvarray[15];
    $zeit_praegung = $wtvarray[16];
    $zeit_cito = $wtvarray[17];
    $zeit_verschluss = $wtvarray[18];
    $zeit_beilage = $wtvarray[19];
    $zeit_nummerierung = $wtvarray[20];
    $zeit_laserstanzung = $wtvarray[21];
    $zeit_eckenrunden = $wtvarray[22];
    $zeit_bohren_lochen = $wtvarray[23];
    $zeit_loseblatt = $wtvarray[24];

    $rabattierfaehigekosten = $printarray[25];
    $eigenkosten = $prepress_kosten + $printarray[0] + $wtvarray[0];
    $fremdkosten = $printarray[24] + $wtvarray[1] + $wtvarray[2] + $wtvarray [3];
    $druckmaschine = $printarray[1];

    $preisaend = getZUABPlanoFa23($what, $auflage, $rabattierfaehigekosten, $eigenkosten, $fremdkosten, $papiersorte_sammelform, $druckfarben_inhalt, $druckmaschine, $qualitaet, $produktionszeit, $sortenzahl, $breite_offen, $hoehe_offen, $provisionsart, $provisionswert, $anzblattjeblock, $papier_vs_rs_unterschiedlich);

    $basispreisnetto = $eigenkosten + $fremdkosten + $preisaend;

    if($what=='debug'){
    echo('-------------------- Preis PLANO-FA total --------------------'."\n</br >");
    echo('ohne Aktionsrabatt, Onlinerabatt, Kundengruppenrabatt, Endkundenversand'."\n</br >");
    echo('Eigenkosten: '.number_format($eigenkosten, 2 , ',', '.')." €\n</br >");
    echo('Fremdkosten: '.number_format($fremdkosten, 2 , ',', '.')." €\n</br >");
    echo('Zu-/Abschläge: '.number_format($preisaend, 2 , ',', '.')." €\n</br >");
    echo('Basispreis Netto: '.number_format($basispreisnetto, 2 , ',', '.')." € \n</br >");
    echo("\n</br >".'--------------------------------------'."\n</br >");
    }

    $internarray = array('$druckmaschine'=>$druckmaschine, '$prepress_kosten'=>$prepress_kosten, '$druckbogen_breite'=>$druckbogen_breite, '$druckbogen_hoehe'=>$druckbogen_hoehe, '$druckbogen_nettomenge'=>$druckbogen_nettomenge, '$druckbogen_zuschussmenge'=>$druckbogen_zuschussmenge, '$drucknutzen'=>$drucknutzen, '$wtveigenkosten'=>$wtveigenkosten, '$wtvfremdkosten'=>$wtvfremdkosten, '$wtvfrachtkosten'=>$wtvfrachtkosten, '$wtvzuschusspapier_kosten'=>$wtvzuschusspapier_kosten, '$wtvzuschusspapier'=>$wtvzuschusspapier, '$nutzen_stanzung'=> $nutzen_stanzung, '$druckzeitruesten'=>$druckzeitruesten, '$druckzeitfortdruck'=>$druckzeitfortdruck, '$versandgewicht'=>$versandgewicht, '$ctp'=>$ctp , '$rohbogenformate'=>$rohbogenformate, '$zeit_endschneiden'=>$zeit_endschneiden, '$zeit_falzung'=>$zeit_falzung, '$zeit_nuten'=>$zeit_nuten, '$zeit_leimen'=>$zeit_leimen, '$zeit_buendeln'=>$zeit_buendeln, '$zeit_perforation'=>$zeit_perforation, '$zeit_stanzung'=>$zeit_stanzung, '$zeit_duftdruck'=>$zeit_duftdruck, '$zeit_oesen'=>$zeit_oesen, '$zeit_praegung'=>$zeit_praegung, '$zeit_cito'=>$zeit_cito, '$zeit_verschluss'=>$zeit_verschluss,'$zeit_beilage'=>$zeit_beilage, '$zeit_nummerierung'=>$zeit_nummerierung, '$zeit_laserstanzung'=>$zeit_laserstanzung, '$zeit_eckenrunden'=>$zeit_eckenrunden, '$zeit_bohren_lochen'=>$zeit_bohren_lochen, '$zeit_loseblatt'=>$zeit_loseblatt, '$drucklegung_text'=>$drucklegung_text);

    $intern = Array2String($internarray);

    $ergebnis = array('eigenkosten'=>$eigenkosten, 'fremdkosten'=>$fremdkosten, 'preisaend'=>$preisaend, 'versandgewicht'=>$versandgewicht, 'intern'=>$intern);
    
    return $ergebnis;

}

function getOffsetALLBRO23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $breite_geschl, $hoehe_geschl, $auflage, $papier_inhalt_papiertyp1, $papier_inhalt_papiertyp2, $papier_inhalt_papiertyp3, $papier_inhalt_papiertyp4, $papier_inhalt_papiertyp5, $papier_inhalt_papiertyp6, $papier_inhalt_papiertyp7, $papier_inhalt_papiertyp8, $papier_inhalt_papiertyp9, $papier_inhalt_papiertyp10, $papier_inhalt_papiertyp11, $papier_inhalt_papiertyp12, $papier_inhalt_papiertyp13, $papier_inhalt_papiertyp14, $papier_inhalt_grammatur, $papier_inhalt_value, $papier_inhalt_vs_rs_unterschiedlich, $seiten_inhalt, $druckfarben_inhalt, $drucklack_inhalt, $lackart_inhalt, $papier_inhalt_sammelform, $inhaltidentisch, $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14, $papier_umschlag_grammatur, $papier_umschlag_value, $papier_umschlag_vs_rs_unterschiedlich, $seiten_umschlag, $druckfarben_umschlag, $veredelung_umschlag, $papier_umschlag_sammelform, $zusfarbwechsel, $zusdruckplatten, $zussorten_umschlag, $papier_inhalt_art_nr, $papier_umschlag_art_nr, $weiterverarbeitung, $ausfuehrung, $klammerung, $buendeln, $perforation, $duftdruck, $praegung_umschlag, $beilage, $registerstanzung, $einschweissen, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $blankomuster, $musterversand, $absender, $qualitaet, $produktionszeit, $provisionsart, $provisionswert)
{

    if($seiten_umschlag == 0){
        $papier_umschlag_art_nr = $papier_umschlag_grammatur = $papier_umschlag_value = $druckfarben_umschlag = 0;
    }

    $prepress_kosten = getPrePressBRO23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $seiten_inhalt, $druckfarben_inhalt, $seiten_umschlag, $druckfarben_umschlag, $breite_geschl, $hoehe_geschl);
    // Test ob UM = INH und für RDH ggf. kombinieren
    /*
    if(($papier_inhalt_art_nr == $papier_umschlag_art_nr) && ($druckfarben_inhalt == $druckfarben_umschlag) && ($seiten_umschlag == 4) && ($weiterverarbeitung == 1)){
        $seiten_inhalt += 4;
        $seiten_umschlag = 0;
        $ausfuehrung = 1;
        if ($what == 'debug') {
            echo('>>> UM = INH erkannt: '. $papier_inhalt_art_nr . ' = ' . $papier_umschlag_art_nr);
        }
    }
   */
     
    $printarray = getPrintBRO23($what, $auflage, $breite_geschl, $hoehe_geschl, $weiterverarbeitung, $ausfuehrung, $papier_inhalt_papiertyp1, $papier_inhalt_papiertyp2, $papier_inhalt_papiertyp3, $papier_inhalt_papiertyp4, $papier_inhalt_papiertyp5, $papier_inhalt_papiertyp6, $papier_inhalt_papiertyp7, $papier_inhalt_papiertyp8, $papier_inhalt_papiertyp9, $papier_inhalt_papiertyp10, $papier_inhalt_papiertyp11, $papier_inhalt_papiertyp12, $papier_inhalt_papiertyp13, $papier_inhalt_papiertyp14, $papier_inhalt_grammatur, $papier_inhalt_value, $papier_inhalt_vs_rs_unterschiedlich, $seiten_inhalt, $druckfarben_inhalt, $drucklack_inhalt, $lackart_inhalt, $papier_inhalt_sammelform, $inhaltidentisch, $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14, $papier_umschlag_grammatur, $papier_umschlag_value, $papier_umschlag_vs_rs_unterschiedlich, $seiten_umschlag, $druckfarben_umschlag, $veredelung_umschlag, $papier_umschlag_sammelform, $zusfarbwechsel, $zusdruckplatten, $zussorten_umschlag, $papier_inhalt_art_nr, $papier_umschlag_art_nr, $produktionszeit);

    $eigenkosten = $printarray[0];
    $fremdkosten = $printarray[1];
    $rabattierfaehigekosten = $printarray[2];
    $format_offen_breite = $printarray[3];
    $format_offen_hoehe = $printarray[4];
    $bubipappe = $printarray[5];
    $buchruecken = $printarray[6];
    $druckmaschine_inhalt = $printarray[7];
    $ctp_inhalt = $printarray[8];
    $anzahlFarbwechsel_inhalt = $printarray[9];
    $druckgeschwindigkeit_inhalt = $printarray[10];
    $druckbogen_hoehe_inhalt = $printarray[11];
    $druckbogen_breite_inhalt = $printarray[12];
    $drucknutzen_inhalt = $printarray[13];
    $nettobg_inhalt = $printarray[14];
    $zuschuss_inhalt = $printarray[15];
    $papierkosten_inhalt = $printarray[16]; 
    $druckzeitruesten_inhalt = $printarray[17]; 
    $druckzeitfortdruck_inhalt = $printarray[18]; 
    $farbkosten_inhalt = $printarray[19];
    $lackart_kosten_inhalt = $printarray[20]; 
    $druckmaschine_umschlag = $printarray[21];
    $ctp_umschlag = $printarray[22];
    $anzahlFarbw_umschlag = $printarray[23];
    $druckgeschwindigkeit_umschlag = $printarray[24];
    $druckbogen_hoehe_umschlag = $printarray[25];
    $druckbogen_breite_umschlag = $printarray[26];
    $drucknutzen_umschlag = $printarray[27];
    $druckbogen_nettomenge_umschlag = $printarray[28];
    $druckbogen_zuschussmenge_umschlag = $printarray[29];
    $papierkosten_umschlag = $printarray[30];
    $druckzeitruesten_umschlag = $printarray[31];
    $druckzeitfortdruck_umschlag = $printarray[32];
    $farbkosten_umschlag = $printarray[33];
    $lackart_kosten_umschlag = $printarray[34];
    $rabattierfaehigekosten_inhalt = $printarray[35];
    $rabattierfaehigekosten_umschlag = $printarray[36];
    $heftdicke = $printarray[37];
    $ctpstring = $printarray[38];

    if ($what == 'debug2') {
        echo ("\n</br >" . '-------------------- PREIS Debug --------------------' . "\n</br >");
        echo ('$rabattierfaehigekosten_umschlag: ' . number_format($rabattierfaehigekosten_umschlag, 2, ',', '.') . " €\n</br >");
        echo ('$rabattierfaehigekosten_inhalt: ' . number_format($rabattierfaehigekosten_inhalt, 2, ',', '.') . " €\n</br >");
        echo ('$rabattierfaehigekosten SUMME UM+INH: ' . number_format($rabattierfaehigekosten_umschlag+$rabattierfaehigekosten_inhalt, 2, ',', '.') . " €\n</br >");
        echo ('$rabattierfaehigekosten PARAMETER: ' . number_format($rabattierfaehigekosten, 2, ',', '.') . " €\n</br >");
    }


    $wtvarray = getWTVBRO23($what, $auflage, $breite_geschl, $hoehe_geschl, $format_offen_breite, $format_offen_hoehe, $bubipappe, $buchruecken, $weiterverarbeitung, $ausfuehrung, $klammerung, $papier_inhalt_grammatur, $papier_inhalt_value, $seiten_inhalt, $druckbogen_breite_inhalt, $druckbogen_hoehe_inhalt, $drucknutzen_inhalt, $drucknutzen_umschlag, $papier_umschlag_grammatur, $papier_umschlag_value, $seiten_umschlag, $druckbogen_breite_umschlag, $druckbogen_hoehe_umschlag, $buendeln, $perforation, $duftdruck, $praegung_umschlag, $beilage, $veredelung_umschlag, $registerstanzung, $einschweissen, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $blankomuster, $musterversand, $absender);

    $eigenkosten += $prepress_kosten + $wtvarray[0];
    $fremdkosten += $wtvarray[1] + $wtvarray[2] + $wtvarray[3] +$wtvarray[4];
    $versandgewicht = $wtvarray[5];

    $papier_vs_rs_unterschiedlich_umschlag = 0;

    $preisaend = getZUABBRO23($what, $auflage, $rabattierfaehigekosten, $eigenkosten, $fremdkosten, $papier_inhalt_sammelform, $druckfarben_inhalt, $druckmaschine_inhalt, $papier_umschlag_sammelform, $druckfarben_umschlag, $druckmaschine_umschlag, $qualitaet, $produktionszeit, $format_offen_breite, $format_offen_hoehe, $provisionsart, $provisionswert, $rabattierfaehigekosten_inhalt, $rabattierfaehigekosten_umschlag, $zussorten_umschlag, $seiten_inhalt, $seiten_umschlag, $drucknutzen_inhalt, $drucknutzen_umschlag, $papier_vs_rs_unterschiedlich_umschlag);

    $basispreisnetto = $eigenkosten + $fremdkosten + $preisaend;

    $internarray = array('$format_offen_breite'=>$format_offen_breite, '$format_offen_hoehe'=>$format_offen_hoehe, '$bubipappe'=>$bubipappe, '$buchruecken'=>$buchruecken, '$druckmaschine_inhalt'=>$druckmaschine_inhalt, '$ctp_inhalt'=>$ctp_inhalt, '$druckbogen_hoehe_inhalt'=>$druckbogen_hoehe_inhalt, '$druckbogen_breite_inhalt'=>$druckbogen_breite_inhalt, '$drucknutzen_inhalt'=> $drucknutzen_inhalt, '$nettobg_inhalt'=>$nettobg_inhalt, '$zuschuss_inhalt'=>$zuschuss_inhalt, '$papierkosten_inhalt'=>$papierkosten_inhalt, '$druckzeitruesten_inhalt'=>$druckzeitruesten_inhalt, '$druckzeitfortdruck_inhalt'=>$druckzeitfortdruck_inhalt, '$druckmaschine_umschlag'=>$druckmaschine_umschlag, '$ctp_umschlag'=>$ctp_umschlag, '$druckbogen_hoehe_umschlag'=>$druckbogen_hoehe_umschlag, '$druckbogen_breite_umschlag'=>$druckbogen_breite_umschlag, '$drucknutzen_umschlag'=> $drucknutzen_umschlag, '$druckbogen_nettomenge_umschlag'=>$druckbogen_nettomenge_umschlag, '$druckbogen_zuschussmenge_umschlag'=>$druckbogen_zuschussmenge_umschlag, '$papierkosten_umschlag'=>$papierkosten_umschlag, '$druckzeitruesten_umschlag'=>$druckzeitruesten_umschlag, '$druckzeitfortdruck_umschlag'=>$druckzeitfortdruck_umschlag, '$papier_inhalt_art_nr'=> $papier_inhalt_art_nr, '$papier_umschlag_art_nr'=>$papier_umschlag_art_nr, '$ctpstring'=>$ctpstring);
    $intern = Array2String($internarray);

    if ($what == 'debug') {
        echo ("\n</br >" . '-------------------- PREIS BRO total --------------------' . "\n</br >");
        echo ('ohne Aktionsrabatt, Onlinerabatt, Kundengruppenrabatt, Endkundenversand' . "\n</br >");
        echo ('Eigenkosten: ' . number_format($eigenkosten, 2, ',', '.') . " €\n</br >");
        echo ('Fremdkosten: ' . number_format($fremdkosten, 2, ',', '.') . " €\n</br >");
        echo ('Zu-/Abschläge: ' . number_format($preisaend, 2, ',', '.') . " €\n</br >");
        echo ('Basispreis Netto: ' . number_format($basispreisnetto, 2, ',', '.') . " €\n</br >");
    }

    $ergebnis = array('eigenkosten'=>$eigenkosten, 'fremdkosten'=>$fremdkosten, 'preisaend'=>$preisaend, 'versandgewicht'=>$versandgewicht, 'intern'=>$intern);
    
    return $ergebnis;
}

// Digitaldruck

function getDigitALLPlanoFa23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $personalisierung, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $breite_geschl, $hoehe_geschl, $loseblatt, $anzblattjeblock, $papiersorte_grammatur, $papiersorte_value, $papiersorte_sammelform, $falzung, $falzart, $bohren_lochen, $verschluss, $klebepunkte_durchmesser, $ecken_runden, $buendeln, $stanzung, $stanzart, $nutlinien, $oesen, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender, $produktionszeit, $qualitaet, $provisionsart, $provisionswert,
$papiersorte_papiertyp1, $papiersorte_papiertyp2, $papiersorte_papiertyp3, $papiersorte_papiertyp4, $papiersorte_papiertyp5, $papiersorte_papiertyp6, $papiersorte_papiertyp7, $papiersorte_papiertyp8, $papiersorte_papiertyp9, $papiersorte_papiertyp10, $papiersorte_papiertyp11, $papiersorte_papiertyp12, $papiersorte_papiertyp13, $papiersorte_papiertyp14){

    // Hüllendruck? Papierkosten per o/oo + Druckkosten !
    if (($papiersorte_papiertyp5) || ($papiersorte_papiertyp6) || ($papiersorte_papiertyp7) || ($papiersorte_papiertyp8) || ($papiersorte_papiertyp9) || ($papiersorte_papiertyp10)) {
        $huellendruck = 1;
    }else{
        $huellendruck = 0;
    }

    if($anzblattjeblock == 0){$anzblattjeblock = 1;}

    $eigenkosten_prepress = getPrePressDIGI23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $loseblatt, $personalisierung, 0, 0);

    [$breite_offen, $hoehe_offen] = getDigiWTVFormate($breite_offen, $hoehe_offen, $stanzung, $stanzart, $nutlinien, $huellendruck);

    [$drucknutzen, $Druckbogenbreite, $Druckbogenhoehe, $DruckbgRaender] = getDruckNutzenDIGI($breite_offen, $hoehe_offen, $huellendruck);

    [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung, $kosten_endschneiden, $zeit_endschneiden, $kosten_falzung, $zeit_falzung, $fakt_falzung, $kosten_nuten, $zeit_nuten, $kosten_personalisierung, $kosten_eckenrunden, $zeit_eckenrunden, $kosten_bohren_lochen, $zeit_bohren_lochen, $kosten_loseblatt, $zeit_buendeln, $zeit_verschluss, $zeit_loseblatt, $kosten_stanzung, $zeit_stanzung, $kosten_werkzeug_stanzung, $kosten_oesen, $kosten_buendeln, $kosten_freipos10, $kosten_freipos20, $kosten_musterversand, $kosten_absender] = getWTVDIGIPlanoFa23($what, $auflage, $drucknutzen, $hoehe_offen, $breite_offen, $hoehe_geschl, $breite_geschl, $papiersorte_grammatur, $papiersorte_value, $sortenzahl, $falzung, $falzart, $loseblatt, $bohren_lochen, $verschluss, $klebepunkte_durchmesser, $ecken_runden, $personalisierung, $buendeln, $stanzung, $stanzart, $nutlinien, $oesen, $anzblattjeblock, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender);

    [$eigenkosten_digitaldruck, $fremdkosten_digitaldruck, $nettobg, $zuschuss_digitaldruck, $papierkosten, $bruttobg, $ruestkosten, $druckkosten, $klickkosten] = getPrintDIGIPlanoFa23($what, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $sortenzahl, $papiersorte_sammelform, $anzblattjeblock, $wtvzuschusspapier, $papiersorte_papiertyp1, $papiersorte_papiertyp2, $papiersorte_papiertyp3, $papiersorte_papiertyp4, $papiersorte_papiertyp5, $papiersorte_papiertyp6, $papiersorte_papiertyp7, $papiersorte_papiertyp8, $papiersorte_papiertyp9, $papiersorte_papiertyp10, $papiersorte_papiertyp11, $papiersorte_papiertyp12, $papiersorte_papiertyp13, $papiersorte_papiertyp14);

    $druckzeitruesten = $ruestkosten / 75;
    $druckzeitfortdruck = $druckkosten / 75;

    $eigenkosten = $eigenkosten_prepress + $eigenkosten_digitaldruck + $wtveigenkosten;
    $fremdkosten = $fremdkosten_digitaldruck  + $wtvfremdkosten + $wtvfrachtkosten;

    $preisaend = getZUABPlanoDigiFA23($what, $auflage, $eigenkosten, $fremdkosten, $papiersorte_sammelform, $produktionszeit, $qualitaet, $sortenzahl, $provisionsart, $provisionswert);

    $basispreisnetto = $eigenkosten + $fremdkosten + $preisaend;

    $versandgewicht = 1.1 * $breite_offen * $hoehe_offen / 10000 * $auflage * $papiersorte_grammatur;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- Digitaldruck PrePress --------------------'."\n<br />");
        $Ausgabeliste = array('Vorstufe: ' => $eigenkosten_prepress);
        foreach($Ausgabeliste as $bez => $wert){
            if($wert != 0){echo($bez.number_format($wert, 2 , ',', '.')." € \n<br />");}
        }
    }

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- Digitaldruck PRINT Plano-Fa --------------------'."\n<br />");
        echo('Druckbogen: '.$Druckbogenbreite.' x '.$Druckbogenhoehe.' cm'."\n<br />");
        echo($nettobg.' Nettobg. + '.$zuschuss_digitaldruck.' ZU Druck + '.$wtvzuschusspapier.' ZU WTV = '.$bruttobg.' Bg. zu '.$drucknutzen.' Ntz.'."\n<br />");
        echo('Rüstkosten: '.number_format($ruestkosten, 2 , ',', '.')." € | ");
        echo('Druckkosten: '.(number_format($druckkosten, 2 , ',', '.'))." €\n<br />");
        echo('Papier: '.number_format($papierkosten, 2 , ',', '.')." €\n<br />");
        echo('VK Klick DIN A3: '.$klickkosten." € \n<br />");
        echo('Eigenkosten Print: '.number_format($eigenkosten_digitaldruck, 2 , ',', '.')." € \n<br />");
        echo('Fremdkosten Print: '.number_format($fremdkosten_digitaldruck, 2 , ',', '.')." € \n<br />");
        echo('Gesamtkosten Print: '.(number_format($eigenkosten_digitaldruck+$fremdkosten_digitaldruck, 2 , ',', '.'))." €\n\n<br />");
    }
    

    //Werte ausgeben
    if($what=='debug'){
        echo('-------------------- Digitaldruck WTV Plano-Fa --------------------'."\n<br />");
        echo('Kosten Endschneiden: '.number_format($kosten_endschneiden, 2 , ',', '.').' € |  Zeit: '.number_format($zeit_endschneiden, 2 , ',', '.')."\n<br />");
        if($kosten_falzung != 0){echo('Kosten Falzung: '.number_format($kosten_falzung, 2 , ',', '.').' € |  Zeit Falzung: '.number_format($zeit_falzung, 2 , ',', '.')."\n<br />");
        echo('$fakt_falzung: '.$fakt_falzung."\n<br />");
        }
        if($kosten_nuten != 0){echo('Kosten nuten: '.number_format($kosten_nuten, 2 , ',', '.').' | '.'Zeit nuten: '.number_format($zeit_nuten, 2 , ',', '.')."\n<br />");}
        if($kosten_personalisierung != 0){echo('Kosten personalisierung: '.number_format($kosten_personalisierung, 2 , ',', '.')."\n<br />");}
        if($kosten_eckenrunden != 0){echo('Kosten eckenrunden: '.number_format($kosten_eckenrunden, 2 , ',', '.').' | '.'Zeit eckenrunden: '.number_format($zeit_eckenrunden, 2 , ',', '.')."\n<br />");}
        if($kosten_bohren_lochen != 0){echo('Kosten bohren_lochen: '.number_format($kosten_bohren_lochen, 2 , ',', '.').' | '.'Zeit bohren_lochen: '.number_format($zeit_bohren_lochen, 2 , ',', '.')."\n<br />");}
        if($kosten_stanzung != 0){echo('Kosten Stanzung: '.number_format($kosten_stanzung, 2 , ',', '.').' | '.'Zeit stanzung: '.number_format($zeit_stanzung, 2 , ',', '.')."\n<br />");}
        if($kosten_werkzeug_stanzung != 0){echo('Kosten Werkzeug Stanzung: '.number_format($kosten_werkzeug_stanzung, 2 , ',', '.')."\n<br />");}
        if($kosten_oesen != 0){echo('Kosten Ösen: '.number_format($kosten_oesen, 2 , ',', '.')."\n<br />");}
        if($kosten_buendeln != 0){echo('Kosten buendeln: '.number_format($kosten_buendeln, 2 , ',', '.')."\n<br />");}
        if($kosten_freipos10 != 0){echo('Kosten freipos10: '.number_format($kosten_freipos10, 2 , ',', '.')."\n<br />");}
        if($kosten_freipos20 != 0){echo('Kosten freipos20: '.number_format($kosten_freipos20, 2 , ',', '.')."\n<br />");}
        if($kosten_musterversand != 0){echo('Kosten musterversand: '.number_format($kosten_musterversand, 2 , ',', '.')."\n<br />");}
        if($kosten_absender != 0){echo('Kosten absender: '.number_format($kosten_absender, 2 , ',', '.')."\n<br />");
        }
        if($kosten_loseblatt != 0){echo('Kosten loseblatt: '.number_format($kosten_loseblatt, 2 , ',', '.').' | '.'Zeit loseblatt: '."\n<br />");}
        echo('WTV Zuschusspapier Kosten: '.number_format($wtvzuschusspapier_kosten, 2 , ',', '.').' € | '.number_format($wtvzuschusspapier, 2 , ',', '.')." Bg. \n<br />");
        echo('----------------------------------------'."\n<br />");
        echo('WTV Frachtkosten: '.number_format($wtvfrachtkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Eigenkosten: '.number_format($wtveigenkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Fremdkosten: '.number_format($wtvfremdkosten, 2 , ',', '.')." € \n\n<br />");
        echo('========================================'."\n<br />");
        echo(' Eigenkosten: '.number_format($eigenkosten, 2 , ',', '.')." € \n<br />");
        echo('+Fremdkosten: '.number_format($fremdkosten, 2 , ',', '.')." € \n<br />");
        echo('+Preisänderung: '.number_format($preisaend, 2 , ',', '.')." € \n<br />");
        echo('=Basispreis Netto: '.number_format($basispreisnetto, 2 , ',', '.')." €\n<br />");
        echo('Versandgewicht: '.number_format($versandgewicht/1000,1)." kg\n<br />");
    }

    $internarray = array('$druckmaschine'=>'Canon', '$prepress_kosten'=>$eigenkosten_prepress, '$druckbogen_breite'=>$Druckbogenbreite, '$druckbogen_hoehe'=>$Druckbogenhoehe, '$druckbogen_nettomenge'=>$nettobg, '$druckbogen_zuschussmenge'=>$zuschuss_digitaldruck, '$drucknutzen'=>$drucknutzen, '$wtveigenkosten'=>$wtveigenkosten, '$wtvfremdkosten'=>$wtvfremdkosten, '$wtvfrachtkosten'=>$wtvfrachtkosten, '$wtvzuschusspapier_kosten'=>$wtvzuschusspapier_kosten, '$wtvzuschusspapier'=>$wtvzuschusspapier, '$versandgewicht'=>$versandgewicht, '$zeit_endschneiden'=>$zeit_endschneiden, '$zeit_falzung'=>$zeit_falzung, '$zeit_nuten'=>$zeit_nuten, '$zeit_buendeln'=>$zeit_buendeln, '$zeit_verschluss'=>$zeit_verschluss, '$zeit_eckenrunden'=>$zeit_eckenrunden, '$zeit_bohren_lochen'=>$zeit_bohren_lochen, '$zeit_loseblatt'=>$zeit_loseblatt, '$druckzeitruesten'=>$druckzeitruesten, '$druckzeitfortdruck'=>$druckzeitfortdruck);

    $intern = Array2String($internarray);

    $ergebnis = array('eigenkosten'=> $eigenkosten, 'fremdkosten' => $fremdkosten, 'preisaend' => $preisaend, 'versandgewicht'=> $versandgewicht, 'intern' => $intern);

    return $ergebnis;
    
}

function getAnzDruckfarbenBedruckteSeiten21($farbauswahl){
    $farbanz_liste = array(4,4,4,5,5,6,1,1,2,2,2,2,3,3,3,1,1,4,4,6,7,8,4);
    $bedruckteseiten_liste = array(1,2,2,1,2,2,1,2,1,1,2,2,1,2,2,1,2,1,2,1,1,1,1);
    return [$farbanz_liste[$farbauswahl-1],$bedruckteseiten_liste[$farbauswahl-1]];
}

function getMaschine($breite_offen, $hoehe_offen) {
    if($breite_offen > 49 || $hoehe_offen > 49) {
        return 'man';
    }
    return 'gto';
}

function getGreiferRand($format) {
    $maschine = getMaschine($format['breite'], $format['hoehe']);
    if($maschine == 'man') {
        return 2.3;
    }
    return 1.4;
}

function getBogenRaender($format) {
    $maschine = getMaschine($format['breite'], $format['hoehe']);
    if($maschine == 'man') {
        return 1.5;
    }
    return 0.8;
}

function getAnzFarbwechselMAN($farbauswahl) {
    if($farbauswahl == 1) {
        return 0;
    }
    if($farbauswahl == 2) {
        return 0;
    }
    if($farbauswahl == 3) {
        return 0;
    }
    if($farbauswahl == 4) {
        return 1;
    }
    if($farbauswahl == 5) {
        return 1;
    }
    if($farbauswahl == 6) {
        return 2;
    }
    if($farbauswahl == 7) {
        return 0;
    }
    if($farbauswahl == 8) {
        return 0;
    }
    if($farbauswahl == 9) {
        return 1;
    }
    if($farbauswahl == 10) {
        return 2;
    }
    if($farbauswahl == 11) {
        return 1;
    }
    if($farbauswahl == 12) {
        return 2;
    }
    if($farbauswahl == 13) {
        return 3;
    }
    if($farbauswahl == 14) {
        return 2;
    }
    if($farbauswahl == 15) {
        return 3;
    }
    if($farbauswahl == 16) {
        return 1;
    }
    if($farbauswahl == 17) {
        return 1;
    }
    if($farbauswahl == 18) {
        return 0.5;
    }
    if($farbauswahl == 19) {
        return 2;
    }
    if($farbauswahl == 20) {
        return 2;
    }
    if($farbauswahl == 21) {
        return 3;
    }
    if($farbauswahl == 22) {
        return 4;
    }
    if($farbauswahl == 23) {
        return 4;
    }

    return 10;
}

function getAnzFarbwechselGTO($farbauswahl) {
    if($farbauswahl == 1) {
        return 3;
    }
    if($farbauswahl == 2) {
        return 3;
    }
    if($farbauswahl == 3) {
        return 3;
    }
    if($farbauswahl == 4) {
        return 4;
    }
    if($farbauswahl == 5) {
        return 4;
    }
    if($farbauswahl == 6) {
        return 5;
    }
    if($farbauswahl == 7) {
        return 0;
    }
    if($farbauswahl == 8) {
        return 0;
    }
    if($farbauswahl == 9) {
        return 1;
    }
    if($farbauswahl == 10) {
        return 2;
    }
    if($farbauswahl == 11) {
        return 1;
    }
    if($farbauswahl == 12) {
        return 2;
    }
    if($farbauswahl == 13) {
        return 3;
    }
    if($farbauswahl == 14) {
        return 2;
    }
    if($farbauswahl == 15) {
        return 3;
    }
    if($farbauswahl == 16) {
        return 1;
    }
    if($farbauswahl == 17) {
        return 1;
    }
    if($farbauswahl == 18) {
        return 4;
    }
    if($farbauswahl == 19) {
        return 6;
    }
    if($farbauswahl == 20) {
        return 6;
    }
    if($farbauswahl == 21) {
        return 7;
    }
    if($farbauswahl == 22) {
        return 8;
    }
    if($farbauswahl == 23) {
        return 4;
    }

    return 10;
}

function getPrePressPlanoFa23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen) {

    //Parameter
    $Pstundensatz_vorstufe = 75;
    $Pplano_fa_aufpreis_anderes_dateiformat = 25;
    $Pumweltzeichen_fsc = 25;
    $Pumweltzeichen_blauerengel = 50;
    $Psortenzeit_vorstufe = 3;
    $Pgrundzeit_vorstufe = 20;
    $Pplano_digitalproof_minimal = 15;

    $bedruckteSeiten = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt)[1];

    $datenuebernahme_kosten = ($Pgrundzeit_vorstufe+$sortenzahl*$bedruckteSeiten*$Psortenzeit_vorstufe)/60*$Pstundensatz_vorstufe;

    $dateiformat_kosten = 0;
    if(($dateiformat_geliefert != 1) && ($dateiformat_geliefert != 5)){
        $dateiformat_kosten = $Pplano_fa_aufpreis_anderes_dateiformat;
    }

    $korrekturabzug_kosten = 0;
    if($korrekturabzug == 3){
        $korrekturabzug_kosten = max($Pplano_digitalproof_minimal, (($breite_offen*$hoehe_offen)/62*$sortenzahl*$bedruckteSeiten));
    }
    if($korrekturabzug == 2){
        $korrekturabzug_kosten = 5 + ($sortenzahl*$bedruckteSeiten);
    }

    $umweltzeichen_kosten = 0;
    if($umweltzeichen == 2){
        $umweltzeichen_kosten = $Pumweltzeichen_fsc;
    }
    if($umweltzeichen == 3){
        $umweltzeichen_kosten = $Pumweltzeichen_blauerengel;
    }

    $eigenkosten = $datenuebernahme_kosten + $dateiformat_kosten + $korrekturabzug_kosten + $umweltzeichen_kosten;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- PrePress PLANO-FA --------------------'."\n<br />"); 
        $Ausgabeliste = array('Datenübernahme: ' => $datenuebernahme_kosten, 'Dateiformat: ' => $dateiformat_kosten, 'Umweltzeichen: ' => $umweltzeichen_kosten, 'Korrekturabzug: ' => $korrekturabzug_kosten);
        foreach($Ausgabeliste as $bez => $wert){
            if($wert != 0){echo($bez.number_format($wert, 2 , ',', '.')." € \n<br />");}
        }
    }

    return $eigenkosten;
}



function getPrintPlanoFa23($what, $papierType1, $papierType2, $papierType3, $papierType4, $papierType5, $papierType6, $papierType7, $papierType8, $papierType9, $papierType10, $papierType11, $papierType12, $papierType13, $papierType14, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $drucklack, $papier_vs_rs_unterschiedlich, $sortenzahl, $anzblattjeblock, $zusdruckplatten, $zusfarbwechsel, $lackart, $papiersorte_sammelform, $produktionszeit, $stanzung) {

    $GrundRuestZeit = 12;
    $RuestZeitJePlatte = 3.1;
    $WarteZeitUU = 0.15;
    $kostenDruckplatte = 15;
    $FarbwechselZeit = 35;
    $Paufpreis_drucklack_matt_voll = 10;
    $Paufpreis_drucklack_matt_partiell = 30;
    $Paufpreis_drucklack_glzd_voll = 55;
    $Paufpreis_drucklack_glzd_partiell = 95;

    if($anzblattjeblock == 0){
        $anzblattjeblock=1;
    }
    $auflage *= $anzblattjeblock;
    $price = 9999999999;
    $nutzen = 9999999999;
    $nettobg = 9999999999;
    $zuschuss = 9999999999;
    $bogen_hoehe = 1000;
    $bogen_breite = 1000;
    $ctp = 999999999;
    $druckgaenge = 99999999;
    $stundensatz = 99999999;
    $maschine = 'man';
    $anzahlFarbw = 999;
    $druckgeschwindigkeit = 999;
    $passtdrauf = 0;
    $sortenaufschlag = 999999;
    $zuschussfaktor = 9;
    $druckkosten = 999999;
    $papierkosten = 999999;
    $druckzeittotal = 999999;
    $druckzeitruesten = 999999;
    $druckzeitfortdruck = 999;
    $druckzeit_farbw = 999;
    $rabattierfaehigekosten = 0;
    $sammelfaktor = 1;
    
    // Hüllendruck? Papierkosten per o/oo + Druckkosten !
    if (($papierType5) || ($papierType6) || ($papierType7) || ($papierType8) || ($papierType9) || ($papierType10)) {
        $huellendruck = 1;
    }else{
        $huellendruck = 0;
        // war + 0.4 - evtl. nur +0.3 für nicht gestanzt/perf./ ...   sonst +1.2 ??? !!!
        $hoehe_offen += 0.3;
        $breite_offen += 0.3;
    }

    $farbarray = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt);
    $anzahlDruckfarben = $farbarray[0];
    $bedruckteSeiten = $farbarray[1];

    $formate=array();

    //Papier gestellt (Grammatur = 555) und/oder Formatberechnung nötig?
    if($papiersorte_grammatur == 555){
        $formate[] = array('type' => 0, 'breite' => $breite_offen + 3.7, 'hoehe' => $hoehe_offen + 3.7, 'umschlagen' => 0);
    }else{
        if($papierType1) {
            $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 0);
        }
        if($papierType1 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 2, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 1);
        }
        
        if($papierType2) {
            $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 0);
        }
        if($papierType2 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 1);
        }

        if($papierType3) {
            $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 0);
        }
        if($papierType3 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 1);
        }
        
        if($papierType4) {
            $formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'umschlagen' => 0);
        }
        if($papierType4 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'umschlagen' => 1);
        }

        if($papierType5) {
            $formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 11.4, 'umschlagen' => 0);
        }
        if($papierType5 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 11.4, 'umschlagen' => 1);
        }

        if($papierType6) {
            $formate[] = array('type' => 7, 'breite' => 32.4, 'hoehe' => 22.9, 'umschlagen' => 0);
        }
        if($papierType6 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 32.4, 'hoehe' => 22.9, 'umschlagen' => 1);
        }

        if($papierType7) {
            $formate[] = array('type' => 7, 'breite' => 35.3, 'hoehe' => 25, 'umschlagen' => 0);
        }
        if($papierType7 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 35.3, 'hoehe' => 25, 'umschlagen' => 1);
        }

        if($papierType8) {
            $formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 16.2, 'umschlagen' => 0);
        }
        if($papierType8 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 16.2, 'umschlagen' => 1);
        }

        if($papierType9) {
            $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'umschlagen' => 0);
        }
        if($papierType9 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'umschlagen' => 1);
        }

        if($papierType10) {
            $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 0);
        }
        if($papierType10 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 1);
        }

        if($papierType11) {
            $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 0);
        }
        if($papierType11 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 1);
        }

        if($papierType12) {
            $formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 0);
        }
        if($papierType12 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 1);
        }

        if($papierType13) {                                     //wenn 31.5 x 44 dann auch 22 x 31.5 mgl.
            $formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 0);
            $formate[] = array('type' => 7, 'breite' => 31.5, 'hoehe' => 22, 'umschlagen' => 0);
        }
        if($papierType13 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 1);
            $formate[] = array('type' => 7, 'breite' => 31.5, 'hoehe' => 22, 'umschlagen' => 1);
        }

        if($papierType14) {
            $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 0);
        }
        if($papierType14 && $papier_vs_rs_unterschiedlich == False) {
            $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 1);
        }
    }

    $formateString = '';
    foreach($formate as $key => $format) {
        $greiferRand = getGreiferRand($format);
        $bogenRaender = getBogenRaender($format);
        $formateString .= $format['breite'] . 'x' . $format['hoehe'] . ' cm | ';

        if($format['umschlagen'] == 0) {
            $nutzen_calc = max(
                            ((floor(($format['breite']-$bogenRaender)/$breite_offen))*(floor(($format['hoehe']-$greiferRand)/$hoehe_offen))),
                            ((floor(($format['breite']-$bogenRaender)/$hoehe_offen)*(floor(($format['hoehe']-$greiferRand)/$breite_offen))))
                            );
            $drucklegung_text1 = 'Druckbogen SD / WD mit '.$nutzen_calc.' Nutzen.';
            $wartezeit = 0;                 
        }else{
            /* ALTE FORMEL $nutzen_calc= 2*floor((max(
                                    ((floor(($format['breite']-$bogenRaender)/$breite_offen))*(floor(($format['hoehe']-$greiferRand)/$hoehe_offen))),
                                    ((floor(($format['breite']-$bogenRaender)/$hoehe_offen)*(floor(($format['hoehe']-$greiferRand)/$breite_offen))))
                            ))/2); */
            $nutzen_calc= 2*(max(
                    ((floor(($format['breite']/2-$bogenRaender/2)/$breite_offen))*(floor(($format['hoehe']-$greiferRand)/$hoehe_offen))), //Umschlager #1
                    ((floor(($format['breite']/2-$bogenRaender/2)/$hoehe_offen)*(floor(($format['hoehe']-$greiferRand)/$breite_offen)))), //Umschlager #2
                    ((floor(($format['breite']-$bogenRaender)/$breite_offen)*(floor(($format['hoehe']/2-$greiferRand)/$hoehe_offen)))), //Umstülper #1
                    ((floor(($format['breite']-$bogenRaender)/$hoehe_offen)*(floor(($format['hoehe']/2-$greiferRand)/$breite_offen)))), //Umstülper #2
            ));
            $drucklegung_text1 = 'Druckbogen zum Umschlagen/Umstülpen mit ' . $nutzen_calc . ' Nutzen.';
            $wartezeit = $WarteZeitUU;                
        }

        // Hüllendruck? Papierkosten per o/oo + Druckkosten !
        if ($huellendruck == 1) {
            $nutzen_calc = 1;
            $drucklegung_text1 = 'Druckbogen SD / WD mit ' . $nutzen_calc . ' Nutzen.';
        }
        
        if($nutzen_calc < 1){
            $nutzen_calc = 0.00001;   // division by zero vermeiden, hohen Preis künstl. errechnen
        }

        if($bedruckteSeiten==2 && $papier_vs_rs_unterschiedlich==0 && $nutzen_calc > 1 && $format['umschlagen'] == 1){
            $ctp1 = ($anzahlDruckfarben+$drucklack)*$bedruckteSeiten/2;
        }else{
            $ctp1 = ($anzahlDruckfarben+$drucklack)*$bedruckteSeiten;
            if($druckfarben_inhalt == 2){
                $ctp1 = 5 + $drucklack;   // für den Fall   "4/1 Euroskala" ohne Umschlagen wichtig
            }
        }

        $maschine1 = getMaschine($format['breite'], $format['hoehe']);

        $wtvgeschwindigkeit1 = (log10($auflage*$auflage)*900)*(100-sqrt((150-$papiersorte_grammatur)*(150-$papiersorte_grammatur))/3.6)/100;

        if($maschine1 == "gto") {
            $druckgaenge1 = $bedruckteSeiten*($anzahlDruckfarben+$drucklack);
            $fortdruckmaschine1 = $wtvgeschwindigkeit1 / 1.5;
            $anzahlFarbw1 = getAnzFarbwechselGTO($druckfarben_inhalt);
            $stundensatz1 = getMaschineKosten23($format, $anzahlFarbw1);
            $grundzuschuss = 50;
            if($huellendruck == 1) {
                $grundzuschuss = 80;
                $fortdruckmaschine1 *= .9;
                $stundensatz1 = getMaschineKosten23($format, 0);
            }
            if($papiersorte_grammatur > 350){$stundensatz1 *= 3;}
            elseif($papiersorte_grammatur > 300){$stundensatz1 *= 2;}
        }else{ 
            $druckgaenge1 = ceil(($anzahlDruckfarben+$drucklack)/5)*$bedruckteSeiten;
            $fortdruckmaschine1 = getMANSpeed($auflage, $papiersorte_grammatur);
            $anzahlFarbw1 = getAnzFarbwechselMAN($druckfarben_inhalt);
            $stundensatz1 = getMaschineKosten23($format, $anzahlFarbw1);
            $grundzuschuss = 100;
            $huellendruck = 0;
        }

        $sammelarray = getSammelformWertePlanoFa23($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $bedruckteSeiten, $sortenzahl, $maschine1, $produktionszeit, $papier_vs_rs_unterschiedlich);
        $sammelfaktor_papier = $sammelarray[2];
        $sammelwahrscheinlichkeit_menge = $sammelarray[1];
        $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];
        $sammelfaktor_druckmaschine1 = $sammelarray[3];

        if($nutzen_calc/$sortenzahl < $bedruckteSeiten) {
            $passtdrauf1 = FALSE;
            $passtNichtDraufNutzen = floor($nutzen_calc / $sortenzahl);
            $restNutzen = $nutzen_calc % $sortenzahl;
            $sortenaufschlag1 = ($restNutzen * (10+$breite_offen*$hoehe_offen/35)) + ($passtNichtDraufNutzen * ($sortenzahl-1) * 4);
            $zuschussfaktor1 = 1; 
            if($bedruckteSeiten==2 && $papier_vs_rs_unterschiedlich==0 && $nutzen_calc > 1 && $format['umschlagen'] == 1) {
                $ctp1 = ceil($sortenzahl / $nutzen_calc * $bedruckteSeiten) * $anzahlDruckfarben + $drucklack;
            }else{
                $ctp1 = ceil($sortenzahl / $nutzen_calc) * $bedruckteSeiten * $anzahlDruckfarben + $drucklack;
                if($druckfarben_inhalt == 2){
                    $ctp1 = (5 + $drucklack) * ceil($sortenzahl / $nutzen_calc);   // für den Fall   "4/1 Euroskala" ohne Umschlagen wichtig
                }
            }
        }else{
            $passtdrauf1 = TRUE;
            // ALT $sortenaufschlag1 = ($sortenzahl-1)*(10+$breite_offen*$hoehe_offen/35);
            $generellaufschlag = 3 + 8 / sqrt($sortenzahl);
            $sortenaufschlag1 = ($sortenzahl-1)*($generellaufschlag+$breite_offen*$hoehe_offen/33);

            //echo('Format: '.$format['breite'].'x'.$format['hoehe'].' = Sortenaufschlag1: '.$sortenaufschlag1.' | '."\n<br />");
            //Sortenaufschlag reduzieren, falls keine Sammelform ($papiersorte_sammelform = 1 >>> keine Sammelform)
            if ((in_array($druckfarben_inhalt, array(1, 2, 3, 18, 19, 7, 8))) && ($papiersorte_sammelform == 1)) {
                $sortenaufschlag1 *= 0.5;
            }               
            $zuschussfaktor1 = 1;
        }

        if($stanzung != 0){
            $sortenaufschlag1 += 5 * ($sortenzahl - 1);
        }

        $zuschuss1 = ceil(max($grundzuschuss*2,$grundzuschuss + (($druckgaenge1-1)*$grundzuschuss/4) + $ctp1*$grundzuschuss*0.75 + ceil($auflage/$nutzen_calc*0.02*$druckgaenge1)*$zuschussfaktor1 + ($zusfarbwechsel+$zusdruckplatten)*$grundzuschuss));

        $druckgeschwindigkeit1 = $fortdruckmaschine1;   

        $nettobg1 = ceil($auflage/$nutzen_calc);

        if ($huellendruck == 1){
            $papieraufschlagfaktor1 = 1.3;
            $papierkosten1 = ($nettobg1 + $zuschuss1) * $papiersorte_value / 1000 * $papieraufschlagfaktor1 ;
        } else {
            $papierwert1 = ($format['hoehe'] * $format['breite'] * $papiersorte_grammatur * $papiersorte_value / 1000000000);
            $nettobgkosten1 = $papierwert1 * $nettobg1;
            $zuschusskosten1 = $papierwert1 * $zuschuss1;
            $papierkosten1 = $nettobgkosten1 + $zuschusskosten1;
            $papieraufschlagfaktor1 = 1.30 -(MIN(($papierkosten/$papiersorte_value*100)/5000,0.2));
            $papierkosten1 *= $papieraufschlagfaktor1;
        }

        $huellenruestzeit = 40 - $anzahlFarbw1 * 10;
        $druckzeitfortdruck1 = (($zuschuss1+$nettobg1)/$druckgeschwindigkeit1*$druckgaenge1);
        $druckzeit_farbw1 = ($anzahlFarbw1*$FarbwechselZeit/60);
        $druckzeitruesten1 = ($GrundRuestZeit*$druckgaenge1/60)+($ctp1*$RuestZeitJePlatte/60) + $druckzeit_farbw1 + $wartezeit + ($huellendruck * $huellenruestzeit / 60);
        $druckzeittotal1 = $druckzeitruesten1 + $druckzeitfortdruck1;
        $druckkosten1 = $druckzeittotal1 * $stundensatz1;      

        if((in_array($druckfarben_inhalt,array(1,2,3,18,19,7,8))) && ($papiersorte_sammelform != 1)){        
            $sammelfaktor1 = (($sammelwahrscheinlichkeit_format_sorten*75)*($sammelwahrscheinlichkeit_menge*25)/(75*25)) * $sammelfaktor_papier * $sammelfaktor_druckmaschine1;
            $rabattierfaehigekosten1 = ($ctp1 * $kostenDruckplatte) + ((($druckzeitruesten1 - $druckzeit_farbw1 * 0.75) + ($druckzeitfortdruck1 * 0.25)) * $stundensatz1) + ($zuschusskosten1);
        }else{
            $sammelfaktor1 = 0;
            $rabattierfaehigekosten1 = 0;
        }

        $price_calc = $papierkosten1 + ($kostenDruckplatte*$ctp1) + $druckkosten1 + $sortenaufschlag1;
        
        if($what=='debug2'){
            echo('Umschlagen: '.$format['umschlagen'].' | ');
            echo($format['hoehe'].' x '.$format['breite'].' >>> '.number_format($price_calc, 2 , ',', '.').' - '.number_format($rabattierfaehigekosten1 * $sammelfaktor1, 2 , ',', '.').' = '.number_format(($price_calc - $rabattierfaehigekosten1 * $sammelfaktor1), 2 , ',', '.')."\n<br />");
            echo('     mit Nettobg.: '.$nettobg1.' ('.number_format($nettobgkosten1, 2 , ',', '.').' €) + Zuschuss: '.$zuschuss1.' ('.number_format($zuschusskosten1, 2 , ',', '.')." €)\n<br />");
            echo('     mit CTP: '.$ctp1.' | Ntz: '.$nutzen_calc.' | Sammelfak.: '.number_format($sammelfaktor1, 2 , ',', '.')."\n<br />");
            echo('     auf '.$maschine1.' mit '.$stundensatz1."\n<br />");
        }
        
        if((($price_calc - $rabattierfaehigekosten1 * $sammelfaktor1) < ($price - $rabattierfaehigekosten * $sammelfaktor)) && ($nettobg1 != 0) && ($nutzen_calc >=1)) {
            $price = $price_calc;
            $nutzen = $nutzen_calc;
            $ctp = $ctp1;
            $zuschuss = $zuschuss1;
            $nettobg = $nettobg1;
            $bogen_hoehe = $format['hoehe'];
            $bogen_breite = $format['breite'];
            $druckgaenge = $druckgaenge1;
            $druckgeschwindigkeit = $druckgeschwindigkeit1;
            $stundensatz = $stundensatz1;
            $maschine = $maschine1;
            $anzahlFarbw = $anzahlFarbw1;
            $passtdrauf = $passtdrauf1;
            $sortenaufschlag = $sortenaufschlag1;
            $zuschussfaktor = $zuschussfaktor1;
            $druckkosten = $druckkosten1;
            $papierkosten = $papierkosten1;
            $druckzeittotal = $druckzeittotal1;
            $druckzeitruesten = $druckzeitruesten1;
            $druckzeit_farbw = $druckzeit_farbw1;
            $druckzeitfortdruck = $druckzeitfortdruck1;
            $rabattierfaehigekosten = $rabattierfaehigekosten1;
            $drucklegung_text = $drucklegung_text1;
            $papieraufschlagfaktor = $papieraufschlagfaktor1;
            $sammelfaktor = $sammelfaktor1;
            if($what == 'debug2'){
                echo('     >>> günstiger als Vorgänger'."\n\n<br />");
            }
        }
    }

    if($drucklack != '0'){
        if($lackart == '2'){
            $lackart_kosten = $Paufpreis_drucklack_matt_voll;
        }
        else if($lackart == '3'){
            $lackart_kosten = $Paufpreis_drucklack_matt_partiell;
        }
        else if($lackart == '4'){
            $lackart_kosten = $Paufpreis_drucklack_glzd_voll;
        }
        else if($lackart == '5'){
            $lackart_kosten = $Paufpreis_drucklack_glzd_partiell;
        }else{
            $lackart_kosten = 0;
        }
    }else{
        $lackart_kosten = 0;
    }

    $farbkosten = FarbkostenBerechnen("kein debug", "PLANO-FA", $bogen_breite, $bogen_hoehe, $anzahlDruckfarben, $drucklack, $bedruckteSeiten, $nettobg, $zuschuss, $anzahlFarbw, $druckfarben_inhalt);
    $zusdruckplatten_kosten = $zusdruckplatten*($stundensatz/60*5+$kostenDruckplatte+20);        
    $zusfarbwechsel_kosten = $zusfarbwechsel*45*$stundensatz/60;
    $price += $farbkosten + $lackart_kosten + $zusfarbwechsel_kosten + $zusdruckplatten_kosten;
    $eigenkosten = $price - $farbkosten - $papierkosten;
    $fremdkosten = $price - $eigenkosten;

    // evtl. Fehler abfangen
    if (!($drucklegung_text)){
        $drucklegung_text = 'Drucklegung unbekannt';
    }

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- Print PLANO-FA --------------------'."\n<br />");
        echo($maschine.' = '.$stundensatz.' € Std.Satz'."\n<br />");
        echo($breite_offen.' x '.$hoehe_offen.' cm'."\n<br />");
        echo('Papier: '.$bogen_hoehe.' x '.$bogen_breite.' cm mit '.number_format($nettobg, 0, ',', '.').' + '.number_format($zuschuss, 0, ',', '.').' = '.number_format($zuschuss+$nettobg, 0, ',', '.').' Druckbg. je '.$nutzen.' Ntz.'."\n<br />");
        echo('Geschw.: '.number_format($druckgeschwindigkeit, 0 , ',', '.').' | Druckgänge: '.$druckgaenge.' | CTP: '.$ctp.' | Farbw.: '.$anzahlFarbw.' '."\n<br />");
        echo($drucklegung_text."\n<br />");
        echo('Druckzeit rüsten: '.number_format($druckzeitruesten,1).' | Druckzeit Fortdruck: '.number_format($druckzeitfortdruck,1)." h \n<br />");
        if($sortenzahl > 1){echo('Sorten: '.$sortenzahl.' | Sortenaufschlag: '.(number_format($sortenaufschlag, 2 , ',', '.')).' € |  Passt drauf: ');
            echo (int)$passtdrauf;
            echo("\n<br />");};
        if($zusdruckplatten_kosten != 0){echo('$zusdruckplatten_kosten: '.$zusdruckplatten_kosten." €\n<br />");}
        if($zusfarbwechsel_kosten != 0){echo('$zusfarbwechsel_kosten: '.$zusfarbwechsel_kosten." €\n<br />");}
        if($lackart_kosten != 0){echo('$lackart_kosten: '.$lackart_kosten." €\n<br />");}
        echo('Kosten CTP: '.$ctp*$kostenDruckplatte." € \n <br />");
        echo('Druck: '.(number_format($druckkosten, 2 , ',', '.'))." €\n<br />");
        echo('Kosten Papier ('.number_format($papiersorte_value, 0, ',', '.').'): '.number_format($papierkosten, 2 , ',', '.').' € | Papieraufschlag: '.number_format($papieraufschlagfaktor, 2 , ',', '.')."\n<br />");
        echo('Farbkosten: '.number_format($farbkosten, 2 , ',', '.')." €\n<br />");
        echo('Rabattierfaehige Kosten: '.number_format($rabattierfaehigekosten, 2 , ',', '.')." € \n<br />");
        echo('Eigenkosten Print: '.number_format($eigenkosten, 2 , ',', '.')." € \n<br />");
        echo('Fremdkosten Print: '.number_format($fremdkosten, 2 , ',', '.')." € \n<br />");
        echo('Gesamtkosten Print: '.(number_format($price, 2 , ',', '.'))." € \n\n<br />");
    }
    return [$eigenkosten, $maschine, $stundensatz, $ctp, $anzahlFarbw, $druckgeschwindigkeit, $druckgaenge, $bogen_hoehe, $bogen_breite, $nutzen, $nettobg, $zuschuss, $sortenaufschlag, $zuschussfaktor, $passtdrauf, $druckkosten, $papierkosten, $druckzeittotal, $druckzeitruesten, $druckzeitfortdruck, $farbkosten, $zusdruckplatten_kosten, $zusfarbwechsel_kosten, $lackart_kosten, $fremdkosten, $rabattierfaehigekosten, $formateString, $drucklegung_text];
    
}
function getWTVPlanoFa23($what, $auflage, $hoehe_offen, $breite_offen, $hoehe_geschl, $breite_geschl, $papiersorte_grammatur, $papiersorte_value, $drucknutzen, $sortenzahl, $loseblatt, $druckbogen_breite, $druckbogen_hoehe, $druckbogen_nettomenge, $druckbogen_zuschussmenge, $falzung, $falzart, $leimung, $anzblattjeblock, $buendeln, $perforation, $duftdruck, $oesen, $praegung, $stanzung, $stanzart, $cito_anstanzung, $verschluss, $durchmesser_klebepkt, $beilage, $nummerierung, $laserstanzung, $ecken_runden, $bohren_lochen, $kaschierung, $kaschierung_anzahl, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender, $huellendruck) {

    //Parameter
    $Pplano_fa_mindpreis_kaschierung = 165;
    $Pplano_fa_kaschierung_mk = 0.8;
    $Pplano_fa_kaschierung_gl = 0.6;
    $Pplano_fa_kaschierung_legl = 0.9;
    $Pplano_fa_fixpreis_bohren = 25;
    $Pplano_fa_tsdpreis_bohren = 5;
    $Pplano_fa_stckpreis_laserstanzung = 0.50;
    $Pplano_fa_fixpreis_laserstanzung = 150;
    $Pplano_fa_fixpreis_nummerierung = 40;
    $Pplano_fa_tsdpreis_nr_schwarz_inkjet = 15;
    $Pplano_fa_tsdpreis_nr_farbig_laser = 80;
    $Pplano_fa_tsdpreis_nr_schwarz_laser = 40;
    $Pbeilage_einlegen_unbestimmte = 35;
    $Pbeilage_einlegen_bestimmte = 45;
    $Pklebepunkte_lose_fix = 25;
    $Pklebepunkte_lose_pro_tausend = 12;
    $Pklebepunkte_vorkonf_fix = 25;
    $Pklebepunkte_vorkonf_pro_tausend = 47;
    $Phaftstreifen_lose_fix = 25;
    $Phaftstreifen_lose_pro_tausend = 7;
    $Phaftstreifen_vorkonf_fix = 45;
    $Phaftstreifen_vorkonf_pro_tausend = 77;
    $haftstreifen_material_pro_cm = 0.002;
    $Pplano_fa_fixpreis_cito = 360;
    $Pplano_fa_tsdpreis_cito = 35;
    $Pplano_fa_fixpreis_cito_nassleimetik = 130;
    $Pplano_fa_tsdpreis_cito_nassleimetik = 30;
    $Pplano_praegen_fix1 = 60;
    $Pplano_praegen_fix2 = 110;
    $Pplano_praegen_var1 = 25;
    $Pplano_praegen_var2 = 45;
    $Poesen_fixpreis= 45;
    $Poesen_stkpreis = 0.20;
    $Pplano_fa_tsdpreis_duftdruck = 20;
    $Pplano_fa_fixpreis_duftdruck = 300;
    $Pplano_fa_fixpreis_buendeln = 15;
    $Pplano_fa_preis_je_buendel = 0.09;
    $Pfixkosten_blockleimung = 25;
    $Pstundensatz_wtv_hand = 30;
    $Pstundensatz_wtv_maschinen = 50;
    $Pfaktor_klein_gross_falzung = 2.1;
    $Paufpreis_falzen_altarfalz = 50;
    $Pfalzbruch_ruesten = 10;

    if($anzblattjeblock == 0){
        $anzblattjeblock = 1;
        $leimung = 0;
    }

    if($anzblattjeblock != 1){
        $leimung = 1;
    }

    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $rabattierkosten = 0;
    $wtvzuschusspapier = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = ($anzblattjeblock * $auflage) * $papiersorte_grammatur * $hoehe_offen * $breite_offen / 10000 * 1.1;
    $wtvfrachtpreis = 90 + $wtvfrachtgewicht / 400000 * 15;
    $papierlogistikpauschale = $wtvfrachtgewicht / 100000 * 5;
    $wtvfremdkosten += $papierlogistikpauschale;

    
    $grammaturfaktor_geschw_wtv = (100-sqrt((150-$papiersorte_grammatur)*(150-$papiersorte_grammatur))/3.6)/100;
    $wtvgeschwindigkeit = (log10($auflage*$auflage)*900)*(100-sqrt((150-$papiersorte_grammatur)*(150-$papiersorte_grammatur))/3.6)/100;

    // Logiken prüfen
    if(($breite_offen < $breite_geschl || $hoehe_offen < $hoehe_geschl) && !($falzung == 'nein' || $falzung == 0)){
        $wtveigenkosten += 999999;
    }
    

    //endschneiden
    if($huellendruck == 1 || $papiersorte_grammatur == 555){
        $zeit_endschneiden = $kosten_endschneiden = 0;
    } else {
        $zeit_endschneiden = (15 + (sqrt($auflage * $anzblattjeblock / 2))) / 60;
        if (($buendeln != 0) && ($falzung == 'nein' || $falzung == 0)) {
            $absteckenaufschlag = ceil($auflage / $buendeln) * 0.001;
            $zeit_endschneiden += $absteckenaufschlag;
        }
        if ($stanzung != 0) {
            $zeit_endschneiden *= 1.2;
        }

        $kosten_endschneiden = $zeit_endschneiden * $Pstundensatz_wtv_maschinen;
        $wtveigenkosten += $kosten_endschneiden;
        $wtvzuschusspapier += 3 * $sortenzahl + (10 + $auflage * 0.002) / $drucknutzen;
    }

    //verpacken
    $kosten_verpacken = 0; 
    if ($falzung == 'nein' || $falzung == 0){
        $kosten_verpacken += $wtvfrachtgewicht / 5000 * 0.6;
    }
    
    if ((($hoehe_geschl <= 21) && ($breite_geschl <= 29.7)) || (($hoehe_geschl <= 29.7) && ($breite_geschl <= 21))){
        $kosten_verpacken += 0;
    }else{
        $kosten_verpacken += $wtvfrachtgewicht / 5000 * 0.6;
    }

    if($papiersorte_grammatur == 555){
        $kosten_verpacken *= 0.2;
    }

    $wtveigenkosten += $kosten_verpacken;

    //falzung 
    //"falzart"     1=Parallelfalz     2=Wickelfalz     3=Leporello / Zickzack     4=Kreuzfalz     5=Altar-/Fensterfalz geschlossen     6=Altar-/Fensterfalz offen     99=sonstige

    $zeit_falzung = 0;
    $falz_komplex = 1;
    $fakt_falzung = 1;
    $falz_extern = false;

    if(!($falzung == 'nein' || $falzung == 0)){
        if($stanzung != 0){
            $falz_komplex *= 3;
            $wtvfrachtkosten += $wtvfrachtpreis;
        }

        $falzgeschwindigkeit = $wtvgeschwindigkeit;

        $zeit_falzung = (15+$falzung*$falz_komplex*$Pfalzbruch_ruesten)/60+($auflage/$falzgeschwindigkeit);
        if (($breite_offen > 14.7 && $hoehe_offen > 14.7 && $breite_offen < 85 && $hoehe_offen < 55 && $breite_geschl > 3.6 && $hoehe_geschl > 3.6 && $falzung < 6) ||
            ($breite_offen > 14.7 && $hoehe_offen > 14.7 && $breite_offen < 55 && $hoehe_offen < 85 && $breite_geschl > 3.6 && $hoehe_geschl > 3.6 && $falzung < 6)) {

            $fakt_falzung = 1 * $falz_komplex;
            if ($hoehe_geschl * $breite_geschl < 155) { //kleiner DIN A6 = Probleme Auslage
                $zeit_falzung *= 2;
            }
            if($falzung > 3){
                $zeit_falzung *= (1 + $falzung / 10);
            }
        }else{
            $fakt_falzung = $Pfaktor_klein_gross_falzung;
            $falz_extern = true;
            if($falzung > 6){
                $fakt_falzung *= 1.9;
            } elseif ($falzung > 5) {
                $fakt_falzung *= 1.5;
            }
        }

        if($falzart==5 || $falzart==6){
            $zeit_falzung += 1 + $auflage/$falzgeschwindigkeit*0.3;
        }

        if($falzart==99){
            $zeit_falzung += 1 + $auflage/$falzgeschwindigkeit*0.3;
        }

        if($auflage < 5000 && $falzung == 1 && $papiersorte_grammatur > 169 && (($breite_offen > 11 && $breite_offen < 38 && $hoehe_offen > 8 && $hoehe_offen < 70) || 
        ($hoehe_offen > 11 && $hoehe_offen < 38 && $breite_offen > 8 && $breite_offen < 70)))
            {   //wenn nur Morgana oder notfalls Tiegel nötig ist
                $zeit_falzung = $auflage / $falzgeschwindigkeit;
                $fakt_falzung = $falz_komplex = 1;
                $falz_extern = false;
            }
        elseif($auflage < 5000 && $falzung == 1 && $papiersorte_grammatur > 169 && (($breite_offen > 11 && $breite_offen < 50 && $hoehe_offen > 8 && $hoehe_offen < 70) || 
            ($hoehe_offen > 11 && $hoehe_offen < 50 && $breite_offen > 8 && $breite_offen < 70)))
            {   //wenn nur Morgana oder notfalls Tiegel nötig ist
                $zeit_falzung = $auflage / $falzgeschwindigkeit + 0.5;
                $fakt_falzung = $falz_komplex = 1.5;
                $falz_extern = false;
            }

        if($falz_extern==true){   //wenn Fischer oder extern nötig ist
            $wtvfrachtkosten += $wtvfrachtpreis;
            $zeit_falzung += 1;
        }

        if($kaschierung!=0){
            $fakt_falzung *= 3;
        }

        $wtvzuschusspapier += ($auflage * 0.005 + $falzung * 30) / $drucknutzen;
    }
    
    $kosten_falzung = $zeit_falzung * $fakt_falzung * $Pstundensatz_wtv_maschinen;

    if ($falz_extern == false) {
        $wtveigenkosten += $kosten_falzung;
    }else{
        $wtvfremdkosten += $kosten_falzung;
    }

    //nuten
    $zeit_nuten = 0;
    if($papiersorte_grammatur > 169 && (!($falzung == 'nein' || $falzung == 0))){
        $zeit_nuten = ( $auflage / 3500 + 0.4 );
        $wtvzuschusspapier += ($auflage * 0.005 + 30) / $drucknutzen;
    }
    $kosten_nuten = $zeit_nuten * $Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_nuten;

    //leimen
    $kosten_leimen = 0;
    if($leimung != 0){
        $kosten_leimen = $Pfixkosten_blockleimung + $auflage * (1/pow(2,log10($auflage/3)));
        $wtvzuschusspapier += ($auflage * 0.005 + 30 + $anzblattjeblock) / $drucknutzen;
    }
    $zeit_leimen = $kosten_leimen / $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_leimen;

    //bündeln
    $kosten_buendeln = 0;
    if($hoehe_geschl > 29.7 || $breite_geschl > 29.7 || $hoehe_offen > 29.7 || $breite_offen > 29.7){
        $buendelfaktor = 3;
    }else{
        $buendelfaktor = 1;
    }

    if($falzung == 'nein' || $falzung == 0 || $stanzung != 0){
        $buendelfaktor *= 1.2;
    }

    if($buendeln != 0){
        $kosten_buendeln = ($Pplano_fa_fixpreis_buendeln + $auflage / $buendeln * $Pplano_fa_preis_je_buendel) * $buendelfaktor;
    }

    $zeit_buendeln = $kosten_buendeln / $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_buendeln;

    //perforation (hier werden Paramter anders übergeben: $stanzart = 3 >>> $sortenzahl = Anzahl Linine * Anzahl Sorten)
    $perfoarray = StanzPerfoKostenBerechnen($perforation, 3, $auflage, $sortenzahl * $perforation, $anzblattjeblock, $breite_offen, $hoehe_offen, $drucknutzen, $Pstundensatz_wtv_maschinen);
    $kosten_perforation = $perfoarray[0];
    $zeit_perforation = $perfoarray[1];
    $kosten_werkzeug_perforation = $perfoarray[2];
    $nutzen_perforation = $perfoarray[3];
    $perfmaschine = $perfoarray[4];
    $wtvzuschusspapier += $perfoarray[5];
    $wtvfremdkosten += $kosten_perforation;

    //duftdruck
    $kosten_duftdruck = 0;
    $zeit_duftdruck = 0;
    if($duftdruck != 0){
        $kosten_duftdruck = $duftdruck*$Pplano_fa_tsdpreis_duftdruck*$auflage/1000+$Pplano_fa_fixpreis_duftdruck;
        $zeit_duftdruck = 480;
        $wtvzuschusspapier += ($auflage * 0.01 + 100) / $drucknutzen;
        $wtvfrachtkosten += $wtvfrachtpreis;
    }
    $wtvfremdkosten += $kosten_duftdruck;

    //oesen
    $kosten_oesen = 0;
    $zeit_oesen = 0;
    if($oesen != 0){
        $kosten_oesen = $Poesen_fixpreis + $auflage * $Poesen_stkpreis;
        $zeit_oesen = $auflage / 1000 * 240;
        $wtvzuschusspapier += ($auflage * 0.005 + 30) / $drucknutzen;
    }
    $wtveigenkosten += $kosten_oesen;

    //praegung
    $kosten_praegung = 0;
    $zeit_praegung = 0;
    $kosten_werkzeug_praegung = 0;
    if($praegung != 0){
        $zeit_praegung = $auflage / 1000 + 1;
        if($breite_offen > 23 || $hoehe_offen > 23){
            $kosten_praegung = $Pplano_praegen_fix2 + $auflage * $Pplano_praegen_var2 / 1000;
        }else{
            $kosten_praegung = $Pplano_praegen_fix1 + $auflage * $Pplano_praegen_var1 / 1000;    
            }
        if($praegung == 2){
            $kosten_werkzeug_praegung = sqrt($breite_offen*$hoehe_offen)*2+95*$sortenzahl;
        }
        $wtvzuschusspapier += ($auflage * 0.01 + 100) / $drucknutzen;
    }
    $wtvfremdkosten += $kosten_praegung + $kosten_werkzeug_praegung;

    //stanzung
    $stanzarray = StanzPerfoKostenBerechnen($stanzung, $stanzart, $auflage, $sortenzahl, $anzblattjeblock, $breite_offen, $hoehe_offen, $drucknutzen, $Pstundensatz_wtv_maschinen);
    $kosten_stanzung = $stanzarray[0];
    $zeit_stanzung = $stanzarray[1];
    $kosten_werkzeug_stanzung = $stanzarray[2];
    $nutzen_stanzung = $stanzarray[3];
    $stanzmaschine = $stanzarray[4];
    $wtvzuschusspapier += $stanzarray[5];
    $wtvfremdkosten += $kosten_stanzung;

    //cito-anstanzung (opt. Laserstanzung falls günstiger)
    $kosten_cito = 0;
    $zeit_cito = 0;
    $aufpreis_tsd_cito = 0;
    $ntz_cito = max(floor(40/$hoehe_offen)*floor(28/$breite_offen),floor(28/$hoehe_offen)*floor(40/$breite_offen));
    if($ntz_cito<1){
        $ntz_cito = 1;
        $aufpreis_tsd_cito = 100;
    }
    if($cito_anstanzung == 1){
        $kosten_cito = min(($Pplano_fa_stckpreis_laserstanzung*$auflage+$Pplano_fa_fixpreis_laserstanzung),($sortenzahl*($Pplano_fa_fixpreis_cito+($breite_offen*$hoehe_offen/4))+(($Pplano_fa_tsdpreis_cito+$aufpreis_tsd_cito)/1000*$auflage/$ntz_cito)));
        $zeit_cito = $kosten_cito / $Pstundensatz_wtv_maschinen;
        $wtvzuschusspapier += ($auflage * 0.03 + 100) / $drucknutzen;
    }
    if($cito_anstanzung == 2){
        $kosten_cito = $Pplano_fa_fixpreis_cito_nassleimetik+($Pplano_fa_tsdpreis_cito_nassleimetik+$aufpreis_tsd_cito)/1000*$auflage/$ntz_cito;
        $zeit_cito = $kosten_cito / $Pstundensatz_wtv_maschinen;
        $wtvzuschusspapier += ($auflage * 0.03 + 100) / $drucknutzen;
    }
    $wtvfremdkosten = $wtvfremdkosten + $kosten_cito;


    //verschluss
    // 0 = nein, 1 = KLPK lose, 2 = KLPK konf., 3 = HSTR lose, 4 = HSTR konf. 5 = STA, 6 = Schleife
    $kosten_verschluss = 0;
    $zeit_verschluss = 0;
    $kosten_haftstreifen_material_gesamt = $haftstreifen_material_pro_cm * min($hoehe_offen, $breite_offen) * $auflage;
    if($verschluss == 1){
        $kosten_verschluss = $Pklebepunkte_lose_pro_tausend/1000*$auflage+$Pklebepunkte_lose_fix;
        $zeit_verschluss = 0.1;
    }
    if($verschluss == 2){
        $kosten_verschluss = $Pklebepunkte_vorkonf_pro_tausend/1000*$auflage+$Pklebepunkte_vorkonf_fix;
        $zeit_verschluss = $auflage / 600;
    }
    if($verschluss == 3){
        $kosten_verschluss = $Phaftstreifen_lose_pro_tausend/1000*$auflage+$Phaftstreifen_lose_fix+$kosten_haftstreifen_material_gesamt;
        $zeit_verschluss = 0.1;
    }
    if($verschluss == 4){
        $kosten_verschluss = $Phaftstreifen_vorkonf_pro_tausend/1000*$auflage+$Phaftstreifen_vorkonf_fix+$kosten_haftstreifen_material_gesamt;
        $zeit_verschluss = $auflage / 400;
    }
    if($verschluss ==5){
        $maxnutzenanzTiegel = max(floor(33/($breite_offen+1)) * floor(23/($hoehe_offen+1)), floor(23/($breite_offen+1)) * floor(33/($hoehe_offen+1))); //Nutzenberechnung
        $maxnutzenanzZylinder = max(floor(98/($breite_offen+1)) * floor(68/($hoehe_offen+1)), floor(68/($breite_offen+1)) * floor(98/($hoehe_offen+1)));  //Nutzenberechnung
        $kosten_werkzeug_stanzung_1N = sqrt($breite_offen*$hoehe_offen)*2+85;
        if($breite_offen > 23 || $hoehe_offen > 23){
            $kosten_stanzung = $Pplano_stanzen_fix2 + $auflage * $Pplano_stanzen_var2 / 1000;
            $stanzmaschine = "zylinder";
            $kosten_stanzung += $kosten_werkzeug_stanzung_1N;    
        }else{
            $kosten_stanzung = $Pplano_stanzen_fix1 + $auflage * $Pplano_stanzen_var1 / 1000;
            $stanzmaschine = "tiegel";
            $kosten_stanzung += $kosten_werkzeug_stanzung_1N;
        }
        $kosten_stanzen_fix = $Pplano_stanzen_fix2;
        $kosten_stanzen_var = $Pplano_stanzen_var2;
        $stanzmaschine_temp = "zylinder";
        for ($ntz = 1; $ntz <= $maxnutzenanzZylinder; $ntz++){
            $kosten_sta_temp = $kosten_stanzen_fix + $auflage * $kosten_stanzen_var / 1000 / $ntz + $kosten_werkzeug_stanzung_1N * $ntz;
            if($kosten_sta_temp < $kosten_stanzung){
                $kosten_stanzung = $kosten_sta_temp;
                $nutzen_stanzung = $ntz;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N * $ntz;
                $stanzmaschine = $stanzmaschine_temp;
            }        
        }
        $kosten_stanzen_fix = $Pplano_stanzen_fix1;
        $kosten_stanzen_var = $Pplano_stanzen_var1;
        $stanzmaschine_temp = "tiegel";
        for ($ntz = 1; $ntz <= $maxnutzenanzTiegel; $ntz++){
            $kosten_sta_temp = $kosten_stanzen_fix + $auflage * $kosten_stanzen_var / 1000 / $ntz + $kosten_werkzeug_stanzung_1N * $ntz;
            if($kosten_sta_temp < $kosten_stanzung){
                $kosten_stanzung = $kosten_sta_temp;
                $nutzen_stanzung = $ntz;
                $kosten_werkzeug_stanzung = $kosten_werkzeug_stanzung_1N * $ntz;
                $stanzmaschine = $stanzmaschine_temp;
            }
        }
        $kosten_verschluss = $kosten_stanzung;
        $zeit_verschluss = $kosten_verschluss / $Pstundensatz_wtv_maschinen;
    }

    if($verschluss == 6){
        $kosten_verschluss = 0.42*$auflage+95;
        $zeit_verschluss = $auflage / 300;
    }

    if($verschluss != 0){
        $wtvzuschusspapier += ($auflage * 0.01 + 30) / $drucknutzen;
    }
    $wtvfremdkosten += $kosten_verschluss;

    //beilage
    $kosten_beilage = 0;
    if($beilage == 1){
        $kosten_beilage = $Pbeilage_einlegen_unbestimmte*$auflage/1000;      
    }
    if($beilage == 2){
        $kosten_beilage = $Pbeilage_einlegen_bestimmte*$auflage/1000;      
    }
    $zeit_beilage = $kosten_beilage / $Pstundensatz_wtv_hand; 
    $wtveigenkosten += $kosten_beilage;

    //nummerierung, codierung
    $kosten_nummerierung = 0;
    if($nummerierung == 1){
        $kosten_nummerierung = $Pplano_fa_fixpreis_nummerierung+($falzung*15)+$Pplano_fa_tsdpreis_nr_schwarz_inkjet*$auflage/1000;
    }
    if($nummerierung == 2){
        $kosten_nummerierung = $Pplano_fa_fixpreis_nummerierung+($falzung*15)+$Pplano_fa_tsdpreis_nr_farbig_laser*$auflage/1000;
    }
    if($nummerierung == 3){
        $kosten_nummerierung = $Pplano_fa_fixpreis_nummerierung+($falzung*15)+$Pplano_fa_tsdpreis_nr_schwarz_laser*$auflage/1000;
    }
    if($nummerierung != 0){
        $wtvzuschusspapier += ($auflage * 0.01 + 50) / $drucknutzen;
    }
    $zeit_nummerierung = $kosten_nummerierung / $Pstundensatz_wtv_maschinen;
    $wtvfremdkosten += $kosten_nummerierung;

    //laserstanzung
    $kosten_laserstanzung = 0;
    $zeit_laserstanzung = 0;
    if($laserstanzung != 0){
        $kosten_laserstanzung = $laserstanzung*$Pplano_fa_stckpreis_laserstanzung*$auflage+$Pplano_fa_fixpreis_laserstanzung;
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvzuschusspapier += ($auflage * 0.01 + 100) / $drucknutzen;
        $zeit_laserstanzung = 240;
    }
    $wtvfremdkosten += $kosten_laserstanzung;


    //ecken runden
    $EinsatzFaktor = 1;
    if($stanzung != 0){$EinsatzFaktor = 2;}
    if($falzung != 0){$EinsatzFaktor = $falzung * 2;}
    $ExplJeEinsatz = 40 / $papiersorte_grammatur * 1000 / $EinsatzFaktor;
    $zeit_eckenrunden = 0;
    $kosten_eckenrunden = 0;
    if($ecken_runden == 3 || $ecken_runden == 5) {
        $zeit_eckenrunden = 0.5 + 4 * $auflage * $anzblattjeblock / $ExplJeEinsatz * 25 / 3600;
        $kosten_eckenrunden = $zeit_eckenrunden *  $Pstundensatz_wtv_hand;
    }
    if($ecken_runden == 99) {
        $Pplano_fa_tsdpreis_ecken_runden_nassleimetik = 1.50;
        $kosten_eckenrunden = 1 / $grammaturfaktor_geschw_wtv * $auflage * $Pplano_fa_tsdpreis_ecken_runden_nassleimetik / 1000 + 15;
        $zeit_eckenrunden = $kosten_eckenrunden / $Pstundensatz_wtv_hand;
    }
    $wtveigenkosten += $kosten_eckenrunden;


    //bohren, lochen
    $zeit_bohren_lochen = 0;
    if($bohren_lochen != 0){
        $bohrformatliste = array(array(0.1,2),array(5,1.6),array(10,1.3),array(20,1),array(650,1.2),array(1300,1.4));
        foreach($bohrformatliste as $n){
            if($breite_offen*$hoehe_offen >= $n[0]){
                $bohraufschlag = $n[1];
            }
        }

        if($stanzung != 0 && $stanzung != 99){
            $bohraufschlag *= 1.7;
        }
        if(!($falzung == 'nein' || $falzung == 0)){
            $bohraufschlag *= 2;  
        }
        if(($bohren_lochen == 2) && ($bohraufschlag == 1)){$bohren_lochen = 1;}  //für DIN A4 2-fach Sonderpreis

        $bohreinsaetzeJeExpl = ceil($bohren_lochen / 2);
        $maxbohrhoehe = 40;         //mm
        $zeitjebohreinsatz = 1.5;   //Minuten je Bohreinsatz
        $dicke = $papiersorte_grammatur / 1000 * $auflage * $anzblattjeblock * max(1, $falzung+1);
        $anzahlbohreinsaetze = $bohreinsaetzeJeExpl * ($dicke / $maxbohrhoehe);
        $zeit_bohren_lochen = ((5 * $bohren_lochen + $anzahlbohreinsaetze * $zeitjebohreinsatz) / 60)* $bohraufschlag;
    }
    $kosten_bohren_lochen = $zeit_bohren_lochen * $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_bohren_lochen;


    //folien kaschierung
    $kosten_kaschierung = 0;
    $zeit_kaschierung = 0;
    $flaechekaschierung = ($breite_offen+2)*($hoehe_offen+2);
    if($kaschierung == 1){
        $kosten_kaschierung = $kaschierung_anzahl*max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_mk*$flaechekaschierung/10000*$auflage);
    }
    if($kaschierung == 2){
        $kosten_kaschierung = $kaschierung_anzahl*max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_gl*$flaechekaschierung/10000*$auflage);
    }
    if($kaschierung == 3){
        $kosten_kaschierung = $kaschierung_anzahl*max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_legl*$flaechekaschierung/10000*$auflage);
    }
    if($kaschierung != 0){
        $wtvzuschusspapier +=($auflage * 0.005 + 30) / $drucknutzen;
        $zeit_kaschierung = 240;
        $wtvfrachtkosten += 25;
        $wtvfremdkosten += $kosten_kaschierung;
    }

    //loseblatt, zusammentragen von Sorten, in Abh. von Grammatur und Format > manuell oder HFS
    $kosten_loseblatt = 0;
    $zeit_loseblatt = 0;
    if($stanzung == 0){
        $faktor_loseblatt = 1;
    }else{
        $faktor_loseblatt = 1.3;
    }

    if($sortenzahl > 1 && $loseblatt == 1){
        if($papiersorte_grammatur <= 300 && $hoehe_geschl >= 14.8 && $breite_geschl >= 14.8 && $breite_offen <= 42 && $hoehe_geschl <= 42){
            $hfs_durchlaeufe = ceil($sortenzahl/23);
            $hfs_ruestzeit = $sortenzahl * 2 / 60 + 0.5;
            $hfs_zeit_zu = $auflage * $hfs_durchlaeufe / $wtvgeschwindigkeit;
            $hfs_zeit_stapeln = 1 + $hfs_durchlaeufe * $auflage * 0.0013;
            $hfs_zeit_loseblatt = $hfs_ruestzeit + $hfs_zeit_zu + $hfs_zeit_stapeln;
            $hfs_kosten_loseblatt = $hfs_zeit_loseblatt * $Pstundensatz_wtv_maschinen;
        }else{
            $hfs_kosten_loseblatt = 999999999;
            $hfs_zeit_loseblatt = 999999999;
        }
        $man_kosten_loseblatt = $sortenzahl * 5 + $auflage * 0.015;
        $man_zeit_loseblatt = $man_kosten_loseblatt / $Pstundensatz_wtv_hand;
        
        $kosten_loseblatt = min($hfs_kosten_loseblatt, $man_kosten_loseblatt);
        $kosten_loseblatt *= $faktor_loseblatt;
        if($kosten_loseblatt == $hfs_kosten_loseblatt){
            $zeit_loseblatt = $hfs_zeit_loseblatt;
        }else{
            $zeit_loseblatt = $man_zeit_loseblatt;
        }
        $wtvzuschusspapier += ($auflage*0.005 + $sortenzahl*10) / $drucknutzen;
        $wtveigenkosten += $kosten_loseblatt;
    }


    //freie Positionen
    $kosten_freipos10 = $frei10fixpreis + $frei10tsdpreis / 1000 * $auflage;
    $kosten_freipos20 = $frei20fixpreis + $frei20tsdpreis / 1000 * $auflage;
    $wtvfremdkosten += $kosten_freipos10 + $kosten_freipos20;   

    //Musterversand
    $kosten_musterversand = $musterversand * 8;
    $wtvfremdkosten += $kosten_musterversand;

    //Neutralversand, Absender
    $kosten_absender = $absender * 0;
    $wtvfremdkosten += $kosten_absender;
    
    //Endabrechnung
    $wtvzuschusspapier = ceil($wtvzuschusspapier);
    $wtvzuschusspapier_kosten = ($druckbogen_breite * $druckbogen_hoehe * $papiersorte_grammatur * $papiersorte_value * $wtvzuschusspapier) / 1000000000;

    //Werte ausgeben
    if($what=='debug'){
        echo('-------------------- WTV PLANO-FA --------------------'."\n<br />");
        if ($kosten_endschneiden != 0) {
            echo ('Kosten Endschneiden: ' . number_format($kosten_endschneiden, 2, ',', '.') . ' € | Zeit: ' . number_format($zeit_endschneiden, 1) . " h \n<br />");
        }
        if($kosten_falzung != 0){echo('Kosten Falzung: '.number_format($kosten_falzung, 2 , ',', '.').' € | Zeit: '.number_format($zeit_falzung,1)." h\n<br />");
        echo('Faktor Falzung: '.$fakt_falzung.' | Falz-komplex : '.$falz_komplex . ' | Falz extern: '.var_export($falz_extern, true)."\n<br />");
        }
        if ($kosten_verpacken != 0){
            echo ('Kosten verpacken: ' .number_format($kosten_verpacken, 2, ',', '.').' €'."\n<br />");
        }
        if($kosten_nuten != 0){echo('Kosten nuten: '.number_format($kosten_nuten, 2 , ',', '.').' € | '.'Zeit nuten: '.number_format($zeit_nuten,1)." h\n<br />");}
        if($kosten_leimen != 0){echo('Kosten zustr., leimen, trennen: '.number_format($kosten_leimen, 2 , ',', '.').' € | '.'Zeit: '.number_format($zeit_leimen,1)." h\n<br />");}
        if($kosten_buendeln != 0){echo('Kosten bündeln: '.number_format($kosten_buendeln, 2 , ',', '.').' € | '.'Zeit bündeln: '.number_format($zeit_buendeln,1)." h\n<br />");}
        if($kosten_perforation != 0){echo('Kosten perforation: '.number_format($kosten_perforation, 2 , ',', '.').' € | '.'Zeit Perforation: '.number_format($zeit_perforation,1)."h \n<br />".'Kosten Werkzeug Perfo.: '.number_format($kosten_werkzeug_perforation, 2 , ',', '.')." € \n<br />".'Nutzen Perfo.: '.number_format($nutzen_perforation,1).' | '.'Zeit Perfo.: '.number_format($zeit_perforation,1).' h | '.'Perfo.maschine: '.$perfmaschine."\n<br />");}
        if($kosten_duftdruck != 0){echo('Kosten Duftdruck: '.number_format($kosten_duftdruck, 2 , ',', '.').' € | '.'Zeit Duftdruck: '.number_format($zeit_duftdruck,1)."\n<br />");}
        if($kosten_oesen != 0){echo('Kosten Ösen: '.number_format($kosten_oesen, 2 , ',', '.').' € | '.'Zeit Ösen: '.number_format($zeit_oesen,1)." h\n<br />");}
        if($kosten_praegung != 0){echo('Kosten Prägung: '.number_format($kosten_praegung, 2 , ',', '.').' € | '.'Kosten Werkzeug Prägung: '.number_format($kosten_werkzeug_praegung, 2 , ',', '.').' € | '.'Gesamtosten Prägung: '.number_format(($kosten_praegung+$kosten_werkzeug_praegung), 2 , ',', '.').' € | '.'Zeit praegung: '.number_format($zeit_praegung,1)." h \n<br />");}
        if($kosten_stanzung != 0){echo('Kosten Stanzung (ggf. inkl. Werkzeug): '.number_format($kosten_stanzung, 2 , ',', '.').' € | '.'Werkzeug Stanzung: '.number_format($kosten_werkzeug_stanzung, 2 , ',', '.')." € \n<br />".'Nutzen Stanzung: '.number_format($nutzen_stanzung, 0).' | '.'Zeit Stanzung: '.number_format($zeit_stanzung,1).' h | '.'Stanzmaschine: '.$stanzmaschine."\n<br />");}
        if($kosten_cito != 0){echo('Kosten Cito: '.number_format($kosten_cito, 2 , ',', '.').' € | '.'Zeit Cito: '.number_format($zeit_cito,1).' h | '.'Ntz. Cito: '.number_format($ntz_cito, 0 , ',', '.')."\n<br />");}
        if($kosten_verschluss != 0){echo('Kosten Verschluss: '.number_format($kosten_verschluss, 2 , ',', '.').' € | '.'Zeit Verschluss: '.number_format($zeit_verschluss,1)." h\n<br />");}
        if($kosten_beilage != 0){echo('Kosten Beilage: '.number_format($kosten_beilage, 2 , ',', '.').' € | '.'Zeit beilage: '.number_format($zeit_beilage,1)." h\n<br />");}
        if($kosten_nummerierung != 0){echo('Kosten Nummerierung: '.number_format($kosten_nummerierung, 2 , ',', '.').' € | '.'Zeit Nummerierung: '.number_format($zeit_nummerierung,1)." h\n<br />");}
        if($kosten_laserstanzung != 0){echo('Kosten Laserstanzung: '.number_format($kosten_laserstanzung, 2 , ',', '.').' € | '.'Zeit Laserstanzung: '.number_format($zeit_laserstanzung,1)." h\n<br />");}
        if($kosten_eckenrunden != 0){echo('Kosten Eckenrunden: '.number_format($kosten_eckenrunden, 2 , ',', '.').' € | '.'Zeit eckenrunden: '.number_format($zeit_eckenrunden,1)." h \n<br />");}
        if($kosten_bohren_lochen != 0){echo('Kosten Bohren/Lochen: '.number_format($kosten_bohren_lochen, 2 , ',', '.').' € | '.'Zeit Bohren/Lochen: '.number_format($zeit_bohren_lochen,1).' h | Bohraufschlag: '.$bohraufschlag."\n<br />");}
        if($kosten_kaschierung != 0){echo('Kosten Kaschierung: '.number_format($kosten_kaschierung, 2 , ',', '.').' € | '.'Zeit kaschierung: '.number_format($zeit_kaschierung,1)." h\n<br />");}
        if($kosten_loseblatt != 0){echo('Kosten Loseblatt: '.number_format($kosten_loseblatt, 2 , ',', '.').' € | '.'Zeit loseblatt: '.number_format($zeit_loseblatt,1)." h\n<br />");}
        echo('WTV Zuschuss Papier: '.number_format($wtvzuschusspapier_kosten, 2 , ',', '.').' € | '.number_format($wtvzuschusspapier,0)." Bogen \n<br />");
        echo('Papierlogistikpauschale: '.number_format($papierlogistikpauschale, 2 , ',', '.')." €\n<br />");
        echo('----------------------------------------'."\n<br />");
        echo('WTV Frachtkosten: '.number_format($wtvfrachtkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Eigenkosten: '.number_format($wtveigenkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Fremdkosten: '.number_format($wtvfremdkosten, 2 , ',', '.')." €\n\n<br />");
    }

    if($what == 'allarray' || $what == 'debug') {
        return [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung, $wtvfrachtgewicht, $zeit_endschneiden, $zeit_falzung, $zeit_nuten, $zeit_leimen, $zeit_buendeln, $zeit_perforation, $zeit_stanzung, $zeit_duftdruck, $zeit_oesen, $zeit_praegung, $zeit_cito, $zeit_verschluss, $zeit_beilage, $zeit_nummerierung, $zeit_laserstanzung, $zeit_eckenrunden, $zeit_bohren_lochen, $zeit_loseblatt];
    }

    return FALSE;

}

function getZUABPlanoFa23($what, $auflage, $rabattierfaehigekosten, $zuab_eigenkosten, $zuab_fremdkosten, $papiersorte_sammelform, $druckfarben_inhalt, $druckmaschine, $qualitaet, $produktionszeit, $sortenzahl, $breite_offen, $hoehe_offen, $provisionsart, $provisionswert, $anzblattjeblock, $papier_vs_rs_unterschiedlich) {

    if($anzblattjeblock == 0){
        $anzblattjeblock=1;
    }
    $auflage *= $anzblattjeblock;
    
    //Sammelform 
    $bedruckteSeiten = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt)[1];
    $zuab_gesamtkosten = $zuab_eigenkosten + $zuab_fremdkosten;

    $sammelarray = getSammelformWertePlanoFa23($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $bedruckteSeiten, $sortenzahl, $druckmaschine, $produktionszeit, $papier_vs_rs_unterschiedlich);
    $sammelfaktor_papier = $sammelarray[2];
    $sammelwahrscheinlichkeit_menge = $sammelarray[1];
    $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];
    $sammelfaktor_druckmaschine = $sammelarray[3];

    $sammelfaktor = (($sammelwahrscheinlichkeit_format_sorten*75)*($sammelwahrscheinlichkeit_menge*25)/(75*25))*$sammelfaktor_papier*$sammelfaktor_druckmaschine;

    if((in_array($druckfarben_inhalt,array(1,2,3,18,19,7,8))) && ($papiersorte_sammelform != 1)){
        $sammelformreduktion = $rabattierfaehigekosten * $sammelfaktor * -1;
        }else{
            $sammelformreduktion = 0;
        }
    $preisaenderung = $sammelformreduktion;

    //Qualität 1 = easyValue, 2 = ISO-Std., 3 = MaxHighEnd, Pos. in Liste (0=Fixwert,1=Prozwert)
    $qualitaetswerte = array(array(0,-5),array(0,0),array(30,8));
    $qualitaet_fix = $qualitaetswerte[$qualitaet-1][0];
    $qualitaet_proz = $qualitaetswerte[$qualitaet-1][1];
    if($qualitaet_proz <= 0){
        $qualkost = $zuab_eigenkosten;
        }else{
        $qualkost = $zuab_gesamtkosten + $sammelformreduktion/2;
    }
    $qualitaet_zuab = $qualitaet_fix + ($qualkost/100*$qualitaet_proz);
    $preisaenderung += $qualitaet_zuab;

    //Produktionszeit 1 = relaX, 2 = normal, 3 = eXpress | Pos. in Liste (0=Fixwert,1=Prozwert)
    $zeitwerte = array(array(0,-8),array(0,0),array(35,13));
    $zeitwert_fix = $zeitwerte[$produktionszeit-1][0];
    $zeitwert_proz = $zeitwerte[$produktionszeit-1][1];
    if($zeitwert_proz <= 0){
        $zeitkosten = $zuab_eigenkosten;
        }else{
        $zeitkosten = $zuab_gesamtkosten + $sammelformreduktion/2;
    }  

    $zeit_zuab = $zeitwert_fix + ($zeitkosten/100*$zeitwert_proz);
    $preisaenderung += $zeit_zuab;      

    //Schrottpreise vermeiden, Mindestauftragswert beachten: (Auftragswert, Faktor)
    $preisaendfaktor = 1;
    $auftragswert = $zuab_gesamtkosten + $preisaenderung;
    if ($auftragswert < 100) {
        $steigung = 0.04;
        $preisaendfaktor = 0.3 + 0.7 * (1 - exp(-$steigung * ($auftragswert - 30)));
        $preisaendfaktor += 0.04256704383765;
        //echo("Schrottpreise vermieden: alte preisänderung: $preisaenderung €\n<br />");
        $preisaenderung *= $preisaendfaktor;
        //echo("neue Preisänderung: $preisaenderung €\n<br />");
    }
 
    //Provision (1 = Prozentual, 5, 10, 15, 20%)
    $provision_zuschlag = 0;
    if($provisionsart == "1"){
        $provision_zuschlag = ($zuab_gesamtkosten+$preisaenderung)/100*$provisionswert;
    }
    $preisaenderung += $provision_zuschlag;


    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- Zu-/Abschläge PLANO-FA --------------------'."\n<br />");
        echo('Gesamtkosten: '.number_format($zuab_gesamtkosten, 2 , ',', '.')." € \n<br />");
        echo('Rabattierfaehige Kosten:. '.number_format($rabattierfaehigekosten, 2 , ',',  '.')." € \n<br />");
        echo('Sammelfaktor Papiersorte: '.number_format($sammelfaktor_papier, 2 , ',', '.')."\n<br />");
        echo('Sammelwahrscheinlichkeit Format/Sorten: '.number_format($sammelwahrscheinlichkeit_format_sorten, 2)."\n<br />");
        echo('Sammelwahrscheinlichkeit Menge: '.number_format($sammelwahrscheinlichkeit_menge, 2)."\n<br />");
        echo('Sammelfaktor total: '.number_format($sammelfaktor, 2)."\n<br />");
        echo('Preisänd. durch Sammelform: '.number_format($sammelformreduktion, 2 , ',', '.')." €\n<br />");
        echo("Qualität: ".  $qualitaet_fix. ' € | '.$qualitaet_proz." = ".number_format($qualitaet_zuab, 2 , ',', '.')." €\n<br />");
        echo("Produktionszeit: ".$zeitwert_fix.' € | '.$zeitwert_proz." = ".number_format($zeit_zuab, 2 , ',', '.')." €\n<br />");
        echo('Provision: '.number_format($provisionswert, 2 , ',', '.').' % | '.number_format($provision_zuschlag, 2 , ',', '.')." € \n<br />");
        echo('Zu-/Abschläge total: '.number_format($preisaenderung, 2 , ',', '.')." € \n\n<br />");   
        if ($preisaendfaktor != 1) {
            echo ("Schrottpreise vermieden: $preisaendfaktor = ".$preisaendfaktor ."\n<br />");
        }
    }
    return $preisaenderung;
}

function getSammelformWertePlanoFa23($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $anzahlSeiten, $sortenzahl, $druckmaschine, $produktionszeit, $papier_vs_rs_unterschiedlich){
    // (Index unten -1), daher 0 = ohne, 1 = happy, 2 = eq, 3 = sense, 4 = sky, 5 = glam, 6 = post
    $papierliste = array(0,99,96,90,75,60,40);
    $sammelfaktor_papier = $papierliste[$papiersorte_sammelform-1]/100;

    // bis 14.10.22 $mengenliste = array(array(1,99),array(500,96),array(1250,93),array(2500,90),array(7500,80),array(10000,70),array(15000,60),array(20000,50),array(30000,40),array(40000,30),array(50000,20),array(60000,10),array(70000,5));
    $mengenliste = array(array(1,99.9),array(100,99.5),array(200,99), array(300,98.8),array(400,98.5),array(500,98),array(750,97),array(1250,96),array(2500,93),array(5000,88),array(7500,80),array(10000,70),array(15000,60),array(20000,50),array(30000,40),array(40000,30),array(50000,20),array(60000,10),array(70000,5));
    $sammelwahrscheinlichkeit_menge = getInterpolationswertAusTabelle($auflage, $mengenliste)/100;
  
    // array(5100,0) nicht sinnvoll, da sonst gar kein Abschlag mehr für Vollformate oder viele Sorten
    //neu 1/2026 $formatliste = array(array(0,99.9),array(155,99),array(310,98),array(360,97),array(410,96),array(500,95),array(550,94),array(600,93),     array(623,92),array(700,90),array(800,88),array(900,85),array(1000,80),array(1247,75),array(1350,70),array(1400,65),array(1600,60),array(1800,55),array(2494,50),array(2700,45),array(2900,40),array(3100,35),array(3300,30),array(3600,25),array(4100,20),array(4500,15),array(4989,10),array(5100,5));
    $formatliste = array(array(0,99.9),array(155,99),array(310,98),array(623,92),array(900,85),array(1247,75),array(1400,65),array(1600,60),array(1800,55),array(2494,50),array(3100,35),array(3300,30),array(3600,25),array(4100,20),array(4500,15),array(4989,10),array(5100,5));
    $input = $anzahlSeiten*$sortenzahl*$breite_offen*$hoehe_offen;
    $sammelwahrscheinlichkeit_format_sorten = getInterpolationswertAusTabelle($input, $formatliste)/100;

    if($papier_vs_rs_unterschiedlich == 1 && $anzahlSeiten > 1){
        $sammelwahrscheinlichkeit_format_sorten *= 0.5;
    }

    //Abschlag Format für Höhe || Breite > 59 cm reduzieren
    if($breite_offen > 59 || $hoehe_offen > 59){
        $alt = $sammelwahrscheinlichkeit_format_sorten;
        $sammelwahrscheinlichkeit_format_sorten -= (max($hoehe_offen,$breite_offen) - 59) / 100;
        //echo ('wups1: '.$alt.'>'.$sammelwahrscheinlichkeit_format_sorten);
        if ($sammelwahrscheinlichkeit_format_sorten < 0) {
            $sammelwahrscheinlichkeit_format_sorten = 0;}
    }

    //Abschlag Banderolenformate oder Streifenformate (nicht ET-NL Formate!) reduzieren
    $maxUnterschied = max($breite_offen / $hoehe_offen, $hoehe_offen / $breite_offen);
    if($maxUnterschied > 5){
        $alt = $sammelwahrscheinlichkeit_format_sorten;
        //$sammelwahrscheinlichkeit_format_sorten *= 0.75;
        $sammelwahrscheinlichkeit_format_sorten -= $maxUnterschied / 100 * 1.5;
        //echo ('wups2: '.$alt.'>'.$sammelwahrscheinlichkeit_format_sorten);
        //var_dump($maxUnterschied);
        if ($sammelwahrscheinlichkeit_format_sorten < 0) {
            $sammelwahrscheinlichkeit_format_sorten = 0;}
    }

    // Sammelfaktor final korrigieren        
    if(strtolower($druckmaschine) == 'gto'){
        $sammelfaktor_druckmaschine = 0.5;
    }else{
        $sammelfaktor_druckmaschine = 1.0;
    }

    if($produktionszeit == 3){
        $sammelfaktor_druckmaschine *= 0.8;
    }

    return [$sammelwahrscheinlichkeit_format_sorten, $sammelwahrscheinlichkeit_menge, $sammelfaktor_papier, $sammelfaktor_druckmaschine];
}

function getPrePressBRO23($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $seiten_inhalt, $druckfarben_inhalt, $seiten_umschlag, $druckfarben_umschlag, $breite_offen, $hoehe_offen) {

    //Parameter
    $Pstundensatz_vorstufe = 75;
    $Pbro_aufpreis_anderes_dateiformat = 30;
    $Pumweltzeichen_fsc = 25;
    $Pumweltzeichen_blauerengel = 50;
    $Pgrundzeit_vorstufe = 30;
    $Pbro_digitalproof_minimal = 15;

    $anzahlSeiten = $seiten_umschlag + $seiten_inhalt;

    $datenuebernahme_kosten = ($Pgrundzeit_vorstufe+$anzahlSeiten/1.5)/60*$Pstundensatz_vorstufe;

    $dateiformat_kosten = 0;
    if(($dateiformat_geliefert != 1) && ($dateiformat_geliefert != 5)){
        $dateiformat_kosten = $Pbro_aufpreis_anderes_dateiformat + $anzahlSeiten*2/60*$Pstundensatz_vorstufe;
    }

    $korrekturabzug_kosten = 0;
    if($korrekturabzug == 3){
        $korrekturabzug_kosten = max($Pbro_digitalproof_minimal, (($breite_offen*$hoehe_offen)/62 * $anzahlSeiten));
    }
    if($korrekturabzug == 2){
        $korrekturabzug_kosten = 5 + ($anzahlSeiten/10);
    }

    $umweltzeichen_kosten = 0;
    if($umweltzeichen == 2){
        $umweltzeichen_kosten = $Pumweltzeichen_fsc;
    }
    if($umweltzeichen == 3){
        $umweltzeichen_kosten = $Pumweltzeichen_blauerengel;
    }

    $eigenkosten = $datenuebernahme_kosten + $dateiformat_kosten + $korrekturabzug_kosten + $umweltzeichen_kosten;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- PrePress BRO --------------------'."\n<br />"); 
        $Ausgabeliste = array('Datenübernahme: ' => $datenuebernahme_kosten, 'Dateiformat: ' => $dateiformat_kosten, 'Umweltzeichen: ' => $umweltzeichen_kosten, 'Korrekturabzug: ' => $korrekturabzug_kosten);
        foreach($Ausgabeliste as $bez => $wert){
            if($wert != 0){echo($bez.number_format($wert, 2 , ',', '.')." € \n<br />");}
        }
    }

    return $eigenkosten;
}


function getPrintBRO23($what, $auflage, $breite_geschl, $hoehe_geschl, $weiterverarbeitung, $ausfuehrung, $papier_inhalt_papiertyp1, $papier_inhalt_papiertyp2, $papier_inhalt_papiertyp3, $papier_inhalt_papiertyp4, $papier_inhalt_papiertyp5, $papier_inhalt_papiertyp6, $papier_inhalt_papiertyp7, $papier_inhalt_papiertyp8, $papier_inhalt_papiertyp9, $papier_inhalt_papiertyp10, $papier_inhalt_papiertyp11, $papier_inhalt_papiertyp12, $papier_inhalt_papiertyp13, $papier_inhalt_papiertyp14, $papier_inhalt_grammatur, $papier_inhalt_value, $papier_inhalt_vs_rs_unterschiedlich, $seiten_inhalt, $druckfarben_inhalt, $drucklack_inhalt, $lackart_inhalt, $papier_inhalt_sammelform, $inhaltidentisch, $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14, $papier_umschlag_grammatur, $papier_umschlag_value, $papier_umschlag_vs_rs_unterschiedlich, $seiten_umschlag, $druckfarben_umschlag, $veredelung_umschlag, $papier_umschlag_sammelform, $zusfarbwechsel, $zusdruckplatten, $zussorten_umschlag, $papier_inhalt_art_nr, $papier_umschlag_art_nr, $produktionszeit){ 

    $price_inhalt = 9999999999;
    $drucknutzen_inhalt = 9999999999;
    $nettobg_inhalt = 9999999999;
    $zuschuss_inhalt = 9999999999;
    $druckbogen_hoehe_inhalt = 1000;
    $druckbogen_breite_inhalt = 1000;
    $ctp_inhalt = 999999999;
    $druckmaschine_inhalt = 'man';
    $anzahlFarbwechsel_inhalt = 999;
    $druckzeitruesten1 = 999999;
    $druckzeitfortdruck1 = 999;
    $wtvgeschwindigkeit = 999;
    $rabattierfaehigekosten = 0;

    $GrundRuestZeit = 12;
    $RuestZeitJePlatte = 3.1;
    $WarteZeitUU = 0.15;
    $kostenDruckplatte = 15;
    $FarbwechselZeit = 35;

    $Paufpreis_drucklack_matt_voll = 10;
    $Paufpreis_drucklack_matt_partiell = 30;
    $Paufpreis_drucklack_glzd_voll = 55;
    $Paufpreis_drucklack_glzd_partiell = 95;

    $DruckbogenRaender_horiz = 1.5;     //über Formel in Schleife holen sinnvoll?
    $DruckbogenRaender_vert = 2.3;      //über Formel in Schleife holen sinnvoll?

    // $weiterverarbeitung: 1=RDH, 2=PUR, 3=Wire-O, 4=HDCOVER, 5=HDCOVER LEINEN, 6=WAKAL, 7=FÄLZELBAND
    // $ausfuehrung: 1=ohne Umschlag, 2=Umschlag 4 Seiten, 3=Front+Rückkarton, 4=Überzug auf Pappe, 5=Umschlag 6 Seiten, 6=Kapitalband, Leseband, Prägung, VNS
    //  Liste x,y,buchruecken ja/nein, BuBi-Pappe = ja/nein
    $beschnittliste_hor_vert = array(array(0.6,0.2,FALSE,FALSE),array(0.6,0.6,TRUE,FALSE),array(0.1,0.1,TRUE,FALSE),array(0.6,0.6,TRUE,TRUE),array(0.6,0.6,TRUE,TRUE),array(0.2,0.2,TRUE,FALSE));
    $beschnitt_horiz = $beschnittliste_hor_vert[$weiterverarbeitung-1][0];
    $beschnitt_vert = $beschnittliste_hor_vert[$weiterverarbeitung-1][1];

    if($beschnittliste_hor_vert[$weiterverarbeitung-1][3] == FALSE){
        $bubipappe = 0;
    }else{
        $bubipappe = 0.4;
    }

    if($beschnittliste_hor_vert[$weiterverarbeitung-1][2] == FALSE){
        $buchruecken = 0;
        $heftdicke = ($papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000) * 1.1;
    }else{
        $buchruecken = $papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000 + $bubipappe;
        $heftdicke = 0;
    }

    if(($weiterverarbeitung == 2) || ($weiterverarbeitung == 3) || ($weiterverarbeitung == 6)){
        $SeitenJeFalzBg = 2;
    }else{
        $SeitenJeFalzBg = 4;
    }

    if (($weiterverarbeitung == 2) || ($weiterverarbeitung == 4)) {
        $korrekturBeschnitt_Umschlag = 0;
    }else{
        $korrekturBeschnitt_Umschlag = -0.4;
    }

    $format_offen_breite = $breite_geschl * $SeitenJeFalzBg/2 + $beschnitt_horiz;
    $format_offen_hoehe = $hoehe_geschl + $beschnitt_vert;
    $format_offen_breite_umschlag = $breite_geschl * $seiten_umschlag / 2 + $beschnitt_horiz + $buchruecken + $korrekturBeschnitt_Umschlag;

    if (($weiterverarbeitung == 3) || ($weiterverarbeitung == 6)) {
        $zussorten_umschlag += 1;
        $format_offen_breite_umschlag = $breite_geschl + $beschnitt_horiz + $buchruecken + $korrekturBeschnitt_Umschlag;
    }



    // Inhalt 
    $farbarray = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt);
    $anzahlDruckfarben_inhalt = $farbarray[0];
    $bedruckteSeiten_inhalt = $farbarray[1];
    $anzahlFarbwechsel_inhalt = getAnzFarbwechselMAN($druckfarben_inhalt);
    $anzahlDruckJeForm_inhalt = ceil(($anzahlDruckfarben_inhalt+$drucklack_inhalt)/5);
    $druckgeschwindigkeit_inhalt = getMANSpeed($auflage, $papier_inhalt_grammatur);


    // Test Inhalt

    $formate=array();

    if($papier_inhalt_papiertyp1) {
        $formate[] = array('breite' => 88, 'hoehe' => 63);
    }
    if($papier_inhalt_papiertyp2) {
        $formate[] = array('breite' => 100, 'hoehe' => 70);
    }
    if($papier_inhalt_papiertyp3) {
        $formate[] = array('breite' => 70, 'hoehe' => 50);
    }
    if($papier_inhalt_papiertyp4) {
        $formate[] = array('breite' => 61, 'hoehe' => 43);
    }
    if($papier_inhalt_papiertyp11) {
        $formate[] = array('breite' => 92, 'hoehe' => 65);
    }
    if($papier_inhalt_papiertyp12) {
        $formate[] = array('breite' => 64, 'hoehe' => 45);
    }
    if($papier_inhalt_papiertyp14) {
        $formate[] = array('breite' => 102, 'hoehe' => 72);
    }

    foreach ($formate as $key => $format) {
        $calc1 = floor(($format['breite'] - $DruckbogenRaender_horiz) / $format_offen_breite) * floor(($format['hoehe'] - $DruckbogenRaender_vert) / $format_offen_hoehe);
        $calc2 = floor(($format['breite'] - $DruckbogenRaender_horiz) / $format_offen_hoehe) * floor(($format['hoehe'] - $DruckbogenRaender_vert) / $format_offen_breite);
        if (($calc1 == 0) || ($calc2 == 0)) {
            break;
        }
        if ($calc1 > $calc2) {
            $NtzFaBgJeDruckBg = $calc1;
        } else {
            $NtzFaBgJeDruckBg = $calc2;
        }

        $stundensatz_druckmaschine1 = getMaschineKosten23($format, $anzahlFarbwechsel_inhalt);
        $PapierkostenJeFalzbg = $format_offen_breite * $format_offen_hoehe * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000 * $auflage;
        $RuestkostenJeDruckform = $anzahlDruckfarben_inhalt * ($kostenDruckplatte + ($stundensatz_druckmaschine1 * $RuestZeitJePlatte / 60));

        $ctpString_SDWD = $ctpString_UU = '';
        $NettoPapierkostenJeDruckbg = $auflage * $format['breite'] * $format['hoehe'] * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000;
        $NettoPapierkostenZuschuss = $anzahlDruckfarben_inhalt * 75 * $format['breite'] * $format['hoehe'] * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000;
        $nettobg_restBg_SDWD = $papieraufschlagfaktor_inhalt_SDWD = $nettobg_restBg_UU = $papieraufschlagfaktor_inhalt_UU = $ntzAufLetzterUmschlager = $leere_falzbg = 0;

        // Ganze Bögen berechnen
        $Anz_AlleFaBg = $seiten_inhalt / $SeitenJeFalzBg;
        $Anz_ganzeBogen = floor($Anz_AlleFaBg / $NtzFaBgJeDruckBg);
        $ctp_ganzeBogen = $bedruckteSeiten_inhalt * $anzahlDruckfarben_inhalt * $Anz_ganzeBogen;

        if ($ctp_ganzeBogen > 0) {
            $ctpString1 = $Anz_ganzeBogen . ' x ' . $auflage . ' Druckbogen SD/WD je ' . $NtzFaBgJeDruckBg . ' Falzbogen zu je 1 Nutzen';
        } else {
            $ctpString1 = '';
        }

        $nettobg_ganzeBogen = $auflage * $Anz_ganzeBogen;

        // Restfalzbogen
        $ctp_RestFaBg = $Kosten_SDWD = $Kosten_UU = $ctp_SDWD = $ctp_UU = $nettobg_restseiten = $druckzeitruesten_SDWD = $druckzeitfortdruck_SDWD = $druckzeitruesten_UU = $druckzeitfortdruck_UU = $papierkosten_inhalt_SDWD  = $anz_UU = 0;
        $restfalzbg = $Anz_AlleFaBg - ($Anz_ganzeBogen * $NtzFaBgJeDruckBg);

        if ($restfalzbg != 0) {
            // Restbogen als SD/WD berechnen
            $ctp_SDWD = $anzahlDruckfarben_inhalt * $bedruckteSeiten_inhalt;
            $NtzFaBg_SDWD = floor($NtzFaBgJeDruckBg / $restfalzbg);
            $nettobg_restBg_SDWD = ceil($auflage / $NtzFaBg_SDWD);
            $zuschuss_restBg_SDWD = ceil(max(150, 100 + ($ctp_SDWD * 75)));
            $druckzeitruesten_SDWD = (($GrundRuestZeit * $anzahlDruckJeForm_inhalt) + ($ctp_SDWD * $RuestZeitJePlatte)) / 60;
            $druckzeitfortdruck_SDWD = ($nettobg_restBg_SDWD + $zuschuss_restBg_SDWD) / $druckgeschwindigkeit_inhalt * $anzahlDruckJeForm_inhalt * $bedruckteSeiten_inhalt;
            $papierkosten_inhalt_SDWD = $NettoPapierkostenJeDruckbg + $NettoPapierkostenZuschuss;
            $papieraufschlagfaktor_inhalt_SDWD = 1.30 - (MIN(($papierkosten_inhalt_SDWD / $papier_inhalt_value * 100) / 5000, 0.2));
            $papierkosten_inhalt_SDWD *= $papieraufschlagfaktor_inhalt_SDWD;
            $Kosten_SDWD = $ctp_SDWD * $kostenDruckplatte + (($druckzeitruesten_SDWD + $druckzeitfortdruck_SDWD) * $stundensatz_druckmaschine1) + ($papierkosten_inhalt_SDWD);
            if ($ctpString1 != '' && $ctpString_UU == '') {
                $ctpString_SDWD = ' + ';
            }
            $ctpString_SDWD .= '1 Druckbogen SD/WD mit ' . $restfalzbg . ' Falzbg. je ' . $NtzFaBg_SDWD . ' Nutzen';
            $restfalzbg_SDWD = 0;
            $leere_falzbg_SDWD = ($NtzFaBgJeDruckBg - $NtzFaBg_SDWD * $restfalzbg);
            // var_dump2('>>>  Restbogen als SD/WD :' . $ctp_SDWD * $kostenDruckplatte .' | '. (($druckzeitruesten_SDWD + $druckzeitfortdruck_SDWD) * $stundensatz_druckmaschine1) .' | '. ($papierkosten_inhalt_SDWD));

            // Nutzen UU = Dopelnutzen für UUs
            // Array für Restbogen als Umschlager/Umstülper erstellen
            $UUarray = [];

            for ($f = 0; $f < 7; $f++) {
                // Restbogen als (evtl. mehrfache) Umschlager/Umstülper berechnen    
                $ctp_UU = 0;
                $restfalzbg_UU = $restfalzbg;
                $nettobg_restBg_UU = 0;
                $maxdurchlaeufe = 7;
                $ctpString_UU = '';
                $MglNtzJeUU = floor($NtzFaBgJeDruckBg / 2);
                $KostenPapier_UU = $druckzeitfortdruck_UU = $Kosten_UU = 0;

                while ($maxdurchlaeufe > 0) {
                    $NtzFaBg_UU = 0;
                    // echo('#'.$maxdurchlaeufe.': $restfalzbg_UU = '.$restfalzbg_UU.' | $MglNtzJeUU = '.$MglNtzJeUU.'| $f = '.$f."\n<br />");


                    // wie viele Falzbogen / Nutzen platzieren auf UU? 
                    for ($r = $restfalzbg_UU; $r > 0; $r--) {

                        if ($MglNtzJeUU % $r == 0) {
                            // echo2 ('>>> 1 ohne leere Ntz.: $MglNtzJeUU % $r == 0 bei r ='.$r."\n<br />");
                            break;
                        } else if ($MglNtzJeUU % $r == $f && $r == $restfalzbg_UU) {
                            // echo2 ('>>> 2 mit '.$f.' leeren Ntz.: $MglNtzJeUU % $r == $f && $r == $restfalzbg_UU bei $r = '.$r.' | $f = '.$f."\n<br />");
                            break;
                        }
                        // echo2 ('nix... bei r = '.$r."\n<br />");
                    }

                    if ($r != 0) {
                        $PlatzierteFaBg_UU = $r;
                        $NtzFaBg_UU = floor($MglNtzJeUU / $r);
                        $restfalzbg_UU -= $PlatzierteFaBg_UU;

                        // var_dump2($r, $NtzFaBg_UU, $restfalzbg_UU);

                        if ($NtzFaBg_UU == 0) {
                            $NtzFaBg_UU = 0.01;
                        }

                        $ctp_UU += $anzahlDruckfarben_inhalt;
                        $nettobg_dieser_UU = ceil($auflage / $NtzFaBg_UU / 2);
                        $zuschuss_dieser_UU = ceil(max(150, 100 * $anzahlDruckfarben_inhalt));
                        $NtzText_UU = $NtzFaBg_UU * 2;
                        $nettobg_restBg_UU += $nettobg_dieser_UU;
                        $KostenPapier_UU += $nettobg_dieser_UU * $format['breite'] * $format['hoehe'] * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000 + $NettoPapierkostenZuschuss;
                        $druckzeitfortdruck_UU += ($nettobg_dieser_UU + $zuschuss_dieser_UU) / $druckgeschwindigkeit_inhalt * $anzahlDruckJeForm_inhalt * $bedruckteSeiten_inhalt + $WarteZeitUU;

                        if (!($ctpString_UU == '' && $ctpString_SDWD == '' && $ctpString1 == '')) {
                            $ctpString_UU .= ' + ';
                        }
                        $ctpString_UU .= $nettobg_dieser_UU . ' Druckbogen Umschlagen/Umstülpen mit ' . $PlatzierteFaBg_UU . ' Falzbg. je ' . $NtzText_UU . ' Nutzen';
                    }

                    $maxdurchlaeufe -= 1;

                    if ($restfalzbg_UU == 0) {
                        break;
                    }
                } 

                $druckzeitruesten_UU = ($GrundRuestZeit * $anzahlDruckJeForm_inhalt + $ctp_UU * $RuestZeitJePlatte) / 60;
                $papieraufschlagfaktor_inhalt_UU = 1.30 - (MIN(($KostenPapier_UU / $papier_inhalt_value * 100) / 5000, 0.2));
                $KostenPapier_UU *= $papieraufschlagfaktor_inhalt_UU;
                $Kosten_UU += ($ctp_UU * $kostenDruckplatte) + (($druckzeitruesten_UU + $druckzeitfortdruck_UU) * $stundensatz_druckmaschine1) + $KostenPapier_UU;

                $UUarray[] = array('$ctpString_UU' => $ctpString_UU, '$Kosten_UU' => $Kosten_UU, '$KostenPapier_UU' => $KostenPapier_UU, '$nettobg_restBg_UU' => $nettobg_restBg_UU, '$restfalzbg_UU' => $restfalzbg_UU, '$f' => $f, '$maxdurchlaeufe' => $maxdurchlaeufe, '$r' => $r, '$NtzText_UU' => $NtzText_UU, '$druckzeitruesten_UU' => $druckzeitruesten_UU, '$druckzeitfortdruck_UU' => $druckzeitfortdruck_UU, '$ctp_UU' => $ctp_UU, '$anz_UU' => $ctp_UU / $anzahlDruckfarben_inhalt);

              if ($restfalzbg_UU == 0 && $what == "debug2") {
                    echo ("Möglichkeit gefunden: " . "\n<br />");
                    echo('$f = '.$f.' #'.$maxdurchlaeufe.': $r = '.$r.' | '.$ctpString_UU.' $restfalzbg_UU = '.$restfalzbg_UU.' | $NtzFaBg_UU = '.$NtzFaBg_UU.' | $ctp_UU = '.$ctp_UU.' | $MglNtzJeUU = '.$MglNtzJeUU."\n<br />");
                    echo($format['breite'].'x'.$format['hoehe'].' mit '.$NtzFaBgJeDruckBg.' Nutzen je Falzbg.'."\n<br />");
                    //var_dump2($UUarray);
                    echo('>>> ------ '.number_format($Kosten_UU, 2 ,',','.').' € ------'."\n<br />");
                }

            }
            // var_dump2('>>>>'.$Kosten_SDWD);

            // günstigste UU Variante suchen
            $Kosten_UU = 999999999;
            foreach ($UUarray as $u) {
                if ($u['$Kosten_UU'] < $Kosten_UU) {
                    $Kosten_UU = $u['$Kosten_UU'];
                    $ctpString_UU = $u['$ctpString_UU'];
                    $KostenPapier_UU = $u['$KostenPapier_UU'];
                    $nettobg_restBg_UU = $u['$nettobg_restBg_UU'];
                    $restfalzbg_UU = $u['$restfalzbg_UU'];
                    $ntzAufLetzterUmschlager = $u['$NtzText_UU'];
                    $druckzeitruesten_UU = $u['$druckzeitruesten_UU'];
                    $druckzeitfortdruck_UU = $u['$druckzeitfortdruck_UU'];
                    $ctp_UU = $u['$ctp_UU'];
                    $anz_UU = $u['$anz_UU'];
                }
            }

            // Entscheidung zwischen UU und SD für Restseiten
            if ($Kosten_SDWD >= $Kosten_UU && $restfalzbg_UU == 0) {
                $ctpString1 .= $ctpString_UU;
                $ctp_RestFaBg = $ctp_UU;
                $nettobg_restseiten = $nettobg_restBg_UU;
                $restfalzbg = $restfalzbg_UU;
                // echo2 ("--- Restfalzbg. per UU ----\n");
            } else {
                $ctpString1 .= $ctpString_SDWD;
                $ctp_RestFaBg = $ctp_SDWD;
                $nettobg_restseiten = $nettobg_restBg_SDWD;
                $restfalzbg = $restfalzbg_SDWD;
                $ntzAufLetzterUmschlager = 0;
                $leere_falzbg = $leere_falzbg_SDWD;
                $anz_UU = 0;
                // echo2 ("--- Restfalzbg. per SDWD ----\n");
            }
        }

        if (mb_substr($ctpString1, 0, 3) == ' + ') {
            $ctpString1 = substr($ctpString1, 3, strlen($ctpString1));
        }

        $nettobg_inhalt1 = $nettobg_ganzeBogen + $nettobg_restseiten;
        $ctp_inhalt1 = $ctp_ganzeBogen + $ctp_RestFaBg;
        $zuschuss_inhalt1 = ceil(max(150, 100 + (($ctp_inhalt1) * 75) + ($anzahlFarbwechsel_inhalt * 100) + ($Anz_AlleFaBg / $NtzFaBgJeDruckBg * $anzahlDruckJeForm_inhalt * $auflage * 0.03)));
        $druckzeitruesten1 = (($GrundRuestZeit * $anzahlDruckJeForm_inhalt) + ($ctp_inhalt1 * $RuestZeitJePlatte) + ($anzahlFarbwechsel_inhalt * $FarbwechselZeit)) / 60;
        $druckzeitfortdruck1 = ($zuschuss_inhalt1 + $nettobg_inhalt1) / $druckgeschwindigkeit_inhalt * $anzahlDruckJeForm_inhalt * $bedruckteSeiten_inhalt + ($WarteZeitUU * $anz_UU);
        $papierkosten_inhalt1 = ($nettobg_inhalt1 + $zuschuss_inhalt1) * $format['hoehe'] * $format['breite'] * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000;

        if ($restfalzbg != 0) {
            if ($what = "debug") {
                // echo2 ("\n" . 'FEHLER: noch offene Restseiten!' . "\n");
            }
            $ctp_ganzeBogen = 999;
            $ctp_RestFaBg = 0;
        }

        if($inhaltidentisch == '0'){
            $ctp_inhalt1 = $ctp_ganzeBogen + $ctp_RestFaBg + $drucklack_inhalt;
        }else{
            $ctp_inhalt1 = $bedruckteSeiten_inhalt*$anzahlDruckfarben_inhalt+$drucklack_inhalt;
        }


        // falls $ctp_RestFaBg > 0: prüfen, wie viele Nutzen auf Umschlager/Umstülper zusätzlich platziert werden könnten um ggf. rabattierf. Kosten zu berechnen
        if(($ctp_RestFaBg>0 && $ntzAufLetzterUmschlager>=4) && (in_array($druckfarben_inhalt,array(1,2,3,18,19,7,8))) && ($papier_inhalt_sammelform != 1)) {
            // ??? hier müsste man eigtl. die $leere_falzb multiplizieren, aktuell wird nur ein Falzbg. rabattiert
            $leere_falzbg += 1;
            if ($what == 'debug2') {
                // echo2 ('>>> Bei: ' . $format['hoehe'] . 'x' . $format['breite'] . ' $leere_falzbg erhöht = ' . $leere_falzbg . "\n<br />");
            }
        }
        
        // leere Bogenteile ggf. bewerten, Wert für Format/Sortenanz. muss negiert werden ?!
        if((in_array($druckfarben_inhalt,array(1,2,3,18,19,7,8))) && ($papier_inhalt_sammelform != 1) && ($leere_falzbg > 0)){
            $sammelarray = getSammelformWertePlanoFa23($auflage, $format_offen_hoehe, $format_offen_breite, $papier_inhalt_sammelform, $bedruckteSeiten_inhalt, $leere_falzbg, $druckmaschine_inhalt, $produktionszeit, 0);
            $sammelfaktor_papier = $sammelarray[2];
            $sammelwahrscheinlichkeit_menge = $sammelarray[1];
            $sammelwahrscheinlichkeit_format_sorten = 1 - $sammelarray[0];
            $sammelfaktor_druckmaschine = $sammelarray[3];
            $sammelfaktor1 = $sammelfaktor_druckmaschine * ((($sammelwahrscheinlichkeit_format_sorten*75)*($sammelwahrscheinlichkeit_menge*25)/(75*25))*$sammelfaktor_papier);
            $rabattierfaehigeKostenLeerFalzBogen1 = ($leere_falzbg * $PapierkostenJeFalzbg); // + ($kostenDruckplatte * $anzahlDruckfarben_inhalt); >>> führt zu evtl. zu zuviel Freiraum !
        }else{
            $rabattierfaehigeKostenLeerFalzBogen1 = 0;
            $sammelfaktor1 = 0;
        }

        $price_inhalt_calc = (($kostenDruckplatte * $ctp_inhalt1) + $papierkosten_inhalt1 + ($druckzeitruesten1 + $druckzeitfortdruck1) * $stundensatz_druckmaschine1) - ($rabattierfaehigeKostenLeerFalzBogen1*$sammelfaktor1);  

        if($what=='debug2'){
            echo("\n<br />".'------- Berechnung INH für '.$format['breite'].' x '.$format['hoehe'].' cm mit '.$ctp_inhalt1.' Druckplatten'." -------\n<br />");
            echo('Papierk. je Falzbg: '.number_format($PapierkostenJeFalzbg, 2 , ',', '.').' € | Rüstk. je Form: '.number_format($RuestkostenJeDruckform, 2 , ',', '.')." € \n<br />");
            echo($Anz_AlleFaBg.' benötigte Falzbogen'.' | Restfalzbogen: '.$restfalzbg.' | Leere Falzbg.: '.$leere_falzbg."\n<br />");
            echo('Falzbogen je Druckoberfläche: '.($NtzFaBgJeDruckBg)."\n<br />");
            echo ('Nettobg.: '.$nettobg_inhalt1.' + Zuschuss: '.$zuschuss_inhalt1."\n<br />");
            echo('Rüstzeit: '.number_format($druckzeitruesten1, 2, ',', '.').' + Fortdruckzeit: '.number_format($druckzeitfortdruck1, 2, ',', '.').' = '.number_format($druckzeitruesten1+$druckzeitfortdruck1, 2, ',', '.')." h \n<br />");
            echo('Kosten Druckmaschine: '.number_format(($druckzeitruesten1+$druckzeitfortdruck1) * $stundensatz_druckmaschine1, 2, ',', '.')." €\n<br />");
            echo('Papierkosten: '.number_format($papierkosten_inhalt1, 2, ',', '.')." €\n<br />");
            echo('Totalkosten: '.number_format($price_inhalt_calc, 2, ',', '.')." €\n<br />");
            echo('abzgl. rabattierf. Kosten: '.number_format($rabattierfaehigeKostenLeerFalzBogen1, 2, ',', '.').' x '.number_format($sammelfaktor1, 2).' = '.number_format($rabattierfaehigeKostenLeerFalzBogen1*$sammelfaktor1, 2)." € \n<br />");
            if ($rabattierfaehigeKostenLeerFalzBogen1 != 0) {
                echo ('Sammelfaktor Papiersorte: ' . number_format($sammelfaktor_papier, 2, ',', '.') . "\n<br />");
                echo ('Sammelwahrscheinlichkeit Format/Sorten: ' . number_format($sammelwahrscheinlichkeit_format_sorten, 2) . "\n<br />");
                echo ('Sammelwahrscheinlichkeit Menge: ' . number_format($sammelwahrscheinlichkeit_menge, 2) . "\n<br />");
            }
            if ($ctp_RestFaBg > 0) {
                echo ('Restbogenvergl.:' . "\n<br />");
                echo ('Kosten SDWD: ' . round($Kosten_SDWD, 2) . ' = CTP ' . round($ctp_SDWD * $kostenDruckplatte, 2) . ' + MAN ' . round(($druckzeitruesten_SDWD + $druckzeitfortdruck_SDWD) * $stundensatz_druckmaschine1, 2) . ' + PA ' . round($papierkosten_inhalt_SDWD, 2) . "\n<br />");
                echo ('Druckzeit SDWD: ' . round($druckzeitruesten_SDWD, 2) . ' + ' . round($druckzeitfortdruck_SDWD, 2) . ' = ' . round($druckzeitruesten_SDWD + $druckzeitfortdruck_SDWD, 2) . "\n<br />");
                echo ('Papier SDWD: ' . $nettobg_restBg_SDWD . ' | PA-Aufschlag: ' . round($papieraufschlagfaktor_inhalt_SDWD, 2) . "\n<br />");
                echo ('Kosten UU: ' . round($Kosten_UU, 2) . ' = CTP ' . round($ctp_UU * $kostenDruckplatte, 2) . ' + MAN ' . round(($druckzeitruesten_UU + $druckzeitfortdruck_UU) * $stundensatz_druckmaschine1, 2) . ' + PA ' . round($KostenPapier_UU, 2) . "\n<br />");
                echo ('Druckzeit UU: ' . round($druckzeitruesten_UU, 2) . ' + ' . round($druckzeitfortdruck_UU, 2) . ' = ' . round($druckzeitruesten_UU + $druckzeitfortdruck_UU, 2) . "\n<br />");
                echo ('Papier UU: ' . $nettobg_restBg_UU . ' | PA-Aufschlag: ' . round($papieraufschlagfaktor_inhalt_UU, 2) . "\n<br />");
            }
            echo('CTP Ganze Bogen: '.$ctp_ganzeBogen.' + CTP Restbogen '.$ctp_RestFaBg.' = '.($ctp_ganzeBogen+$ctp_RestFaBg)."\n<br />");
            echo ('Ausgabetext: ' . $ctpString1 . "\n<br />");
        }

        if(($price_inhalt_calc < $price_inhalt) && ($NtzFaBgJeDruckBg > 0)) {
            $price_inhalt = $price_inhalt_calc;
            $drucknutzen_inhalt =  $NtzFaBgJeDruckBg;
            $ctp_inhalt = $ctp_inhalt1;
            $zuschuss_inhalt = $zuschuss_inhalt1;
            $nettobg_inhalt = $nettobg_inhalt1;
            $druckbogen_hoehe_inhalt = $format['hoehe'];
            $druckbogen_breite_inhalt = $format['breite'];
            $druckzeitruesten_inhalt = $druckzeitruesten1;
            $druckzeitfortdruck_inhalt = $druckzeitfortdruck1;
            $druckzeittotal_inhalt = $druckzeitruesten_inhalt + $druckzeitfortdruck_inhalt;
            $papierkosten_inhalt = $papierkosten_inhalt1;
            $stundensatz_druckmaschine_inhalt = $stundensatz_druckmaschine1;
            $druckmaschine_inhalt = "man";
            $rabattierfaehigeKostenLeerFalzBogen = $rabattierfaehigeKostenLeerFalzBogen1;
            $sammelfaktor = $sammelfaktor1;
            $ctpString = $ctpString1; 
        }
    }

    $lackart_kosten_inhalt = 0;
    if($drucklack_inhalt != '0'){
        if($lackart_inhalt == '2'){
            $lackart_kosten_inhalt = $Paufpreis_drucklack_matt_voll;
        }
        if($lackart_inhalt == '3'){
            $lackart_kosten_inhalt = $Paufpreis_drucklack_matt_partiell;
        }
        if($lackart_inhalt == '4'){
            $lackart_kosten_inhalt = $Paufpreis_drucklack_glzd_voll;
        }
        if($lackart_inhalt == '5'){
            $lackart_kosten_inhalt = $Paufpreis_drucklack_glzd_partiell;
        }
    }
    
    $papieraufschlagfaktor_inhalt = 1.30-(MIN(($papierkosten_inhalt/$papier_inhalt_value*100)/5000,0.2));
    $price_inhalt -= $papierkosten_inhalt;
    $papierkosten_inhalt *= $papieraufschlagfaktor_inhalt;
    $price_inhalt += $papierkosten_inhalt;

    $farbkosten_inhalt = FarbkostenBerechnen("kein debug", "BRO", $druckbogen_breite_inhalt, $druckbogen_hoehe_inhalt, $anzahlDruckfarben_inhalt, $drucklack_inhalt, $bedruckteSeiten_inhalt, $nettobg_inhalt, $zuschuss_inhalt, $anzahlFarbwechsel_inhalt, $druckfarben_inhalt);

    $price_inhalt += $farbkosten_inhalt + $lackart_kosten_inhalt;
    $eigenkosten_inhalt = $price_inhalt - $farbkosten_inhalt - $papierkosten_inhalt;
    $fremdkosten_inhalt = $price_inhalt - $eigenkosten_inhalt;
    $rabattierfaehigekosten_inhalt = $rabattierfaehigeKostenLeerFalzBogen * $sammelfaktor;

    // Ende Inhalt

    // Umschlag
    
    if($veredelung_umschlag == 0 || $veredelung_umschlag == 6 || $veredelung_umschlag == 7){
        $drucklack_umschlag = $lackart_umschlag = 0;
    }else{
        $drucklack_umschlag = 1;
        $lackart_umschlag = $veredelung_umschlag;
    }

    // Zusatzdruckplatten + zus. Farbwechsel werden immer nur im Inhalt kalkuliert, 
    if($seiten_umschlag > 0){
        $printarray_umschlag = getPrintPlanoFa23('allarray', $papier_umschlag_papiertyp1, $papier_umschlag_papiertyp2, $papier_umschlag_papiertyp3, $papier_umschlag_papiertyp4, $papier_umschlag_papiertyp5, $papier_umschlag_papiertyp6, $papier_umschlag_papiertyp7, $papier_umschlag_papiertyp8, $papier_umschlag_papiertyp9, $papier_umschlag_papiertyp10, $papier_umschlag_papiertyp11, $papier_umschlag_papiertyp12, $papier_umschlag_papiertyp13, $papier_umschlag_papiertyp14, $papier_umschlag_grammatur, $papier_umschlag_value, $auflage, $druckfarben_umschlag, $format_offen_breite_umschlag, $format_offen_hoehe - 0.4, $drucklack_umschlag, $papier_umschlag_vs_rs_unterschiedlich, $zussorten_umschlag+1, 1, 0, 0, $lackart_umschlag, $papier_umschlag_sammelform, $produktionszeit, 0);
    } else {
        $printarray_umschlag = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    }

    if($zusdruckplatten > 0){
        $zusdruckplatten_kosten = $zusdruckplatten * ($kostenDruckplatte + $stundensatz_druckmaschine_inhalt * $RuestZeitJePlatte / 60 + 20);
    }else{$zusdruckplatten_kosten = 0;
    }

    if($zusfarbwechsel > 0){
        $zusfarbwechsel_kosten = $zusfarbwechsel * (45 / 60 * $stundensatz_druckmaschine_inhalt);
    }else{
        $zusfarbwechsel_kosten = 0;
    }

    $eigenkosten_inhalt += $zusdruckplatten_kosten + $zusfarbwechsel_kosten;
    $eigenkosten_umschlag = $printarray_umschlag[0];
    $druckmaschine_umschlag = $printarray_umschlag[1];
    $stundensatz_druckmaschine_umschlag = $printarray_umschlag[2];
    $ctp_umschlag = $printarray_umschlag[3];
    $anzahlFarbw_umschlag = $printarray_umschlag[4];
    $druckgeschwindigkeit_umschlag = $printarray_umschlag[5];
    $druckgaenge_umschlag = $printarray_umschlag[6];
    $druckbogen_hoehe_umschlag = $printarray_umschlag[7];
    $druckbogen_breite_umschlag = $printarray_umschlag[8];
    $nutzen_umschlag = $printarray_umschlag[9];
    $druckbogen_nettomenge_umschlag = $printarray_umschlag[10];
    $druckbogen_zuschussmenge_umschlag = $printarray_umschlag[11];
    $sortenaufschlag_umschlag  = $printarray_umschlag[12];
    $zuschussfaktor_umschlag = $printarray_umschlag[13];
    $passtdrauf_umschlag =  $printarray_umschlag[14];
    $druckkosten_umschlag  = $printarray_umschlag[15];
    $papierkosten_umschlag  = $printarray_umschlag[16];
    $druckzeittotal_umschlag  = $printarray_umschlag[17];
    $druckzeitruesten_umschlag  = $printarray_umschlag[18];
    $druckzeitfortdruck_umschlag  = $printarray_umschlag[19];
    $farbkosten_umschlag = $printarray_umschlag[20];
    $zusdruckplatten_kosten_umschlag  = $printarray_umschlag[21]; // hinfällig, wird im INH addiert
    $zusfarbwechsel_kosten_umschlag = $printarray_umschlag[22]; // hinfällig, wird im INH 
    $lackart_kosten_umschlag = $printarray_umschlag[23];
    $fremdkosten_umschlag = $printarray_umschlag[24];
    $rabattierfaehigekosten_umschlag  = $printarray_umschlag[25];

    $eigenkosten_umschlag += $sortenaufschlag_umschlag;

    
    $eigenkosten = $eigenkosten_inhalt + $eigenkosten_umschlag;
    $fremdkosten = $fremdkosten_inhalt + $fremdkosten_umschlag;
    $rabattierfaehigekosten = $rabattierfaehigekosten_inhalt + $rabattierfaehigekosten_umschlag;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo("\n<br />");   
        if ($seiten_umschlag != 0) {
            echo ('-------------------- PRINT UMSCHLAG BRO --------------------' . "\n<br />");
            echo ('UM: ' . $druckmaschine_umschlag . ' | CTP: ' . $ctp_umschlag . ' | Farbw.: ' . $anzahlFarbw_umschlag . ' | Geschw.: ' . number_format($druckgeschwindigkeit_umschlag, 0 , ',', '.') . " Bg/h\n<br />");
            echo ('Druck: ' . number_format($druckzeitruesten_umschlag, 2 , ',', '.') . ' h + ' . number_format($druckzeitfortdruck_umschlag, 2 , ',', '.') .' h = ' . number_format($druckzeitfortdruck_umschlag+$druckzeitruesten_umschlag, 2 , ',', '.').' | '.number_format(($druckzeitruesten_umschlag+$druckzeitfortdruck_umschlag)*$stundensatz_druckmaschine_umschlag, 2 , ',', '.')." € \n<br />");
            echo ('Farbe+Lack: ' . number_format($farbkosten_umschlag, 2 , ',', '.') . " € \n<br />");
            if ($sortenaufschlag_umschlag != 0) {
                echo ('Sortenaufschlag: ' . $sortenaufschlag_umschlag . " €\n<br />");
            }
            if ($lackart_kosten_umschlag != 0) {
                echo('Lackart Kosten: ' . number_format($lackart_kosten_umschlag, 2 , ',', '.') . " €\n<br />");
            }
            echo('Format offen UM: '.$format_offen_breite_umschlag.' x '.$format_offen_hoehe." cm \n<br />");
            echo ('EK: ' . round($eigenkosten_umschlag,2) . ' + FK ' . round($fremdkosten_umschlag,2) . ' = ' . round($eigenkosten_umschlag + $fremdkosten_umschlag, 2). " €\n<br />");
            echo ($druckbogen_hoehe_umschlag . ' x ' . $druckbogen_breite_umschlag . ' cm mit ' . $nutzen_umschlag . ' Ntz. = ' . number_format($druckbogen_nettomenge_umschlag, 0, ',', '.') . ' + ' . number_format($druckbogen_zuschussmenge_umschlag, 0, ',', '.'). ' Bg. | ' . number_format($papierkosten_umschlag, 2 , ',', '.') . ' €' . "\n<br />");
        }
        echo('-------------------- PRINT INHALT BRO --------------------'."\n<br />");
        
        echo('INH: '.$druckmaschine_inhalt.' | CTP: '.$ctp_inhalt.' | Farbw.: '.$anzahlFarbwechsel_inhalt.' | Geschw.: '.number_format($druckgeschwindigkeit_inhalt, 0 , ',', '.')." Bg/h\n<br />");
        echo($ctpString."\n<br />");
        echo('Druck: '.number_format($druckzeitruesten_inhalt, 2 , ',', '.').' h + '.number_format($druckzeitfortdruck_inhalt, 2 , ',', '.').' h = '.number_format($druckzeitfortdruck_inhalt+$druckzeitruesten_inhalt, 2 , ',', '.').' h | '.number_format(($druckzeitruesten_inhalt+$druckzeitfortdruck_inhalt)*$stundensatz_druckmaschine_inhalt, 2 , ',', '.')." € \n<br />");
        echo('Farbe+Lack: '.number_format($farbkosten_inhalt, 2 , ',', '.'). " €\n<br />");
        if ($lackart_kosten_inhalt != 0) {
            echo ('+ Extra Kosten für Lackart: ' . number_format($lackart_kosten_inhalt, 2 , ',', '.') . " €\n<br /><br />");
        }
        echo ('EK: ' . number_format($eigenkosten_inhalt, 2, ',', '.') . ' + FK ' . number_format($fremdkosten_inhalt, 2, ',', '.') . ' = ' . number_format($eigenkosten_inhalt + $fremdkosten_inhalt, 2, ',', '.'). " €\n<br />");
        echo($druckbogen_hoehe_inhalt.' x '.$druckbogen_breite_inhalt.' cm mit '. $drucknutzen_inhalt.' Ntz. = '.number_format($nettobg_inhalt, 0, ',', '.').' + '.number_format($zuschuss_inhalt, 0, ',', '.').' = '.number_format($nettobg_inhalt+$zuschuss_inhalt, 0, ',', '.').' Bg. | '.number_format($papierkosten_inhalt, 2 , ',', '.').' €'."\n<br />");
        echo ('Papieraufschlag: '.number_format($papieraufschlagfaktor_inhalt, 2 , ',', '.')."\n<br />");
        echo('-------------------- BRO PRINT --------------------'."\n<br />");
        echo('Format offen INH: '.$format_offen_breite.' x '.$format_offen_hoehe." cm \n<br />");
        if($bubipappe != 0 || $buchruecken !=0){
            echo('Pappe: '.($bubipappe*10).' mm | Buchrücken ca. '.($buchruecken*10)." mm"."\n<br />");
        }else{
            echo ('Heftdicke ca. '.($heftdicke*10).' mm'."\n<br />");
        }
        echo('Rabattierf. Kosten: INH '.number_format($rabattierfaehigekosten_inhalt, 2 , ',', '.').' € + UM '.number_format($rabattierfaehigekosten_umschlag, 2 , ',', '.').' € = '.number_format($rabattierfaehigekosten, 2 , ',', '.')." €\n<br />"); 
        echo('Eigenkosten: '.number_format($eigenkosten, 2 , ',', '.')." €\n<br />");
        echo('Fremdkosten: '.number_format($fremdkosten, 2 , ',', '.')." € \n<br />");
        echo('Gesamtkosten: '.number_format($fremdkosten+$eigenkosten, 2 , ',', '.')." € \n<br />");
    }

    return [$eigenkosten, $fremdkosten, $rabattierfaehigekosten, $format_offen_breite, $format_offen_hoehe, $bubipappe, $buchruecken, $druckmaschine_inhalt, $ctp_inhalt, $anzahlFarbwechsel_inhalt, $druckgeschwindigkeit_inhalt, $druckbogen_hoehe_inhalt, $druckbogen_breite_inhalt, $drucknutzen_inhalt, $nettobg_inhalt, $zuschuss_inhalt, $papierkosten_inhalt, $druckzeitruesten_inhalt, $druckzeitfortdruck_inhalt, $farbkosten_inhalt, $lackart_kosten_inhalt, $druckmaschine_umschlag, $ctp_umschlag, $anzahlFarbw_umschlag, $druckgeschwindigkeit_umschlag, $druckbogen_hoehe_umschlag, $druckbogen_breite_umschlag, $nutzen_umschlag, $druckbogen_nettomenge_umschlag, $druckbogen_zuschussmenge_umschlag, $papierkosten_umschlag, $druckzeitruesten_umschlag, $druckzeitfortdruck_umschlag, $farbkosten_umschlag, $lackart_kosten_umschlag, $rabattierfaehigekosten_inhalt, $rabattierfaehigekosten_umschlag, $heftdicke, $ctpString];    

}


function getMaschineKosten23($format, $anzahlFarbwechsel_inhalt) {
    // Stundensatz MAN / GTO 
    $maschine = getMaschine($format['breite'], $format['hoehe']);
    if($maschine == 'man') {
        return 175 + ($anzahlFarbwechsel_inhalt * 5);
    }
    return 40 + $anzahlFarbwechsel_inhalt * 5;
}

// Berechnet die MAN Druckgeschwindigkeit. Statt $auflage besser Druckbogenanzahl für PLANO-FA übergeben?
function getMANSpeed($auflage, $papier_inhalt_grammatur) {
    $grammaturfaktor = max(0.3, (100 - sqrt((pow(150 - $papier_inhalt_grammatur, 2))) / 3.6) / 100);
   
    $auflageWert = round(11525 - 5500 / (1 + 0.000155 * $auflage),2);

    $druckspeed = $grammaturfaktor * $auflageWert;
    //echo "Auflage: $auflage, Grammatur: $papier_inhalt_grammatur, GR-Faktor: $grammaturfaktor, A-Faktor: $auflageWert, MANSpeed: $druckspeed\n";
    
    return $druckspeed;
}

function getWTVBRO23($what, $auflage, $breite_geschl, $hoehe_geschl, $format_offen_breite, $format_offen_hoehe, $bubipappe, $buchruecken, $weiterverarbeitung, $ausfuehrung, $klammerung, $papier_inhalt_grammatur, $papier_inhalt_value, $seiten_inhalt, $druckbogen_breite_inhalt, $druckbogen_hoehe_inhalt, $drucknutzen_inhalt, $drucknutzen_umschlag, $papier_umschlag_grammatur, $papier_umschlag_value, $seiten_umschlag, $druckbogen_breite_umschlag, $druckbogen_hoehe_umschlag, $buendeln, $perforation, $duftdruck, $praegung_umschlag, $beilage, $veredelung_umschlag, $registerstanzung, $einschweissen, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $blankomuster, $musterversand, $absender){
    
    //Parameter
    $Pplano_fa_mindpreis_kaschierung = 165;
    $Pplano_fa_kaschierung_mk = 0.8;
    $Pplano_fa_kaschierung_gl = 0.6;
    $Pplano_fa_kaschierung_legl = 0.9;
    $Pbeilage_einlegen_unbestimmte = 35;
    $Pbeilage_einlegen_bestimmte = 45;
    $Pplano_praegen_fix1 = 60;
    $Pplano_praegen_fix2 = 110;
    $Pplano_praegen_var1 = 25;
    $Pplano_praegen_var2 = 45;
    $Pplano_fa_tsdpreis_duftdruck = 20;
    $Pplano_fa_fixpreis_duftdruck = 300;
    $Pplano_fa_fixpreis_perforation = 35;
    $Pplano_fa_tsdpreis_perforation = 35;
    $Pplano_fa_fixpreis_buendeln = 15;
    $Pbro_preis_je_buendel = 0.09;
    $Pstundensatz_wtv_hand = 30;
    $Pstundensatz_wtv_maschinen = 50;

    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $wtvzuschusspapier_inhalt = 0;
    $wtvzuschusspapier_umschlag = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = $auflage * $hoehe_geschl * $breite_geschl * ($seiten_inhalt / 2 * $papier_inhalt_grammatur + $seiten_umschlag / 2 * $papier_umschlag_grammatur) / 10000 * 1.1;
    $wtvfrachtpreis = 90 + $wtvfrachtgewicht / 400000 * 15;
    $papierlogistikpauschale = $wtvfrachtgewicht / 100000 * 5;
    $wtvfremdkosten += $papierlogistikpauschale;
    
    if($drucknutzen_inhalt < 1){
        $drucknutzen_inhalt = 1;
    }
    if($drucknutzen_umschlag < 1){
        $drucknutzen_umschlag = 1;
    }
    $anzDruckbg_inhalt = ceil(($seiten_inhalt / 2) / $drucknutzen_inhalt);
    $anzDruckbg_umschlag = 1 / $drucknutzen_umschlag;

    // $weiterverarbeitung: 1=RDH, 2=PUR, 3=Wire-O, 4=HDCOVER, 5=HDCOVER LEINEN, 6=WAKAL
    // $ausfuehrung: 1=ohne Umschlag, 2=Umschlag 4 Seiten, 3=Front+Rückkarton, 4=Überzug auf Pappe, 5=Umschlag 6 Seiten, 6=Kapitalband, Leseband, Prägung, VNS

    // endschneiden + verpacken
    $zeit_endschneiden_inhalt = $zeit_endschneiden_umschlag = 0;
    $kosten_endschneiden_inhalt = $kosten_endschneiden_umschlag = $wtvkostenverpackung= 0;
    if($weiterverarbeitung == '1' || $weiterverarbeitung == '3' || $weiterverarbeitung == '6'){
        $zeit_endschneiden_inhalt = max(20,15 + $seiten_inhalt + $seiten_inhalt * $auflage / 1900) / 60;
        if($seiten_umschlag > 0){
            $zeit_endschneiden_umschlag = (15 + $anzDruckbg_umschlag * $auflage / 600)/60;
        }
        $kosten_endschneiden_inhalt = $zeit_endschneiden_inhalt * $Pstundensatz_wtv_maschinen;
        $kosten_endschneiden_umschlag = $zeit_endschneiden_umschlag * $Pstundensatz_wtv_maschinen;
        $wtveigenkosten += $kosten_endschneiden_inhalt + $kosten_endschneiden_umschlag;
        // Verpackungsmaterial
        $wtvkostenverpackung = $wtvfrachtgewicht / 5000 * 0.6;
        $wtvfremdkosten += $wtvkostenverpackung;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (20 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (20 + $auflage * 0.005);

    }elseif($weiterverarbeitung == '2' || $weiterverarbeitung == '4'){
        if($seiten_umschlag > 0){
            $zeit_endschneiden_umschlag = (15 + $anzDruckbg_umschlag * $auflage / 600)/60;
        }
        $kosten_endschneiden_umschlag = $zeit_endschneiden_umschlag * $Pstundensatz_wtv_maschinen;
        $wtveigenkosten += $kosten_endschneiden_umschlag;
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (20 + $auflage * 0.005);
    }

    // RDH
    $zeit_rdh = $kosten_rdh = 0;

    if($weiterverarbeitung == '1'){
        $heftdicke = ($papier_inhalt_grammatur * $seiten_inhalt / 2 / 10000 + $papier_umschlag_grammatur * $seiten_umschlag / 2 / 10000) * 1.1;
        $wtvgeschwindigkeit_hfs = 2400-($seiten_inhalt+$seiten_umschlag)*10;
        $geschw_faktor_rdh_hfs = max(1, $heftdicke/2 + 1);
        $zeit_rdh_ruesten = 0.25 + ($seiten_inhalt + $seiten_umschlag) / 60 + ($heftdicke * 10 / 6);

        if($seiten_umschlag > 4 || $breite_geschl > $hoehe_geschl){
            $geschw_faktor_rdh_hfs *= 1.3;
        }

        // möglich > intern oder extern
        if ($breite_geschl <= 30.5 && $hoehe_geschl <= 47.4 && ($heftdicke * 10 < 6)) {
            if ($heftdicke * 10 < 4.5) {
                if ($breite_geschl < 25 && $breite_geschl >= 9.0 && $hoehe_geschl >= 10.5 && ($seiten_inhalt + $seiten_umschlag) <= 96) {
                    if ($hoehe_geschl < 14.8) {
                        $geschw_faktor_rdh_hfs *= 1.3;
                        $zeit_rdh_ruesten += 0.5;
                    }
                } else {
                    $geschw_faktor_rdh_hfs *= 1.6;
                    $zeit_rdh_ruesten += 2;
                }
            } else {
                $zeit_rdh_ruesten = 3;
                $geschw_faktor_rdh_hfs *= 1.9;
                $wtvfrachtkosten += $wtvfrachtpreis;
            } 
        }else{
            $zeit_rdh_ruesten = 99999999;
            $geschw_faktor_rdh_hfs = 999999;
        }

        $wtvgeschwindigkeit_hfs += $geschw_faktor_rdh_hfs;
        $zeit_rdh = $zeit_rdh_ruesten + ($auflage / $wtvgeschwindigkeit_hfs);

        $kosten_ringoesen = $klammerung * 60;
        
        $kosten_umschlag_nuten = 0;
        if(($papier_umschlag_grammatur >= 170 && $ausfuehrung != 1) || ($ausfuehrung == 1 && $papier_inhalt_grammatur >= 170)){
            $kosten_umschlag_nuten = min(($auflage/3000+0.5)*$Pstundensatz_wtv_maschinen, $auflage/$drucknutzen_umschlag/1000*33+110);
            $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (20 + $auflage * 0.0025);
        }
             
        $kosten_rdh = $zeit_rdh * $Pstundensatz_wtv_maschinen + $kosten_ringoesen + $kosten_umschlag_nuten;
        $wtveigenkosten += $kosten_rdh;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (30 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.005);
    }

    // PUR      (Einflussgrößen = Seitenanz. INH, Ntz. INH, Auflage, Format HF / QF)
    $zeit_pur = $kosten_pur = 0;
    if($weiterverarbeitung == '2'){

        $pur_purarray = array(array(0,292,92),array(7,292,92),array(12,306,105),array(16,320,117),array(32,479,231));  // bis bogenteile, fixpur, varpur
        $pur_seiten = ceil($seiten_inhalt / $drucknutzen_inhalt / 2);
        foreach($pur_purarray as $n){
            if($pur_seiten > $n[0]){
                $pur_kosten_kleb = $n[1] + $auflage * $n[2] / 1000;
            }
        }

        $pur_falzarray = array(array(4,11.15,7.25),array(6,16.65,8.45),array(8,16.65,8.65),array(12,22.15,9.95),array(16,34,9.75),array(24,44.3,11),array(32,55.3,12.2),array(48,110.5,13.3));   // bogenanz, fixfalz, varfalz   
        $pur_falzb = ceil($seiten_inhalt/$drucknutzen_inhalt/2);       
        foreach($pur_falzarray as $n){
            if($drucknutzen_inhalt*2 >= $n[0]){
                $pur_kosten_falzbg = $n[1] + $auflage * $n[2] * $pur_falzb / 1000;
            }
        }

        if($breite_geschl < $hoehe_geschl){
            $formatfaktor_pur = 1.0;
        }else{
            $formatfaktor_pur = 1.6;
        }

        if($seiten_umschlag > 4){
            $umschlagfaktor_pur = 1.3;
        }else{
            $umschlagfaktor_pur = 1;
        }

        $kosten_pur = 85 + 1.3 * ($pur_kosten_kleb + $pur_kosten_falzbg ) * $formatfaktor_pur * $umschlagfaktor_pur;   
        $zeit_pur = 24 * 5;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.005);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $kosten_pur;
    }
    
    // Wire-O
    $zeit_wireo = $kosten_wireo = 0;
    if($weiterverarbeitung == '3'){
        //analog Plano-FA loseblatt, zusammentragen von Sorten, in Abh. von Grammatur und Format > manuell oder HFS
        if($hoehe_geschl < 14 || $hoehe_geschl < $breite_geschl || $seiten_umschlag > 4){
            $wtvgeschwindigkeit_hfs = max(300, 1200-($seiten_inhalt+$seiten_umschlag)*10);
        }else{
            $wtvgeschwindigkeit_hfs = max(300, 2200-($seiten_inhalt+$seiten_umschlag)*15);
        }

        if($papier_inhalt_grammatur <= 300 && $papier_umschlag_grammatur <= 300 && $hoehe_geschl >= 14.8 && $breite_geschl >= 14.8 && $format_offen_breite <= 42 && $format_offen_hoehe <= 42){
            $hfs_durchlaeufe = ceil(($seiten_inhalt+$seiten_umschlag)/23/2);
            $hfs_ruestzeit = ceil(($seiten_inhalt+$seiten_umschlag)/2) * 2 / 60 + 0.5;
            $hfs_zeit_zu = $auflage * $hfs_durchlaeufe / $wtvgeschwindigkeit_hfs;
            $hfs_zeit_stapeln = 1 + $hfs_durchlaeufe * $auflage * 0.0013;
            $hfs_zeit_loseblatt = $hfs_ruestzeit + $hfs_zeit_zu + $hfs_zeit_stapeln;
            $hfs_kosten_loseblatt = $hfs_zeit_loseblatt * $Pstundensatz_wtv_maschinen;
        }else{
            $hfs_kosten_loseblatt = 999999999;
            $hfs_zeit_loseblatt = 999999999;
        }

        $man_kosten_loseblatt = ceil(($seiten_inhalt+$seiten_umschlag)/2) * 5 + $auflage * 0.015;
        $man_zeit_loseblatt = $man_kosten_loseblatt / $Pstundensatz_wtv_hand;
        
        $kosten_loseblatt = min($hfs_kosten_loseblatt, $man_kosten_loseblatt);

        if($kosten_loseblatt == $hfs_kosten_loseblatt){
            $zeit_loseblatt = $hfs_zeit_loseblatt;
        }else{
            $zeit_loseblatt = $man_zeit_loseblatt;
        }
        $wtveigenkosten += $kosten_loseblatt;

        //Wire-O stanzen + binden + Spirale
        $fk_wireo_fix = 200;
        $fk_wireo_spirale = 0.08 + ceil(max($hoehe_geschl,$breite_geschl)/15)*0.06;
        $fk_wireo_sta = ceil($buchruecken/1.8)*0.15;
        $fk_wireo_binden = 0.25;
        $fk_wireo = ($fk_wireo_fix + $auflage * ($fk_wireo_spirale + $fk_wireo_sta + $fk_wireo_binden));
      
        $kosten_wireo = $fk_wireo + $kosten_loseblatt;
        $zeit_wireo = 24 * 5;

        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.005);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $fk_wireo;
        
    }
    
    // HDCOVER (Einflussgrößen = Seitenanz. INH, Ntz. INH, Auflage, Format HF / QF, Breite, Höhe)
    $zeit_hdcover = $kosten_hdcover = 0;
    if($weiterverarbeitung == '4'){
        $kosten_hdcover = (((0.5+(1/pow(2,log10($auflage/20)))+($breite_geschl*$hoehe_geschl/10000)+($seiten_inhalt/$drucknutzen_inhalt/30))*$auflage)+800)*1.4;
        $zeit_hdcover = 24 * 12;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.01);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.01);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $kosten_hdcover;
    }

    // HDCOVER Leinen
    $zeit_hdcover_leinen = $kosten_hdcover_leinen = 0;
    if ($weiterverarbeitung == '5') {
        $kosten_hdcover_leinen_fix = 300;
        $kosten_hdcover_leinen_var = (1/log(($auflage+650)/450)*4)+0.4+$seiten_inhalt/900;
        $zeit_hdcover_leinen = 24 * 15;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.01);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $kosten_hdcover_leinen = ($kosten_hdcover_leinen_fix + $auflage * $kosten_hdcover_leinen_var) * 1.35;
        $wtvfremdkosten += $kosten_hdcover_leinen;
    }

    // WAKAL = Wandkalender
    $zeit_wakal = $kosten_wkal = 0;
    if($weiterverarbeitung == '6'){
        if($breite_geschl < 12 || $breite_geschl > 43 || $hoehe_geschl < 12 || $hoehe_geschl > 43){
            $wireo_faktor = 2;
        }else{
            $wireo_faktor = 1;
        }
        $ek_wireo_zu = $wireo_faktor * ((0.5+(ceil((($seiten_inhalt+$seiten_umschlag)/2)/23)* $auflage)/2000)*$Pstundensatz_wtv_maschinen)+(($seiten_inhalt*$auflage/600)/60*$Pstundensatz_wtv_maschinen);
        $fk_wireo_sta_bind = ((1/pow(2,log10($auflage/20)))+((max([$breite_geschl,$hoehe_geschl])+15)/300)+0.03*(ceil(($buchruecken/0.4))-1))*($auflage)*1.4;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.005);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvfremdkosten += $fk_wireo_sta_bind;
        $wtveigenkosten += $ek_wireo_zu;
        $kosten_wakal = $fk_wireo_sta_bind + $ek_wireo_zu;
        $zeit_wakal = 24 * 5;
    }    

    // Registerstanzung
    $kosten_registerstanzung = 0;
    $zeit_registerstanzung = 0;
    if($registerstanzung != '0'){
        $kosten_registerstanzung = 250+((120+($registerstanzung*13))/1000*$auflage);
        $zeit_registerstanzung = 4 * 24 + ceil($auflage/5000);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (30 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.005);
        $wtvfremdkosten += $kosten_registerstanzung;
    }

    // einschweissen 
    $kosten_einschweissen = $einschweissen * 0.13 * $auflage;
    $zeit_einschweissen = $kosten_einschweissen / $Pstundensatz_wtv_maschinen;
    if($einschweissen != '0'){
        $wtvfrachtkosten += $wtvfrachtpreis;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (10 + $auflage * 0.002);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (10 + $auflage * 0.002);
        $wtvfremdkosten += $kosten_einschweissen;
    }

    // Beilage
    $kosten_beilage = 0;
    if($beilage == 1){
        $kosten_beilage = $Pbeilage_einlegen_unbestimmte*$auflage/1000;      
    }
    if($beilage == 2){
        $kosten_beilage = $Pbeilage_einlegen_bestimmte*$auflage/1000;      
    }
    $zeit_beilage = $kosten_beilage / $Pstundensatz_wtv_hand; 
    $wtveigenkosten += $kosten_beilage;

    //bündeln
    $kosten_buendeln = 0;
    if($buendeln != 0){
        $kosten_buendeln = $Pplano_fa_fixpreis_buendeln + $auflage / $buendeln * $Pbro_preis_je_buendel;
    }
    $zeit_buendeln = $kosten_buendeln / $Pstundensatz_wtv_hand;
    $wtveigenkosten += $kosten_buendeln;

    //perforation BRO
    $kosten_perforation = 0;
    if($perforation != "0"){
        $kosten_perforation = $Pplano_fa_fixpreis_perforation + $auflage/1000*$Pplano_fa_tsdpreis_perforation + $perforation*15;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (10 + $auflage * 0.002);
    }
    $zeit_perforation = $kosten_perforation / $Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_perforation;

    //praegung UM 
    $kosten_praegung = 0;
    $zeit_praegung = 0;
    $kosten_werkzeug_praegung = 0;
    if($praegung_umschlag == 1 || $praegung_umschlag == 2){
        $zeit_praegung = $auflage / 1000 + 1;
        if($format_offen_breite > 23 || $format_offen_hoehe > 23){
            $kosten_praegung = $Pplano_praegen_fix2 + $auflage * $Pplano_praegen_var2 / 1000;
        }else{
            $kosten_praegung = $Pplano_praegen_fix1 + $auflage * $Pplano_praegen_var1 / 1000;    
            }
        if($praegung_umschlag == 2){
            $kosten_werkzeug_praegung = sqrt($format_offen_hoehe*$format_offen_breite)*2+95;
        }
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (100 + $auflage * 0.002);
    }
    if($praegung_umschlag == 3){
        $zeit_praegung = 5 * 24;
        $kosten_werkzeug_praegung = 135 + $format_offen_breite * $format_offen_hoehe / 2;
        $kosten_praegung = 200 + 200 * $auflage / 1000;
    }
    $wtvfremdkosten += $kosten_praegung + $kosten_werkzeug_praegung;

    //Verdelung Umschlag = folien kaschierung oder lack UM
    $kosten_kaschierung = 0;
    $zeit_kaschierung = 0;
    $flaechekaschierung = ($format_offen_breite+2)*($format_offen_hoehe+2);
    if($veredelung_umschlag == "6"){
        $kosten_kaschierung = max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_mk*$flaechekaschierung/10000*$auflage);
    }
    if($veredelung_umschlag == "7"){
        $kosten_kaschierung = max($Pplano_fa_mindpreis_kaschierung,$Pplano_fa_kaschierung_gl*$flaechekaschierung/10000*$auflage);
    }
    
    if($veredelung_umschlag != "0"){
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.002);
        $zeit_kaschierung = 240;
        $wtvfrachtkosten += 25;
        $wtvfremdkosten += $kosten_kaschierung;
    }

    //duftdruck UM
    $kosten_duftdruck = 0;
    $zeit_duftdruck = 0;
    if($duftdruck != "0"){
        $kosten_duftdruck = $duftdruck*$Pplano_fa_tsdpreis_duftdruck*$auflage/1000+$Pplano_fa_fixpreis_duftdruck;
        $zeit_duftdruck = 480;
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (100 + $auflage * 0.002);
        $wtvfrachtkosten += $wtvfrachtpreis;
    }
    $wtvfremdkosten += $kosten_duftdruck;

    // Blankomuster vorab
    $kosten_blankomuster = 115 * $blankomuster;
    $wtveigenkosten += $kosten_blankomuster;

    //freie Positionen
    $kosten_freipos10 = $frei10fixpreis + $frei10tsdpreis / 1000 * $auflage;
    $kosten_freipos20 = $frei20fixpreis + $frei20tsdpreis / 1000 * $auflage;
    $wtvfremdkosten += $kosten_freipos10 + $kosten_freipos20;   

    //Musterversand
    $kosten_musterversand = $musterversand * 8;
    $wtvfremdkosten += $kosten_musterversand;

    //Neutralversand, Absender
    $kosten_absender = $absender * 0;
    $wtvfremdkosten += $kosten_absender;
    
    //Endabrechnung
    $wtvzuschusspapier_inhalt = ceil($wtvzuschusspapier_inhalt);
    $wtvzuschusspapier_umschlag = ceil($wtvzuschusspapier_umschlag);
    $wtvzuschusspapier_kosten_inhalt = ($druckbogen_breite_inhalt * $druckbogen_hoehe_inhalt * $papier_inhalt_grammatur * $papier_inhalt_value * $wtvzuschusspapier_inhalt) / 1000000000;
    $wtvzuschusspapier_kosten_umschlag = ($druckbogen_breite_umschlag * $druckbogen_hoehe_umschlag * $papier_umschlag_grammatur * $papier_umschlag_value * $wtvzuschusspapier_umschlag) / 1000000000;

    //Einzelwerte ausgeben
    if($what=='debug'){ 
        echo("\n<br />");         
        echo('-------------------- WTV BRO --------------------'."\n<br />");
        echo('Endschneiden Inhalt: '.number_format($kosten_endschneiden_inhalt, 2 , ',', '.').' € | Zeit: '.number_format($zeit_endschneiden_inhalt, 2 , ',', '.')."\n<br />");
        echo('Endschneiden Umschlag: '.number_format($kosten_endschneiden_umschlag, 2 , ',', '.').' € | Zeit: '.number_format($zeit_endschneiden_umschlag, 2 , ',', '.')."\n<br />");
        if($kosten_rdh > 0){
            echo('RDH: '.number_format($kosten_rdh-$kosten_umschlag_nuten, 2 , ',', '.').' € | Zeit RDH: '.number_format($zeit_rdh, 2 , ',', '.')."\n<br />");
            if($kosten_umschlag_nuten>0){
                echo('nuten Umschlag: '.number_format($kosten_umschlag_nuten, 2 , ',', '.')." €\n<br />");
            }
            echo('WTV Geschwindigkeit HFS: '.$wtvgeschwindigkeit_hfs."\n<br />");
        }
        if($kosten_pur > 0){
            echo('PUR: '.number_format($kosten_pur, 2 , ',', '.')." €\n<br />");
            echo('___$pur_kosten_kleb: '.$pur_kosten_kleb.' € | $pur_seiten: '.$pur_seiten."\n<br />");
            echo('___$pur_falzbg: '.number_format($pur_falzb,3).' € | Falzmenge: '.$auflage * $pur_falzb."\n<br />");
            echo('___$pur_kosten_falzbg: '.$pur_kosten_falzbg." €\n<br />");
        }
        if($kosten_wireo > 0){
            echo('Wire-O: '.number_format($kosten_wireo, 2 , ',', '.')." €\n<br />");
            echo('___$zeit_loseblatt: '.number_format($zeit_loseblatt, 2 , ',', '.').' | $fk_wireo_fix: '.number_format($fk_wireo_fix, 2 , ',', '.').' € | $fk_wireo_spirale: '.number_format($fk_wireo_spirale, 2 , ',', '.').' € | $fk_wireo_sta: '.number_format($fk_wireo_sta, 2 , ',', '.').' € | $fk_wireo_binden: '.number_format($fk_wireo_binden, 2 , ',', '.').' € | Buchrücken: '.$buchruecken."\n<br />");
        }
        if($kosten_hdcover > 0){
            echo('HDCOVER: '.number_format($kosten_hdcover, 2 , ',', '.')." €\n<br />");
        }
        if($kosten_hdcover_leinen > 0){
            echo('HDCOVER LEINEN: ('.$kosten_hdcover_leinen_fix.' + '.$auflage.' x '.number_format($kosten_hdcover_leinen_var, 2 , ',', '.').') x 1.2 = '.number_format($kosten_hdcover_leinen, 2 , ',', '.')."€ \n<br />");
        }
        if($kosten_registerstanzung > 0){echo('Registerstanzung: '.number_format($kosten_registerstanzung, 2 , ',', '.')."€ \n<br />");}
        if($kosten_beilage > 0){echo('Beilage: '.number_format($kosten_beilage, 2 , ',', '.')." €\n<br />");}
        if($kosten_einschweissen > 0){echo('einschweissen: '.number_format($kosten_einschweissen, 2 , ',', '.')." €\n<br />");}
        if($kosten_buendeln > 0){echo('bündeln: '.number_format($kosten_buendeln, 2 , ',', '.').' € | '.'Zeit bündeln: '.number_format($zeit_buendeln, 2 , ',', '.')."\n<br />");}
        if($kosten_praegung > 0){echo('Prägung: '.number_format($kosten_praegung, 2 , ',', '.').' € | Zeit praegung: '.number_format($zeit_praegung, 2 , ',', '.').' | anteilg. Werkzeug: '.number_format($kosten_werkzeug_praegung, 2 , ',', '.')." € \n<br />");}
        if($kosten_duftdruck > 0){echo('Duftdruck: '.number_format($kosten_duftdruck, 2 , ',', '.')."€ \n<br />");}
        if($kosten_kaschierung > 0){echo('Kaschierung: '.number_format($kosten_kaschierung, 2 , ',', '.')." € \n<br />");}
        if($kosten_perforation > 0){echo('Perforation: '.number_format($kosten_perforation, 2 , ',', '.')." € \n<br />");}
        if($kosten_blankomuster > 0){echo('Blankomuster: '.number_format($kosten_blankomuster, 2 , ',', '.')." € \n<br />");}
        if($kosten_musterversand > 0){echo('Musterversand: '.number_format($kosten_musterversand, 2 , ',', '.')." € \n<br />");}
        if($kosten_absender > 0){echo('Absender: '.number_format($kosten_absender, 2 , ',', '.')." €\n<br />");}
        if($kosten_freipos10 > 0){echo('freipos10: '.number_format($kosten_freipos10, 2 , ',', '.')." €\n<br />");}
        if($kosten_freipos20 > 0){echo('freipos20: '.number_format($kosten_freipos20, 2 , ',', '.')." €\n<br />");}
        echo('Papierlogistikpauschale: '.number_format($papierlogistikpauschale, 2 , ',', '.')." €\n<br />");
        echo('Verpackung: '.number_format($wtvkostenverpackung, 2 , ',', '.')." €\n<br />");
        echo('----------------------------------------'."\n<br />");
        echo('WTV Zuschuss Papier Inhalt: '.number_format($wtvzuschusspapier_kosten_inhalt, 2 , ',', '.').' € | '.number_format($wtvzuschusspapier_inhalt, 0 , ',', '.')." Bg. \n<br />");
        echo('WTV Zuschuss Papier Umschlag: '.number_format($wtvzuschusspapier_kosten_umschlag, 2 , ',', '.').' € | '.number_format($wtvzuschusspapier_umschlag, 0 , ',', '.')." Bg. \n<br />");
        echo('WTV Frachtkosten: '.number_format($wtvfrachtkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Eigenkosten: '.number_format($wtveigenkosten, 2 , ',', '.')." €\n<br />");
        echo('WTV Fremdkosten: '.number_format($wtvfremdkosten, 2 , ',', '.')." € \n<br />");
    }

    return [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten_inhalt, $wtvzuschusspapier_kosten_umschlag, $wtvfrachtgewicht];
    
}

function getZUABBRO23($what, $auflage, $rabattierfaehigekosten, $zuab_eigenkosten, $zuab_fremdkosten, $papiersorte_sammelform_inhalt, $druckfarben_inhalt, $druckmaschine_inhalt, $papiersorte_sammelform_umschlag, $druckfarben_umschlag, $druckmaschine_umschlag, $qualitaet, $produktionszeit, $breite_offen, $hoehe_offen, $provisionsart, $provisionswert, $rabattierfaehigekosten_inhalt, $rabattierfaehigekosten_umschlag, $zussorten_umschlag, $seiten_inhalt, $seiten_umschlag,  $drucknutzen_inhalt, $nutzen_umschlag, $papier_vs_rs_unterschiedlich_umschlag){

    $preisaenderung = 0;
    $sammelformreduktion_inhalt = $sammelformreduktion_umschlag = $sammelfaktor_papier = $sammelwahrscheinlichkeit_format_sorten = $sammelfaktor = $sammelwahrscheinlichkeit_menge = 0;
    $zuab_gesamtkosten = $zuab_eigenkosten + $zuab_fremdkosten;
    
    //Sammelform UM
    if($seiten_umschlag != 0){
        $bedruckteSeiten = getAnzDruckfarbenBedruckteSeiten21($druckfarben_umschlag)[1];
        
        $sammelarray = getSammelformWertePlanoFa23($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform_umschlag, $bedruckteSeiten, $zussorten_umschlag+1, $druckmaschine_umschlag, $produktionszeit, $papier_vs_rs_unterschiedlich_umschlag);
        $sammelfaktor_papier = $sammelarray[2];
        $sammelwahrscheinlichkeit_menge = $sammelarray[1];
        $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];
        $sammelfaktor_druckmaschine = $sammelarray[3];

        $sammelfaktor = (($sammelwahrscheinlichkeit_format_sorten*75)*($sammelwahrscheinlichkeit_menge*25)/(75*25))*$sammelfaktor_papier*$sammelfaktor_druckmaschine;

        if((in_array($druckfarben_umschlag,array(1,2,3,18,19,7,8))) && ($papiersorte_sammelform_umschlag != 1)){
            $sammelformreduktion_umschlag = $rabattierfaehigekosten_umschlag * $sammelfaktor * -1;
            }
        $preisaenderung += $sammelformreduktion_umschlag;
    }

    //Sammelform INH // 1 = ohne, 2 = happy, 3 = eq, 4 = sense, 5 = sky, 6 = glam, 7 = post
    if((in_array($druckfarben_inhalt,array(1,2,3,18,19,7,8))) && ($papiersorte_sammelform_inhalt != 1)){
        $papierliste_sammelf_inhalt = array(0,-90,-110,-60,-60,-85,-25); 
        $sammelformreduktion_inhalt = -1 * ((-1 * $papierliste_sammelf_inhalt[$papiersorte_sammelform_inhalt-1]) + $rabattierfaehigekosten_inhalt); 
        if(in_array($druckfarben_inhalt, array(7,8))){
            $sammelformreduktion_inhalt /= 4;   
        }
        $preisaenderung += $sammelformreduktion_inhalt;
        }
    
    $sammelformreduktion = $sammelformreduktion_inhalt + $sammelformreduktion_umschlag;


    //Qualität 1 = easyValue, 2 = ISO-Std., 3 = MaxHighEnd, Pos. in Liste (0=Fixwert,1=Prozwert)
    $qualitaetswerte = array(array(-25,-8),array(0,0),array(35,7));
    $qualitaet_fix = $qualitaetswerte[$qualitaet-1][0];
    $qualitaet_proz = $qualitaetswerte[$qualitaet-1][1];
    if($qualitaet_proz <= 0){
        $qualkost = $zuab_eigenkosten;
        }else{
        $qualkost = $zuab_gesamtkosten + $sammelformreduktion/2;
    }
    $qualitaet_zuab = $qualitaet_fix + ($qualkost/100*$qualitaet_proz);
    $preisaenderung += $qualitaet_zuab;

    
    //Produktionszeit 1 = relaX, 2 = normal, 3 = eXpress | Pos. in Liste (0=Fixwert,1=Prozwert)
    $zeitwerte = array(array(-15,-11),array(0,0),array(35,9));           
    $zeitwert_fix = $zeitwerte[$produktionszeit-1][0];
    $zeitwert_proz = $zeitwerte[$produktionszeit-1][1];
    if($zeitwert_proz <= 0){
        $zeitkosten = $zuab_eigenkosten;
        }else{
        $zeitkosten = $zuab_gesamtkosten + $sammelformreduktion/2;
    }  
    $zeit_zuab = $zeitwert_fix + ($zeitkosten/100*$zeitwert_proz);
    $preisaenderung += $zeit_zuab;  

    //Provision (1 = Prozentual, 5, 10, 15, 20%)
    $provision_zuschlag = 0;
    if($provisionsart == "1"){
        $provision_zuschlag = ($zuab_gesamtkosten+$preisaenderung)/100*$provisionswert;
    }
    $preisaenderung += $provision_zuschlag;


    //Einzelwerte ausgeben
    if($what=='debug'){
        echo("\n<br />".'-------------------- Zu-/Abschläge BRO --------------------'."\n<br />");
        if ($seiten_umschlag != 0) {
            echo ('UM Sammelfaktor Papiersorte: ' . number_format($sammelfaktor_papier, 2, ',', '.') . "\n<br />");
            echo ('UM Sammelwahrscheinlichkeit Format/Sorten: ' . number_format($sammelwahrscheinlichkeit_format_sorten, 2) . "\n<br />");
            echo ('UM Sammelwahrscheinlichkeit Menge: ' . number_format($sammelwahrscheinlichkeit_menge, ) . "\n<br />");
            echo ('UM Sammelfaktor: ' . number_format($sammelfaktor, 2) . "\n<br />");
        }
        echo('Sammelformreduktion: INH '.number_format($sammelformreduktion_inhalt, 2 , ',', '.').' + UM '.number_format($sammelformreduktion_umschlag, 2 , ',', '.').' = '.number_format($sammelformreduktion, 2 , ',', '.')." €\n<br />");
        echo("Qualität: ".  $qualitaet_fix.' | '.$qualitaet_proz." = ".number_format($qualitaet_zuab, 2 , ',', '.')." € \n<br />");
        echo("Produktionszeit: ".$zeitwert_fix.' | '.$zeitwert_proz." = ".number_format($zeit_zuab, 2 , ',', '.')." € \n<br />");
        echo('Provision: '.number_format($provisionswert, 2 , ',', '.').' % | '.number_format($provision_zuschlag, 2 , ',', '.')." € \n<br />");
        echo('Preisänderung total: '.number_format($preisaenderung, 2 , ',', '.')." €\n\n<br />");
    }

    return $preisaenderung;
    }



// ####### ENDE KOPIERSEKTION PSC #######
}
