This commit is contained in:
Thomas Peterson 2025-01-02 16:57:09 +01:00
parent 1831fca802
commit 8f8379f522
4 changed files with 39 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@ -85,6 +85,9 @@ class Calc
/** @var EdgeCollection $collection */ /** @var EdgeCollection $collection */
foreach ($container as $collection) { foreach ($container as $collection) {
$var = 'XXXXXXXXXXXX'; $var = 'XXXXXXXXXXXX';
$hasVar = true;
$hasValidEdge = false;
if ($collection->getName() == "opt") { if ($collection->getName() == "opt") {
continue; continue;
} }
@ -98,7 +101,19 @@ class Calc
} }
if($collection->getDefault() != "" && $var === "XXXXXXXXXXXX") { if($collection->getDefault() != "" && $var === "XXXXXXXXXXXX") {
$var = $collection->getDefault(); $var = $collection->getDefault();
$hasVar = false;
} }
foreach ($collection as $edge) {
if ($edge->isValid($var)) {
$hasValidEdge = true;
}
}
if(!$hasValidEdge && $hasVar && $collection->getDefault()) {
$var = $collection->getDefault();
}
/** @var Edge $edge */ /** @var Edge $edge */
foreach ($collection as $edge) { foreach ($collection as $edge) {

View File

@ -93,6 +93,9 @@ class CalcValues
/** @var EdgeCollection $collection */ /** @var EdgeCollection $collection */
foreach ($container as $collection) { foreach ($container as $collection) {
$var = 'XXXXXXXX'; $var = 'XXXXXXXX';
$hasVar = true;
$hasValidEdge = false;
if ($collection->getName() == "opt") continue; if ($collection->getName() == "opt") continue;
if ($collection->getFormel() != "") { if ($collection->getFormel() != "") {
$formel = $this->formelCalc->parse($collection->getFormel()); $formel = $this->formelCalc->parse($collection->getFormel());
@ -106,6 +109,20 @@ class CalcValues
$var = $this->engine->getVariables()[$collection->getName()]; $var = $this->engine->getVariables()[$collection->getName()];
} }
} }
if($collection->getDefault() != "" && $var === "XXXXXXXXXXXX") {
$var = $collection->getDefault();
$hasVar = false;
}
foreach ($collection as $edge) {
if ($edge->isValid($var)) {
$hasValidEdge = true;
}
}
if(!$hasValidEdge && $hasVar && $collection->getDefault()) {
$var = $collection->getDefault();
}
/** @var Edge $edge */ /** @var Edge $edge */
foreach ($collection as $edge) { foreach ($collection as $edge) {

View File

@ -47,6 +47,12 @@ class CalcTest extends TestCase
self::assertSame(4.5, $this->engine->getPrice()); self::assertSame(4.5, $this->engine->getPrice());
} }
public function testPriceAccountNotExists(): void
{
$this->engine->setVariable('contact.account', 3242);
self::assertSame(4.5, $this->engine->getPrice());
}
public function testPrice123(): void public function testPrice123(): void
{ {
$this->engine->setVariable('contact.account', 123); $this->engine->setVariable('contact.account', 123);