Fix Calc Papedruck

This commit is contained in:
Thomas Peterson 2020-09-19 14:27:46 +02:00
parent 84a989ed60
commit 70eaae087e
7 changed files with 115 additions and 0 deletions

View File

@ -216,6 +216,11 @@ class Engine
$this->article = $this->getArticleByName($this->activeArticle);
if($this->article === null) {
$this->dirty = false;
return true;
}
// Prefill with defaults
/** @var Base $option */
foreach($this->article->getOptions() as $option) {

View File

@ -0,0 +1,42 @@
<?php
namespace PSC\Library\Calc\Tests\Customer\G;
use PSC\Library\Calc\Article;
use PSC\Library\Calc\Engine;
use PSC\Library\Calc\PaperContainer;
use PSC\Library\Calc\Tests\Mock\PaperRepostory;
class CalcTest extends \PHPUnit_Framework_TestCase
{
/** @var Engine */
protected $engine = null;
public function setUp()
{
$repository = new PaperRepostory();
$paperContainer = new PaperContainer();
$paperContainer->parse(simplexml_load_string(file_get_contents(__DIR__ . '/papierContainer.xml')));
$this->engine = new Engine();
$this->engine->setPaperContainer($paperContainer);
$this->engine->setPaperRepository($repository);
$this->engine->setFormulas(file_get_contents(__DIR__ . '/formels.txt'));
$this->engine->setParameters(file_get_contents(__DIR__ . '/parameters.txt'));
$this->engine->setTemplates(file_get_contents(__DIR__ . '/calcTemplates.xml'));
$this->engine->loadString(file_get_contents(__DIR__ . '/calc.xml'));
}
public function tearDown()
{
$this->engine = null;
}
public function testIfDefaultPriceIsOk()
{
$this->assertEquals(10.49 , $this->engine->getPrice());
}
}

60
tests/Customer/G/calc.xml Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<kalkulation>
<artikel>
<name>Zubehör</name>
<kommentar></kommentar>
<option id="auflage" name="Menge" type="Input" step="100" default="100" min="100" max="10000" help="Geben Sie die gewünschte Menge in 100 Stückschritten ein"/>
<option id="variante" name="Kettenlänge" type="Select" default="10">
<opt id="10" name="50 mm"></opt>
<opt id="20" name="100 mm"></opt>
<opt id="30" name="150 mm"></opt>
<opt id="40" name="200 mm"></opt>
<opt id="50" name="250 mm"></opt>
<opt id="60" name="300 mm"></opt>
</option>
<!-- Einzelpreisermittlung -->
<option id="preisstaffel" name="preisstaffel" type="Hidden" default="10">
<variante>
<grenze formel="(0.41*(pow($Vauflage$V,-0.296))*$Vauflage$V)">10</grenze>
<grenze formel="(0.36*(pow($Vauflage$V,-0.264))*$Vauflage$V)">20</grenze>
<grenze formel="(0.46*(pow($Vauflage$V,-0.246))*$Vauflage$V)">30</grenze>
<grenze formel="(0.51*(pow($Vauflage$V,-0.229))*$Vauflage$V)">40</grenze>
<grenze formel="(0.59*(pow($Vauflage$V,-0.226))*$Vauflage$V)">50</grenze>
<grenze formel="(0.63*(pow($Vauflage$V,-0.218))*$Vauflage$V)">60</grenze>
</variante>
</option>
<!-- Preisberechung Basis Sprintis Online Staffel-->
<option id="kosten_kugelkette" name="kosten_kugelkette" type="Hidden" default="1">
<auflage>
<grenze formel="($CVpreisstaffel$CV*($Pzuschlag_zubehoer_extern$P))">1-</grenze>
</auflage>
</option>
<!-- Lieferzeit Gesamt DISPLAY -->
<option id="lieferzeit_gesamt_display" name="lieferzeit_gesamt_display" type="Hidden" default="1" displayOnly="1">
<auflage>
<grenze formel="5">-1</grenze>
</auflage>
</option>
<!-- Gesamtgewicht -->
<option id="weight" name="weight" type="Hidden" default="1">
<variante>
<grenze formel="($Vauflage$V*2)">10</grenze>
<grenze formel="($Vauflage$V*3)">20</grenze>
<grenze formel="($Vauflage$V*4)">30</grenze>
<grenze formel="($Vauflage$V*5)">40</grenze>
<grenze formel="($Vauflage$V*6)">50</grenze>
<grenze formel="($Vauflage$V*7)">60</grenze>
</variante>
</option>
</artikel>
</kalkulation>

View File

@ -0,0 +1,4 @@
<root>
</root>

View File

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<container>
</container>

View File