if(!function_exists('getSammelformMengenAbschlagPlano')) {

    function getSammelformMengenAbschlagPlano($menge) {
        return 1;
    }





// ####### Beginn Kopiersektion PSC #######



// DIGITALDRUCK
function getPrePressDIGIPlanoFa22($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $loseblatt, $personalisierung){
    //Parameter
    $Pstundensatz_vorstufe = 70;
    $Pplano_fa_aufpreis_anderes_dateiformat = 25;
    $Pumweltzeichen_fsc = 15;
    $Pumweltzeichen_blauerengel = 335;
    $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_kosten = $Pplano_fa_aufpreis_anderes_dateiformat;
    }

    $korrekturabzug_kosten = 0;
    if($korrekturabzug == 2){
        $korrekturabzug_kosten = max($Pplano_digitalproof_minimal, (($breite_offen*$hoehe_offen)/62*$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('-------------------- Digitaldruck PrePress Plano-Fa --------------------'."\n");
        echo('$datenuebernahme_kosten: '.round($datenuebernahme_kosten,2)."\n");
        echo('$dateiformat_kosten: '.$dateiformat_kosten."\n");
        echo('$umweltzeichen_kosten: '.$umweltzeichen_kosten."\n");
        echo('$korrekturabzug_kosten: '.round($korrekturabzug_kosten,2)."\n\n");
    }

    return $eigenkosten;

}

function getDruckNutzenDIGI($breite_offen, $hoehe_offen){
    $Druckbogenbreite = 45;
    $Druckbogenhoehe = 32;
    $DruckbgRaender = 1;
    $drucknutzen = max(
        (floor(($Druckbogenbreite-$DruckbgRaender)/$breite_offen))*(floor(($Druckbogenhoehe-$DruckbgRaender)/$hoehe_offen)),
        (floor(($Druckbogenhoehe-$DruckbgRaender)/$breite_offen))*(floor(($Druckbogenbreite-$DruckbgRaender)/$hoehe_offen))
    );
    return [$drucknutzen, $Druckbogenbreite, $Druckbogenhoehe, $DruckbgRaender];
}

function getPrintDIGIPlanoFa22($what, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $sortenzahl, $papiersorte_sammelform, $anzblattjeblock, $wtvzuschusspapier){
    $KlickKostenA4SW = 0.042 * 9.2 ; //= EK Dewart 4/2022 x Faktor
    $KlickKostenA4Farbe = 0.012 * 5.5; //= EK Dewart 4/2022 x Faktor
    [$anzahlDruckfarben, $bedruckteSeiten] = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt);

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

    $zuschuss_digitaldruck = 10 * $bedruckteSeiten + ($sortenzahl * 5);

    $nettobg = ceil(($auflage/$drucknutzen));
    $bruttobg = 1.05 * $nettobg + $wtvzuschusspapier + $zuschuss_digitaldruck;

    $papierkosten = ($Druckbogenbreite * $Druckbogenhoehe * $papiersorte_grammatur * $papiersorte_value / 1000000000 * $bruttobg) * 1.3;

    $mengenabschlagDruck = 1 - log10($auflage*$auflage)/50/$drucknutzen*$bedruckteSeiten;

    if($druckfarben_inhalt == 1 || $druckfarben_inhalt == 3){
        $klickkosten = $KlickKostenA4Farbe;
    }else{
        $klickkosten = $KlickKostenA4SW;
    }

    $druckkosten = $bruttobg * $klickkosten * $bedruckteSeiten * $mengenabschlagDruck;

    if($papiersorte_sammelform == 0){
        $ruestkosten = 20 + $sortenzahl * 3;
    }else{
        $ruestkosten = 10 + $sortenzahl * 3;
    }

    $eigenkosten = $ruestkosten + $druckkosten;
    $fremdkosten = $papierkosten;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-----> '.$auflage.' x '.$breite_offen.' x '.$hoehe_offen);
        echo(' ----- Digitaldruck PRINT Plano-Fa --------------------'."\n");
        echo('Papier: '.$Druckbogenbreite.' x '.$Druckbogenhoehe.' mit 1.05 x '.$nettobg.' Nettobg. + '.$zuschuss_digitaldruck.' ZU Druck + '.$wtvzuschusspapier.' ZU WTV = '.$bruttobg.' zu '.$drucknutzen.' Nutzen | ');
        echo('Rüstkosten: '.round($ruestkosten,2)." Euro\n");
        echo('Druckkosten: '.(round($druckkosten,2))." Euro\n");
        echo('Papier: '.round($papierkosten,2)." Euro\n");
        echo('Klickkosten ohne Abschlag: '.$klickkosten.' mit Mengenabschlag Druck: '.$mengenabschlagDruck."\n");
        echo('Gesamte Eigenkosten Print: '.round($eigenkosten,2)."\n");
        echo('Gesamte Fremdkosten Print: '.round($fremdkosten,2)."\n");
        echo('Gesamtkosten Print: '.(round($eigenkosten+$fremdkosten,2))." Euro\n\n");
    }


    return [$eigenkosten, $fremdkosten, $drucknutzen, $nettobg, $zuschuss_digitaldruck, $wtvzuschusspapier, $papierkosten];

}

function getWTVDIGIPlanoFa22($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, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender){

    //Parameter Digitaldruck
    $Druckbogenbreite = 45;
    $Druckbogenhoehe = 32;
    $Pstundensatz_wtv = 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/ 10000000 * 1.1;
    $wtvfrachtpreis = 50 + $wtvfrachtgewicht/500*15;
    $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 = 15;
    $Pklebepunkte_lose_pro_tausend = 12;
    $Pklebepunkte_vorkonf_fix = 15;
    $Pklebepunkte_vorkonf_pro_tausend = 47;
    $Phaftstreifen_lose_fix = 15;
    $Phaftstreifen_lose_pro_tausend = 7;
    $Phaftstreifen_vorkonf_fix = 45;
    $Phaftstreifen_vorkonf_pro_tausend = 77;
    $haftstreifen_material_pro_cm = 0.002;
    $Pplano_stanzen_fix1 = 35;
    $Pplano_stanzen_fix2 = 97.5;
    $Pplano_stanzen_var1 = 14;
    $Pplano_stanzen_var2 = 37.5;
    $Poesen_fixpreis= 45;
    $Poesen_stkpreis = 0.20;
    $Pplano_fa_fixpreis_bohren = 25;
    $Pplano_fa_tsdpreis_bohren = 5;
    $Pplano_fa_fixpreis_ecken_runden = 15;
    $Pplano_fa_tsdpreis_ecken_runden = 16;
    $Pplano_fa_fixpreis_buendeln = 15;
    $Pplano_fa_preis_je_buendel = 0.09;

    //endschneiden + verpacken Digitaldruck
    $zeit_endschneiden = (20+5*$sortenzahl+(sqrt($auflage/5)))/60;
    $kosten_endschneiden = $zeit_endschneiden*$Pstundensatz_wtv;
    $wtveigenkosten += $kosten_endschneiden;
    $wtvzuschusspapier += (10 + $auflage * 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(!($falzung == 1 && $papiersorte_grammatur > 169)){   //wenn nur Morgana nötig ist
                $wtvfrachtkosten += $wtvfrachtpreis;
            }
        }
        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 * 30) / $drucknutzen;
        if($falzung == 1 && $papiersorte_grammatur > 169){   //wenn nur Morgana nötig ist
            $zeit_falzung = 0;
        }
    }
    $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 = $loseblatt * 20;


    //ecken runden Digitaldruck
    $kosten_eckenrunden = 0;
    if($ecken_runden != 0){
        $kosten_eckenrunden = 1/$grammaturfaktor_geschw_wtv * $auflage*$Pplano_fa_tsdpreis_ecken_runden/1000+$Pplano_fa_fixpreis_ecken_runden;
    }

    $zeit_eckenrunden = $kosten_eckenrunden / $Pstundensatz_wtv;
    $wtveigenkosten += $kosten_eckenrunden;


    //bohren, lochen Digitaldruck
     $kosten_bohren_lochen = 0;
    if($bohren_lochen != 0){
        $bohrformatliste = array(array(0.1,2),array(5,1.5),array(10,1.2),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){
            $bohraufschlag *= 2;
        }
        if(($bohren_lochen == 2) && ($bohraufschlag == 1)){$bohren_lochen = 1;}  //für DIN A4 2-fach Sonderpreis
        $kosten_bohren_lochen = $bohraufschlag * ($Pplano_fa_fixpreis_bohren + 1/$grammaturfaktor_geschw_wtv * $auflage/1000*$bohren_lochen*$Pplano_fa_tsdpreis_bohren);
    }
    $zeit_bohren_lochen = $kosten_bohren_lochen / $Pstundensatz_wtv;
    $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 = 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 = 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 / 1000);
        $wtvzuschusspapier += ($auflage * 0.01 + 50) / $drucknutzen;
    }
    $wtvfremdkosten += $kosten_personalisierung;


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


    //stanzung Digitaldruck
    $kosten_stanzung = 0;
    $kosten_werkzeug_stanzung_1N = 0;
    $kosten_werkzeug_stanzung = 0;
    $nutzen_stanzung = 1;
    $stanzmaschine = 'keine';
    if($stanzung != 0 && $stanzung != 99){
        $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
        $wtvzuschusspapier += ($auflage * 0.01 + 50) / $drucknutzen;
        $kosten_werkzeug_stanzung_1N = sqrt($breite_offen*$hoehe_offen)*2+85;
        if(($breite_offen > 33 || $hoehe_offen > 33) || ($breite_offen > 23 && $hoehe_offen > 23)){
            $kosten_stanzung = $Pplano_stanzen_fix2 + $auflage * $Pplano_stanzen_var2 / 1000;
            $stanzmaschine = "zylinder";
            if($stanzung == 2){
                $kosten_stanzung += $kosten_werkzeug_stanzung_1N;
            }
        }else{
            $kosten_stanzung = $Pplano_stanzen_fix1 + $auflage * $Pplano_stanzen_var1 / 1000;
            $stanzmaschine = "tiegel";
                if($stanzung == 2){
                    $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;
            }
        }
    }

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

    $wtvfremdkosten += $kosten_stanzung;


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

    if($falzung == 'nein' || $falzung == 0){
        $buendelfaktor *= 2;
    }

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


    //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;


    //Werte ausgeben
    if($what=='debug'){
        echo('-------------------- Digitaldruck WTV Plano-Fa --------------------'."\n");
        echo('$kosten_endschneiden: '.round($kosten_endschneiden,2).' | $zeit_endschneiden: '.round($zeit_endschneiden,2)."\n");
        if($kosten_falzung != 0){echo('$kosten_falzung: '.round($kosten_falzung,2).' | $zeit_falzung: '.round($zeit_falzung,2)."\n");
        echo('$fakt_falzung: '.$fakt_falzung."\n");
        }
        if($kosten_nuten != 0){echo('$kosten_nuten: '.round($kosten_nuten,2).' | '.'$zeit_nuten: '.round($zeit_nuten,2)."\n");}

        if($kosten_personalisierung != 0){echo('$kosten_personalisierung: '.round($kosten_personalisierung,2)."\n");}
        if($kosten_eckenrunden != 0){echo('$kosten_eckenrunden: '.round($kosten_eckenrunden,2).' | '.'$zeit_eckenrunden: '.round($zeit_eckenrunden,2)."\n");}
        if($kosten_bohren_lochen != 0){echo('$kosten_bohren_lochen: '.round($kosten_bohren_lochen,2).' | '.'$zeit_bohren_lochen: '.round($zeit_bohren_lochen,2)."\n");}
        if($kosten_loseblatt != 0){echo('$kosten_loseblatt: '.round($kosten_loseblatt,2).' | '.'$zeit_loseblatt: '."\n");}
        echo('$wtvzuschusspapier_kosten: '.round($wtvzuschusspapier_kosten,2).' | $wtvzuschusspapier: '.round($wtvzuschusspapier,2)."\n");
        echo('----------------------------------------'."\n");
        echo('$wtvfrachtkosten: '.round($wtvfrachtkosten,2)."\n");
        echo('$wtveigenkosten: '.round($wtveigenkosten,2)."\n");
        echo('$wtvfremdkosten: '.round($wtvfremdkosten,2)."\n\n");
    }

    return [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung];

}

