This commit is contained in:
Thomas Peterson 2024-12-24 11:54:36 +01:00
parent d4c00e4c52
commit 1831fca802
11 changed files with 121 additions and 23 deletions

File diff suppressed because one or more lines are too long

View File

@ -96,7 +96,9 @@ class Calc
$var = $this->engine->getVariables()[$collection->getName()]; $var = $this->engine->getVariables()[$collection->getName()];
} }
} }
if($collection->getDefault() != "" && $var === "XXXXXXXXXXXX") {
$var = $collection->getDefault();
}
/** @var Edge $edge */ /** @var Edge $edge */
foreach ($collection as $edge) { foreach ($collection as $edge) {

View File

@ -31,6 +31,10 @@ class EdgeCollection
$collection->setFormel((string)$this->node->attributes()->formel); $collection->setFormel((string)$this->node->attributes()->formel);
} }
if(isset($this->node->attributes()->default)) {
$collection->setDefault((string)$this->node->attributes()->default);
}
foreach($this->node->grenze as $row) { foreach($this->node->grenze as $row) {
$edgeParser = new Edge($row); $edgeParser = new Edge($row);
$edge = $edgeParser->parse(); $edge = $edgeParser->parse();

View File

@ -5,41 +5,41 @@ namespace PSC\Library\Calc\General\Type;
class EdgeCollection extends \ArrayIterator class EdgeCollection extends \ArrayIterator
{ {
protected $name = ''; protected string $name = '';
protected $formel = ''; protected string $formel = '';
/** protected string $default = '';
* @return string
*/ public function getName(): string
public function getName()
{ {
return $this->name; return (string)$this->name;
} }
/** public function setName(string $name): void
* @param string $name
*/
public function setName($name)
{ {
$this->name = $name; $this->name = $name;
} }
/** public function getFormel(): string
* @return string
*/
public function getFormel()
{ {
return $this->formel; return (string)$this->formel;
} }
/** public function setFormel(string $formel): void
* @param string $formel
*/
public function setFormel($formel)
{ {
$this->formel = $formel; $this->formel = $formel;
} }
public function getDefault(): string
{
return (string)$this->default;
}
public function setDefault(string $default): void
{
$this->default = $default;
}
} }

View File

@ -0,0 +1,61 @@
<?php
namespace PSC\Library\Calc\Tests\Contact\Account;
use PHPUnit\Framework\TestCase;
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 TestCase
{
/** @var Engine */
protected $engine = null;
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.xml'));
}
public function tearDown(): void
{
$this->engine = null;
}
public function testPriceDefault(): void
{
self::assertSame(4.5, $this->engine->getPrice());
}
public function testPrice1(): void
{
$this->engine->setVariable('contact.account', 12);
self::assertSame(4.5, $this->engine->getPrice());
}
public function testPrice123(): void
{
$this->engine->setVariable('contact.account', 123);
self::assertSame(5.4, $this->engine->getPrice());
}
public function testPrice334(): void
{
$this->engine->setVariable('contact.account', 334);
self::assertSame(2.25, $this->engine->getPrice());
}
}

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<kalkulation>
<artikel>
<name>SD-Durchschreibesätze A4-Blocks</name>
<kommentar>210 mm x 297 mm</kommentar>
<option id="auflage" name="Auflage" type="Input" default="10"/>
<option id="calc_rabatt" type="Hidden">
<contact.account default="12">
<grenze calc_value="1">12</grenze>
<grenze calc_value="1.2">123</grenze>
<grenze calc_value="0.8">21</grenze>
<grenze calc_value="0.5">334</grenze>
</contact.account>
</option>
<option id="calc" type="Hidden">
<auflage>
<grenze formel="0.45*$Vauflage$V*$CVcalc_rabatt_contact.account$CV">1-</grenze>
</auflage>
</option>
</artikel>
</kalkulation>

View File

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

View File

View File

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

View File

View File

@ -8,7 +8,7 @@
<option id="calc_rabatt" type="Hidden"> <option id="calc_rabatt" type="Hidden">
<contact.accountType> <contact.accountType>
<grenze calc_value="1">0-1</grenze> <grenze calc_value="1">1</grenze>
<grenze calc_value="0.8">2</grenze> <grenze calc_value="0.8">2</grenze>
<grenze calc_value="0.5">3</grenze> <grenze calc_value="0.5">3</grenze>
</contact.accountType> </contact.accountType>