diff --git a/.phpunit.result.cache b/.phpunit.result.cache
index 94367f2..472c357 100644
--- a/.phpunit.result.cache
+++ b/.phpunit.result.cache
@@ -1 +1 @@
-{"version":1,"defects":{"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":4,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":3,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":4,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":4,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":4,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":4,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":4,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":4,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":4,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":4,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":4,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":4,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":3,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":3,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":4,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":4,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":4,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":4,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":4,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":4,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":4,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":4,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":4,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":4,"PSC\\Library\\Calc\\Tests\\Recursiv\\SecondTest::testIfArticleCountIsCorrect":4},"times":{"PSC\\Library\\Calc\\Tests\\testTest::testOk":0.002,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testIfArticleCountInXmlCorrect":0.007,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":0.008,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":0.008,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":0.008,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":0.008,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":0.006,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrectWith2Article":0.004,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":0.004,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":0.006,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":0.005,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":0.006,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":0.006,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":0.006,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":0.091,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":0.093,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfArticleCountIsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":0.165,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfArticleCountIsCorrect":0.009,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":0.044,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfArticleCountIsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":0.026,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfArticleCountIsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":0.156,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfArticleCountIsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":0.029,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfArticleCountIsCorrect":0.007,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":0.027,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":0.204,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":0.202,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":0.199,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":0.088,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":0.174,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":0.026,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":0.198,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":0.199,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":0.196,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":0.013,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":0.006,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testSimpleLoadXmlFromString":0.004,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":0.004,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":0.007,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":0.007,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":0.007,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\ContainerTest::testIfLoadsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfOneValue":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFrom":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFromTo":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfCommaSeperated":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\CheckboxTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectAttributes":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\RadioboxTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectType":0.004,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectAttributes":0.004,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfPaperContainerReturnsCorrectItems":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithPaperContainerModeReturnsCorrectOpt":0.004,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectAttributes":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectAttributes":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCountCorrect":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfNameIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorret":0.002,"PSC\\Library\\Calc\\Tests\\Recursiv\\SecondTest::testIfArticleCountIsCorrect":0.007,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":0.009,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":0.009,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":0.009}}
\ No newline at end of file
+{"version":1,"defects":{"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":4,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":3,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":4,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":4,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":4,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":4,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":3,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":3,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":3,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":4,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":4,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":3,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":4,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":4,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":4,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":4,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":4,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":3,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":3,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":4,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":4,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":4,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":4,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":4,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":4,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":4,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":4,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":4,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":4,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":4,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":4,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":4,"PSC\\Library\\Calc\\Tests\\Recursiv\\SecondTest::testIfArticleCountIsCorrect":4,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testDefaultPrice":4,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAuflage500":4,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt2":4,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt3":4,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMaxBreite":4,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMinBreite":4,"PSC\\Library\\Calc\\Tests\\Customer\\T\\CalcTest::testIfDefaultPriceIsOk":4,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testCalcPrice":4,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testHelpTextAndLink":4},"times":{"PSC\\Library\\Calc\\Tests\\testTest::testOk":0.001,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testIfArticleCountInXmlCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":0.006,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":0.005,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":0.011,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":0.005,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":0.004,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":0.004,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrectWith2Article":0.002,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":0.004,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":0.004,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":0.003,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":0.003,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":0.066,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":0.069,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":0.114,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfArticleCountIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":0.027,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":0.113,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":0.017,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":0.128,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":0.129,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":0.125,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":0.06,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":0.123,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":0.028,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":0.027,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":0.028,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":0.123,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":0.121,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":0.123,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":0.003,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testSimpleLoadXmlFromString":0.002,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":0.003,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":0.004,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":0.004,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":0.004,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\ContainerTest::testIfLoadsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfOneValue":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFrom":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFromTo":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfCommaSeperated":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\CheckboxTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\RadioboxTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfPaperContainerReturnsCorrectItems":0.001,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithPaperContainerModeReturnsCorrectOpt":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCountCorrect":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfCorrectType":0.001,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfNameIsCorrect":0.001,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorrectType":0.001,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorret":0.001,"PSC\\Library\\Calc\\Tests\\Recursiv\\SecondTest::testIfArticleCountIsCorrect":0.007,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":0.001,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testCalcPrice":0.021,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testHelpTextAndLink":0.022,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMaxBreite":0.038,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMinBreite":0.038,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPrice":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChange":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChangeSecound":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testDefaultPrice":0.322,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAuflage500":0.324,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt2":0.324,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt3":0.326,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl330":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl331":0.039,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCheckbox":0.041,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionDefaultCheckbox":0.073,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCalcCheckbox":0.072,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcDefault":0.01,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcOnly2":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcDefault":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcOnly2":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\S\\CalcTest::testCalcPrice":0.004,"PSC\\Library\\Calc\\Tests\\General\\DisplayGroupTest::testDisplayGroup":0.004,"PSC\\Library\\Calc\\Tests\\Recursiv\\FirstTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\T\\CalcTest::testIfDefaultPriceIsOk":0.008}}
\ No newline at end of file
diff --git a/src/Calc/Calc.php b/src/Calc/Calc.php
index 02df7a1..0a9016f 100644
--- a/src/Calc/Calc.php
+++ b/src/Calc/Calc.php
@@ -83,6 +83,7 @@ class Calc
/** @var EdgeCollection $collection */
foreach($container as $collection) {
+ $var = 'XXXXXXXXXXXX';
if($collection->getName() == "opt") continue;
if($collection->getFormel() != "") {
$formel = $this->formelCalc->parse($collection->getFormel());
@@ -92,9 +93,7 @@ class Calc
eval('$var = ' . $formel . ';');
}
}else{
- if(!isset($this->engine->getVariables()[$collection->getName()])) {
- $var = 'XXXXXXXXXXXX';
- }else{
+ if(isset($this->engine->getVariables()[$collection->getName()])) {
$var = $this->engine->getVariables()[$collection->getName()];
}
}
@@ -102,7 +101,7 @@ class Calc
/** @var Edge $edge */
foreach($collection as $edge) {
- if($edge->isValid($var)) {
+ if($var !== "XXXXXXXXXXXX" && $edge->isValid($var)) {
if($edge->getPauschale() != 0) {
eval('$gesamt += ' . $edge->getPauschale() . ';');
@@ -150,9 +149,14 @@ class Calc
if ($formel != "" && !in_array($option->getId(), ['weight', 'weight_single']) && $option->isAjaxExport() && !$option->isDisplayOnly() && $option->isAmount()) {
$p = 0;
$formel = str_replace("tonumber", '$this->toNumber', $formel);
- eval('@$p = ' . $formel . ';');
+ try {
+ eval('@$p = ' . $formel . ';');
- $this->engine->addAjaxVariable($option->getId(), $p);
+ $this->engine->addAjaxVariable($option->getId(), $p);
+ }catch (\Throwable $e) {
+ $this->engine->addDebugCalcFormel($edge->getFormel(), $formel . ' = error');
+ $p = 0;
+ }
}
if ($formel != "" && !in_array($option->getId(), ['weight', 'weight_single']) && !$option->isAjaxExport() && $option->isDisplayOnly() && $option->isAmount()) {
$p = 0;
diff --git a/src/Calc/CalcValues.php b/src/Calc/CalcValues.php
index 22d3dd7..fe93d32 100644
--- a/src/Calc/CalcValues.php
+++ b/src/Calc/CalcValues.php
@@ -92,6 +92,7 @@ class CalcValues
/** @var EdgeCollection $collection */
foreach ($container as $collection) {
+ $var = 'XXXXXXXX';
if ($collection->getName() == "opt") continue;
if ($collection->getFormel() != "") {
$formel = $this->formelCalc->parse($collection->getFormel());
@@ -101,9 +102,7 @@ class CalcValues
eval('$var = ' . $formel . ';');
}
} else {
- if (!isset($this->engine->getVariables()[$collection->getName()])) {
- $var = 'XXXXXXXX';
- } else {
+ if (isset($this->engine->getVariables()[$collection->getName()])) {
$var = $this->engine->getVariables()[$collection->getName()];
}
}
@@ -111,7 +110,7 @@ class CalcValues
/** @var Edge $edge */
foreach ($collection as $edge) {
- if ($edge->isValid($var)) {
+ if ($var !== 'XXXXXXXX' && $edge->isValid($var)) {
if ($edge->getCalcValue() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue());
diff --git a/src/Engine.php b/src/Engine.php
index c57109c..c918751 100644
--- a/src/Engine.php
+++ b/src/Engine.php
@@ -247,7 +247,9 @@ class Engine
$tmp = [];
foreach ($this->variables as $key => $variable) {
if(!is_array($variable)) {
- $tmp[$key] = str_replace(",", ".", $variable);
+ if($variable !== null) {
+ $tmp[$key] = str_replace(",", ".", $variable);
+ }
}else{
$tmp[$key] = $variable;
}
diff --git a/tests/Complex/ThirdTest.php b/tests/Complex/ThirdTest.php
index a032cf5..d7c9016 100644
--- a/tests/Complex/ThirdTest.php
+++ b/tests/Complex/ThirdTest.php
@@ -45,5 +45,6 @@ class ThirdTest extends TestCase
$this->engine->setVariable('auflage', 1500);
$this->engine->setVariable('druckfarben_inhalt', 2);
$this->assertEquals(152.00 , $this->engine->getPrice());
+
}
}
diff --git a/tests/Customer/R/CalcComplexTest.php b/tests/Customer/R/CalcComplexTest.php
index 92bab85..48def01 100644
--- a/tests/Customer/R/CalcComplexTest.php
+++ b/tests/Customer/R/CalcComplexTest.php
@@ -48,6 +48,7 @@ class CalcComplexTest extends TestCase
public function testAuflage500(): void
{
$this->engine->setVariable('auflage', 500);
+ $this->engine->calc();
$this->assertSame(94.68, $this->engine->getPrice());
}
diff --git a/tests/Customer/R/calc_complex.xml b/tests/Customer/R/calc_complex.xml
index 7ca6ccb..6e1cdc7 100644
--- a/tests/Customer/R/calc_complex.xml
+++ b/tests/Customer/R/calc_complex.xml
@@ -321,8 +321,8 @@
-
diff --git a/tests/Customer/T/CalcTest.php b/tests/Customer/T/CalcTest.php
new file mode 100644
index 0000000..347559e
--- /dev/null
+++ b/tests/Customer/T/CalcTest.php
@@ -0,0 +1,45 @@
+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 testIfDefaultPriceIsOk(): void
+ {
+ $this->engine->calc();
+ $this->assertEquals(0 , $this->engine->getPrice());
+
+ }
+}
diff --git a/tests/Customer/T/calc.xml b/tests/Customer/T/calc.xml
new file mode 100644
index 0000000..ccc419e
--- /dev/null
+++ b/tests/Customer/T/calc.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ Banderolen
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/Customer/T/calcTemplates.xml b/tests/Customer/T/calcTemplates.xml
new file mode 100644
index 0000000..7b1cdd7
--- /dev/null
+++ b/tests/Customer/T/calcTemplates.xml
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Customer/T/formels.txt b/tests/Customer/T/formels.txt
new file mode 100644
index 0000000..04d87b1
--- /dev/null
+++ b/tests/Customer/T/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/T/papierContainer.xml b/tests/Customer/T/papierContainer.xml
new file mode 100644
index 0000000..ba0a21e
--- /dev/null
+++ b/tests/Customer/T/papierContainer.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/Customer/T/parameters.txt b/tests/Customer/T/parameters.txt
new file mode 100644
index 0000000..7a68095
--- /dev/null
+++ b/tests/Customer/T/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