function getZUABPlanoDigiFA22($what, $auflage, $eigenkosten_total, $fremdkosten_total, $papiersorte_sammelform, $druckfarben_inhalt, $produktionszeit, $qualitaet, $sortenzahl, $breite_offen, $hoehe_offen, $provisionsart, $provisionswert, $aktionsrabatt, $kundengruppenrabatt, $onlinerabatt){
    $preisaend = 0;
    $provisions_betrag = 0;
    $aktionsrabatt_betrag = 0;
    $onlinerabatt_betrag = 0;
    $kundengruppenrabatt_betrag = 0;
    $produktionszeit_betrag = 0;
    $qualitaet_betrag = 0;

    if($onlinerabatt == 1){$onlinerabatt_betrag = -10;}
    if($kundengruppenrabatt == 1){$kundengruppenrabatt_betrag = $eigenkosten_total* -0.03;}
    if($aktionsrabatt == 1){$aktionsrabatt_betrag = $eigenkosten_total * 0.04;}
    if($papiersorte_sammelform == 1){$preisaend += -10;}
    if($provisionsart == 1){$provisions_betrag = $provisionswert / 100 * ($eigenkosten_total+$fremdkosten_total);}
    if($produktionszeit == 1){}
    if($produktionszeit == 2){}
    if($produktionszeit == 3){}
    if($qualitaet == 1){}
    if($qualitaet == 2){}
    if($qualitaet == 3){}

    $preisaend = $onlinerabatt_betrag + $aktionsrabatt_betrag + $kundengruppenrabatt_betrag + $provisions_betrag +  $produktionszeit_betrag + $qualitaet_betrag;

    return [$preisaend, $onlinerabatt_betrag, $aktionsrabatt_betrag, $kundengruppenrabatt_betrag, $provisions_betrag, $produktionszeit_betrag, $qualitaet_betrag];
}

function getPrintDIGIBRO22(){
    return 0;
}

function getDigitALLPlanoFa22($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, $aktionsrabatt, $kundengruppenrabatt, $onlinerabatt){

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

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

    [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung] = getWTVDIGIPlanoFa22($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, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender);

    [$eigenkosten_digitaldruck, $fremdkosten_digitaldruck, $drucknutzen, $nettobg, $zuschuss_digitaldruck, $wtvzuschusspapier, $papierkosten] = getPrintDIGIPlanoFa22($what, $papiersorte_grammatur, $papiersorte_value, $auflage, $druckfarben_inhalt, $breite_offen, $hoehe_offen, $sortenzahl, $papiersorte_sammelform, $anzblattjeblock, $wtvzuschusspapier);

    [$preisaend, $onlinerabatt_betrag, $aktionsrabatt_betrag, $kundengruppenrabatt_betrag, $provisions_betrag, $produktionszeit_betrag, $qualitaet_betrag] = getZUABPlanoDigiFA22($what, $auflage, $eigenkosten_digitaldruck+$eigenkosten_prepress+$wtveigenkosten, $fremdkosten_digitaldruck+$wtvfremdkosten, $papiersorte_sammelform, $druckfarben_inhalt, $produktionszeit, $qualitaet, $sortenzahl, $breite_offen, $hoehe_offen, $provisionsart, $provisionswert, $aktionsrabatt, $kundengruppenrabatt, $onlinerabatt);

    $endpreisnetto = $eigenkosten_prepress + $eigenkosten_digitaldruck + $papierkosten + $fremdkosten_digitaldruck + $wtveigenkosten + $wtvfremdkosten + $wtvfrachtkosten;

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

    return [$endpreisnetto, $onlinerabatt_betrag, $kundengruppenrabatt_betrag, $aktionsrabatt_betrag, $versandgewicht, $nettobg, $zuschuss_digitaldruck, $drucknutzen, $Druckbogenbreite, $Druckbogenhoehe, $DruckbgRaender, $preisaend, $provisions_betrag, $produktionszeit_betrag, $qualitaet_betrag];

}

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 getPrePressPlanoFa21($what, $dateiformat_geliefert, $korrekturabzug, $umweltzeichen, $sortenzahl, $druckfarben_inhalt, $breite_offen, $hoehe_offen) {

    //Parameter
    $Pstundensatz_vorstufe = 70;
    $Pplano_fa_aufpreis_anderes_dateiformat = 25;
    $Pumweltzeichen_fsc = 15;
    $Pumweltzeichen_blauerengel = 335;
    $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_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));
    }

    $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");
        echo('$datenuebernahme_kosten: '.round($datenuebernahme_kosten,2)."\n");
        echo('$dateiformat_kosten: '.$dateiformat_kosten."\n");
        echo('$umweltzeichen_kosten: '.$umweltzeichen_kosten."\n");
        echo('$korrekturabzug_kosten: '.round($korrekturabzug_kosten,2)."\n\n");
    }

    return $eigenkosten;
}

