This commit is contained in:
Thomas Peterson 2025-02-08 21:22:33 +01:00
parent 37290c2ced
commit 2e98224be7
11 changed files with 1054 additions and 2 deletions

File diff suppressed because one or more lines are too long

View File

@ -146,6 +146,7 @@ class CalcValues
}
if ($edge->getCalcValue1() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue1());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_1', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -160,6 +161,7 @@ class CalcValues
}
if ($edge->getCalcValue2() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue2());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_2', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -174,6 +176,7 @@ class CalcValues
}
if ($edge->getCalcValue3() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue3());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_3', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -188,6 +191,7 @@ class CalcValues
}
if ($edge->getCalcValue4() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue4());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_4', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -202,6 +206,7 @@ class CalcValues
}
if ($edge->getCalcValue5() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue5());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_5', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -216,6 +221,7 @@ class CalcValues
}
if ($edge->getCalcValue6() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue6());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_6', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -230,6 +236,7 @@ class CalcValues
}
if ($edge->getCalcValue7() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue7());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_7', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -244,6 +251,7 @@ class CalcValues
}
if ($edge->getCalcValue8() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue8());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_8', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -258,6 +266,7 @@ class CalcValues
}
if ($edge->getCalcValue9() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue9());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_9', $edge->getCalcValue(), $orgCv . ' = ' . $cv);
@ -272,6 +281,7 @@ class CalcValues
}
if ($edge->getCalcValue10() != "") {
$cv = $this->formelCalc->parse($edge->getCalcValue10());
$orgCv = $cv;
try {
eval('@$cv = ' . $cv . ';');
$this->engine->addDebugCalcVariables($id . '_' . $collection->getName() . '_10', $edge->getCalcValue(), $orgCv . ' = ' . $cv);

View File

@ -129,7 +129,6 @@ class Formel
private function parseCalcVariables($formel)
{
preg_match_all('/\$CV[\w\.]*\$CV/', $formel, $founds);
$variables = $this->engine->getCalcVariables();
if (!empty($founds [0])) {

View File

@ -159,6 +159,7 @@ class Valid
}
$this->engine->setVariables($option->parseAdditionalValues($this->engine->getVariables()));
$this->engine->addCalcVariable($option->getId() . '_valid', (int)$option->isValid());
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace PSC\Library\Calc\Tests\Customer\GG;
use PHPUnit\Framework\TestCase;
use PSC\Library\Calc\Article;
use PSC\Library\Calc\Engine;
use PSC\Library\Calc\Option\Type\Select;
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 testPrice(): void
{
$this->engine->calc();
$this->assertSame(179.38, $this->engine->getPrice());
}
}

857
tests/Customer/GG/calc.xml Normal file
View File

@ -0,0 +1,857 @@
<?xml version="1.0" encoding="utf-8"?>
<kalkulation>
<artikel>
<name>Kalk</name>
<kommentar></kommentar>
<option id="auflage" name="Auflage" type="Input" min="500" default="500" require="true"></option>
<option id="format" name="Format" type="Select" default="4" require="true">
<opt id="4" name="A4">
<auflage>
<grenze calc_value_1="2" calc_value_2="5" calc_value_3="1">1-</grenze>
</auflage>
</opt>
<opt id="5" name="A5">
<auflage>
<grenze calc_value_1="4" calc_value_2="5" calc_value_3="2">1-</grenze>
</auflage>
</opt>
</option>
<option id="ausrichtung" name="Ausrichtung" type="Select" default="1" require="true">
<opt id="1" name="Hochformat"></opt>
<opt id="2" name="Querformat"></opt>
</option>
<option id="blatt" name="Blätter im Satz" type="Select" default="2" require="true">
<opt id="2" name="2"></opt>
<opt id="3" name="3"></opt>
<opt id="4" name="4"></opt>
<opt id="5" name="5"></opt>
</option>
<option id="blatt_o" name="Oberblatt" type="Select" default="bdm135" require="true" mode="papierdb" container="test">
</option>
<option id="blatt_2" name="2. Blatt" type="Select" default="bdm135" require="true" mode="papierdb" container="test">
<grenzen>
<blatt>
<grenze>3,4,5</grenze>
</blatt>
</grenzen>
</option>
<option id="blatt_3" name="3. Blatt" type="Select" default="bdm135" require="true" mode="papierdb" container="test">
<grenzen>
<blatt>
<grenze>4,5</grenze>
</blatt>
</grenzen>
</option>
<option id="blatt_4" name="4. Blatt" type="Select" default="bdm135" require="true" mode="papierdb" container="test">
<grenzen>
<blatt>
<grenze>5</grenze>
</blatt>
</grenzen>
</option>
<option id="blatt_s" name="Schlussblatt" type="Select" default="bdm135" require="true" mode="papierdb" container="test">
</option>
<option id="verleimung" name="Verleimung" type="Select" default="1" require="true">
<opt id="1" name="Am Kopf"></opt>
<opt id="2" name="Am Fuß"></opt>
<opt id="3" name="Links"></opt>
<opt id="4" name="Rechts"></opt>
</option>
<option id="druckfarben" name="Druckfarben" type="Select" default="21" require="true">
<opt id="10" name="1/0">
<auflage>
<grenze calc_value_1="1" calc_value_2="0">1-</grenze>
</auflage>
</opt>
<opt id="11" name="1/1">
<auflage>
<grenze calc_value_1="1" calc_value_2="1">1-</grenze>
</auflage>
</opt>
<opt id="20" name="2/0">
<auflage>
<grenze calc_value_1="2" calc_value_2="0">1-</grenze>
</auflage>
</opt>
<opt id="21" name="2/1">
<auflage>
<grenze calc_value_1="2" calc_value_2="1">1-</grenze>
</auflage>
</opt>
<opt id="22" name="2/2">
<auflage>
<grenze calc_value_1="2" calc_value_2="2">1-</grenze>
</auflage>
</opt>
<opt id="30" name="3/0">
<auflage>
<grenze calc_value_1="3" calc_value_2="0">1-</grenze>
</auflage>
</opt>
<opt id="31" name="3/1">
<auflage>
<grenze calc_value_1="3" calc_value_2="1">1-</grenze>
</auflage>
</opt>
<opt id="32" name="3/2">
<auflage>
<grenze calc_value_1="3" calc_value_2="2">1-</grenze>
</auflage>
</opt>
<opt id="33" name="3/3">
<auflage>
<grenze calc_value_1="3" calc_value_2="3">1-</grenze>
</auflage>
</opt>
<opt id="40" name="4/0">
<auflage>
<grenze calc_value_1="4" calc_value_2="0">1-</grenze>
</auflage>
</opt>
<opt id="41" name="4/1">
<auflage>
<grenze calc_value_1="4" calc_value_2="1">1-</grenze>
</auflage>
</opt>
<opt id="42" name="4/2">
<auflage>
<grenze calc_value_1="4" calc_value_2="2">1-</grenze>
</auflage>
</opt>
<opt id="43" name="4/3">
<auflage>
<grenze calc_value_1="4" calc_value_2="3">1-</grenze>
</auflage>
</opt>
<opt id="44" name="4/4">
<auflage>
<grenze calc_value_1="4" calc_value_2="4">1-</grenze>
</auflage>
</opt>
</option>
<option id="farberueck" name="Farbe Rückseite gleich Vorderseite" type="Select" default="1" require="true">
<opt id="1" name="Ja"></opt>
<opt id="2" name="Nein"></opt>
</option>
<!-- FARBE VORDERSEITEN -->
<option id="farbe_1_v" name="Farbe 1 Vorderseite" type="Select" default="1" require="true">
<opt id="1" name="Euroskala"></opt>
<opt id="2" name="HKS N"></opt>
<opt id="3" name="Pantone U"></opt>
</option>
<option id="farbe_1_v_wert_euroscala" name="Farbwert 1 Vorderseite" type="Select" min="0" max="100" default="magenta" require="true">
<opt id="magenta" name="Magenta">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="cyan" name="Cyan">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="gelb" name="Gelb">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="black" name="Schwarz">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
</option>
<option id="farbe_1_v_wert_hks" name="Farbwert 1 Vorderseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<farbe_1_v>
<grenze>2</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_1_v_wert_pantone" name="Farbwert 1 Vorderseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<farbe_1_v>
<grenze>3</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_2_v" name="Farbe 2 Vorderseite" type="Select" default="2" require="true">
<grenzen>
<druckfarben>
<grenze>20-</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala"></opt>
<opt id="2" name="HKS N"></opt>
<opt id="3" name="Pantone U"></opt>
</option>
<option id="farbe_2_v_wert_euroscala" name="Farbwert 1 Vorderseite" type="Select" min="0" max="100" default="magenta" require="true">
<grenzen>
<druckfarben>
<grenze>20-</grenze>
</druckfarben>
</grenzen>
<opt id="magenta" name="Magenta">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="cyan" name="Cyan">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="gelb" name="Gelb">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="black" name="Schwarz">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
</option>
<option id="farbe_2_v_wert_hks" name="Farbwert 1 Vorderseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<druckfarben>
<grenze>20-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>2</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_2_v_wert_pantone" name="Farbwert 1 Vorderseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<druckfarben>
<grenze>20-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>3</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_3_v" name="Farbe 3 Vorderseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>30-</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala"></opt>
<opt id="2" name="HKS N"></opt>
<opt id="3" name="Pantone U"></opt>
</option>
<option id="farbe_3_v_wert_euroscala" name="Farbwert 3 Vorderseite" type="Select" min="0" max="100" default="magenta" require="true">
<grenzen>
<druckfarben>
<grenze>30-</grenze>
</druckfarben>
</grenzen>
<opt id="magenta" name="Magenta">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="cyan" name="Cyan">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="gelb" name="Gelb">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="black" name="Schwarz">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
</option>
<option id="farbe_3_v_wert_hks" name="Farbwert 3 Vorderseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<druckfarben>
<grenze>30-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>2</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_3_v_wert_pantone" name="Farbwert 3 Vorderseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<druckfarben>
<grenze>30-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>3</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_4_v" name="Farbe 4 Vorderseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>40-</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala"></opt>
<opt id="2" name="HKS N"></opt>
<opt id="3" name="Pantone U"></opt>
</option>
<option id="farbe_4_v_wert_euroscala" name="Farbwert 4 Vorderseite" type="Select" min="0" max="100" default="magenta" require="true">
<grenzen>
<druckfarben>
<grenze>40-</grenze>
</druckfarben>
</grenzen>
<opt id="magenta" name="Magenta">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="cyan" name="Cyan">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="gelb" name="Gelb">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
<opt id="black" name="Schwarz">
<farbe_1_v>
<grenze>1</grenze>
</farbe_1_v>
</opt>
</option>
<option id="farbe_4_v_wert_hks" name="Farbwert 4 Vorderseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<druckfarben>
<grenze>40-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>2</grenze>
</farbe_1_v>
</grenzen>
</option>
<option id="farbe_4_v_wert_pantone" name="Farbwert 4 Vorderseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<druckfarben>
<grenze>40-</grenze>
</druckfarben>
<farbe_1_v>
<grenze>3</grenze>
</farbe_1_v>
</grenzen>
</option>
<!-- FARBE VORDERSEITE ENDE -->
<!-- FARBE RÜCKSEITE -->
<option id="farbe_1_r" name="Farbe 1 Rückseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>11,21,22,31,32,33,41,42,43,44</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="2" name="HKS N">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="3" name="Pantone U">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_1_r_wert_euroscala" name="Farbwert 1 Rückseite" type="Select" min="0" max="100" default="magenta" require="true">
<grenzen>
<druckfarben>
<grenze>11,21,22,31,32,33,41,42,43,44</grenze>
</druckfarben>
</grenzen>
<opt id="magenta" name="Magenta">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="cyan" name="Cyan">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="gelb" name="Gelb">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="black" name="Schwarz">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_1_r_wert_hks" name="Farbwert 1 Rückseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<druckfarben>
<grenze>11,21,22,31,32,33,41,42,43,44</grenze>
</druckfarben>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>2</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_1_r_wert_pantone" name="Farbwert 1 Rückseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<druckfarben>
<grenze>11,21,22,31,32,33,41,42,43,44</grenze>
</druckfarben>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>3</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_2_r" name="Farbe 2 Rückseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>22,32,33,42,43,44</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="2" name="HKS N">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="3" name="Pantone U">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_2_r_wert_euroscala" name="Farbwert 2 Rückseite" type="Select" min="0" max="100" default="magenta" require="true">
<opt id="magenta" name="Magenta">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="cyan" name="Cyan">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="gelb" name="Gelb">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="black" name="Schwarz">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_2_r_wert_hks" name="Farbwert 2 Rückseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>2</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_2_r_wert_pantone" name="Farbwert 2 Rückseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>3</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_3_r" name="Farbe 3 Rückseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>33,43,44</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="2" name="HKS N">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="3" name="Pantone U">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_3_r_wert_euroscala" name="Farbwert 3 Rückseite" type="Select" min="0" max="100" default="magenta" require="true">
<opt id="magenta" name="Magenta">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="cyan" name="Cyan">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="gelb" name="Gelb">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="black" name="Schwarz">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_3_r_wert_hks" name="Farbwert 3 Rückseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>2</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_3_r_wert_pantone" name="Farbwert 3 Rückseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>3</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_4_r" name="Farbe 4 Rückseite" type="Select" default="1" require="true">
<grenzen>
<druckfarben>
<grenze>44</grenze>
</druckfarben>
</grenzen>
<opt id="1" name="Euroskala">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="2" name="HKS N">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
<opt id="3" name="Pantone U">
<farberueck>
<grenze>2</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_4_r_wert_euroscala" name="Farbwert 4 Rückseite" type="Select" min="0" max="100" default="magenta" require="true">
<opt id="magenta" name="Magenta">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="cyan" name="Cyan">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="gelb" name="Gelb">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
<opt id="black" name="Schwarz">
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>1</grenze>
</farbe_r>
</grenze>
</farberueck>
</opt>
</option>
<option id="farbe_4_r_wert_hks" name="Farbwert 4 Rückseite HKS" type="Select" mode="colordb" container="hks-n" default="78" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>2</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<option id="farbe_4_r_wert_pantone" name="Farbwert 4 Rückseite Pantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142" require="true">
<grenzen>
<farberueck>
<grenze value="2">
<farbe_r>
<grenze>3</grenze>
</farbe_r>
</grenze>
</farberueck>
</grenzen>
</option>
<!-- FARBE RÜCKSEITE ENDE -->
<option id="abheftlochung" name="Abheftlochung" type="Select" default="1" require="true">
<opt id="1" name="Ohne"></opt>
<opt id="2" name="2-fach"></opt>
<opt id="4" name="4-fach"></opt>
</option>
<option id="abheftseite" name="Abheftseite" type="Select" default="1" require="true">
<opt id="1" name="Am Kopf">
<abheftlochung>
<grenze>2,4</grenze>
</abheftlochung>
</opt>
<opt id="2" name="Am Fuß">
<abheftlochung>
<grenze>2,4</grenze>
</abheftlochung>
</opt>
<opt id="3" name="Links">
<abheftlochung>
<grenze>2,4</grenze>
</abheftlochung>
</opt>
<opt id="4" name="Rechts">
<abheftlochung>
<grenze>2,4</grenze>
</abheftlochung>
</opt>
</option>
<option id="datencheck" name="Datencheck" type="Select" default="2" require="true">
<opt id="1" name="Basis-Datencheck"></opt>
<opt id="2" name="Profi-Datencheck"></opt>
</option>
<option id="fertigungs_dauer" name="Fertigungsdauer" type="Select" default="1" require="true">
<opt id="1" name="6-8 Arbeitstage">
</opt>
<opt id="2" name="4-5 Arbeitstage">
<auflage>
<grenze formel="$Ffertigung_formel_45$F">1-</grenze>
</auflage>
</opt>
<opt id="2" name="2-3 Arbeitstage">
<auflage>
<grenze formel="$Ffertigung_formel_23$F">1-</grenze>
</auflage>
</opt>
</option>
<!-- KALK -->
<option type="Hidden" id="calc_vorschneiden">
<auflage>
<grenze formel="$Fvorschneiden$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_offset_drucken">
<auflage>
<grenze formel="$Foffset_drucken$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_zusammentragen">
<auflage>
<grenze formel="$Fzusammentragen$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_zwischenschneiden">
<auflage>
<grenze formel="$Fzwischenschneiden$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_bloecke_verleimen">
<auflage>
<grenze formel="$Fbloecke_verleimen$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_endschneiden">
<auflage>
<grenze formel="$Fendschneiden$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_bohren">
<auflage>
<grenze formel="$Fbohren$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_papierpreis">
<auflage>
<grenze formel="$Fpapierpreis$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_platten_belichten">
<auflage>
<grenze formel="$Fplatten_belichten$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="calc_datencheck">
<auflage>
<grenze formel="$Fprofidaten_check$F">1-</grenze>
</auflage>
</option>
<option type="Hidden" id="weight">
<auflage>
<grenze formel="$Fweight$F">1-</grenze>
</auflage>
</option>
</artikel>
</kalkulation>

View File

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

View File

@ -0,0 +1,92 @@
$makulatur = '(($CVdruckfarben_1$CV + $CVdruckfarben_2$CV) * 15)';
$vorschneiden = '($CVblatt_o_valid$CV? ($Pkosten_pro_schnitt$P * ceil(($Vblatt_o_volume$V * ($Vauflage$V / 2)) / $Peinlegehoehe_schneidemaschine$P)): 0) +
($CVblatt_2_valid$CV? ($Pkosten_pro_schnitt$P * ceil(($Vblatt_2_volume$V * ($Vauflage$V / 2)) / $Peinlegehoehe_schneidemaschine$P)): 0) +
($CVblatt_3_valid$CV? ($Pkosten_pro_schnitt$P * ceil(($Vblatt_3_volume$V * ($Vauflage$V / 2)) / $Peinlegehoehe_schneidemaschine$P)): 0) +
($CVblatt_4_valid$CV? ($Pkosten_pro_schnitt$P * ceil(($Vblatt_4_volume$V * ($Vauflage$V / 2)) / $Peinlegehoehe_schneidemaschine$P)): 0) +
($CVblatt_s_valid$CV? ($Pkosten_pro_schnitt$P * ceil(($Vblatt_s_volume$V * ($Vauflage$V / 2)) / $Peinlegehoehe_schneidemaschine$P)): 0) + $Pvor_und_nachbereitung_schneiden$P';
$offset_drucken = '(
(($CVdruckfarben_2$CV>0)? 2:1) * ($Vauflage$V * $Vblatt$V / $CVformat_1$CV) / ($Pbogen_pro_stunde_offset_sd$P / 60)
) +
(($CVfarbe_1_v_valid$CV && ($Vfarbe_1_v$V == 2 || $Vfarbe_1_v$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_2_v_valid$CV && ($Vfarbe_2_v$V == 2 || $Vfarbe_2_v$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_3_v_valid$CV && ($Vfarbe_3_v$V == 2 || $Vfarbe_3_v$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_4_v_valid$CV && ($Vfarbe_4_v$V == 2 || $Vfarbe_4_v$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_1_r_valid$CV && ($Vfarbe_1_r$V == 2 || $Vfarbe_1_r$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_2_r_valid$CV && ($Vfarbe_2_r$V == 2 || $Vfarbe_2_r$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_3_r_valid$CV && ($Vfarbe_3_r$V == 2 || $Vfarbe_3_r$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
(($CVfarbe_4_r_valid$CV && ($Vfarbe_4_r$V == 2 || $Vfarbe_4_r$V == 3))? $Pruestzeit_pro_sonderfarbe$P + $Pfarbwechsel_offset$P : 0 ) +
$Peinrichtezeit_fuer_farbe_und_passer$P +
( $Pruestzeit_pro_platte$P * ($CVdruckfarben_1$CV + $CVdruckfarben_2$CV) ) +
(($CVdruckfarben_2$CV>0)? 1 * $Pgummituch_waschen$P: 0)
* ( $Pstundenpreis_offsetdruck$P / 60)';
$zusammentragen = '((( $Vauflage$V / $CVformat_1$CV ) / $Pzusammentragen_pro_stunde$P) * $Pstundenpreis_zusammentragen$P) +
((
($CVblatt_o_valid$CV? ceil(($Vblatt_o_volume$V * $Vauflage$V / $CVformat_1$CV) / $Peinlegehoehe_zusammentragen$P ) : 0)+
($CVblatt_2_valid$CV? ceil(($Vblatt_2_volume$V * $Vauflage$V / $CVformat_1$CV) / $Peinlegehoehe_zusammentragen$P ) : 0)+
($CVblatt_3_valid$CV? ceil(($Vblatt_3_volume$V * $Vauflage$V / $CVformat_1$CV) / $Peinlegehoehe_zusammentragen$P ) : 0)+
($CVblatt_4_valid$CV? ceil(($Vblatt_4_volume$V * $Vauflage$V / $CVformat_1$CV) / $Peinlegehoehe_zusammentragen$P ) : 0)+
($CVblatt_s_valid$CV? ceil(($Vblatt_s_volume$V * $Vauflage$V / $CVformat_1$CV) / $Peinlegehoehe_zusammentragen$P ) : 0)
) * $Pzusammentragen_einlegen$P)
* ( $Pstundenpreis_zusammentragen$P / 60 )
+ $Pvor_und_nachbereitung_zusammentragen$P';
$zwischenschneiden = '$CVformat_3$CV * $Pkosten_pro_schnitt$P *
(ceil(
((
($CVblatt_o_valid$CV? $Vblatt_o_volume$V: 0) +
($CVblatt_2_valid$CV? $Vblatt_2_volume$V: 0) +
($CVblatt_3_valid$CV? $Vblatt_3_volume$V: 0) +
($CVblatt_4_valid$CV? $Vblatt_4_volume$V: 0) +
($CVblatt_s_valid$CV? $Vblatt_s_volume$V: 0)
) / $Vblatt$V)
*($Vauflage$V * $Vblatt$V / $CVformat_1$CV) / $Peinlegehoehe_schneidemaschine$P)) + $Pvor_und_nachbereitung_schneiden$P';
$bloecke_verleimen = '$Vauflage$V * $Pleimen_und_trennen_pro_sd_satz$P + $Pvor_und_nachbereitung_verarbeitung$P';
$endschneiden = '$CVformat_2$CV * $Pkosten_pro_schnitt$P *
(ceil(
((
($CVblatt_o_valid$CV? $Vblatt_o_volume$V: 0) +
($CVblatt_2_valid$CV? $Vblatt_2_volume$V: 0) +
($CVblatt_3_valid$CV? $Vblatt_3_volume$V: 0) +
($CVblatt_4_valid$CV? $Vblatt_4_volume$V: 0) +
($CVblatt_s_valid$CV? $Vblatt_s_volume$V: 0)
) / $Vblatt$V)
*($Vauflage$V * $Vblatt$V / $CVformat_2$CV ) / $Peinlegehoehe_schneidemaschine$P)) + $Pvor_und_nachbereitung_schneiden$P';
$bohren = '$Pkosten_pro_bohrung$P *
(ceil(
((
($CVblatt_o_valid$CV? $Vblatt_o_volume$V: 0) +
($CVblatt_2_valid$CV? $Vblatt_2_volume$V: 0) +
($CVblatt_3_valid$CV? $Vblatt_3_volume$V: 0) +
($CVblatt_4_valid$CV? $Vblatt_4_volume$V: 0) +
($CVblatt_s_valid$CV? $Vblatt_s_volume$V: 0)
) / $Vblatt$V)
*($Vauflage$V * $Vblatt$V ) / $Peinlegehoehe_bohrmaschine$P)) + $Pvor_und_nachbereitung_bohrmaschine$P';
$papierpreis = '(($CVblatt_o_valid$CV? $Vblatt_o_value$V:0) +
($CVblatt_2_valid$CV? $Vblatt_2_value$V:0) +
($CVblatt_3_valid$CV? $Vblatt_3_value$V:0) +
($CVblatt_4_valid$CV? $Vblatt_4_value$V:0) +
($CVblatt_s_valid$CV? $Vblatt_s_value$V:0)) *
(($Vauflage$V / $CVformat_1$CV ) + $Fmakulatur$F)';
$platten_belichten = '($Ppreis_pro_belichten$P + $Ppreis_pro_druckplatte$P ) * ($CVdruckfarben_1$CV + $CVdruckfarben_2$CV)';
$profidaten_check = '(($Vdatencheck$V == 2)? 7: 0)';
$weight = '(
(
($CVblatt_o_valid$CV? $Vblatt_o_grammatur$V:0) +
($CVblatt_2_valid$CV? $Vblatt_2_grammatur$V:0) +
($CVblatt_3_valid$CV? $Vblatt_3_grammatur$V:0) +
($CVblatt_4_valid$CV? $Vblatt_4_grammatur$V:0) +
($CVblatt_s_valid$CV? $Vblatt_s_grammatur$V:0))
)
* (($Vformat$V == 4)? ((210*297)/1000000) : ((148*210)/1000000 ))
) * $Vauflage$V';

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<container>
<papiercontainer id="test">
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
</papiercontainer>
</container>

View File

@ -0,0 +1,31 @@
$zusammentragen_pro_stunde = 4400;
$zusammentragen_einlegen = 0.25;
$farbwechsel_offset = 6;
$bogen_pro_stunde_offset_sd = 10000;
$ruestzeit_pro_platte = 2;
$ruestzeit_pro_sonderfarbe = 6;
$einrichtezeit_fuer_farbe_und_passer = 10;
$gummituch_waschen = 5;
$preis_pro_druckplatte = 2.7;
$preis_pro_belichten = 5.58;
$stundenpreis_verarbeitung = 40;
$stundenpreis_schneiden = 50;
$stundenpreis_offsetdruck = 80;
$stundenpreis_zusammentragen = 60;
$einlegehoehe_zusammentragen = 44;
$einlegehoehe_bohrmaschine = 50;
$einlegehoehe_schneidemaschine = 100;
$vor_und_nachbereitung_bohrmaschine = (($stundenpreis_verarbeitung / 60 ) * 7);
$vor_und_nachbereitung_schneiden = (($stundenpreis_schneiden / 60 ) * 5);
$vor_und_nachbereitung_verarbeitung = (($stundenpreis_verarbeitung / 60 ) * 5);
$vor_und_nachbereitung_zusammentragen = (($stundenpreis_zusammentragen / 60 ) * 5);
$kosten_pro_bohrung = (($stundenpreis_verarbeitung * ($Ablochheftung / 2)) / 96);
$kosten_pro_schnitt = (($stundenpreis_schneiden / 60) / 2);
$leimen_und_trennen_pro_sd_satz = (($stundenpreis_verarbeitung / 60) / 100);

View File

@ -71,6 +71,8 @@ class PaperRepostory implements ObjectRepository
$papier = array();
$papier['bdm135'] = new Paper();
$papier['bdm135']->setArtNr('bdm135');
$papier['bdm135']->setVolume(0.102);
$papier['bdm135']->setPreis(0.12);
$papier['bdm135']->setDescription1('Bilderdruck matt 135 gr');
$papier['bdg135'] = new Paper();