diff --git a/src/Calc/Valid.php b/src/Calc/Valid.php index 96c584e..49326f4 100644 --- a/src/Calc/Valid.php +++ b/src/Calc/Valid.php @@ -3,11 +3,14 @@ namespace PSC\Library\Calc\Calc; use PSC\Library\Calc\Article; use PSC\Library\Calc\Engine; +use PSC\Library\Calc\Error\Validation\Input\Max; +use PSC\Library\Calc\Error\Validation\Input\Min; use PSC\Library\Calc\General\Type\Edge; use PSC\Library\Calc\General\Type\EdgeCollection; use PSC\Library\Calc\General\Type\EdgeCollectionContainer; use PSC\Library\Calc\Option\Type\Base; use PSC\Library\Calc\Option\Type\Checkbox; +use PSC\Library\Calc\Option\Type\Input; use PSC\Library\Calc\Option\Type\Select; class Valid @@ -37,7 +40,18 @@ class Valid /** @var Base $option */ foreach($this->article->getOptions() as $option) { - + if($option instanceof Input) { + if($option->getMaxValue() && $option->getMaxValue() <= $option->getRawValue()) { + $option->setIsValid(false); + $option->addValidationError(new Max($option->getRawValue(), $option->getMaxValue())); + continue; + } + if($option->getMinValue() && $option->getMinValue() >= $option->getRawValue()) { + $option->setIsValid(false); + $option->addValidationError(new Min($option->getRawValue(), $option->getMinValue())); + continue; + } + } if($option instanceof Select|| $option instanceof Checkbox) { $valid = false; diff --git a/src/Error/Validation/Base.php b/src/Error/Validation/Base.php new file mode 100644 index 0000000..2774a90 --- /dev/null +++ b/src/Error/Validation/Base.php @@ -0,0 +1,11 @@ +TYPE; + } + + public function __construct(int $currentValue, int $maxValue) + { + $this->currentValue = $currentValue; + $this->maxValue = $maxValue; + } + + public function getMessage(): string + { + return "value must be lower then " . $this->maxValue; + } +} diff --git a/src/Error/Validation/Input/Min.php b/src/Error/Validation/Input/Min.php new file mode 100644 index 0000000..3108895 --- /dev/null +++ b/src/Error/Validation/Input/Min.php @@ -0,0 +1,30 @@ +TYPE; + } + + public function __construct(int $currentValue, int $minValue) + { + $this->minValue = $minValue; + $this->currentValue = $currentValue; + } + + public function getMessage(): string + { + return "value must be greater then " . $this->minValue; + } +} diff --git a/src/Error/Validation/Set.php b/src/Error/Validation/Set.php new file mode 100644 index 0000000..1ab905d --- /dev/null +++ b/src/Error/Validation/Set.php @@ -0,0 +1,46 @@ +values); + } + + public function getIterator(): Traversable + { + return new ArrayIterator($this->values); + } + + public function add(Base $base): Set + { + if($this->has($base)) { + return $this; + } + + $this->values[] = $base; + return $this; + } + + private function has(Base $base): bool + { + return array_search($base, $this->values) !== false; + } + + public function first(): ?Base + { + if($this->count() === 0) { + return null; + } + return array_values($this->values)[0]; + } +} diff --git a/src/Option/Parser/Base.php b/src/Option/Parser/Base.php index 5a599d6..98b42fc 100644 --- a/src/Option/Parser/Base.php +++ b/src/Option/Parser/Base.php @@ -48,4 +48,4 @@ class Base return false; } -} \ No newline at end of file +} diff --git a/src/Option/Parser/Input.php b/src/Option/Parser/Input.php index 087b997..432886f 100644 --- a/src/Option/Parser/Input.php +++ b/src/Option/Parser/Input.php @@ -2,22 +2,30 @@ namespace PSC\Library\Calc\Option\Parser; use PSC\Library\Calc\General\Parser\EdgeCollectionContainer; +use PSC\Library\Calc\Option\Type\Input as PSCInput; +use SimpleXMLElement; class Input extends Base { - protected $element; - public function __construct(\SimpleXMLElement $node) { $this->element = new \PSC\Library\Calc\Option\Type\Input(); parent::__construct($node); } - public function parse() + public function parse(): PSCInput { parent::parse(); + if(isset($this->node['min'])) { + $this->element->setMinValue((int)$this->node['min']); + } + + if(isset($this->node['max'])) { + $this->element->setMaxValue((int)$this->node['max']); + } + if($this->node->children()) { $edgeCollectionContainerParser = new EdgeCollectionContainer($this->node); $this->element->setEdgesCollectionContainer($edgeCollectionContainerParser->parse()); @@ -26,4 +34,4 @@ class Input extends Base return $this->element; } -} \ No newline at end of file +} diff --git a/src/Option/Type/Base.php b/src/Option/Type/Base.php index f457faf..f6bcc03 100644 --- a/src/Option/Type/Base.php +++ b/src/Option/Type/Base.php @@ -1,6 +1,8 @@ edgesCollectionContainer = new EdgeCollectionContainer(); + $this->validationErrors = new Set(); + } + + public function addValidationError(PSCBase $error) + { + $this->validationErrors->add($error); + } + + public function getValidationErrors(): Set + { + return $this->validationErrors; } /** @@ -294,4 +309,4 @@ class Base 'valid' => $this->isValid() ]; } -} \ No newline at end of file +} diff --git a/src/Option/Type/Input.php b/src/Option/Type/Input.php index cf04df6..1663ae5 100644 --- a/src/Option/Type/Input.php +++ b/src/Option/Type/Input.php @@ -3,7 +3,29 @@ namespace PSC\Library\Calc\Option\Type; class Input extends Base { + private ?int $minValue = null; + + private ?int $maxValue = null; public $type = 'input'; -} \ No newline at end of file + public function setMinValue(?int $min): void + { + $this->minValue = $min; + } + + public function getMinValue(): ?int + { + return $this->minValue; + } + + public function setMaxValue(?int $max): void + { + $this->maxValue = $max; + } + + public function getMaxValue(): ?int + { + return $this->maxValue; + } +} diff --git a/tests/Customer/P/CalcTest.php b/tests/Customer/P/CalcTest.php new file mode 100644 index 0000000..bb11806 --- /dev/null +++ b/tests/Customer/P/CalcTest.php @@ -0,0 +1,73 @@ +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(): void + { + $this->engine = null; + } + + public function testCalcPrice(): void + { + $article = $this->engine->getArticle(); + + $this->assertSame(92.16, $this->engine->getPrice()); + + } + + public function testMaxBreite(): void + { + $article = $this->engine->getArticle(); + + $this->engine->setVariable('breite_frei', 600); + $this->engine->calc(); + $this->assertFalse($article->getOptionById('breite_frei')->isValid()); + $this->assertEquals(1, count($article->getOptionById('breite_frei')->getValidationErrors())); + $this->assertInstanceOf(Max::class, $article->getOptionById('breite_frei')->getValidationErrors()->first()); + } + + public function testMinBreite(): void + { + $article = $this->engine->getArticle(); + + $this->engine->setVariable('breite_frei', 10); + $this->engine->calc(); + $this->assertFalse($article->getOptionById('breite_frei')->isValid()); + $this->assertEquals(1, count($article->getOptionById('breite_frei')->getValidationErrors())); + $this->assertInstanceOf(Min::class, $article->getOptionById('breite_frei')->getValidationErrors()->first()); + } + + +} diff --git a/tests/Customer/P/calc.xml b/tests/Customer/P/calc.xml new file mode 100644 index 0000000..406c81e --- /dev/null +++ b/tests/Customer/P/calc.xml @@ -0,0 +1,483 @@ + + + + Aufkleber Proppe + Freies Format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Gesamtfläche mm² Formel + + +// Kosten Datencheck + + +// Kosten Druckplatten + + +// Fixkosten Druck + + +// variable Kosten Druck + + +// Fixkosten Material + + +// variable Kosten Material + + +// variable Kosten Farbe + + +// Anzahl Schnitte + + +// Fixkosten Schneiden + + +// variable Kosten Schneiden + + + + + +// =(Auflage*Zuschuß+MatFix)*Mat Stärke/Schneidehöhe*4 (Schnitte)*Zeit je Schnitt*Std Satz + +// Fixkosten Ecken runden + + +// variable Kosten Ecken runden + + +// Fixkosten Ösen + + +// variable Kosten ösen + + +// Fixkosten lochen + + +// variable Kosten Lochung + + +// Fixkosten Stanzung + + +// variable Kosten Stanzung + + +// Fixkosten Prägung (Nutzen geteilt durch 2???) + + +// variable Kosten Prägung + + +// Fixkosten Heissfolie (Nutzen geteilt durch 2???) + + +// variable Kosten Heissfolie + + +// Fixkosten Falzen + + +// variable Kosten Falzen + + + +// variable Kosten bündlen + + +// variable Kosten verpacken (Anzahl Ex pro Karton) + + +// Kosten Kartons + + + + +// Gewicht Produkte + + +// Gewicht Kartons + + +// Gewicht Umkartons + + + + + + + + + + +// Gesamtgewicht für Produktkalkulation + + + + diff --git a/tests/Customer/P/calcTemplates.xml b/tests/Customer/P/calcTemplates.xml new file mode 100644 index 0000000..093d936 --- /dev/null +++ b/tests/Customer/P/calcTemplates.xml @@ -0,0 +1,2 @@ + + diff --git a/tests/Customer/P/formels.txt b/tests/Customer/P/formels.txt new file mode 100644 index 0000000..a6ccf7e --- /dev/null +++ b/tests/Customer/P/formels.txt @@ -0,0 +1,127 @@ +//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)'; diff --git a/tests/Customer/P/papierContainer.xml b/tests/Customer/P/papierContainer.xml new file mode 100644 index 0000000..2f328fc --- /dev/null +++ b/tests/Customer/P/papierContainer.xml @@ -0,0 +1,330 @@ + + + + +//Proppe + + + + + + + + + + + + + + 2 + + + + + + + 2 + + + + + + + 2 + + + + + + + 2 + + + + + + + 2 + + + + + + Diese 2 Zeilen standen vorher innerhalb des Papiercontainers an letzter Stelle. Wenn 4-seitige Anhägeeti in Klak aktiv, dann wieder einfügen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Customer/P/parameters.txt b/tests/Customer/P/parameters.txt new file mode 100644 index 0000000..201ddbb --- /dev/null +++ b/tests/Customer/P/parameters.txt @@ -0,0 +1,192 @@ +//Proppe +$gewinnzuschlag=1.1; +$druckbogen_breite_proppe=490; +$druckbogen_hoehe_proppe=325; +$stundensatz_datencheck_proppe=68; +$beschnitt_proppe=1.5; +$plattenpreis_proppe=13; +$stundensatz_druck_proppe=135; +$einrichtezeit_druck_proppe=0.6; +$zuschussfaktor_proppe=1.01; +$maschinenleistung_druck_proppe=6000; + +$material_fix_propppe=220; +$farbe_kg_propppe=16.5; + +$stundensatz_schneiden_proppe=61; +$hubhoehe_schneiden_proppe=75; +$zeit_je_schnitt_proppe=0.3; +$schneiden_ruesten_proppe=9; + +$ecken_runden_ruesten_proppe=6; +$ecken_runden_zeit_pro_hub=25; +$hubhoehe_ecken_proppe=30; +$stundensatz_ecken_runden_proppe=45; + +$oesen_ruesten_proppe=6; +$oesen_anzahl_pro_h=1000; +$stundensatz_oesen_proppe=45; +$material_oesen_proppe=0.016; + +$lochen_ruesten_proppe=6; +$lochen_zeit_pro_hub=90; +$hubhoehe_lochen_proppe=50; +$stundensatz_lochen_proppe=45; + +$stanzen_ruesten_proppe=15; +$stanzen_zeit_pro_1000_proppe=5; +$stanzen_werkzeug_proppe=650; +$stundensatz_stanzen_proppe=65; + +$praegen_pro_h_proppe=2250; +$praegestempel_proppe=85; +$stundensatz_praegen_proppe=70; + +$heissfolie_pro_h_proppe=1900; +$heissfoliestempel_proppe=65; +$stundensatz_heissfolie_proppe=135; + +$falzen_ruesten_proppe=20.4; +$falzen_pro_h_proppe=4000; +$stundensatz_falzen_proppe=45; + +$buendeln_pro_h_proppe=80000; +$stundensatz_buendeln_proppe=40; + +$verpackung_breite_mm_proppe=214; +$verpackung_laenge_mm_proppe=302; +$verpackung_hoehe_mm_proppe=100; +$verpackung_material_proppe=0.32; +$verpackung_material_umverp_proppe=1.8; +$karton_gewicht_proppe=200; +$umkarton_gewicht_proppe=300; +$zuschlag_versand_proppe=3; + +$versandkosten_proppe_bis_05000g=9.2; +$versandkosten_proppe_bis_10000g=10.2; +$versandkosten_proppe_bis_20000g=11.2; +$versandkosten_proppe_bis_30000g=17.2; +$versandkosten_proppe_bis_35000g=26.3; +$versandkosten_proppe_bis_40000g=27.3; +$versandkosten_proppe_bis_50000g=28.3; +$versandkosten_proppe_bis_60000g=34.3; +$versandkosten_proppe_bis_65000g=43.4; +$versandkosten_proppe_bis_70000g=44.4; +$versandkosten_proppe_bis_80000g=45.4; +$versandkosten_proppe_bis_90000g=51.4; + +$auftragspauschale_proppe=35; + + + +//express +$exp1=0.1; +$exp2=1.2; + + +// copyshop +$swst1=0.08/1.07; +$swst2=0.065/1.07; +$swst3=0.055/1.07; +$swst4=0.05/1.07; +$swst5=0.045/1.07; +$swst6=0.035/1.07; +$titeldruck=0.6/1.07; +$fst1=0.9/1.07; +$fst2=0.75/1.07; +$fst3=0.55/1.07; +$fst4=0.45/1.07; +$fst5=0.4/1.07; +$fst6=0.25/1.07; +$fswst1=0.2/1.07; +$fswst2=0.11/1.07; +$fswst3=0.10/1.07; +$fswst4=0.09/1.07; +$fswst5=0.08/1.07; +$fswst6=0.06/1.07; +$b100=3.3/1.07; +$b150=3.7/1.07; +$b200=4.3/1.07; +$b300=5.3/1.07; +$b300plus=6.3/1.07; +//shopende +//farbdrucke +$farbdruck1=0.80; +$farbdruck2=0.80*0.85; +$farbdruck3=0.80*0.75; +$farbdruck4=0.80*0.65; +$farbdruck5=0.80*0.55; +$farbdruck6=0.80*0.45; +$farbdruck7=0.80*0.37; +$farbdruck8=0.80*0.31; +$pauschale=30; +$posterpauschale=0; +$posterqm1=39.85/1.19; +$plakatpauschale=10; +$plakat140qm1=25; +$plakat160qm1=20; +$plakat80qm1=15; +$plakatA3=10; +$plakataffichenqm1=17.5; + +$aufkleberqm=45; +$klebefolieqm=45; +$cutfolieqm=45; +$cuttransferqm=15; +$cutfoliepausch=25; +$solprotectqm=15; +$wallmountqm=60; +//banner +$bannerqm=40; +$meshqm=40; +$ppqm=40; +$blockoutqm=40; + +$vkpauschale=17.5; +$laminieren=30; + +//Flyer +$flyerschneiden=7.5; +$fflyerschneiden=8; +$flyer=20; +$fflyer=30; +$karten=20; +//$karten=35; +$fkarten=25; +$flyerklick=0.3; +$fflyerklick=0.3; +$fflyerfalten=0.01; +$fkarteklick=0.310; +$karteklick=0.25; +// Weihnachtskarten + +$klick=0.5; +$visitenkarte=0.60; +$k3hs=50; +$k5hs=55; +$k10hs=65; +$k5fs=55; +$k10fs=59.9; +$kalu=89.99; +$cello=0.1; +$taschenlaminierena4=0.8; +$taschenlaminierena3=1.25; +$eckenrunden=0.01; +$eckenrundeneinrichten=5; +$nuten=12; +$nut=.12; +$nutgeschlossen=.18; +$schneiden=2.5; +$falten=0.01; +$MiniRolli3=21.99; +$MiniRolli4=16.99; +$ruestkosten=0; +$tbk=.60; +$tbkpauschale=30; +//plotten +$plotsw=3.95; +$plotfarbe=9.95; +$plotfarbefl=14.95; + +//aufschlag +$aufschlag=1.5; diff --git a/tests/Mock/PaperRepostory.php b/tests/Mock/PaperRepostory.php index 8f0c31c..4092dea 100644 --- a/tests/Mock/PaperRepostory.php +++ b/tests/Mock/PaperRepostory.php @@ -263,6 +263,16 @@ class PaperRepostory implements ObjectRepository $papier['sm150g']->setPapierTyp11(1); $papier['sm150g']->setPapierTyp14(1); + $papier['931001'] = new Paper(); + $papier['931001']->setArtNr('931001'); + $papier['931001']->setGrammatur('200'); + $papier['931001']->setPreis('300'); + $papier['931001']->setVolume(1); + $papier['931001']->setPapierTyp3(1); + $papier['931001']->setDescription1('Haftpapier hochglänzend weiß, permanent 80g'); + $papier['931001']->setDescription2('Michaelis - High Gloss White permanent geschlitzt'); + + return $papier[$criteria['artNr']]; }