function getPrintPlanoFa21($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) {

    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;
    $Druckfarbenpreis = 1.2; // Preisfaktor für Fremdkosten
    $rabattierfaehigekosten = 0;
    // war + 0.4 - evtl. nur +0.3 für nicht gestanzt/perf./ ...   sonst +1.2 ??? !!!
    $hoehe_offen += 0.3;
    $breite_offen += 0.3;
    $kostenDruckplatte = 18;
    $Paufpreis_drucklack_matt_voll = 10;
    $Paufpreis_drucklack_matt_partiell = 30;
    $Paufpreis_drucklack_glzd_voll = 55;
    $Paufpreis_drucklack_glzd_partiell = 95;
    $farbarray = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt);
    $anzahlDruckfarben = $farbarray[0];
    $bedruckteSeiten = $farbarray[1];

    $sammelarray = getSammelformWertePlanoFa21($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $bedruckteSeiten, $sortenzahl);
    $sammelfaktor_papier = $sammelarray[2];
    $sammelwahrscheinlichkeit_menge = $sammelarray[1];
    $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];

    $formate=array();

    if($papierType1) {
        $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 0);
    }
    if($papierType1 && $papier_vs_rs_unterschiedlich == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $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 == 0) {
        $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 1);
    }


    foreach($formate as $key => $format) {
        $greiferRand = getGreiferRand($format);
        $bogenRaender = getBogenRaender($format);

        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))))
                            );

        }else{
            $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);

        }

        if($nutzen_calc < 1){
            $nutzen_calc = 0.001;   // 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']);

        if($maschine1 == "gto") {
            $druckgaenge1 = $bedruckteSeiten*($anzahlDruckfarben+$drucklack);
            $fortdruckmaschine1 = 0;
            $anzahlFarbw1 = getAnzFarbwechselGTO($druckfarben_inhalt);
            $stundensatz1 = 40 + $anzahlFarbw1*5;
            $grundzuschuss = 50;
            $sammelfaktor_druckmaschine = 0.3;
            if($papiersorte_grammatur > 300){$stundensatz1 *= 4;}
        }else{
            $druckgaenge1 = ceil(($anzahlDruckfarben+$drucklack)/5)*$bedruckteSeiten;
            $fortdruckmaschine1 = 2500;
            $anzahlFarbw1 = getAnzFarbwechselMAN($druckfarben_inhalt);
            $stundensatz1 = getMaschineKosten21($format, $anzahlFarbw1);
            $grundzuschuss = 100;
            $sammelfaktor_druckmaschine = 1.0;
        }

        if($nutzen_calc/$sortenzahl < $bedruckteSeiten) {
            $passtdrauf1 = FALSE;
            $sortenaufschlag1 = ($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;
            $sortenaufschlag1 = ($sortenzahl-1)*(10+$breite_offen*$hoehe_offen/30);
            $zuschussfaktor1 = 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));

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

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

        $druckzeit_farbw1 = ($anzahlFarbw1*45/60);
        $druckzeitruesten1 = (20*$druckgaenge1/60)+($ctp1*5/60)+$druckzeit_farbw1;
        $druckzeitfortdruck1 = (($zuschuss1+$nettobg1)/$druckgeschwindigkeit1*$druckgaenge1);
        $druckzeittotal1 = $druckzeitruesten1 + $druckzeitfortdruck1;

        $druckkosten1 = $druckzeittotal1 * $stundensatz1;

        $papierwert1 = ($format['hoehe'] * $format['breite'] * $papiersorte_grammatur * $papiersorte_value / 1000000000);
        $nettobgkosten1 = $papierwert1 * $nettobg1;
        $zuschusskosten1 = $papierwert1 * $zuschuss1;
        $papierkosten1 = $nettobgkosten1 + $zuschusskosten1;

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

        $price_calc = ($papierkosten1)+($kostenDruckplatte*$ctp1)+($druckkosten1)+($sortenaufschlag1);


        if($what=='debug'){
            echo('Umschlagen: '.$format['umschlagen'].' | ');
            echo($format['hoehe'].' x '.$format['breite'].' >>> '.round($price_calc,2).' - '.round($rabattierfaehigekosten1,2).' = '.round(($price_calc-$rabattierfaehigekosten1),2)."\n");
            echo('     mit Nettobg.: '.$nettobg1.' = ('.round($nettobgkosten1,2).' €) + Zuschuss: '.$zuschuss1.' = ('.round($zuschusskosten1,2)." €)\n");
            echo('     mit CTP: '.$ctp1.' | Ntz: '.$nutzen_calc.' | Sammelfak.: '.round($sammelfaktor,2)."\n");
            if(($price_calc - $rabattierfaehigekosten1) < ($price - $rabattierfaehigekosten) && $nettobg1 != 0){
                echo('     >>> günstiger als Vorgänger'."\n\n");
            }
        }

        if(($price_calc - $rabattierfaehigekosten1) < ($price - $rabattierfaehigekosten) && $nettobg1 != 0) {
            $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;
        }
    }

    // zurückkorrigieren für ZUAB-Formel
    $rabattierfaehigekosten = ($ctp * $kostenDruckplatte) + (($druckzeitruesten - $druckzeit_farbw * 0.75) * $stundensatz) + ($zuschuss * $bogen_hoehe * $bogen_breite * $papiersorte_grammatur * $papiersorte_value / 1000000000);

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

    $zusdruckplatten_kosten = $zusdruckplatten*($stundensatz/60*5+$kostenDruckplatte+20);

    $papieraufschlagfaktor = 1.35-(MIN(($papierkosten/$papiersorte_value*100)/5000,0.2));
    $price -= $papierkosten;
    $papierkosten *= $papieraufschlagfaktor;
    $price += $papierkosten;
    $farbkosten = ($nettobg + $zuschuss) * ($anzahlDruckfarben+$drucklack*6+$anzahlFarbw) * $Druckfarbenpreis * $bedruckteSeiten / 1000;

    $zusfarbwechsel_kosten = $zusfarbwechsel*45*$stundensatz/60;
    $price += $farbkosten + $lackart_kosten + $zusfarbwechsel_kosten + $zusdruckplatten_kosten;
    $eigenkosten = $price - $farbkosten - $papierkosten;
    $fremdkosten = $price - $eigenkosten;

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- PRINT Plano-Fa --------------------'."\n");
        echo($maschine.' = '.$stundensatz.' Euro Std.Satz'."\n");
        echo('Papier: '.$bogen_hoehe.' x '.$bogen_breite.' mit '.$nettobg.' + '.$zuschuss.' = '.($zuschuss+$nettobg).' in '.$nutzen.' Nutzen | ');
        echo("Umschlagen: ".($format['umschlagen'])."\n");
        echo('Geschw.: '.round($druckgeschwindigkeit,2).' | Druckgänge: '.$druckgaenge.' | CTP: '.$ctp.' | Farbw.: '.$anzahlFarbw.' '."\n");
        echo('Druckzeit rüsten: '.round($druckzeitruesten,1).' | Druckzeit Fortdruck: '.round($druckzeitfortdruck,1)."\n");
        if($sortenzahl > 1){echo('Sorten: '.$sortenzahl.' | Sortenaufschlag: '.(round($sortenaufschlag,2)).' |  Passt drauf: ');
            echo (int)$passtdrauf;
            echo("\n");};
        if($zusdruckplatten_kosten != 0){echo('$zusdruckplatten_kosten: '.$zusdruckplatten_kosten."\n");}
        if($zusfarbwechsel_kosten != 0){echo('$zusfarbwechsel_kosten: '.$zusfarbwechsel_kosten."\n");}
        if($lackart_kosten != 0){echo('$lackart_kosten: '.$lackart_kosten."\n");}
        echo('Kosten CTP: '.$ctp*$kostenDruckplatte."\n");
        echo('Druck: '.(round($druckkosten,2))." Euro\n");
        echo('Papier: '.round($papierkosten,2).' Euro | PapierFaktor: '.round($papieraufschlagfaktor,2)."\n");
        echo('$farbkosten: '.round($farbkosten,2)." Euro\n");
        echo('$rabattierfaehigekosten: '.round($rabattierfaehigekosten,2)."\n");
        echo('Gesamte Eigenkosten Print: '.round($eigenkosten,2)."\n");
        echo('Gesamte Fremdkosten Print: '.round($fremdkosten,2)."\n");
        echo('Gesamtkosten Print: '.(round($price,2))." Euro\n\n");
    }

    if($what == 'allarray' || $what == 'debug') {
        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];
    }

    return FALSE;
}

