From a4673e09a58ef6dadd9c8874d7a845a5856e1ba8 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Wed, 11 Nov 2020 10:06:51 +0100 Subject: [PATCH] Uhl --- src/Calc/CalcValues.php | 1 - src/General/Type/Edge.php | 2 +- src/Option/Type/PaperDbSelect.php | 1 + tests/Customer/I/CalcTest.php | 55 ++ tests/Customer/I/calc.xml | 716 ++++++++++++++++++++++++++ tests/Customer/I/calcTemplates.xml | 163 ++++++ tests/Customer/I/formels.txt | 733 +++++++++++++++++++++++++++ tests/Customer/I/papierContainer.xml | 6 + tests/Customer/I/parameters.txt | 210 ++++++++ tests/Mock/PaperRepostory.php | 14 + 10 files changed, 1899 insertions(+), 2 deletions(-) create mode 100644 tests/Customer/I/CalcTest.php create mode 100644 tests/Customer/I/calc.xml create mode 100644 tests/Customer/I/calcTemplates.xml create mode 100644 tests/Customer/I/formels.txt create mode 100644 tests/Customer/I/papierContainer.xml create mode 100644 tests/Customer/I/parameters.txt diff --git a/src/Calc/CalcValues.php b/src/Calc/CalcValues.php index 35decf1..0b935ff 100644 --- a/src/Calc/CalcValues.php +++ b/src/Calc/CalcValues.php @@ -111,7 +111,6 @@ class CalcValues if ($edge->getCalcValue() != "") { $cv = $this->formelCalc->parse($edge->getCalcValue()); - //echo $id . ' '. $this->formelCalc->parse($edge->getCalcValue()) . ' ' . $cv . ' '. PHP_EOL.PHP_EOL; eval('$cv = ' . $cv . ';'); $this->engine->addCalcVariable($id, $cv); diff --git a/src/General/Type/Edge.php b/src/General/Type/Edge.php index 6dd8390..f6d0695 100644 --- a/src/General/Type/Edge.php +++ b/src/General/Type/Edge.php @@ -354,7 +354,7 @@ class Edge if (is_array($values)) { foreach ($values as $val) { - if (( + if (is_numeric($value) && ( (preg_match("/^([0-9]+)-([0-9]+)$/", trim($val), $regs) && ($value >= $regs[1] && $value <= $regs[2])) || (preg_match("/^([0-9]+)-$/", trim($val), $regs) && $value >= $regs[1]))) { return true; diff --git a/src/Option/Type/PaperDbSelect.php b/src/Option/Type/PaperDbSelect.php index 0abde89..19ce370 100644 --- a/src/Option/Type/PaperDbSelect.php +++ b/src/Option/Type/PaperDbSelect.php @@ -48,6 +48,7 @@ class PaperDbSelect extends Select { /** @var PaperOpt $option */ $option = $this->getSelectedOption(); + if($option == null) { $variables[$this->getId() . '_grammatur'] = 0; diff --git a/tests/Customer/I/CalcTest.php b/tests/Customer/I/CalcTest.php new file mode 100644 index 0000000..b61ecc5 --- /dev/null +++ b/tests/Customer/I/CalcTest.php @@ -0,0 +1,55 @@ +parse(simplexml_load_string(file_get_contents(__DIR__ . '/papierContainer.xml'))); + + $this->engine = new Engine(); + $this->engine->setPaperContainer($paperContainer); + $this->engine->setPaperRepository($repository); + $this->engine->setFormulas(file_get_contents(__DIR__ . '/formels.txt')); + $this->engine->setParameters(file_get_contents(__DIR__ . '/parameters.txt')); + $this->engine->setTemplates(file_get_contents(__DIR__ . '/calcTemplates.xml')); + + $this->engine->loadString(file_get_contents(__DIR__ . '/calc.xml')); + + } + + public function tearDown() + { + $this->engine = null; + } + + public function testIfDefaultPriceIsOk() + { + $this->assertEquals(100.99 , $this->engine->getPrice()); + } + + public function testIf6000PriceIsOk() + { + $this->engine->setVariable('auflage', 6000); + $this->assertEquals(132.05 , $this->engine->getPrice()); + } + + public function testIfDruckfarbenPriceIsOk() + { + $this->engine->setVariable('auflage', 6000); + $this->engine->setVariable('druckfarben_inhalt', 3); + $this->assertEquals(195.45 , $this->engine->getPrice()); + } +} \ No newline at end of file diff --git a/tests/Customer/I/calc.xml b/tests/Customer/I/calc.xml new file mode 100644 index 0000000..f622805 --- /dev/null +++ b/tests/Customer/I/calc.xml @@ -0,0 +1,716 @@ + + + + + Banderolen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/Customer/I/calcTemplates.xml b/tests/Customer/I/calcTemplates.xml new file mode 100644 index 0000000..7b1cdd7 --- /dev/null +++ b/tests/Customer/I/calcTemplates.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Customer/I/formels.txt b/tests/Customer/I/formels.txt new file mode 100644 index 0000000..04d87b1 --- /dev/null +++ b/tests/Customer/I/formels.txt @@ -0,0 +1,733 @@ +$hilfsvalue_abschlag_sammelform_plano = '((($CVhilfsvalue_sammelform_format_auflage$CV/100*75)+($CVhilfsvalue_sammelform_menge_auflage$CV/100*25))/(75+25)*100)'; + +$hilfsvalue_sammelform_format_plano = '(max(0,getSammelformFormatPlano($Vsortenzahl$V*$CVformat_offen_breite_auflage$CV*$CVformat_offen_hoehe_auflage$CV)-(5*abs(1.408-max($CVformat_offen_breite_auflage$CV,$CVformat_offen_hoehe_auflage$CV)/min($CVformat_offen_breite_auflage$CV,$CVformat_offen_hoehe_auflage$CV)))))'; + +if(!function_exists('getSammelformMengenAbschlagPlano')) { + + function getSammelformMengenAbschlagPlano($menge) { + + if($menge < 2500) return 100; + if($menge < 7500) return 90; + if($menge < 10000) return 80; + if($menge < 15000) return 70; + if($menge < 20000) return 60; + if($menge < 35000) return 50; + if($menge < 50000) return 25; + return 1; + } + + function getSammelformFormatPlano($value) { + if($value < 56) return 150; + if($value < 63) return 130; + if($value < 649) return 100; + if($value < 1299) return 90; + if($value < 1999) return 80; + if($value < 2499) return 60; + return 0; + } + + + function getCalcTableValue($what, $papierType1,$papierType2,$papierType3,$papierType4,$papierType5,$papierType6,$papierType7,$papierType8,$papierType9,$papierType10,$papierType11,$papierType12,$papierType13,$papierType14, $kostenDruckplatte, $druckplatteOption, $gammatur, $papierKosten, $weiterVerarbeitung, $seiten, $auflage, $anzahlDruckfarben, $anzahlFarbwechsel, $anzahlDruckJeForm, $format_offen_breite, $format_offen_hoehe, $geiferRand, $bogenRaender) { + + $price = 9999999999; + $nutzen = 9999999999; + $nettobg = 9999999999; + $zuschuss = 9999999999; + $bogen_hoehe = 1000; + $bogen_breite = 1000; + $ctp = 999999999; + + $formate=array(); + if($papierType1) { + $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'seiten' => 4); + } + if($papierType1 && ($weiterVerarbeitung == 3)) { + $formate[] = array('type' => 2, 'breite' => 88, 'hoehe' => 63, 'seiten' => 2); + } + + if($papierType2) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'seiten' => 4); + } + if($papierType2 && ($weiterVerarbeitung == 3)) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'seiten' => 2); + } + + if($papierType3) { + //$formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'seiten' => 4); + } + if($papierType3 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'seiten' => 2); + } + + if($papierType4) { + //$formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'seiten' => 4); + } + if($papierType4 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'seiten' => 2); + } + + if($papierType5) { + //$formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 11.4, 'seiten' => 4); + } + if($papierType5 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 11.4, 'seiten' => 2); + } + + if($papierType6) { + //$formate[] = array('type' => 7, 'breite' => 32.4, 'hoehe' => 22.9, 'seiten' => 4); + } + if($papierType6 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 32.4, 'hoehe' => 22.9, 'seiten' => 2); + } + + if($papierType7) { + //$formate[] = array('type' => 7, 'breite' => 35.3, 'hoehe' => 25, 'seiten' => 4); + } + if($papierType7 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 35.3, 'hoehe' => 25, 'seiten' => 2); + } + + if($papierType8) { + //$formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 16.2, 'seiten' => 4); + } + if($papierType8 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 22.9, 'hoehe' => 16.2, 'seiten' => 2); + } + + if($papierType9) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'seiten' => 4); + } + if($papierType9 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'seiten' => 2); + } + + if($papierType10) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'seiten' => 4); + } + if($papierType10 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'seiten' => 2); + } + + if($papierType11) { + $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'seiten' => 4); + } + if($papierType11 && ($weiterVerarbeitung == 3)) { + $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'seiten' => 2); + } + + if($papierType12) { + //$formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'seiten' => 4); + } + if($papierType12 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'seiten' => 2); + } + + if($papierType13) { + //$formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'seiten' => 4); + } + if($papierType13 && ($weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'seiten' => 2); + } + if($papierType14) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'seiten' => 4); + } + if($papierType14 && ($weiterVerarbeitung == 3)) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'seiten' => 2); + } + + //echo "

"; + + foreach($formate as $key => $format) { + + if($format['seiten'] == 4) { + $calc1=floor((($format['breite']-$bogenRaender)/($format_offen_breite)))*floor((($format['hoehe']-$geiferRand))/$format_offen_hoehe)*2; + $calc2=floor((($format['hoehe']-$bogenRaender)/($format_offen_breite)))*floor((($format['breite']-$geiferRand))/$format_offen_hoehe)*2; + }else{ + $calc1=floor((($format['breite']-$bogenRaender)/($format_offen_breite/2)))*floor((($format['hoehe']-$geiferRand))/$format_offen_hoehe); + $calc2=floor((($format['hoehe']-$bogenRaender)/($format_offen_breite/2)))*floor((($format['breite']-$geiferRand))/$format_offen_hoehe); + } + + $nutzen_calc = ($calc1 > $calc2)? $calc1: $calc2; + + $calc1 = 200; + + $calc2 = ($anzahlDruckJeForm*$anzahlDruckfarben*100*ceil($seiten/($nutzen_calc*2))+($anzahlFarbwechsel*100)+($seiten/($nutzen_calc*2)*$auflage*0.02)); + + $zuschussCalc = ($calc1 > $calc2)? $calc1 : $calc2; + + $nettoBedruckGesamt = $seiten/$nutzen_calc*$auflage/2; + $ctp1 = ceil($seiten/$nutzen_calc)*($anzahlDruckfarben)+$druckplatteOption; + $price_calc = ((($nettoBedruckGesamt+$zuschussCalc)*$format['hoehe']*$format['breite']*$gammatur*$papierKosten/1000000000))+($kostenDruckplatte*$ctp1); + //var_dump($nutzen_calc); + //var_dump($format['hoehe'].'-'.$format['breite'].'-'.$ctp1.'-'.$nettoBedruckGesamt.'-'.$price_calc.'-'.$price); + //echo "
"; + + if($price_calc < $price && $nutzen > 0) { + $price = $price_calc; + $nutzen = $nutzen_calc; + $ctp = $ctp1; + $zuschuss = $zuschussCalc; + $nettobg = $nettoBedruckGesamt; + $bogen_hoehe = $format['hoehe']; + $bogen_breite = $format['breite']; + } + } + + + + + if($what == 'nutzen') { + if($seiten < $nutzen) { + return $seiten; + } + return $nutzen; + } + if($what == 'nettobg') { + return $nettobg; + } + if($what == 'zuschuss') { + return $zuschuss; + } + + if($what == 'bogen_hoehe') { + return $bogen_hoehe; + } + + if($what == 'ctp') { + return $ctp; + } + + if($what == 'bogen_breite') { + return $bogen_breite; + } + return $price; + + } + + + function getCalcTableValueUmschlag($what, $papierType1,$papierType2,$papierType3,$papierType4,$papierType5,$papierType6,$papierType7,$papierType8,$papierType9,$papierType10,$papierType11,$papierType12,$papierType13,$papierType14, $kostenDruckplatte, $druckplatteOption, $gammatur, $papierKosten, $umschlagen, $seiten, $auflage, $anzahlDruckfarben, $anzahlFarbwechsel, $anzahlDruckJeForm, $format_offen_breite, $format_offen_hoehe, $geiferRand, $bogenRaender, $umschlag_seiten_bedruckt) { + + $price = 9999999999; + $nutzen = 9999999999; + $nettobg = 9999999999; + $zuschuss = 9999999999; + $bogen_hoehe = 1000; + $bogen_breite = 1000; + + $formate=array(); + if($papierType1) { + $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 0); + } + if($papierType1 && $umschlagen == 1) { + $formate[] = array('type' => 2, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 1); + } + + if($papierType2) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 0); + } + if($papierType2 && $umschlagen == 1) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 1); + } + + if($papierType3) { + $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 0); + } + if($papierType3 && $umschlagen == 1) { + $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 1); + } + + if($papierType4) { + //$formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'umschlagen' => 0); + } + if($papierType4 && $umschlagen == 1) { + //$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 && $umschlagen == 1) { + //$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 && $umschlagen == 1) { + //$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 && $umschlagen == 1) { + //$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 && $umschlagen == 1) { + //$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 && $umschlagen == 1) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'umschlagen' => 1); + } + + if($papierType10) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 0); + } + if($papierType10 && $umschlagen == 1) { + //$formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 1); + } + + if($papierType11) { + //$formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 0); + } + if($papierType11 && $umschlagen == 1) { + //$formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 1); + } + + if($papierType12) { + //$formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 0); + } + if($papierType12 && $umschlagen == 1) { + //$formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 1); + } + + if($papierType13) { + //$formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 0); + } + if($papierType13 && ($weiterVerarbeitung == 2 || $weiterVerarbeitung == 3)) { + //$formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 1); + } + if($papierType14) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 0); + } + if($papierType14 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 1); + } + + //echo "

"; + + foreach($formate as $key => $format) { + + + if($format['umschlagen'] == 0) { + $calc1=floor((($format['breite']-$bogenRaender)/($format_offen_breite)))*floor((($format['hoehe']-$geiferRand))/$format_offen_hoehe); + $calc2=floor((($format['hoehe']-$bogenRaender)/($format_offen_breite)))*floor((($format['breite']-$geiferRand))/$format_offen_hoehe); + + $ctp1 = $umschlag_seiten_bedruckt*$anzahlDruckfarben+$druckplatteOption; + + }else{ + $calc1=floor((($format['breite']-$bogenRaender)/($format_offen_breite)))*floor((($format['hoehe']-$geiferRand))/$format_offen_hoehe); + $calc2=floor((($format['hoehe']-$bogenRaender)/($format_offen_breite)))*floor((($format['breite']-$geiferRand))/$format_offen_hoehe); + + $ctp1 = $anzahlDruckfarben+$druckplatteOption; + } + + $nutzen_calc = ($calc1 > $calc2)? $calc1: $calc2; + + if($format['umschlagen'] == 1) { + $nutzen_calc = floor($nutzen_calc/2)*2; + } + + if($nutzen_calc == 0) { + continue; + } + + $calc1 = 150; + + $calc2 = ($anzahlDruckJeForm*$anzahlDruckfarben*100)+($auflage/$nutzen_calc*0.02); + + $zuschussCalc = ($calc1 > $calc2)? $calc1 : $calc2; + + //var_dump($nutzen_calc); + + $nettoBedruckGesamt = $auflage/$nutzen_calc; + + $gramGesch = (100-sqrt((150-$gammatur)*(150-$gammatur))/5)/100; + + $fortdruckGeschwindigkeit = 2500+$gramGesch*(log10($auflage*$auflage)*700); + + $kba1 = 140*($zuschussCalc+$nettoBedruckGesamt)/$fortdruckGeschwindigkeit*$umschlag_seiten_bedruckt*(ceil($anzahlDruckfarben/5)); + //var_dump($zuschussCalc.' - '.$nettoBedruckGesamt.' - '.$fortdruckGeschwindigkeit.' - '.$umschlag_seiten_bedruckt.' - '.$anzahlDruckfarben); + $price_calc = ($format['hoehe']*$format['breite']*($nettoBedruckGesamt+$zuschussCalc)*$gammatur*$papierKosten/1000000000)+($kostenDruckplatte*$ctp1)+$kba1; + + //var_dump($format['hoehe'].' - '.$format['breite'].' - '.$ctp1.' - '.$kba1.' - '.$price_calc.' - '.$price); + //echo "
"; + + + if($price_calc < $price) { + $price = $price_calc; + $nutzen = $nutzen_calc; + $zuschuss = $zuschussCalc; + $nettobg = $nettoBedruckGesamt; + $bogen_hoehe = $format['hoehe']; + $bogen_breite = $format['breite']; + } + } + + + + + if($what == 'nutzen') { + return $nutzen; + } + if($what == 'nettobg') { + return $nettobg; + } + if($what == 'zuschuss') { + return $zuschuss; + } + + if($what == 'bogen_hoehe') { + return $bogen_hoehe; + } + + if($what == 'bogen_breite') { + return $bogen_breite; + } + return $price; + + } + + function getPurHelpKlebe($what, $var) { + + $fix = 222; + $per = 89; + + if($var > 7) { + $fix = 233; + $per = 102; + } + if($var > 12) { + $fix = 244; + $per = 114; + } + if($var > 16) { + $fix = 366; + $per = 228; + } + + if($what=='fix') { + return $fix; + } + return $per; + } + + function getPurHelpFalz($what, $var) { + + $fix = 10.30; + $per = 7.05; + + if($var == 6) { + $fix = 15.40; + $per = 8.20; + } + if($var == 8) { + $fix = 15.40; + $per = 8.40; + } + if($var == 12) { + $fix = 20.50; + $per = 9.70; + } + if($var == 16) { + $fix = 31.50; + $per = 9.50; + } + if($var == 24) { + $fix = 41.00; + $per = 10.70; + } + if($var == 32) { + $fix = 51.20; + $per = 11.90; + } + if($var == 48) { + $fix = 102.30; + $per = 12.90; + } + + if($what=='fix') { + return $fix; + } + return $per; + } + + + function getCalcTableValueOffsetPlano($what, $papierType1,$papierType2,$papierType3,$papierType4,$papierType5,$papierType6,$papierType7,$papierType8,$papierType9,$papierType10,$papierType11,$papierType12,$papierType13,$papierType14, $kostenDruckplatte, $druckplatteOption, $gammatur, $papierKosten, $umschlagen, $seiten, $auflage, $anzahlDruckfarben, $anzahlFarbwechsel, $anzahlSeiten, $format_offen_breite, $format_offen_hoehe, $drucklack, $papier_vs_rs_unterschiedlich) { + //var_dump( func_get_args()); + $price = 9999999999; + $nutzen = 9999999999; + $nettobg = 9999999999; + $zuschuss = 9999999999; + $bogen_hoehe = 1000; + $bogen_breite = 1000; + $ctp = 999999999; + $druckgaenge = 99999999; + $fortdruckmaschine = 0; + $stundensatz = 99999999; + $maschine = 'kba'; + + $formate=array(); + if($papierType1) { + $formate[] = array('type' => 1, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 0); + } + if($papierType1 && $umschlagen == 1) { + $formate[] = array('type' => 2, 'breite' => 88, 'hoehe' => 63, 'umschlagen' => 1); + } + + if($papierType2) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 0); + } + if($papierType2 && $umschlagen == 1) { + $formate[] = array('type' => 5, 'breite' => 100, 'hoehe' => 70, 'umschlagen' => 1); + } + + if($papierType3) { + $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 0); + } + if($papierType3 && $umschlagen == 1) { + $formate[] = array('type' => 3, 'breite' => 70, 'hoehe' => 50, 'umschlagen' => 1); + } + + if($papierType4) { + $formate[] = array('type' => 7, 'breite' => 61, 'hoehe' => 43, 'umschlagen' => 0); + } + if($papierType4 && $umschlagen == 1) { + $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 && $umschlagen == 1) { + $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 && $umschlagen == 1) { + $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 && $umschlagen == 1) { + $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 && $umschlagen == 1) { + $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 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 11, 'umschlagen' => 1); + } + + if($papierType10) { + $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 0); + } + if($papierType10 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 22, 'hoehe' => 22, 'umschlagen' => 1); + } + + if($papierType11) { + $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 0); + } + if($papierType11 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 92, 'hoehe' => 65, 'umschlagen' => 1); + } + + if($papierType12) { + $formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 0); + } + if($papierType12 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 64, 'hoehe' => 45, 'umschlagen' => 1); + } + + if($papierType13) { + $formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 0); + } + if($papierType13 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 44, 'hoehe' => 31.5, 'umschlagen' => 1); + } + + if($papierType14) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 0); + } + if($papierType14 && $umschlagen == 1) { + $formate[] = array('type' => 7, 'breite' => 102, 'hoehe' => 72, 'umschlagen' => 1); + } + + //echo "

"; + + foreach($formate as $key => $format) { + + $geiferRand = getGeiferRand($format); + $bogenRaender = getBogenRaender($format); + + + if($format['umschlagen'] == 0) { + + $nutzen_calc = max( + ((floor(($format['breite']-$bogenRaender)/$format_offen_breite))*(floor(($format['hoehe']-$geiferRand)/$format_offen_hoehe))), + ((floor(($format['breite']-$bogenRaender)/$format_offen_hoehe)*(floor(($format['hoehe']-$geiferRand)/$format_offen_breite)))) + ); + + }else{ + $nutzen_calc= 2*floor((max( + ((floor(($format['breite']-$bogenRaender)/$format_offen_breite))*(floor(($format['hoehe']-$geiferRand)/$format_offen_hoehe))), + ((floor(($format['breite']-$bogenRaender)/$format_offen_hoehe)*(floor(($format['hoehe']-$geiferRand)/$format_offen_breite)))) + ))/2); + + + } + + + if($anzahlSeiten==2 && $papier_vs_rs_unterschiedlich==0 && $nutzen_calc > 1 && $format['umschlagen'] == 1) { + $ctp1 = ($anzahlDruckfarben+$drucklack)*$anzahlSeiten/2; + }else{ + $ctp1 = ($anzahlDruckfarben+$drucklack)*$anzahlSeiten; + } + + $maschine1 = getMaschine($format['breite'], $format['hoehe']); + + if(getMaschine($format['breite'], $format['hoehe']) == "gto") { + $druckgaenge1 = $anzahlSeiten*($anzahlDruckfarben+$drucklack); + $fortdruckmaschine1 = 0; + $stundensatz1 = 40; + $anzahlFarb1 = max($anzahlFarbwechsel, $anzahlDruckfarben-1); + }else{ + $druckgaenge1 = ceil(($anzahlDruckfarben+$drucklack)/5)*$anzahlSeiten; + $fortdruckmaschine1 = 4500; + $stundensatz1 = 140; + $anzahlFarb1 = $anzahlFarbwechsel; + } + + $zuschussCalc = intval(max(200,floor(($anzahlDruckfarben*100)+($auflage/$nutzen_calc*0.02)))); + + $fortdruckGeschwindigkeit = (log10($auflage*$auflage)*900)*(100-sqrt((150-$gammatur)*(150-$gammatur))/5)/100; + + $nettoBedruckGesamt = (round($auflage/$nutzen_calc,0)); + $druckkosten = $stundensatz1*((($zuschussCalc+$nettoBedruckGesamt)/$fortdruckGeschwindigkeit*$druckgaenge1)+($ctp1*7/60)+($anzahlFarb1*45/60)); + + //var_dump($maschine1.'-'.$stundensatz1.'-'.$zuschussCalc.'-'.$nettoBedruckGesamt.'-'.$fortdruckGeschwindigkeit.'-'.$druckgaenge1.'-'.$ctp1.'-'.$anzahlFarb1); + //echo "
"; + + $price_calc = (($nettoBedruckGesamt+$zuschussCalc)*($format['hoehe']*$format['breite']*$gammatur*$papierKosten/1000000000)+($kostenDruckplatte*$ctp1))+$druckkosten; + + if($price_calc < $price && $nettoBedruckGesamt != 0) { + $price = $price_calc; + $nutzen = $nutzen_calc; + $ctp = $ctp1; + $zuschuss = $zuschussCalc; + $nettobg = $nettoBedruckGesamt; + $bogen_hoehe = $format['hoehe']; + $bogen_breite = $format['breite']; + $druckgaenge = $druckgaenge1; + $fortdruckmaschine = $fortdruckmaschine1; + $stundensatz = $stundensatz1; + $maschine = $maschine1; + } + //var_dump($format['hoehe'].'-'.$format['breite'].'-'.$ctp1.'-'.($zuschussCalc+$nettoBedruckGesamt).'-'.$druckkosten.'-'.$price_calc.'-'.$price); + //echo "
"; + } + + + + + if($what == 'nutzen') { + return $nutzen; + } + if($what == 'nettobg') { + return $nettobg; + } + if($what == 'maschine') { + return $maschine; + } + if($what == 'zuschuss') { + return $zuschuss; + } + if($what == 'fortdruckmaschine') { + return $fortdruckmaschine; + } + + if($what == 'maschine_stundensatz') { + return $stundensatz; + } + + if($what == 'bogen_hoehe') { + return $bogen_hoehe; + } + + if($what == 'ctp') { + return $ctp; + } + + if($what == 'druckgaenge') { + return $druckgaenge; + } + + if($what == 'bogen_breite') { + return $bogen_breite; + } + return $price; + + } + + function getMaschine($breite, $hoehe) { + if($breite > 49 || $hoehe > 49) { + + return 'kba'; + } + + return 'gto'; + } + + function getGeiferRand($format) { + $maschine = getMaschine($format['breite'], $format['hoehe']); + + if($maschine == 'kba') { + return 2.3; + } + + return 1.4; + } + + function getBogenRaender($format) { + $maschine = getMaschine($format['breite'], $format['hoehe']); + + if($maschine == 'kba') { + return 1.5; + } + + return 0.8; + } + + function getMaschineKosten($format) { + $maschine = getMaschine($format['breite'], $format['hoehe']); + + if($maschine == 'kba') { + return 140; + } + + return 40; + } + + +} \ No newline at end of file diff --git a/tests/Customer/I/papierContainer.xml b/tests/Customer/I/papierContainer.xml new file mode 100644 index 0000000..ba0a21e --- /dev/null +++ b/tests/Customer/I/papierContainer.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tests/Customer/I/parameters.txt b/tests/Customer/I/parameters.txt new file mode 100644 index 0000000..7a68095 --- /dev/null +++ b/tests/Customer/I/parameters.txt @@ -0,0 +1,210 @@ +$onlinerabatt_flaschenanhaenger_p = 0; +$onlinerabatt_flaschenanhaenger_f = 10; + +$onlinerabatt_digitalplot_p = 0; +$onlinerabatt_digitalplot_f = 5; + +$onlinerabatt_ausdruck_p = 0; +$onlinerabatt_ausdruck_f = 10; + +$onlinerabatt_digitalproof_p = 0; +$onlinerabatt_digitalproof_f = 0; +$medienkeil_aufpreis_f = 8; + +$onlinerabatt_farbscan_p = 0; +$onlinerabatt_farbscan_f = 5; + +$onlinerabatt_strichscan_p = 0; +$onlinerabatt_strichscan_f = 5; + +$hour_druckvorstufe = 60; +$geiferRand = 2.3; +$bogenRaender = 1.5; + +$onlinerabatt_broschuere_p = 0; +$onlinerabatt_broschuere_f = 30; +$aktionsrabatt_broschuere_p = 12; +$aktionsrabatt_broschuere_f = 0; + +$onlinerabatt_plano_p = 0; +$onlinerabatt_plano_f = 10; + +$onlinerabatt_privatdrucksachen_p = 0; +$onlinerabatt_privatdrucksachen_f = 5; + +$aktionsrabatt_plano_p = 12; +$aktionsrabatt_plano_p_vk = 6; +$aktionsrabatt_plano_f = 0; +$aktionsrabatt_plano_f_vk = 0; + +$papierzuschlag_broschuere = 1.3; +$papierzuschlag_plano = 1.3; + +$onlinerabatt_20 = -20; +$onlinerabatt_10 = -10; + +$onlinerabatt_etikett = -10; + +$kostenProDruckplatte = 15; +$stundenSatzDruck = 140; +$stundenSatzDruckGTO = 40; +$ruestZeitJeDruckplatte = 5; +$ruestZeitJeDruckplatteGTO = 15; +$kostenProZusatzdruckplatteGTO = 35; + +$farbwechselZeit = 45; +$farbwechselZeitGTO = 20; + +$stundensatz_wtv_maschinen = 50; +$stundensatz_wtv = 30; +$stundensatz_vorstufe = 60; +$stundensatz_vorstufe_daten_huellen = 60; +$vorstufe_fixkosten = 20; + +$papieraufschlag_huellen = 1.3; + +$durckfarbe_preis_je_bogen = 1; + +$aufpreis_drucklack_matt_voll = 10; +$aufpreis_drucklack_matt_partiell = 30; +$aufpreis_drucklack_glzd_voll = 55; +$aufpreis_drucklack_glzd_partiell = 95; + + +$buchrueckenstaerke = 0.36; + +// WTV +$ringoesen = 60; +$oesen_stkpreis = 0.20; +$oesen_fixpreis = 45; +$beilage_einlegen_bestimmte = 45; +$beilage_einlegen_unbestimmte = 35; +$buendeln = 0.15; +$perforation = 25; +$laserstanzung = 0.50; +$folieeinschweissen = 0.13; + +$ruestkosten_perforation = 35; +$ruestkosten_lochung = 15; +$ruestkosten_umlaufender_karton = 35; + +$fixkosten_nummerierung = 15; +$fixkosten_blockleimung = 25; +$fixkosten_umlaufender_karton = 0.6; + +$umschlag_kaschierung_mk = 0.8; +$umschlag_kaschierung_gl = 0.6; + +$faktor_klein_gross_falzung = 3; +$aufpreis_falzen_altarfalz = 50; +$falzbruch_ruesten = 10; + +$plano_fa_aufpreis_anderes_dateiformat = 25; +$plano_fa_fixpreis_buendeln = 15; +$plano_fa_preis_je_buendel = 0.15; +$plano_fa_fixpreis_perforation = 35; +$plano_fa_tsdpreis_perforation = 35; +$plano_fa_tsdpreis_ecken_runden = 16; +$plano_fa_tsdpreis_ecken_runden_nassleimetik = 1.50; +$plano_fa_fixpreis_ecken_runden = 15; +$plano_fa_fixpreis_bohren = 25; +$plano_fa_tsdpreis_bohren = 5; +$plano_fa_stckpreis_laserstanzung = 0.50; +$plano_fa_fixpreis_laserstanzung = 150; +$plano_fa_fixpreis_cito = 260; +$plano_fa_tsdpreis_cito = 35; +$plano_fa_fixpreis_cito_nassleimetik = 80; +$plano_fa_tsdpreis_cito_nassleimetik = 2; + +// Sammelform +$sammelform_brosch_inhalt_happy = -60; +$sammelform_brosch_inhalt_eq = -45; +$sammelform_brosch_inhalt_sense = -45; +$sammelform_brosch_inhalt_sky = -30; +$sammelform_brosch_inhalt_glam = -60; +$sammelform_brosch_inhalt_post = 0; + +$sammelform_brosch_umschlag_happy = -60; +$sammelform_brosch_umschlag_eq = -40; +$sammelform_brosch_umschlag_sense = -20; +$sammelform_brosch_umschlag_sky = -10; +$sammelform_brosch_umschlag_glam = -40; +$sammelform_brosch_umschlag_post = 0; + +$sammelform_plano_fa_happy = -180; +$sammelform_plano_fa_eq = -160; +$sammelform_plano_fa_sense = -130; +$sammelform_plano_fa_sky = -125; +$sammelform_plano_fa_glam = -60; +$sammelform_plano_fa_post = -90; +$sammelform_plano_fa_happy_rapetik = - 280; +$sammelform_plano_fa_happy_aufkleber = - 280; +$sammelform_plano_fa_eq_aufkleber = - 250; +$sammelform_plano_fa_stdformatabschlag = 30; + +// Banderolen Verschluss +$klebepunkte_lose_fix = 15; +$klebepunkte_lose_pro_tausend = 12; +$klebepunkte_vorkonf_fix = 15; +$klebepunkte_vorkonf_pro_tausend = 47; +$haftstreifen_lose_fix = 15; +$haftstreifen_lose_pro_tausend = 15; +$haftstreifen_vorkonf_fix = 45; +$haftstreifen_vorkonf_pro_tausend = 85; + +// Digitaldruck +$standard_bogenbreite = 45; +$standard_bogenhoehe = 32; +$stundensatz_vorstufe_digitaldruck = 90; +$stundensatz_nuten_digitaldruck = 15; +$stundensatz_klebebinder = 200; +$papierzuschlag_digitaldruck = 1.3; +$klick_digitaldruck_a4fbg = 0.17; +$klick_digitaldruck_a4sw = 0.07; + + +$plano_fa_maxabschlag_proz_ek = 90; +$plano_fa_maxabschlag_abs = 7; + +$plano_stanzen_fix1 = 35; +$plano_stanzen_fix1_vkru7 = 15; +$plano_stanzen_fix2 = 85; +$plano_stanzen_fix3_mappen = 260; + +$plano_stanzen_var1 = 13; +$plano_stanzen_var2 = 33; +$plano_stanzen_var3_mappen = 40; + + +$plano_praegen_fix1 = 60; +$plano_praegen_fix2 = 110; +$plano_praegen_var1 = 25; +$plano_praegen_var2 = 45; + +$plano_digitalproof_minimal = 15; + + +$plano_express_f = 45; +$plano_express_p = 13; +$plano_relax_f = 0; +$plano_relax_p = 15; +$plano_max_highend_f = 0; +$plano_max_highend_p = 10; +$plano_easy_value_f = 0; +$plano_easy_value_p = 10; + +$rdh_aufschlag_sonderformate = 1.7; +$bro_aufschlag_pur = 1.22; +$bro_aufschlag_wire_o = 1.40; +$bro_aufschlag_hdcover = 1.20; + +$bro_weight_faktor = 1.05; + +$brosch_express_f = 45; +$brosch_express_p = 13; +$brosch_relax_f = 0; +$brosch_relax_p = 8; +$brosch_max_highend_f = 60; +$brosch_max_highend_p = 10; +$brosch_easy_value_f = 0; +$brosch_easy_value_p = 10; \ No newline at end of file diff --git a/tests/Mock/PaperRepostory.php b/tests/Mock/PaperRepostory.php index f52fafe..8397ad6 100644 --- a/tests/Mock/PaperRepostory.php +++ b/tests/Mock/PaperRepostory.php @@ -249,6 +249,20 @@ class PaperRepostory implements ObjectRepository $papier['10090']->setDescription1('90 g/m² Naturpapier (Oberfläche wie Kopierpapier, hochweiß, FSC-zert.)'); $papier['10090']->setDescription2('090 Prep'); + $papier['sm150g'] = new Paper(); + $papier['sm150g']->setArtNr('sm150g'); + $papier['sm150g']->setGrammatur('150'); + $papier['sm150g']->setPreis('100'); + $papier['sm150g']->setDescription1('Bilderdruck seidenmatt 150g *'); + $papier['sm150g']->setDescription2('Bilderdruck seidenmatt, aus zert. nachhaltiger Forstwirtschaft'); + $papier['sm150g']->setUmschlagen(1); + $papier['sm150g']->setHappy(1); + $papier['sm150g']->setPapierTyp1(1); + $papier['sm150g']->setPapierTyp2(1); + $papier['sm150g']->setPapierTyp3(1); + $papier['sm150g']->setPapierTyp11(1); + $papier['sm150g']->setPapierTyp14(1); + return $papier[$criteria['artNr']]; }