From de4406d603544064e02e00a5fddd209cd6e098e3 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Thu, 1 Aug 2019 15:05:18 +0200 Subject: [PATCH] Fixes --- src/Calc/CalcValues.php | 19 +- src/General/Parser/Edge.php | 35 +- src/General/Type/Edge.php | 24 + tests/Complex/SecondTest.php | 48 ++ tests/Mock/PaperRepostory.php | 8 + tests/Recursiv/FirstTest.php | 45 ++ tests/TestFiles/Complex2/1.xml | 565 +++++++++++++++++++ tests/TestFiles/Complex2/formels.txt | 145 +++++ tests/TestFiles/Complex2/papierContainer.xml | 7 + tests/TestFiles/Complex2/parameters.txt | 140 +++++ tests/TestFiles/Recursiv/1.xml | 72 +++ tests/TestFiles/Recursiv/formels.txt | 0 tests/TestFiles/Recursiv/papierContainer.xml | 7 + tests/TestFiles/Recursiv/parameters.txt | 0 14 files changed, 1096 insertions(+), 19 deletions(-) create mode 100644 tests/Complex/SecondTest.php create mode 100644 tests/Recursiv/FirstTest.php create mode 100644 tests/TestFiles/Complex2/1.xml create mode 100644 tests/TestFiles/Complex2/formels.txt create mode 100644 tests/TestFiles/Complex2/papierContainer.xml create mode 100644 tests/TestFiles/Complex2/parameters.txt create mode 100644 tests/TestFiles/Recursiv/1.xml create mode 100644 tests/TestFiles/Recursiv/formels.txt create mode 100644 tests/TestFiles/Recursiv/papierContainer.xml create mode 100644 tests/TestFiles/Recursiv/parameters.txt diff --git a/src/Calc/CalcValues.php b/src/Calc/CalcValues.php index 3132eec..c89f4a5 100644 --- a/src/Calc/CalcValues.php +++ b/src/Calc/CalcValues.php @@ -55,12 +55,12 @@ class CalcValues /** @var Select\Opt $opt */ foreach($option->getOptions() as $opt) { if($opt->isValid() && $opt->isSelected()) { - $price = $this->parseEdgeCollection($price, $option, $opt->getEdgesCollectionContainer()); + $price = $this->parseEdgeCollection($price, $option->getId(), $opt->getEdgesCollectionContainer()); } } } - $this->parseEdgeCollection($price, $option, $option->getEdgesCollectionContainer()); + $this->parseEdgeCollection($price, $option->getId(), $option->getEdgesCollectionContainer()); } @@ -69,11 +69,11 @@ class CalcValues /** * @param $price - * @param Base $option + * @param id * @param EdgeCollectionContainer $container * @return int */ - private function parseEdgeCollection($price, $option, EdgeCollectionContainer $container) + private function parseEdgeCollection($price, $id, EdgeCollectionContainer $container, $isSub = false) { $calcValue1 = 0; @@ -99,9 +99,16 @@ class CalcValues if($edge->getCalcValue() != "") { $cv = $this->formelCalc->parse($edge->getCalcValue()); eval('$cv = ' . $cv . ';'); - $this->engine->addCalcVariable($option->getId() . '_' . $collection->getName(), $cv); - } + if($isSub) { + $this->engine->addCalcVariable($id, $cv); + }else{ + $this->engine->addCalcVariable($id . '_' . $collection->getName(), $cv); + } + } + if($edge->getEdgesCollectionContainer()->count() > 0) { + $this->parseEdgeCollection($price, $id . '_' . $collection->getName(), $edge->getEdgesCollectionContainer(), true); + } } } diff --git a/src/General/Parser/Edge.php b/src/General/Parser/Edge.php index d1af096..dac9371 100644 --- a/src/General/Parser/Edge.php +++ b/src/General/Parser/Edge.php @@ -38,19 +38,28 @@ class Edge $edge->setPauschale(floatval($this->node->attributes()->pauschale)); } - $value = (string)$this->node; - if(preg_match("/^([0-9a-zA-Z_]+)$/", trim($value), $regs)) { - $edge->setValues([$regs[1]]); - }elseif(preg_match("/^([0-9]+)-([0-9]+)$/", trim($value), $regs)) { - $edge->setRegion(true); - $edge->setFrom(intval($regs[1])); - $edge->setTo(intval($regs[2])); - }elseif(preg_match("/^([0-9]+)-$/", trim($value), $regs)) { - $edge->setRegion(true); - $edge->setFrom(intval($regs[1])); - }elseif(strpos(trim($value), ",") !== false) { - $values = explode(",", trim($value)); - $edge->setValues($values); + if(isset($this->node->attributes()->value) && $this->node->children()) { + $edge->setValues([(string)$this->node->attributes()->value]); + if($this->node->children()) { + $edgeCollectionContainerParser = new EdgeCollectionContainer($this->node); + $edge->setEdgesCollectionContainer($edgeCollectionContainerParser->parse()); + } + }else { + + $value = (string)$this->node; + if (preg_match("/^([0-9a-zA-Z_]+)$/", trim($value), $regs)) { + $edge->setValues([$regs[1]]); + } elseif (preg_match("/^([0-9]+)-([0-9]+)$/", trim($value), $regs)) { + $edge->setRegion(true); + $edge->setFrom(intval($regs[1])); + $edge->setTo(intval($regs[2])); + } elseif (preg_match("/^([0-9]+)-$/", trim($value), $regs)) { + $edge->setRegion(true); + $edge->setFrom(intval($regs[1])); + } elseif (strpos(trim($value), ",") !== false) { + $values = explode(",", trim($value)); + $edge->setValues($values); + } } return $edge; diff --git a/src/General/Type/Edge.php b/src/General/Type/Edge.php index 677af9a..1784bf8 100644 --- a/src/General/Type/Edge.php +++ b/src/General/Type/Edge.php @@ -14,6 +14,14 @@ class Edge protected $region = false; + /** @var EdgeCollectionContainer */ + protected $edgesCollectionContainer = null; + + public function __construct() + { + $this->edgesCollectionContainer = new EdgeCollectionContainer(); + } + /** * @return string */ @@ -168,4 +176,20 @@ class Edge return false; } + + /** + * @return EdgeCollectionContainer + */ + public function getEdgesCollectionContainer() + { + return $this->edgesCollectionContainer; + } + + /** + * @param EdgeCollectionContainer $edgesCollectionContainer + */ + public function setEdgesCollectionContainer($edgesCollectionContainer) + { + $this->edgesCollectionContainer = $edgesCollectionContainer; + } } \ No newline at end of file diff --git a/tests/Complex/SecondTest.php b/tests/Complex/SecondTest.php new file mode 100644 index 0000000..c6c1723 --- /dev/null +++ b/tests/Complex/SecondTest.php @@ -0,0 +1,48 @@ +parse(simplexml_load_string(file_get_contents(__DIR__ . '/../TestFiles/Complex2/papierContainer.xml'))); + + $this->engine = new Engine(); + $this->engine->setPaperContainer($paperContainer); + $this->engine->setPaperRepository($repository); + $this->engine->setFormulas(file_get_contents(__DIR__.'/../TestFiles/Complex2/formels.txt')); + $this->engine->setParameters(file_get_contents(__DIR__.'/../TestFiles/Complex2/parameters.txt')); + + $this->engine->loadString(file_get_contents(__DIR__ . '/../TestFiles/Complex2/1.xml')); + + } + + public function tearDown() + { + $this->engine = null; + } + + public function testIfArticleCountIsCorrect() + { + $this->assertEquals(1, $this->engine->getArticles()->Count()); + } + + public function testIfDefaultPriceIsOk() + { + $this->assertEquals(328.53 , $this->engine->getPrice()); + } +} \ No newline at end of file diff --git a/tests/Mock/PaperRepostory.php b/tests/Mock/PaperRepostory.php index d62ae91..d952a9c 100644 --- a/tests/Mock/PaperRepostory.php +++ b/tests/Mock/PaperRepostory.php @@ -170,6 +170,14 @@ class PaperRepostory implements ObjectRepository $papier['CONG300_1']->setDescription1('300 g/m² Naturkarton gerippt hochweiß'); $papier['CONG300_1']->setDescription2('300 g/m² Conqueror gerippt diamantweiß'); + $papier['grasnatur85'] = new Paper(); + $papier['grasnatur85']->setArtNr('grasnatur85'); + $papier['grasnatur85']->setGrammatur('85'); + $papier['grasnatur85']->setPreis('160'); + $papier['grasnatur85']->setVolume('1.2'); + $papier['grasnatur85']->setDescription1('Graspapier 50% Faseranteil (85 g/m²)'); + $papier['grasnatur85']->setDescription2('Graspapier 50% Faseranteil (85 g/m²)'); + return $papier[$criteria['artNr']]; diff --git a/tests/Recursiv/FirstTest.php b/tests/Recursiv/FirstTest.php new file mode 100644 index 0000000..988c44c --- /dev/null +++ b/tests/Recursiv/FirstTest.php @@ -0,0 +1,45 @@ +parse(simplexml_load_string(file_get_contents(__DIR__ . '/../TestFiles/Recursiv/papierContainer.xml'))); + + $this->engine = new Engine(); + $this->engine->setPaperContainer($paperContainer); + $this->engine->setPaperRepository($repository); + $this->engine->setFormulas(file_get_contents(__DIR__.'/../TestFiles/Recursiv/formels.txt')); + $this->engine->setParameters(file_get_contents(__DIR__.'/../TestFiles/Recursiv/parameters.txt')); + + $this->engine->loadString(file_get_contents(__DIR__ . '/../TestFiles/Recursiv/1.xml')); + + } + + public function tearDown() + { + $this->engine = null; + } + + public function testIfArticleCountIsCorrect() + { + $this->assertEquals(1, $this->engine->getArticles()->Count()); + $this->engine->getPrice(); + } + +} \ No newline at end of file diff --git a/tests/TestFiles/Complex2/1.xml b/tests/TestFiles/Complex2/1.xml new file mode 100644 index 0000000..e605043 --- /dev/null +++ b/tests/TestFiles/Complex2/1.xml @@ -0,0 +1,565 @@ + + + + Plakate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/TestFiles/Complex2/formels.txt b/tests/TestFiles/Complex2/formels.txt new file mode 100644 index 0000000..9db7d27 --- /dev/null +++ b/tests/TestFiles/Complex2/formels.txt @@ -0,0 +1,145 @@ +// Grasdruckerei +//Farbkostenberechnung pro Seite auf Basis A4=100% +$farbe_a4='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P)'; +$farbe_a5='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a5$P)'; +$farbe_a6='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a6$P)'; +$farbe_a7='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a7$P)'; +$farbe_dl='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_dl$P)'; +$farbe_210='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_210$P)'; +$farbe_148='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_148$P)'; +$farbe_a3='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a3$P)'; +$farbe_a2='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a2$P)'; +$farbe_a1='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_a1$P)'; +$farbe_3b='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_3b$P)'; +$farbe_vk2='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_vk2$P)'; +$farbe_vk4='($Vauflage$V*$Vseitenzahl$V*$Pfarbkst$P*$Pfarbe_faktor_vk4$P)'; + +//######################### + +//Flyer +$flyer40='($Pflyerklick$P*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$flyer44='($Pflyerklick$P*2*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$fflyer44='($Pfflyerklick$P*2*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; + +// Karten +$weihnachtskarte2s='((0.5*$Vauflage$V)+(5))/1.19'; +$weihnachtskarte4s='((1.5*$Vauflage$V)+(5))/1.19'; +$karte40='($Pkarteklick$P*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$karte44='($Pkarteklick$P*2*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$faltkarte44='($Pfkarteklick$P*2*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$einleger='($Pflyerklick$P*2*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)'; +$planonut='$pnuten+($Vauflage$V*$pnut$P)'; +$geschlossennut='$pnuten+($Vauflage$V*$pnutgeschlossen$P)'; + +//kalender +$kalendera5='($Vauflage$V*$Vseiten$V*.3)+($Vauflage$V*6.96)+5'; +$kalendera4='($Vauflage$V*$Vseiten$V*.5)+($Vauflage$V*7.96)+5'; +$kalendera3='($Vauflage$V*$Vseiten$V*.75)+($Vauflage$V*9.2)+5'; + +//Bogen +$bogen40='($Pfarbdruck1$P*$Vauflage$V*$Vsorten$V)+($Vpapier_value$V*$Vauflage$V)'; +$bogen44='($Pflyerklick$P*2*$Vauflage$V*$Vsorten$V)+($Vpapier_value$V*$Vauflage$V)'; +// Visitenkarte einseitig doppelseitigKlappvisitenkarten +$vk40='$Pvkpauschale$P+($Pvisitenkarte$P*$Vauflage$V/10)+(($Vpapier_value$V*$Vauflage$V)/20)'; +$vk44='$Pvkpauschale$P+($Pvisitenkarte$P*$Vauflage$V*2/10)+(($Vpapier_value$V*$Vauflage$V)/20)'; +$vkk44='20+($Pvisitenkartek$P*$Vauflage$V)*4+$Pvkpauschale$P+($Vpapier_value$V/10*$Vauflage$V)+($Pnut$P*$Vauflage$V)+(($Vpapier_value$V*$Vauflage$V)/20)'; + +// Poster +$rahmen='((((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V))/10000)*30.5)+($Vauflage$V*15)'; +$poster='2.5+(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pposterqm1$P)/10000)'; +$postera1='(($Pposterqm1$P/2)*$Vauflage$V)+$Pposterpauschale$P'; +$fhhpostera1='(($Pposterqm1$P/2)*$Vmenge$V)'; +$postera0='(($Pposterqm1$P/1)*$Vauflage$V)+$Pposterpauschale$P'; + +//plakat +$plakata3='(0.25*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V)+19.8'; +$plakata4='(0.15*$Vauflage$V)+($Vpapier_value$V*$Vauflage$V/2)+19.9'; +$plakat160='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplakat160qm1$P)/10000)+$Pplakatpauschale$P'; +$plakat140='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplakat140qm1$P)/10000)'; +$plakat80='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplakat80qm1$P)/10000)'; + + +//Leinwand +$leinwand='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*70)/10000)'; +$leisten='((tonumber($Vkurz$V)+tonumber($Vlang$V)*$Vauflage$V)*2)*5.5/100'; +$aufziehen='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*40)/10000)+(5*$Vauflage$V)'; + +//Banner +$banner='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pbannerqm$P)/10000)'; +$mesh='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pmeshqm$P)/10000)'; +$blockout='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pblockoutqm$P)/10000)'; +$pp='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pppqm$P)/10000)'; +$lamprotect='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*30)/10000)'; +$solprotect='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*12)/10000)'; +$solprotectmm='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*12)/1000000)'; +$oesen='((tonumber($Vkurz$V)+tonumber($Vlang$V)*$Vauflage$V)*2)/50'; + +// Tapete +$tapete='(((tonumber($Vkurz$V)*tonumber($Vlang$V))*$Vauflage$V)*(44.5)/10000)'; + +//Klebefolie + +$cutfolie='(((tonumber($Vkurz$V+1)*tonumber($Vlang$V+1)*$Vauflage$V)*$Pcutfolieqm$P)/10000)+$Pcutfoliepausch$P'; +$cuttransfer='(((tonumber($Vkurz$V+1)*tonumber($Vlang$V+1)*$Vauflage$V)*$Pcuttransferqm$P)/10000)'; +$aufkleber='(((tonumber($Vkurz$V+1)*tonumber($Vlang$V+1)*$Vauflage$V)*$Paufkleberqm$P)/1000000)+25'; +$klebefolie='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pklebefolieqm$P)/10000)'; +$diafilm='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*(70))/10000)'; + +//Plotten +$pltfarbe='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplotfarbe$P)/1000000)'; +$pltsw='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplotsw$P)/1000000)'; +$pltfarbefl='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pplotfarbefl$P)/1000000)'; +//Laminieren +$laminierenposter='(((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Plaminieren$P)/10000)'; +//Kaschieren +$kaschieren3hsposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pk3hs$P)/10000+$Pruestkosten$P'; +$kaschieren5hsposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pk5hs$P)/10000+$Pruestkosten$P'; +$kaschieren5fsposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pk5fs$P)/10000+$Pruestkosten$P'; +$kaschieren5hsposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pk5fs$P)/10000+$Pruestkosten$P'; +$kaschieren10fsposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pk10fs$P)/10000+$Pruestkosten$P'; +$kaschierenaluposter='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pkalu$P)/10000+$Pruestkosten$P'; +$kaschierenalufolie='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pkalu$P)/11000'; + +$kaschieren3hs='((tonumber($Vkurz$V)*tonumber($Vlang$V)*$Vauflage$V)*$Pkaschieren3hs$P)/10000+$Pruestkosten$P'; +$kaschieren5hs='(($Vauflage$V)*$Pk5hs$P)/10000+$Pruestkosten$P'; +$kaschieren10hs='(($Vauflage$V)*$Pk10hs$P)/10000+$Pruestkosten$P'; +$kaschieren5fs='(($Vauflage$V)*$Pk5fs$P)/10000+$Pruestkosten$P'; +$kaschieren10fs='(($Vauflage$V)*$Pk10fs$P)/10000+$Pruestkosten$P'; +$kaschierenalu='(($Vauflage$V)*$Pkalu$P)/10000+$Pruestkosten$P'; + +//RollUpbasic +$rollbasic='(144.35/1.19*$Vauflage$V)'; + +// Cellophanieren +$cello='10+$Pcello$P*$Vauflage$V'; +$cellodps='10+$Pcello$P*2*$Vauflage$V'; +$formelvkcello='5+($Pcello$P*$Vauflage$V/20)'; + +//Taschenlaminat +$formeltl='$Ptaschenlaminieren3$P*$Vauflage$V'; + +//eckenrunden +$formel7='$Peckenrundeneinrichten$P+($Peckenrunden$P*$Vauflage$V)'; +//Falten +$falten='$Pfalte$P*$Vauflage$V'; +//nuten +$nutplano='$Pnuten$P+($Pnut$P*$Vauflage$V)'; +// nuten für kombiartikel +$nutplan='($Pnut$P*$Vauflage$V)'; +$nutzu='$Pnuten$P+($Pnutgeschlossen$P*$Vauflage$V)'; +//heften +$heften='10+(0.15*$Vauflage$V)'; + +//Briefpapier +$briefpapier='($Vauflage$V*0.10)+25+($Vpapier_value$V/2*$Vauflage$V)'; + +// Zeitungen +// abizeitung +$abi_a4_sw='($Vauflage$V*$Vswseiten$V)*0.025)+($Vauflage$V*.08)'; +//Schuelerzeitung +$sza5fc='($Vauflage$V*0.6)+10+(($Vauflage$V*$Vswswseiten$V)*0.015)+($Vauflage$V*0.15)+($Vpapier_value$V/2*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/2*$Vumschlag_value$V)'; +$sza4fc='($Vauflage$V*0.6)+10+(($Vauflage$V*$Vswswseiten$V)*0.025)+($Vauflage$V*0.15)+($Vpapier_value$V/2*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/2*$Vumschlag_value$V)'; +$sza5='10+(($Vauflage$V*$Vswswseiten$V)*0.015)+($Vauflage$V*0.15)+($Vpapier_value$V/4*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/4*$Vumschlag_value$V)'; +$sza4='10+(($Vauflage$V*$Vswswseiten$V)*0.025)+($Vauflage$V*0.15)+($Vpapier_value$V/2*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/2*$Vumschlag_value$V)'; +$sz4ca5='10+(($Vauflage$V*$Vswswseiten$V)*0.15)+($Vauflage$V*0.15)+($Vpapier_value$V/4*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/4*$Vumschlag_value$V)'; +$sz4ca4='10+(($Vauflage$V*$Vswswseiten$V)*0.25)+($Vauflage$V*0.15)+($Vpapier_value$V/2*$Vauflage$V*$Vswswseiten$V)+($Vauflage$V/2*$Vumschlag_value$V)'; \ No newline at end of file diff --git a/tests/TestFiles/Complex2/papierContainer.xml b/tests/TestFiles/Complex2/papierContainer.xml new file mode 100644 index 0000000..f0bd1e9 --- /dev/null +++ b/tests/TestFiles/Complex2/papierContainer.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/TestFiles/Complex2/parameters.txt b/tests/TestFiles/Complex2/parameters.txt new file mode 100644 index 0000000..f1b5095 --- /dev/null +++ b/tests/TestFiles/Complex2/parameters.txt @@ -0,0 +1,140 @@ +//Grasdruckerei + +//Stundensätze Druckmaschinen +$stundensatz_sm52=85; +$stundensatz_sm102_extern=160; + +//Leistungswerte Maschinen (Stück/h) +$sm52_speed=5000; +$sm102_fremd_speed=8000; +$falzen_speed=5000; +$falzen_speed_mit_nuten=3000; + +//Sammelhefter intern +$heften_intern_fix=25; +$heften_intern_var=0.30; + +//Sammelhefter extern +$stundensatz_sammelhefter=120; +$sammelhefter_speed=4500; + +//Sammelhefter Rüsten in Minuten +$sammelhefter_ruesten=0.25; + +//Klebebindung +$kb_intern_fix=30; +$kb_intern_var=0.55; + +//Klebebinder extern +$stundensatz_kb=180; +$kb_speed=2300; + +//Klebebinder Rüsten in Minuten +$kb_ruesten=0.5; + +//Wire-O +$wireo_fix=7; +$wireo_var=1.5; + +//Plattenkosten +$platten_sm52=8; +$platten_sm102=35; + +//Rüsten pro Platte (in Euro) +$ruesten_sm52=8; +$ruesten_sm102=30; + +$av_stundensatz=58; +$dtp_stundensatz=75; + +//Farbkosten pro Seite A4 +$farbkst=0.000800; + +//Formatfaktor auf Basis A4 = 100% für Farbkostenberechnung +$farbe_faktor_a5=0.5; +$farbe_faktor_a6=0.25; +$farbe_faktor_a7=0.125; +$farbe_faktor_dl=0.3; +$farbe_faktor_210=0.67; +$farbe_faktor_148=0.4; +$farbe_faktor_a3=2; +$farbe_faktor_a2=4; +$farbe_faktor_a1=8; +$farbe_faktor_3b=10; +$farbe_faktor_vk2=0.1; +$farbe_faktor_vk4=0.2; + +//Stundensätze Maschinen WV +$falzen_horizon=65; +$schneidemaschine=40; + +//Stundensätze Falzen extern +$stundensatz_falzen_extern=90; +$falzen_fremd_speed=5000; + +//Falzen extern Rüsten in Minuten +$falzen_extern_ruesten=0.25; + +//Schneidemaschine Hubhöhe in mm +$hubhoehe=150; + +//Anzahl Schnitte/h +$schnitte_pro_stunde=120; + +//Zeiten WV (in Minuten) +$falzen_ruesten=17; +$nuten_ruesten=8; +$schneiden_ruesten=2.5; + +//Zusätzliche Fixkosten WV +$zus_falzbrueche=8; +$zus_nutlinien=7; + +//Flyer +$av_flyer_zeit=0.32; +$dtp_flyer_zeit=0.17; +$trockenzeit_flyer=5; + +//Broschüre +$av_broschuere_zeit=0.40; +$dtp_broschuere_zeit=0.30; +$trockenzeit_broschuere=5; //prüfen, ob benötigt wird + +//Papierformate für Papierpreisberechnung +$papierbreite_a3=470; +$papierhoehe_a3=320; +$papierbreite_a2=1020; +$papierhoehe_a2=720; + +//Papierzuschlag für Vorschneiden bei Druck im A3 pro 100 kg +$zuschlag_vorschneiden=16; +$zuschuss_a3=10; +$zuschuss_a2=100; + +//Klickkosten Digitaldruck +$klickkosten_4c=0.088; +$klickkosten_1c=0.037; +$zuschuss_digital=10; + +//Blockleimung +$blockleimung_fix=15; +$blockleimung_var=0.30; + +//Verpacken +$verpacken_pro_kg=0.12; + +//Verpackungsmaterial pro 6 kg +$verpackungsmaterial=0.30; + +//Verpackungsgewichtsbasis in kg +$verpackungsgewichtsbasis=6; + +//Korrekturabzug +$laserproof=25; + +//Belegexemplar +$belegexemplar=12; + +//Produktionszeit Faktor auf Wertschöpfung +$oeko_faktor=0.95; +$express_faktor=1.3; diff --git a/tests/TestFiles/Recursiv/1.xml b/tests/TestFiles/Recursiv/1.xml new file mode 100644 index 0000000..138c296 --- /dev/null +++ b/tests/TestFiles/Recursiv/1.xml @@ -0,0 +1,72 @@ + + + + Plakate + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/TestFiles/Recursiv/formels.txt b/tests/TestFiles/Recursiv/formels.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/TestFiles/Recursiv/papierContainer.xml b/tests/TestFiles/Recursiv/papierContainer.xml new file mode 100644 index 0000000..f0bd1e9 --- /dev/null +++ b/tests/TestFiles/Recursiv/papierContainer.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/tests/TestFiles/Recursiv/parameters.txt b/tests/TestFiles/Recursiv/parameters.txt new file mode 100644 index 0000000..e69de29