function getWTVPlanoFa21($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, $cito_anstanzung, $verschluss, $durchmesser_klebepkt, $beilage, $nummerierung, $laserstanzung, $ecken_runden, $bohren_lochen, $kaschierung, $kaschierung_anzahl, $frei10fixpreis, $frei10tsdpreis, $frei20fixpreis, $frei20tsdpreis, $musterversand, $absender) {

    //Parameter
    $Pplano_fa_mindpreis_kaschierung = 135;
    $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_fixpreis_ecken_runden = 15;
    $Pplano_fa_tsdpreis_ecken_runden = 16;
    $Pplano_fa_tsdpreis_ecken_runden_nassleimetik = 1.50;
    $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 = 15;
    $Pklebepunkte_lose_pro_tausend = 12;
    $Pklebepunkte_vorkonf_fix = 15;
    $Pklebepunkte_vorkonf_pro_tausend = 47;
    $Phaftstreifen_lose_fix = 15;
    $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_stanzen_fix1 = 35;
    $Pplano_stanzen_fix2 = 97.5;
    $Pplano_stanzen_var1 = 14;
    $Pplano_stanzen_var2 = 37.5;
    $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 = 30;
    $Pstundensatz_wtv_maschinen = 50;
    $Pfaktor_klein_gross_falzung = 2.1;
    $Paufpreis_falzen_altarfalz = 50;
    $Pfalzbruch_ruesten = 10;

    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $rabattierkosten = 0;
    $wtvzuschusspapier = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = $auflage * $papiersorte_grammatur * $hoehe_offen * $breite_offen / 10000000 * 1.1;
    $wtvfrachtpreis = 50 + $wtvfrachtgewicht/500*15;
    $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;

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

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

    //endschneiden + verpacken
    $zeit_endschneiden = (15+(sqrt($auflage*$anzblattjeblock/2)))/60;
    if(($buendeln != 0) && ($falzung == 'nein' || $falzung == 0)){
        $absteckenaufschlag = ceil($auflage / $buendeln) * 0.001;
        $zeit_endschneiden += $absteckenaufschlag;
    }

    $kosten_endschneiden = $zeit_endschneiden*$Pstundensatz_wtv;
    $wtveigenkosten += $kosten_endschneiden;
    $wtvzuschusspapier += (10 + $auflage * 0.002) / $drucknutzen;

    //falzung
    $zeit_falzung = 0;
    $falz_komplex = 1;
    $fakt_falzung = 1;
    if(!($falzung == 'nein' || $falzung == 0)){
        if($falzung > 4 || $stanzung != 0){
            $falz_komplex = 1.5;
        }
        $zeit_falzung = (15+$falzung*$falz_komplex*$Pfalzbruch_ruesten)/60+($auflage/$wtvgeschwindigkeit);
        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;
        }else{
            $fakt_falzung = $Pfaktor_klein_gross_falzung;
            if($falzung > 5){
                $fakt_falzung *= 1.5;
            }
            if($falzung > 6){
                $fakt_falzung *= 1.9;
            }
            if($falzung > 1 && $papiersorte_grammatur > 169){   //wenn Fischer nötig ist
                $wtvfrachtkosten += $wtvfrachtpreis;
            }
        }
        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 * 30) / $drucknutzen;
        if($falzung == 1 && $papiersorte_grammatur > 169){   //wenn nur Morgana nötig ist
            $zeit_falzung = 0;

        }
    }
    $kosten_falzung = $zeit_falzung * $fakt_falzung * $Pstundensatz_wtv_maschinen;
    $wtveigenkosten += $kosten_falzung;

    //nuten
    $zeit_nuten = 0;
    if($papiersorte_grammatur > 169 && (!($falzung == 'nein' || $falzung == 0))){
        $zeit_nuten = ( $auflage / 3000 + 0.5 );
        $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) / $drucknutzen;
    }
    $zeit_leimen = $kosten_leimen / $Pstundensatz_wtv;
    $wtveigenkosten += $kosten_leimen;

    //bündeln
    $kosten_buendeln = 0;
    $buendelfaktor = 1;
    if($hoehe_geschl > 29.7 || $breite_geschl > 29.7 || $hoehe_offen > 29.7 || $breite_offen > 29.7){
        $buendelfaktor = 2;
    }
    if($falzung == 'nein' || $falzung == 0){
        $buendelfaktor *= 2;
    }
    if($buendeln != 0){
        $kosten_buendeln = $Pplano_fa_fixpreis_buendeln + $auflage / $buendeln * $Pplano_fa_preis_je_buendel * $buendelfaktor;
    }
    $zeit_buendeln = $kosten_buendeln / $Pstundensatz_wtv;
    $wtveigenkosten += $kosten_buendeln;

    //perforation
    $kosten_perforation = 0;
    $zeit_perforation = 0;
    $kosten_werkzeug_perforation_1N = 15;
    $kosten_werkzeug_perforation = 0;
    $nutzen_perforation = 0;
    $perfmaschine = 'keine';
    if($perforation != 0){
        $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
        $wtvzuschusspapier += ($auflage * 0.01 + 50) / $drucknutzen;
        if(($breite_offen > 33 || $hoehe_offen > 33) || ($breite_offen > 23 && $hoehe_offen > 23)){
            $kosten_perforation = $Pplano_stanzen_fix2 + $auflage * $Pplano_stanzen_var2 / 1000;
            $perfmaschine = "zylinder";
        }else{
            $kosten_perforation = $Pplano_stanzen_fix1 + $auflage * $Pplano_stanzen_var1 / 1000;
            $perfmaschine = "tiegel";
        }
        $kosten_perforieren_fix = $Pplano_stanzen_fix2;
        $kosten_perforieren_var = $Pplano_stanzen_var2;
        $perfmaschine_temp = "zylinder";
        for ($ntz = 1; $ntz <= $maxnutzenanzZylinder; $ntz++){
            $kosten_perf_temp = $kosten_perforieren_fix + $auflage * $kosten_perforieren_var / 1000 / $ntz + $kosten_werkzeug_perforation_1N * $ntz;
            if($kosten_perf_temp < $kosten_perforation){
                $kosten_perforation = $kosten_perf_temp;
                $nutzen_perforation = $ntz;
                $kosten_werkzeug_perforation = $kosten_werkzeug_perforation_1N * $ntz;
                $perfmaschine = $perfmaschine_temp;
            }
        }
        $kosten_perforieren_fix = $Pplano_stanzen_fix1;
        $kosten_perforieren_var = $Pplano_stanzen_var1;
        $perfmaschine_temp = "tiegel";
        for ($ntz = 1; $ntz <= $maxnutzenanzTiegel; $ntz++){
            $kosten_perf_temp = $kosten_perforieren_fix + $auflage * $kosten_perforieren_var / 1000 / $ntz + $kosten_werkzeug_perforation_1N * $ntz;
            if($kosten_perf_temp < $kosten_perforation){
                $kosten_perforation = $kosten_perf_temp;
                $nutzen_perforation = $ntz;
                $kosten_werkzeug_perforation = $kosten_werkzeug_perforation_1N * $ntz;
                $perfmaschine = $perfmaschine_temp;
            }
        }
    }
    $zeit_perforation = $kosten_perforation / $Pstundensatz_wtv_maschinen;
    $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
    $kosten_stanzung = 0;
    $zeit_stanzung = 0;
    $kosten_werkzeug_stanzung_1N = 0;
    $kosten_werkzeug_stanzung = 0;
    $nutzen_stanzung = 1;
    $stanzmaschine = 'keine';
    if($stanzung != 0 && $stanzung != 99){
        $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
        $wtvzuschusspapier += ($auflage * 0.01 + 50) / $drucknutzen;
        $kosten_werkzeug_stanzung_1N = sqrt($breite_offen*$hoehe_offen)*2+85;
        if(($breite_offen > 33 || $hoehe_offen > 33) || ($breite_offen > 23 && $hoehe_offen > 23)){
            $kosten_stanzung = $Pplano_stanzen_fix2 + $auflage * $Pplano_stanzen_var2 / 1000;
            $stanzmaschine = "zylinder";
            if($stanzung == 2){
                $kosten_stanzung += $kosten_werkzeug_stanzung_1N;
            }
        }else{
            $kosten_stanzung = $Pplano_stanzen_fix1 + $auflage * $Pplano_stanzen_var1 / 1000;
            $stanzmaschine = "tiegel";
                if($stanzung == 2){
                    $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;
            }
        }
    }

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

    $zeit_stanzung = $kosten_stanzung / $Pstundensatz_wtv_maschinen;
    $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
    $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 = 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 = 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;
    $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
    $kosten_eckenrunden = 0;
    if($ecken_runden == 3 || $ecken_runden == 5){
        $kosten_eckenrunden = 1/$grammaturfaktor_geschw_wtv * $auflage*$anzblattjeblock*$Pplano_fa_tsdpreis_ecken_runden/1000+$Pplano_fa_fixpreis_ecken_runden;
    }
    if($ecken_runden == 99){
        $kosten_eckenrunden = 1/$grammaturfaktor_geschw_wtv * $auflage*$Pplano_fa_tsdpreis_ecken_runden_nassleimetik/1000+$Pplano_fa_fixpreis_ecken_runden;
    }
    $zeit_eckenrunden = $kosten_eckenrunden / $Pstundensatz_wtv;
    $wtveigenkosten += $kosten_eckenrunden;

    //bohren, lochen
    $kosten_bohren_lochen = 0;
    if($bohren_lochen != 0){
        $bohrformatliste = array(array(0.1,2),array(5,1.5),array(10,1.2),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 *= 2;
        }
        if(!($falzung == 'nein' || $falzung == 0)){
            $bohraufschlag *= 2;
        }
        if(($bohren_lochen == 2) && ($bohraufschlag == 1)){$bohren_lochen = 1;}  //für DIN A4 2-fach Sonderpreis
        $kosten_bohren_lochen = $bohraufschlag * ($Pplano_fa_fixpreis_bohren + 1/$grammaturfaktor_geschw_wtv * $auflage*$anzblattjeblock/1000*$bohren_lochen*$Pplano_fa_tsdpreis_bohren);
    }
    $zeit_bohren_lochen = $kosten_bohren_lochen / $Pstundensatz_wtv;
    $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($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 = $hfs_durchlaeufe * 2;
            $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;

        $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;
        }
        $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");
        echo('$kosten_endschneiden: '.round($kosten_endschneiden,2).' | $zeit_endschneiden: '.round($zeit_endschneiden,2)."\n");
        if($kosten_falzung != 0){echo('$kosten_falzung: '.round($kosten_falzung,2).' | $zeit_falzung: '.round($zeit_falzung,2)."\n");
        echo('$fakt_falzung: '.$fakt_falzung.' | $falz_komplex : '.$falz_komplex ."\n");
        }
        if($kosten_nuten != 0){echo('$kosten_nuten: '.round($kosten_nuten,2).' | '.'$zeit_nuten: '.round($zeit_nuten,2)."\n");}
        if($kosten_leimen != 0){echo('$kosten_leimen: '.round($kosten_leimen,2).' | '.'$zeit_leimen: '.round($zeit_leimen,2)."\n");}
        if($kosten_buendeln != 0){echo('$kosten_bündeln: '.round($kosten_buendeln,2).' | '.'$zeit_bündeln: '.round($zeit_buendeln,2)."\n");}
        if($kosten_perforation != 0){echo('$kosten_perforation: '.round($kosten_perforation,2).' | '.'$zeit_perforation: '.round($zeit_perforation,2)."\n".'$kosten_werkzeug_perfo: '.round($kosten_werkzeug_perforation,2)."\n".'Nutzen Perfo: '.round($nutzen_perforation,2).' | '.'$zeit_perfo: '.round($zeit_perforation,2).' | '.'Perfo.maschine: '.$perfmaschine."\n");}
        if($kosten_duftdruck != 0){echo('$kosten_duftdruck: '.round($kosten_duftdruck,2).' | '.'$zeit_duftdruck: '.round($zeit_duftdruck,2)."\n");}
        if($kosten_oesen != 0){echo('$kosten_oesen: '.round($kosten_oesen,2).' | '.'$zeit_oesen: '.round($zeit_oesen,2)."\n");}
        if($kosten_praegung != 0){echo('$kosten_praegung: '.round($kosten_praegung,2).' | '.'$kosten_werkzeug_praegung: '.round($kosten_werkzeug_praegung,2).' | '.'Gesamtosten_praegung: '.round(($kosten_praegung+$kosten_werkzeug_praegung),2).' | '.'$zeit_praegung: '.round($zeit_praegung,2)."\n");}
        if($kosten_stanzung != 0){echo('$kosten_stanzung (ggf. inkl. Werkzeug): '.round($kosten_stanzung,2).' | '.'$kosten_werkzeug_stanzung: '.round($kosten_werkzeug_stanzung,2)."\n".'Nutzen Stanzung: '.round($nutzen_stanzung,2).' | '.'$zeit_stanzung: '.round($zeit_stanzung,2).' | '.'Stanzmaschine: '.$stanzmaschine."\n");}
        if($kosten_cito != 0){echo('$kosten_cito: '.round($kosten_cito,2).' | '.'$zeit_cito: '.round($zeit_cito,2).' | '.'$ntz_cito: '.round($ntz_cito,2)."\n");}
        if($kosten_verschluss != 0){echo('$kosten_verschluss: '.round($kosten_verschluss,2).' | '.'$zeit_verschluss: '.round($zeit_verschluss,2)."\n");}
        if($kosten_beilage != 0){echo('$kosten_beilage: '.round($kosten_beilage,2).' | '.'$zeit_beilage: '.round($zeit_beilage,2)."\n");}
        if($kosten_nummerierung != 0){echo('$kosten_nummerierung: '.round($kosten_nummerierung,2).' | '.'$zeit_nummerierung: '.round($zeit_nummerierung,2)."\n");}
        if($kosten_laserstanzung != 0){echo('$kosten_laserstanzung: '.round($kosten_laserstanzung,2).' | '.'$zeit_laserstanzung: '.round($zeit_laserstanzung,2)."\n");}
        if($kosten_eckenrunden != 0){echo('$kosten_eckenrunden: '.round($kosten_eckenrunden,2).' | '.'$zeit_eckenrunden: '.round($zeit_eckenrunden,2)."\n");}
        if($kosten_bohren_lochen != 0){echo('$kosten_bohren_lochen: '.round($kosten_bohren_lochen,2).' | '.'$zeit_bohren_lochen: '.round($zeit_bohren_lochen,2).' | $bohraufschlag: '.$bohraufschlag."\n");}
        if($kosten_kaschierung != 0){echo('$kosten_kaschierung: '.round($kosten_kaschierung,2).' | '.'$zeit_kaschierung: '.round($zeit_kaschierung,2)."\n");}
        if($kosten_loseblatt != 0){echo('$kosten_loseblatt: '.round($kosten_loseblatt,2).' | '.'$zeit_loseblatt: '.round($zeit_loseblatt,2)."\n");}
        echo('$wtvzuschusspapier_kosten: '.round($wtvzuschusspapier_kosten,2).' | $wtvzuschusspapier: '.round($wtvzuschusspapier,2)."\n");
        echo('----------------------------------------'."\n");
        echo('$wtvfrachtkosten: '.round($wtvfrachtkosten,2)."\n");
        echo('$wtveigenkosten: '.round($wtveigenkosten,2)."\n");
        echo('$wtvfremdkosten: '.round($wtvfremdkosten,2)."\n\n");
    }

    if($what == 'allarray' || $what == 'debug') {
        return [$wtveigenkosten, $wtvfremdkosten, $wtvfrachtkosten, $wtvzuschusspapier_kosten, $wtvzuschusspapier, $nutzen_stanzung];
    }

    return FALSE;

}

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

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

    //Sammelform
    $bedruckteSeiten = getAnzDruckfarbenBedruckteSeiten21($druckfarben_inhalt)[1];
    $zuab_gesamtkosten = $zuab_eigenkosten + $zuab_fremdkosten;

    $sammelarray = getSammelformWertePlanoFa21($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $bedruckteSeiten, $sortenzahl);
    $sammelfaktor_papier = $sammelarray[2];
    $sammelwahrscheinlichkeit_menge = $sammelarray[1];
    $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];


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

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

    $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))) && ($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
    if($zuab_gesamtkosten+$preisaenderung < 65){
        $preisaenderung = (-1 * $zuab_gesamtkosten) + 65 + ($preisaenderung / 100);
    }


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


    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- Zu-/Abschläge Plano-Fa --------------------'."\n");
        echo('$zuab_gesamtkosten: '.round($zuab_gesamtkosten,2)."\n");
        echo('$rabattierfaehigekosten:. '.round($rabattierfaehigekosten,2)."\n");
        echo('$sammelfaktor_papier: '.round($sammelfaktor_papier,2)."\n");
        echo('$sammelwahrscheinlichkeit_format_sorten: '.round($sammelwahrscheinlichkeit_format_sorten,4)."\n");
        echo('$sammelwahrscheinlichkeit_menge: '.round($sammelwahrscheinlichkeit_menge,4)."\n");
        echo('$sammelfaktor: '.round($sammelfaktor,4)."\n");
        echo('$sammelformreduktion: '.round($sammelformreduktion,2)."\n");
        echo("Qualität: ".  $qualitaet_fix.' | '.$qualitaet_proz." = ".round($qualitaet_zuab,2)."\n");
        echo("Produktionszeit: ".$zeitwert_fix.' | '.$zeitwert_proz." = ".round($zeit_zuab,2)."\n");
        echo('Provision: '.round($provisionswert,2).' | '.round($provision_zuschlag,2)."\n");
        echo('Gesamtpreis: '.round($zuab_gesamtkosten+$preisaenderung,2)."\n");
        echo('$preisaenderung total: '.round($preisaenderung,2)."\n\n");
    }

    return $preisaenderung;
}

