Staffelpreise

This commit is contained in:
Thomas Peterson 2026-04-24 10:53:39 +02:00
parent 755cd972e1
commit e6cfad0446
4 changed files with 5753 additions and 5740 deletions

File diff suppressed because it is too large Load Diff

View File

@ -69,8 +69,8 @@ class Calc
if ($option->getStaffelCalc() !== null) {
$formel = $this->formelCalc->parse($option->getStaffelCalc());
eval('$staffelCalcResult = ' . $formel . ';');
var_dump($staffelCalcResult);
$option->setStaffelCalcResult($staffelCalcResult);
$this->engine->setVariables($option->parseAdditionalValues($this->engine->getVariables()));
}
}
foreach ($option->getSelectedOptions() as $opt) {

View File

@ -220,23 +220,21 @@ class PaperDbSelect extends Select
private function getStaffelValue($paper): ?float
{
var_dump(1);
if ($this->getStaffelCalcResult() < $paper->getStaffelMenge1()) {
return (float) $paper->getStaffelPreis1();
}
if ($this->getStaffelCalcResult() < $paper->getStaffelMenge2()) {
return (float) $paper->getStaffelPreis2();
}
if ($this->getStaffelCalcResult() < $paper->getStaffelMenge3()) {
return (float) $paper->getStaffelPreis3();
}
if ($this->getStaffelCalcResult() < $paper->getStaffelMenge4()) {
return (float) $paper->getStaffelPreis4();
}
if ($this->getStaffelCalcResult() < $paper->getStaffelMenge5()) {
if ($this->getStaffelCalcResult() >= $paper->getStaffelMenge5()) {
return (float) $paper->getStaffelPreis5();
}
if ($this->getStaffelCalcResult() >= $paper->getStaffelMenge4()) {
return (float) $paper->getStaffelPreis4();
}
if ($this->getStaffelCalcResult() >= $paper->getStaffelMenge3()) {
return (float) $paper->getStaffelPreis3();
}
if ($this->getStaffelCalcResult() >= $paper->getStaffelMenge2()) {
return (float) $paper->getStaffelPreis2();
}
if ($this->getStaffelCalcResult() >= $paper->getStaffelMenge1()) {
return (float) $paper->getStaffelPreis1();
}
return 0;
}
}

View File

@ -38,7 +38,24 @@ class CalcTest extends TestCase
public function testNormalPrice(): void
{
$this->engine->calc();
$this->assertSame(5.00, $this->engine->getPrice());
$this->assertSame(25.00, $this->engine->getPrice());
$this->engine->getCalcGraph()->generateJsonGraph();
}
public function testStaffel2Price(): void
{
$this->engine->setVariable('papier', 'staffel2');
$this->engine->calc();
$this->assertSame(207.00, $this->engine->getPrice());
$this->engine->getCalcGraph()->generateJsonGraph();
}
public function testStaffel2_1Price(): void
{
$this->engine->setVariable('papier', 'staffel2');
$this->engine->setVariable('auflage', '45');
$this->engine->calc();
$this->assertSame(407.00, $this->engine->getPrice());
$this->engine->getCalcGraph()->generateJsonGraph();
}
}