Fixes
This commit is contained in:
parent
d95e79b7bf
commit
498470c8d0
@ -16,6 +16,7 @@ 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\PaperDbSelect;
|
||||
use PSC\Library\Calc\Option\Type\Radio;
|
||||
use PSC\Library\Calc\Option\Type\Select;
|
||||
use PSC\Library\Calc\Tests\Mock\Paper;
|
||||
|
||||
@ -52,7 +53,7 @@ class Calc
|
||||
/** @var Base $option */
|
||||
foreach ($this->article->getOptions() as $option) {
|
||||
|
||||
if($option instanceof Select || $option instanceof Checkbox) {
|
||||
if ($option instanceof Select || $option instanceof Checkbox || $option instanceof Radio) {
|
||||
/** @var Select\Opt $opt */
|
||||
foreach ($option->getOptions() as $opt) {
|
||||
if ($opt->isValid() && $opt->isSelected()) {
|
||||
@ -84,7 +85,9 @@ class Calc
|
||||
/** @var EdgeCollection $collection */
|
||||
foreach ($container as $collection) {
|
||||
$var = 'XXXXXXXXXXXX';
|
||||
if($collection->getName() == "opt") continue;
|
||||
if ($collection->getName() == "opt") {
|
||||
continue;
|
||||
}
|
||||
if ($collection->getFormel() != "") {
|
||||
$formel = $this->formelCalc->parse($collection->getFormel());
|
||||
eval('$var = ' . $formel . ';');
|
||||
@ -192,7 +195,8 @@ class Calc
|
||||
return $gesamt;
|
||||
}
|
||||
|
||||
private function eval_func($gesamt, string $formel) {
|
||||
private function eval_func($gesamt, string $formel)
|
||||
{
|
||||
$p = 0;
|
||||
try {
|
||||
eval('@$p=' . $formel . ';');
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace PSC\Library\Calc\Tests\Customer\DD;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@ -10,7 +11,6 @@ use PSC\Library\Calc\Tests\Mock\PaperRepostory;
|
||||
|
||||
class CalcTest extends TestCase
|
||||
{
|
||||
|
||||
/** @var Engine */
|
||||
protected $engine = null;
|
||||
|
||||
@ -181,8 +181,6 @@ class CalcTest extends TestCase
|
||||
0 => '1',
|
||||
),
|
||||
]);
|
||||
echo $this->engine->getPrice().PHP_EOL;
|
||||
var_dump($this->engine->getAjaxVariables()['ppreisI']);
|
||||
$this->assertSame(37.74, $this->engine->getPrice());
|
||||
}
|
||||
|
||||
|
||||
55
tests/Customer/R/RadioboxCalcTest.php
Normal file
55
tests/Customer/R/RadioboxCalcTest.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace PSC\Library\Calc\Tests\Customer\R;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PSC\Library\Calc\Engine;
|
||||
use PSC\Library\Calc\PaperContainer;
|
||||
use PSC\Library\Calc\Tests\Mock\PaperRepostory;
|
||||
|
||||
class RadioboxCalcTest extends TestCase
|
||||
{
|
||||
protected ?Engine $engine;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$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_radiobox_with_calc.xml'));
|
||||
|
||||
}
|
||||
|
||||
public function tearDown(): void
|
||||
{
|
||||
$this->engine = null;
|
||||
}
|
||||
|
||||
public function testCalcDefault(): void
|
||||
{
|
||||
$this->assertSame(3.22, $this->engine->getPrice());
|
||||
}
|
||||
|
||||
public function testCalcZweiseitig(): void
|
||||
{
|
||||
$this->engine->setVariable('bedruckung', 'beidseitig');
|
||||
$this->assertSame(5.97, $this->engine->getPrice());
|
||||
}
|
||||
|
||||
public function testCalcZweiseitig20(): void
|
||||
{
|
||||
$this->engine->setVariable('auflage', '20');
|
||||
$this->engine->setVariable('bedruckung', 'beidseitig');
|
||||
$this->assertSame(62.86, $this->engine->getPrice());
|
||||
}
|
||||
|
||||
}
|
||||
33
tests/Customer/R/calc_radiobox_with_calc.xml
Normal file
33
tests/Customer/R/calc_radiobox_with_calc.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<kalkulation>
|
||||
<artikel>
|
||||
<name>Checkbox Grenze Formel</name>
|
||||
<kommentar></kommentar>
|
||||
<option id="auflage" name="Auflage" default="1" type="Input"/>
|
||||
|
||||
<option id="bedruckung" name="Bedruckung" type="Radio" default="einseitig">
|
||||
<opt id="einseitig" name="Einseitig">
|
||||
<auflage>
|
||||
<grenze formel="($Vauflage$V*3.83)*100/119">1-6</grenze>
|
||||
<grenze formel="($Vauflage$V*3.30)*100/119">7-9</grenze>
|
||||
<grenze formel="($Vauflage$V*2.75)*100/119">10-19</grenze>
|
||||
<grenze formel="($Vauflage$V*2.42)*100/119">20-49</grenze>
|
||||
<grenze formel="($Vauflage$V*2.20)*100/119">50-99</grenze>
|
||||
<grenze formel="($Vauflage$V*1.93)*100/119">100-249</grenze>
|
||||
<grenze formel="($Vauflage$V*1.65)*100/119">250-</grenze>
|
||||
</auflage>
|
||||
</opt>
|
||||
<opt id="beidseitig" name="beidseitig">
|
||||
<auflage>
|
||||
<grenze formel="($Vauflage$V*7.10)*100/119">1-6</grenze>
|
||||
<grenze formel="($Vauflage$V*6.00)*100/119">7-9</grenze>
|
||||
<grenze formel="($Vauflage$V*4.84)*100/119">10-19</grenze>
|
||||
<grenze formel="($Vauflage$V*3.74)*100/119">20-49</grenze>
|
||||
<grenze formel="($Vauflage$V*3.20)*100/119">50-99</grenze>
|
||||
<grenze formel="($Vauflage$V*2.85)*100/119">100-249</grenze>
|
||||
<grenze formel="($Vauflage$V*2.42)*100/119">250-</grenze>
|
||||
</auflage>
|
||||
</opt>
|
||||
</option>
|
||||
</artikel>
|
||||
</kalkulation>
|
||||
Loading…
Reference in New Issue
Block a user