function getSammelformWertePlanoFa21($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform, $anzahlSeiten, $sortenzahl){
    // (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,50,50);

    $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(500,98),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));
    foreach($mengenliste as $n){
        if($auflage >= $n[0]){
            $sammelwahrscheinlichkeit_menge = $n[1]/100;
        }
    }

    // bis 14.10.22 $formatliste = array(array(1,99),array(155,97),array(310,95),array(623,90),array(900,80),array(1247,75),array(1400,65),array(1600,60),array(1800,55),array(2494,50),array(3100,35),array(3300,27),array(3600,20),array(4989,10),array(5100,0));
    $formatliste = array(array(1,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,0));
    foreach($formatliste as $n){
        if($anzahlSeiten*$sortenzahl*$breite_offen*$hoehe_offen >= $n[0]){
            $sammelwahrscheinlichkeit_format_sorten = $n[1]/100;
        }
    }

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

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

    //Parameter
    $Pstundensatz_vorstufe = 70;
    $Pbro_aufpreis_anderes_dateiformat = 30;
    $Pumweltzeichen_fsc = 15;
    $Pumweltzeichen_blauerengel = 335;
    $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_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));
    }

    $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");
        echo('$datenuebernahme_kosten: '.round($datenuebernahme_kosten,2)."\n");
        echo('$dateiformat_kosten: '.round($dateiformat_kosten,2)."\n");
        echo('$umweltzeichen_kosten: '.round($umweltzeichen_kosten,2)."\n");
        echo('$korrekturabzug_kosten: '.round($korrekturabzug_kosten,2)."\n\n");
    }

    return $eigenkosten;
}

