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