function getPrintBRO21($what, $auflage, $breite_geschlossen, $hoehe_geschlossen, $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)

    $price_inhalt = 9999999999;
    $nutzen_inhalt = 9999999999;
    $nettobg_inhalt = 9999999999;
    $zuschuss_inhalt = 9999999999;
    $druckbogen_hoehe_inhalt = 1000;
    $druckbogen_breite_inhalt = 1000;
    $ctp_inhalt = 999999999;

    $stundensatz = 99999999;
    $maschine = 'man';
    $anzahlFarbw = 999;
    $passtdrauf = 0;
    $sortenaufschlag = 999999;
    $zuschussfaktor = 9;
    $druckkosten = 999999;
    $papierkosten = 999999;
    $druckzeittotal = 999999;
    $druckzeitruesten = 999999;
    $druckzeitfortdruck = 999;
    $wtvgeschwindigkeit = 999;
    $Druckfarbenpreis = 1.2; // Preisfaktor für Fremdkosten
    $rabattierfaehigekosten = 0;

    $kostenDruckplatte = 18;
    $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
    // $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(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));
    $beschnitt_horiz = $beschnittliste_hor_vert[$weiterverarbeitung-1][0];
    $beschnitt_vert = $beschnittliste_hor_vert[$weiterverarbeitung-1][1];
    $format_offen_breite = $breite_geschlossen * 2 + $beschnitt_horiz;
    $format_offen_hoehe = $hoehe_geschlossen + $beschnitt_vert;

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

    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;
    }

    /*
    // Test ob UM = INH
    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;
    }
    */


    // 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 = (2500+(log10($auflage*$auflage)*900)*(100-sqrt((150-$papier_inhalt_grammatur)*(150-$papier_inhalt_grammatur))/3.6)/100);

    $formate=array();
    if($papier_inhalt_papiertyp1) {
        $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'seiten' => 4);
    }
    if($papier_inhalt_papiertyp1 && ($weiterverarbeitung == 2 || $weiterverarbeitung == 3 || $weiterverarbeitung == 6)) {
        $formate[] = array('type' => 2, 'breite' => 88, 'hoehe' => 63, 'seiten' => 2);
    }

    if($papier_inhalt_papiertyp2) {
        $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'seiten' => 4);
    }
    if($papier_inhalt_papiertyp2 && ($weiterverarbeitung == 2 || $weiterverarbeitung == 3 || $weiterverarbeitung == 6)) {
        $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'seiten' => 2);
    }

    if($papier_inhalt_papiertyp3) {
        $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'seiten' => 4);
    }
    if($papier_inhalt_papiertyp3 && ($weiterverarbeitung == 2 || $weiterverarbeitung == 3 || $weiterverarbeitung == 6)) {
        $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'seiten' => 2);
    }

    if($papier_inhalt_papiertyp4) {
        $formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'seiten' => 4);
    }
    if($papier_inhalt_papiertyp4 && ($weiterverarbeitung == 2 || $weiterverarbeitung == 3 || $weiterverarbeitung == 6)) {
        $formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'seiten' => 2);
    }

    if($papier_inhalt_papiertyp14) {
        $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'seiten' => 4);
    }
    if($papier_inhalt_papiertyp14 && ($weiterverarbeitung == 2 || $weiterverarbeitung == 3 || $weiterverarbeitung == 6)) {
        $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'seiten' => 2);
    }

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

        if($format['seiten'] == 4) {
            $calc1=floor(($format['breite']-$DruckbogenRaender_horiz)/$format_offen_breite)*floor(($format['hoehe']-$DruckbogenRaender_vert)/$format_offen_hoehe)*2;
            $calc2=floor(($format['breite']-$DruckbogenRaender_horiz)/$format_offen_hoehe)*floor(($format['hoehe']-$DruckbogenRaender_vert)/$format_offen_breite)*2;
        }else{
            $calc1=floor((($format['breite']-$DruckbogenRaender_horiz)/($format_offen_breite/2)))*floor((($format['hoehe']-$DruckbogenRaender_vert))/$format_offen_hoehe);
            $calc2=floor((($format['breite']-$DruckbogenRaender_horiz)/($format_offen_hoehe/2)))*floor((($format['hoehe']-$DruckbogenRaender_vert))/$format_offen_breite);
        }

        $stundensatz_druckmaschine1 = getMaschineKosten21($format, $anzahlFarbwechsel_inhalt);

        $nutzen_inhalt_calc = ($calc1 > $calc2)? $calc1: $calc2;

        $PapierkostenJeFalzbg = $format_offen_breite * $format_offen_hoehe * $papier_inhalt_grammatur * $papier_inhalt_value / 1000000000 * $auflage;
        $RuestkostenJeDruckform = $anzahlDruckfarben_inhalt * ($kostenDruckplatte + ($stundensatz_druckmaschine1 * 4.5 / 60));
        $PapierkostenZuschuss = $anzahlDruckfarben_inhalt * (80 * $format['hoehe']*$format['breite']*$papier_inhalt_grammatur*$papier_inhalt_value/1000000000);

        if($inhaltidentisch == '0'){
            if($what=='debug'){
                echo('Berechnung CTP für '.$format['breite'].' x '.$format['hoehe'].": \n");
                echo('PapierkostenJeFalzbg: '.round($PapierkostenJeFalzbg,2).' | RüstkostenJeDruckform: '.round($RuestkostenJeDruckform,2).' | PapierkostenZuschuss: '.round($PapierkostenZuschuss,2)."\n");
                echo('Nutzen_Inhalt/2 = Falzbg. je Druckoberfläche: '.($nutzen_inhalt_calc/2)."\n");
            }
            $ctparray1 = getCTPBRO21($what, $nutzen_inhalt_calc/2, $seiten_inhalt/$format['seiten'], $bedruckteSeiten_inhalt, $PapierkostenJeFalzbg, $RuestkostenJeDruckform, $PapierkostenZuschuss);
            $ctp_inhalt1 = ($ctparray1[0]+$ctparray1[1])*$anzahlDruckfarben_inhalt+$drucklack_inhalt;
        }else{
            $ctp_inhalt1 = $bedruckteSeiten_inhalt*$anzahlDruckfarben_inhalt+$drucklack_inhalt;
        }

        $rabattierfaehigeKostenLeerFalzBogen1 = $ctparray1[3] * $PapierkostenJeFalzbg;

        $zuschuss_inhalt1 = max(200,100+($ctp_inhalt1*80)+($anzahlFarbwechsel_inhalt*100)+(($seiten_inhalt/($nutzen_inhalt_calc*2)*$anzahlDruckJeForm_inhalt)*$auflage*0.03));

        $nettobg_inhalt1 = ($seiten_inhalt + $ctparray1[3]*4) / $nutzen_inhalt_calc * $auflage/2;

        $druckzeitruesten1 = ((30*$anzahlDruckJeForm_inhalt)+($ctp_inhalt1*4.5)+($anzahlFarbwechsel_inhalt*45))/60;

        $druckzeitfortdruck1 = ($zuschuss_inhalt1+$nettobg_inhalt1)/$druckgeschwindigkeit_inhalt*$anzahlDruckJeForm_inhalt*$bedruckteSeiten_inhalt + $ctparray1[1]*0.15;

        $papierkosten_inhalt1 = (($nettobg_inhalt1+$zuschuss_inhalt1)*$format['hoehe']*$format['breite']*$papier_inhalt_grammatur*$papier_inhalt_value/1000000000);

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

        if($price_inhalt_calc < $price_inhalt && $nutzen_inhalt > 0) {
            $price_inhalt = $price_inhalt_calc;
            $nutzen_inhalt = $nutzen_inhalt_calc;
            $ctp_inhalt = $ctp_inhalt1;
            $zuschuss_inhalt = ceil($zuschuss_inhalt1);
            $nettobg_inhalt = ceil($nettobg_inhalt1);
            $druckbogen_hoehe_inhalt = $format['hoehe'];
            $druckbogen_breite_inhalt = $format['breite'];
            $druckzeitruesten_inhalt = $druckzeitruesten1;
            $druckzeitfortdruck_inhalt = $druckzeitfortdruck1;
            $druckzeittotal_inhalt = $druckzeitruesten + $druckzeitfortdruck;
            $papierkosten_inhalt = $papierkosten_inhalt1;
            $stundensatz_druckmaschine_inhalt = $stundensatz_druckmaschine1;
            $maschine_inhalt = "man";
            $rabattierfaehigeKostenLeerFalzBogen = $rabattierfaehigeKostenLeerFalzBogen1;
        }
    }

    $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.35-(MIN(($papierkosten_inhalt/$papier_inhalt_value*100)/5000,0.2));
    $price_inhalt -= $papierkosten_inhalt;
    $papierkosten_inhalt *= $papieraufschlagfaktor_inhalt;
    $price_inhalt += $papierkosten_inhalt;

    $farbkosten_inhalt = ($nettobg_inhalt + $zuschuss_inhalt) * ($anzahlDruckfarben_inhalt+$drucklack_inhalt*6+$anzahlFarbwechsel_inhalt) * $Druckfarbenpreis * $bedruckteSeiten_inhalt / 1000;

    $price_inhalt += $farbkosten_inhalt + $lackart_kosten_inhalt;
    $eigenkosten_inhalt = $price_inhalt - $farbkosten_inhalt - $papierkosten_inhalt;
    $fremdkosten_inhalt = $price_inhalt - $eigenkosten_inhalt;
    $rabattierfaehigekosten_inhalt = $rabattierfaehigeKostenLeerFalzBogen; // ??? Besser mit Restbogenwerten + Zuschpapierkosten?


    // Einzelwerte ausgeben
    if($what=='debug'){
        echo('-------------------- PRINT BRO INHALT --------------------'."\n");
        echo('Papier: '.$druckbogen_hoehe_inhalt.' x '.$druckbogen_breite_inhalt.' mit '.$nettobg_inhalt.' + '.$zuschuss_inhalt.' = '.($zuschuss_inhalt+$nettobg_inhalt).' Bogen zu '.$nutzen_inhalt." Nutzen \n");
        echo('offenes Format: '.round($format_offen_breite,2).' x '.round($format_offen_hoehe,2)." cm \n");
        echo('Geschw.: '.round($druckgeschwindigkeit_inhalt,0).' | Druckgänge: '.$anzahlDruckJeForm_inhalt.' | CTP: '.$ctp_inhalt.' | Farbw.: '.$anzahlFarbwechsel_inhalt.' '."\n");
        echo('Zeit Rüsten: '.round($druckzeitruesten_inhalt,1).' | Fortdruck: '.round($druckzeitfortdruck_inhalt,1)."\n");
        echo('$lackart_kosten: '.round($lackart_kosten_inhalt,2)."\n");
        echo('Papier: '.round($papierkosten_inhalt,2).' Euro | PapierFaktor: '.round($papieraufschlagfaktor_inhalt,2)."\n");
        echo('$farbkosten: '.round($farbkosten_inhalt,2)." Euro\n");
        echo('$rabattierfaehigekosten_inhalt: '.round($rabattierfaehigekosten_inhalt,2)."\n");
        echo('$rabattierfaehigeKostenLeerFalzBogen: '.round($rabattierfaehigeKostenLeerFalzBogen,2)."\n");
        echo('Eigenkosten: '.round($eigenkosten_inhalt,2)."\n");
        echo('Fremdkosten: '.round($fremdkosten_inhalt,2)."\n\n");
    }

    // Umschlag

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

    if($seiten_umschlag > 0){
        $printarray_umschlag = getPrintPlanoFa21('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 + $buchruecken - 0.4, $format_offen_hoehe - 0.4, $drucklack_umschlag, $papier_umschlag_vs_rs_unterschiedlich, $zussorten_umschlag+1, 1, $zusdruckplatten, $zusfarbwechsel, $lackart_umschlag, $papier_umschlag_sammelform);

        $eigenkosten_umschlag = $printarray_umschlag[0];
        $maschine_umschlag = $printarray_umschlag[1];
        $stundensatz_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];
        $zusfarbwechsel_kosten_umschlag = $printarray_umschlag[22];
        $lackart_kosten_umschlag = $printarray_umschlag[23];
        $fremdkosten_umschlag  = $printarray_umschlag[24];
        $rabattierfaehigekosten_umschlag  = $printarray_umschlag[25];

        // Einzelwerte ausgeben
        if($what=='debug'){
            echo('-------------------- PRINT BRO Umschlag --------------------'."\n");
            echo('Papier: '.$druckbogen_hoehe_umschlag.' x '.$druckbogen_breite_umschlag.' mit '.$druckbogen_nettomenge_umschlag.' + '.$druckbogen_zuschussmenge_umschlag.' = '.($druckbogen_zuschussmenge_umschlag+$druckbogen_nettomenge_umschlag).' Bogen zu '.$nutzen_umschlag." Nutzen \n");
            echo('offenes Format: '.round($format_offen_breite+$buchruecken,2).' x '.round($format_offen_hoehe,2)."\n");
            echo('Geschw.: '.round($druckgeschwindigkeit_umschlag,0).' | CTP: '.$ctp_umschlag.' | Farbw.: '.$anzahlFarbw_umschlag.' '."\n");
            echo('Zeit Rüsten: '.round($druckzeitruesten_umschlag,1).' | Fortdruck: '.round($druckzeitfortdruck_umschlag,1)."\n");
            echo('Druckmaschine Umschlag: '.$maschine_umschlag."\n");
            echo('$lackart_kosten: '.round($lackart_kosten_umschlag,2)."\n");
            echo('Papier: '.round($papierkosten_umschlag,2)." Euro\n");
            echo('$farbkosten_umschlag: '.round($farbkosten_umschlag,2)." Euro\n");
            echo('$rabattierfaehigekosten_umschlag: '.round($rabattierfaehigekosten_umschlag,2)."\n");
            echo('Eigenkosten: '.round($eigenkosten_umschlag,2)."\n");
            echo('Fremdkosten: '.round($fremdkosten_umschlag,2)."\n\n");
        }

    }else{
        $eigenkosten_umschlag = $fremdkosten_umschlag = $rabattierfaehigekosten_umschlag = $maschine_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 = 0;
    }

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

    // Einzelwerte ausgeben
    if($what=='debug'){
        echo("\n".'-------------------- BRO PRINT Returnwerte --------------------'."\n");
        echo('EK: '.round($eigenkosten,2)."\n");
        echo('FK: '.round($fremdkosten, 2)."\n");
        echo('Rabattierf. Kosten: '.round($rabattierfaehigekosten_inhalt,2).'+'.round($rabattierfaehigekosten_umschlag,2).'='.round($rabattierfaehigekosten,2)."\n");
        echo('Format offen: '.$format_offen_breite.' x '.$format_offen_hoehe."\n");
        echo('Pappe: '.$bubipappe.' mm | Buchrücken: '.$buchruecken." mm"."\n\n");
        echo('-------------------- BRO PRINT INHALT Returnwerte --------------------'."\n");
        echo('INH: '.$maschine_inhalt.' | CTP: '.$ctp_inhalt.' | Farbw.: '.$anzahlFarbwechsel_inhalt.' | Geschw.: '.round($druckgeschwindigkeit_inhalt,2)."\n");
        echo($druckbogen_hoehe_inhalt.' x '.$druckbogen_breite_inhalt.' mit '.$nutzen_inhalt.' Ntz. = '.$nettobg_inhalt.' + '.$zuschuss_inhalt.' | '.round($papierkosten_inhalt,2).' €'."\n");
        echo('Druckzeit: Rüsten = '.round($druckzeitruesten_inhalt,2).' | Fortdruck = '.round($druckzeitfortdruck_inhalt,2)."\n");
        echo('Kosten Farbe+Lack '.round($farbkosten_inhalt,2). ' + Extra Kosten für Lackart '.round($lackart_kosten_inhalt,2)."\n\n");
        echo('-------------------- BRO PRINT UMSCHLAG Returnwerte --------------------'."\n");
        echo('UM: '.$maschine_umschlag.' | CTP: '.$ctp_umschlag.' | Farbw.: '.$anzahlFarbw_umschlag. ' | Geschw.:'.round($druckgeschwindigkeit_umschlag,2)."\n");
        echo($druckbogen_hoehe_umschlag.' x '.$druckbogen_breite_umschlag.' mit '.$nutzen_umschlag.' Ntz. = '.$druckbogen_nettomenge_umschlag.' + '.$druckbogen_zuschussmenge_umschlag.' | '.round($papierkosten_umschlag,2).' €'."\n");
        echo('Druckzeit: Rüsten = '.round($druckzeitruesten_umschlag,2).' | Fortdruck: '.round($druckzeitfortdruck_umschlag,2)."\n");
        echo('Kosten Farbe+Lack: '.round($farbkosten_umschlag,2).' + Extra Kosten für Lackart: '.round($lackart_kosten_umschlag,2)."\n\n");
    }

    if($what == 'allarray' || $what == 'debug') {
        return [$eigenkosten, $fremdkosten, $rabattierfaehigekosten, $format_offen_breite, $format_offen_hoehe, $bubipappe, $buchruecken,
        $maschine_inhalt, $ctp_inhalt, $anzahlFarbwechsel_inhalt, $druckgeschwindigkeit_inhalt, $druckbogen_hoehe_inhalt, $druckbogen_breite_inhalt, $nutzen_inhalt, $nettobg_inhalt, $zuschuss_inhalt, $papierkosten_inhalt, $druckzeitruesten_inhalt, $druckzeitfortdruck_inhalt, $farbkosten_inhalt, $lackart_kosten_inhalt,
        $maschine_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];
    }

    return FALSE;

}

// Eingabewerte beziehen sich hier immer auf Anz. Falzbogen je Druckoberfläche, nicht auf Seiten o.a.!
function getCTPBRO21($what, $NtzAufDruckbg, $FalzbgAnz, $bedruckteSeiten, $PapierkostenJeFalzbg, $RuestkostenJeDruckform, $PapierkostenZuschuss) {
    $ctp_ganzeBogen = 2*floor(($FalzbgAnz*$bedruckteSeiten/2)/($NtzAufDruckbg));
    $restfalzbg = $FalzbgAnz - ($ctp_ganzeBogen/2*$NtzAufDruckbg);
    $leere_falzbg = 0;
    $ctp_restseiten = 0;
    $maxdurchlaeufe = 5;

    // Prüfen ob Freifläche mit Umschlagen/Umstülpen günstiger wäre
    if(($restfalzbg > 0) && ((floor($NtzAufDruckbg/2) - $restfalzbg) * $PapierkostenJeFalzbg < ($RuestkostenJeDruckform+$PapierkostenZuschuss)) && ($NtzAufDruckbg > $restfalzbg*2) && (floor($NtzAufDruckbg/2) % ($restfalzbg*2) != 0)){
        if($what == 'debug'){
            echo('>>> Freifläche für '.$restfalzbg.' Restfalzbg. als Umschlager/Umstülper günstiger. Papierrest: '.round((floor($NtzAufDruckbg/2) - $restfalzbg) * $PapierkostenJeFalzbg,2)." €\n");
        }
        $leere_falzbg = (floor($NtzAufDruckbg/2) - $restfalzbg);
        $restfalzbg = 0;
        $ctp_restseiten = 1;
    }

    // Prüfen ob Freifläche bei SD+WD günstiger wäre
    if(($restfalzbg > 0) && (($NtzAufDruckbg - $restfalzbg) * $PapierkostenJeFalzbg < ($RuestkostenJeDruckform+$PapierkostenZuschuss)) && ($NtzAufDruckbg > $restfalzbg) && ($NtzAufDruckbg % ($restfalzbg*2) != 0)){
        if($what == 'debug'){
            echo('>>> Freifläche für '.$restfalzbg.' Restfalzbg. im SD+WD günstiger. Papierrest: '.round(($NtzAufDruckbg - $restfalzbg) * $PapierkostenJeFalzbg,2)." €\n");
        }
        $leere_falzbg = $NtzAufDruckbg - $restfalzbg;
        $restfalzbg = 0;
        $ctp_ganzeBogen += 2;
        $ctp_restseiten = 0;
    }

    while(($restfalzbg > 0) && ($maxdurchlaeufe > 0)){
        for($n=$restfalzbg; $n>0; $n--){
            //echo('Schleife: '.$n.' mit '.$restfalzbg.' Restfalzbg.'."\n");
            /*if($NtzAufDruckbg >= $n*2){
                // prüfen ob Freifläche günstiger als weitere Druckform Umschlager / Umstülper wäre

                if(($n - $restfalzbg) * $PapierkostenJeFalzbg < $RuestkostenJeDruckform){
                    if($what == 'debug'){
                        echo($maxdurchlaeufe.' | '.$n.' >>> Leerlassen von '.$restfalzbg.' Falzbg. ist günstiger als neue Druckform für Umschlager/Umstülper: '.$restfalzbg * $PapierkostenJeFalzbg." €\n");
                    }
                    $ctp_restseiten += 1;
                    $leere_falzbg = $n - $restfalzbg;
                    $restfalzbg -= $n;
                    break 2;
                }elseif*/
                if($NtzAufDruckbg % $n == 0){
                    // prüfen, ob Umschlager möglich
                    $ctp_restseiten += 1;
                    $restfalzbg -= $n;
                    if($what == 'debug'){
                        echo($maxdurchlaeufe.' | '.$n.' : Umschlager/Umstülper gefunden: Rest-CTP = '.$ctp_restseiten.' mit '.$n.' Falzgb. | Noch '.$restfalzbg." Restfalzbg.\n");
                    }
                    break;
                }elseif(($NtzAufDruckbg % 3 == 0) && ($NtzAufDruckbg % $n == 0)){
                    // prüfen ob SD+WD möglich
                    $ctp_restseiten += $bedruckteSeiten;
                    $restfalzbg -= $n;
                    if($what == 'debug'){
                        echo($maxdurchlaeufe.' | '.$n.': SD/WD gefunden: Rest-CTP = '.$ctp_restseiten.' bei '.$n.' | Noch '.$restfalzbg." Restfalzbg.\n");
                    }
                    break;
                }

        }
        $maxdurchlaeufe--;

        if(($maxdurchlaeufe == 0) && ($restfalzbg > 0) && ($what == 'debug')){
            echo("\n".'OOOoops: noch '.$ctp_restseiten.' offene Restseiten!'."\n");
            $ctp_restseiten = 999;
        }
    }

    if($what == 'debug'){
        echo('Eingabewerte: '.$NtzAufDruckbg.' Falzbogen auf Druckbogen und '.$FalzbgAnz.' benötigte Falzbogen'."\n");
        echo('Restfalzbogen: '.$restfalzbg."\n");
        echo('Leere Falzbg.: '.$leere_falzbg."\n");
        echo('CTP Ganze Bogen: '.$ctp_ganzeBogen.' + CTP Restbogen = '.$ctp_restseiten."\n".'CTP Summe = '.($ctp_ganzeBogen+$ctp_restseiten)."\n\n");
    }

    return [$ctp_ganzeBogen, $ctp_restseiten, $restfalzbg, $leere_falzbg];

}

function getMaschineKosten21($format, $anzahlFarbwechsel_inhalt) {
    $maschine = getMaschine($format['breite'], $format['hoehe']);

    if($maschine == 'man') {
        return 165 + ($anzahlFarbwechsel_inhalt * 20);
    }

    return 40;
}

function getWTVBRO21($what, $auflage, $breite_geschlossen, $hoehe_geschlossen, $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 = 135;
    $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 = 30;
    $Pstundensatz_wtv_maschinen = 50;

    $wtveigenkosten = 0;
    $wtvfremdkosten = 0;
    $rabattierkosten = 0;
    $wtvzuschusspapier_inhalt = 0;
    $wtvzuschusspapier_umschlag = 0;
    $wtvfrachtkosten = 0;
    $wtvfrachtgewicht = $auflage * $hoehe_geschlossen * $breite_geschlossen * ($seiten_inhalt / 2 * $papier_inhalt_grammatur + $seiten_umschlag / 2 * $papier_umschlag_grammatur) / 10000000 * 1.1;

    $wtvfrachtpreis = 50 + $wtvfrachtgewicht/500*15;

    if($hoehe_geschlossen < 14 || $hoehe_geschlossen < $breite_geschlossen || $seiten_umschlag > 4){
        $wtvgeschwindigkeit_hfs = 1200;
    }else{
        $wtvgeschwindigkeit_hfs = 2200-($seiten_inhalt+$seiten_umschlag)*15;
    }
    if($drucknutzen_inhalt < 1){
        $drucknutzen_inhalt = 1;
    }
    if($drucknutzen_umschlag < 1){
        $drucknutzen_umschlag = 1;
    }
    $anzDruckbg_inhalt = ceil(($seiten_inhalt / 2) / $drucknutzen_inhalt);
    $anzDruckbg_umschlag = ceil(($seiten_umschlag / 2) / $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 = 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;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (30 + $auflage * 0.005);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $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 * (30 + $auflage * 0.005);
    }

    // RDH
    $zeit_rdh = $kosten_rdh = 0;
    if($weiterverarbeitung == '1'){
        if($breite_geschlossen < 25 && $breite_geschlossen >= 9.0 && $hoehe_geschlossen >= 10.5){
            $zeit_rdh = 0.25 + ($seiten_inhalt + $seiten_umschlag)/60 + ($auflage/$wtvgeschwindigkeit_hfs);
        }else{
            $zeit_rdh = (2 + ($seiten_inhalt + $seiten_umschlag)/60 + ($auflage/$wtvgeschwindigkeit_hfs)) * 1.7;
            $wtvfrachtkosten += $wtvfrachtpreis;
        }

        $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 * (30 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.02);
    }

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

        $pur_purarray = array(array(1,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_geschlossen < $hoehe_geschlossen){
            $formatfaktor_pur = 1.0;
        }else{
            $formatfaktor_pur = 1.6;
        }

        $kosten_pur = 1.3 * ($pur_kosten_kleb + $pur_kosten_falzbg ) * $formatfaktor_pur;
        $zeit_pur = 24 * 5;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.02);
        $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($papier_inhalt_grammatur <= 300 && $papier_umschlag_grammatur <= 300 && $hoehe_geschlossen >= 14.8 && $breite_geschlossen >= 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 = $hfs_durchlaeufe * 2;
            $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;

        $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 = 150;
        $fk_wireo_spirale = 0.05 + ceil($hoehe_geschlossen/15)*0.06;
        $fk_wireo_sta = ceil($buchruecken/1.8)*0.15;
        $fk_wireo_binden = 0.20;
        $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.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (50 + $auflage * 0.02);
        $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_geschlossen*$hoehe_geschlossen/10000)+($seiten_inhalt/$drucknutzen_inhalt/30))*$auflage)+800)*1.4;
        $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
    $zeit_hdcover_leinen = $kosten_hdcover_leinen = 0;
    if($weiterverarbeitung == '5'){
        $kosten_hdcover_leinen_fix = 0;
        $kosten_hdcover_leinen_var = (1/log(($auflage+650)/450)*4)+0.4;
        $zeit_hdcover_leinen = 24 * 15;
        $wtvzuschusspapier_inhalt += $anzDruckbg_inhalt * (50 + $auflage * 0.02);
        $wtvfrachtkosten += $wtvfrachtpreis;
        $kosten_hdcover_leinen = ($kosten_hdcover_leinen_fix + $auflage * $kosten_hdcover_leinen_var) * 1.2;
        $wtvfremdkosten += $kosten_hdcover_leinen;
    }

    // WAKAL = Wandkalender
    $zeit_wakal = $kosten_wkal = 0;
    if($weiterverarbeitung == '6'){
        if($breite_geschlossen < 12 || $breite_geschlossen > 43 || $hoehe_geschlossen < 12 || $hoehe_geschlossen > 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_geschlossen,$hoehe_geschlossen])+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;
    }

    // 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.02);
        $wtvzuschusspapier_umschlag += $anzDruckbg_umschlag * (30 + $auflage * 0.02);
        $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;
    $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;
    $wtveigenkosten += $kosten_buendeln;

    //perforation
    $kosten_perforation = 0;
    if($perforation != 0){
        $kosten_perforation = $Pplano_fa_fixpreis_perforation + $auflage/1000*$Pplano_fa_tsdpreis_perforation + $perforation*15;
        $wtvzuschusspapier_inhalt += ($auflage * 0.005 + 30) / $drucknutzen_inhalt;
    }
    $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 += ($auflage * 0.01 + 150) / $drucknutzen_umschlag;
    }
    if($praegung_umschlag == 3){
        $zeit_praegung = 5 * 24;
        $kosten_werkzeug_praegung = 135 + $format_offen_breite * $format_offen_hoehe / 2;
        $kosten_praegung = 380 + 45 * $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 +=($auflage * 0.005 + 30) / $drucknutzen_umschlag;
        $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 += ($auflage * 0.01 + 100) / $drucknutzen_umschlag;
        $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('-------------------- WTV BRO --------------------'."\n");
        echo('$kosten_endschneiden_inhalt: '.round($kosten_endschneiden_inhalt,2).' | $zeit_endschneiden: '.round($zeit_endschneiden_inhalt,2)."\n");
        echo('$kosten_endschneiden_umschlag: '.round($kosten_endschneiden_umschlag,2).' | $zeit_endschneiden: '.round($zeit_endschneiden_umschlag,2)."\n");
        if($kosten_rdh > 0){
            echo('$kosten_rdh (ggf. inkl nuten Umschlag): '.round($kosten_rdh,2).' | $zeit_rdh: '.round($zeit_rdh,2)."\n");
            echo('$wtvgeschwindigkeit_hfs: '.$wtvgeschwindigkeit_hfs."\n");
        }
        if($kosten_pur > 0){
            echo('$kosten_pur: '.round($kosten_pur,2)."\n");
            echo('$pur_kosten_kleb: '.$pur_kosten_kleb.' | $pur_seiten: '.$pur_seiten."\n");
            echo('$pur_falzbg: '.round($pur_falzb,3).' | Falzmenge: '.$auflage * $pur_falzb."\n");
            echo('$pur_kosten_falzbg: '.$pur_kosten_falzbg."\n");
        }
        if($kosten_wireo > 0){
            echo('$kosten_wireo: '.round($kosten_wireo,2)."\n");
            echo('$zeit_loseblatt: '.round($zeit_loseblatt,2).' | $fk_wireo_fix: '.round($fk_wireo_fix,2).' | $fk_wireo_spirale: '.round($fk_wireo_spirale,2).' |  $fk_wireo_sta: '.round($fk_wireo_sta,2).' | $fk_wireo_binden: '.round($fk_wireo_binden,2).' | Buchrücken: '.$buchruecken."\n");
        }
        if($kosten_hdcover > 0){
            echo('$kosten_hdcover: '.round($kosten_hdcover,2)."\n");
        }
        if($kosten_hdcover_leinen > 0){
            echo('LEINEN: ('.$kosten_hdcover_leinen_fix.' + '.$auflage.' x '.round($kosten_hdcover_leinen_var,2).') x 1.2 = '.round($kosten_hdcover_leinen,2)."\n");
        }
        echo("\n");
        if($kosten_registerstanzung > 0){echo('$kosten_registerstanzung: '.round($kosten_registerstanzung,2)."\n");}
        if($kosten_beilage > 0){echo('$kosten_beilage: '.round($kosten_beilage,2)."\n");}
        if($kosten_einschweissen > 0){echo('$kosten_einschweissen: '.round($kosten_einschweissen,2)."\n");}
        if($kosten_buendeln > 0){echo('$kosten_bündeln: '.round($kosten_buendeln,2).' | '.'$zeit_bündeln: '.round($zeit_buendeln,2)."\n");}
        if($kosten_praegung > 0){echo('$kosten_praegung: '.round($kosten_praegung,2).' | $zeit_praegung: '.round($zeit_praegung,2).' | anteilg. Werkzeug: '.round($kosten_werkzeug_praegung,2)."\n");}
        if($kosten_duftdruck > 0){echo('$kosten_duftdruck: '.round($kosten_duftdruck,2)."\n");}
        if($kosten_kaschierung > 0){echo('$kosten_kaschierung: '.round($kosten_kaschierung,2)."\n");}
        if($kosten_perforation > 0){echo('$kosten_perforation: '.round($kosten_perforation,2)."\n");}
        if($kosten_blankomuster > 0){echo('$kosten_blankomuster: '.round($kosten_blankomuster,2)."\n");}
        if($kosten_musterversand > 0){echo('$kosten_musterversand: '.round($kosten_musterversand,2)."\n");}
        if($kosten_absender > 0){echo('$kosten_absender: '.round($kosten_absender,2)."\n");}
        if($kosten_freipos10 > 0){echo('$kosten_freipos10: '.round($kosten_freipos10,2)."\n");}
        if($kosten_freipos20 > 0){echo('$kosten_freipos20: '.round($kosten_freipos20,2)."\n");}
        echo('$wtvzuschusspapier_kosten_inhalt: '.round($wtvzuschusspapier_kosten_inhalt,2).' | $wtvzuschusspapier_inh: '.round($wtvzuschusspapier_inhalt,2)."\n");
        echo('$wtvzuschusspapier_kosten_umschlag: '.round($wtvzuschusspapier_kosten_umschlag,2).' | $wtvzuschusspapier_um: '.round($wtvzuschusspapier_umschlag,2)."\n");
        echo('----------------------------------------'."\n");
        echo('$wtvfrachtkosten: '.round($wtvfrachtkosten,2)."\n");
        echo('$wtveigenkosten: '.round($wtveigenkosten,2)."\n");
        echo('$wtvfremdkosten: '.round($wtvfremdkosten,2)."\n");
    }

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

}

function getZUABBRO21($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, $nutzen_inhalt, $nutzen_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 = getSammelformWertePlanoFa21($auflage, $hoehe_offen, $breite_offen, $papiersorte_sammelform_umschlag, $bedruckteSeiten, $zussorten_umschlag+1);
        $sammelfaktor_papier = $sammelarray[2];
        $sammelwahrscheinlichkeit_menge = $sammelarray[1];
        $sammelwahrscheinlichkeit_format_sorten = $sammelarray[0];


        if(strtolower($druckmaschine_umschlag) == 'gto'){
            $sammelfaktor_druckmaschine = 0.5;
        }else{
            $sammelfaktor_druckmaschine = 1.0;
        }

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

        $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))) && ($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))) && ($papiersorte_sammelform_inhalt != 1)){
        $papierliste_sammelf_inhalt = array(0,-90,-120,-60,-60,-25,-25);
        $sammelformreduktion_inhalt = $papierliste_sammelf_inhalt[$papiersorte_sammelform_inhalt-1]; // + $rabattierfaehigekosten_inhalt; (NICHT verwenden, teils fehlerhafter Abschlag!!!)
        $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(-20,-14),array(0,0),array(35,11));             // bis 6.7.2022 relax (-20,-11) danach geändert !!!???
    $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 != '0'){
        $provision_zuschlag = ($zuab_gesamtkosten+$preisaenderung)/100*$provisionswert;
    }
    $preisaenderung += $provision_zuschlag;


    //Einzelwerte ausgeben
    if($what=='debug'){
        echo("\n".'-------------------- ZUAB BRO --------------------'."\n");
        echo('Eingangswert EK+FK: '.round($zuab_gesamtkosten,2)."\n");
        echo('$sammelfaktor_papier: '.round($sammelfaktor_papier,2)."\n");
        echo('$sammelwahrscheinlichkeit_format_sorten: '.round($sammelwahrscheinlichkeit_format_sorten,4)."\n");
        echo('$sammelwahrscheinlichkeit_menge: '.round($sammelwahrscheinlichkeit_menge,4)."\n");
        echo('$sammelfaktor: '.round($sammelfaktor,4)."\n");
        echo('$sammelformreduktion: '.round($sammelformreduktion_inhalt,2).' + '.round($sammelformreduktion_umschlag,2).' = '.round($sammelformreduktion,2)."\n");
        echo("Qualität: ".  $qualitaet_fix.' | '.$qualitaet_proz." = ".round($qualitaet_zuab,2)."\n");
        echo("Produktionszeit: ".$zeitwert_fix.' | '.$zeitwert_proz." = ".round($zeit_zuab,2)."\n");
        echo('Provision: '.round($provisionswert,2).' | '.round($provision_zuschlag,2)."\n");
        echo('$preisaenderung total: '.round($preisaenderung,2)."\n\n");
    }

    return $preisaenderung;
    }





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







}