This commit is contained in:
Thomas Peterson 2024-11-18 14:45:06 +01:00
parent 498470c8d0
commit 99b2b23593
10 changed files with 649 additions and 44 deletions

File diff suppressed because one or more lines are too long

38
.vscode/launch.json vendored
View File

@ -1,38 +0,0 @@
{
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch built-in server and debug",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-S",
"localhost:8000",
"-t",
"."
],
"port": 9003,
"serverReadyAction": {
"action": "openExternally"
}
},
{
"name": "Debug current script in console",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"externalConsole": false,
"port": 9003
},
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}

View File

@ -1,3 +0,0 @@
{
"php.version": "php7430nts"
}

View File

@ -34,9 +34,17 @@ class Parser
$this->article->setComment((string)$node->kommentar);
}
if(isset($node->precalc)) {
if(isset($node->precalc['type']) && isset($node->precalc['select']) && strtolower($node->precalc['type']) == 'template') {
$nodePreCalc = $this->templates->xpath('//precalc[@id="' . (string)$node->precalc['select'] . '"]');
if(isset($nodePreCalc[0])) {
$parser = new PreCalc($nodePreCalc[0]);
$this->article->setPreCalc($parser->parse());
}
}else{
$parser = new PreCalc($node->precalc);
$this->article->setPreCalc($parser->parse());
}
}
if(isset($node->displaygroups)) {

View File

@ -0,0 +1,62 @@
<?php
namespace PSC\Library\Calc\Tests\Customer\FF;
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(3000.0, $this->engine->getPrice());
}
public function testPriceExpress(): void
{
$this->engine->setVariable('produktion', 'digital_express');
$this->engine->calc();
$this->assertSame(130.0, $this->engine->getPrice());
}
public function testPriceFlexo(): void
{
$this->engine->setVariable('produktion', 'flexo');
$this->engine->calc();
$this->assertSame(175.0, $this->engine->getPrice());
$this->assertCount(3, $this->engine->getArticle()->getPreCalc()->getGroups());
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<kalkulation>
<artikel>
<name>Etiketten große Größen</name>
<kommentar></kommentar>
<uploads>
<upload id="ohne" name="Druckdaten" description="Bitte laden Sie Ihre Druckdatei hoch"/>
</uploads>
<precalc type="Template" select="precalc"/>
<option id="preisgruppe" name="preisgruppe" type="Hidden" default="gross"/>
<option id="auflage" name="Auflage" type="Input" width="3" min="1000" default="5000" require="true" help="Bitte geben Sie Ihre Bestellmenge ein"/>
<option id="produktion" type="Template" select="produktion"/>
<option id="laufrichtung" type="Template" select="laufrichtung"/>
<option id="material" type="Template" select="material"/>
<option id="rollendurchmesser" type="Template" select="rollendurchmesser"/>
<option id="rollenkern" type="Template" select="rollenkern"/>
<option id="calc" type="Template" select="calc"/>
<option id="bemerkung" name="Bemerkung" type="Input" width="3" default="Zusatzinfo:" require="false" help="Bitte geben Sie Ihre Bemerkung ein"/>
</artikel>
</kalkulation>

View File

@ -0,0 +1,199 @@
<root>
<precalc id="precalc">
<group name="Druck Flexo">
<variant name="ab 200.000">
<auflage>200000</auflage>
<produktion>flexo</produktion>
</variant>
<variant name="ab 1.000.000">
<auflage>1000000</auflage>
<produktion>flexo</produktion>
</variant>
<variant name="ab 2.500.000">
<auflage>2500000</auflage>
<produktion>flexo</produktion>
</variant>
<variant name="ab 3.500.000">
<auflage>3500000</auflage>
<produktion>flexo</produktion>
</variant>
</group>
<group name="Digitaldruck">
<variant name="ab 150.000">
<auflage>150000</auflage>
<produktion>digital</produktion>
</variant>
<variant name="ab 100.000">
<auflage>100000</auflage>
<produktion>digital</produktion>
</variant>
<variant name="ab 50.000">
<auflage>50000</auflage>
<produktion>digital</produktion>
</variant>
<variant name="ab 5.000">
<auflage>5000</auflage>
<produktion>digital</produktion>
</variant>
</group>
<group name="Digitaldruck Express">
<variant name="ab 150.000">
<auflage>150000</auflage>
<produktion>digital_express</produktion>
</variant>
<variant name="ab 100.000">
<auflage>100000</auflage>
<produktion>digital_express</produktion>
</variant>
<variant name="ab 50.000">
<auflage>50000</auflage>
<produktion>digital_express</produktion>
</variant>
<variant name="ab 5.000">
<auflage>5000</auflage>
<produktion>digital_express</produktion>
</variant>
</group>
</precalc>
<option id="produktion" name="Produktionsverfahren" type="Select" default="digital" help="Wählen Sie das Produktionsverfahren und somit die Produktionszeit">
<opt id="flexo" name="Druck im Flexoverfahren">
<auflage>
<grenze formel="0">0-</grenze>
</auflage>
</opt>
<opt id="digital" name="Fertigung im Digitaldruck">
<auflage>
<grenze formel="0">0-</grenze>
</auflage>
</opt>
<opt id="digital_express" name="Expressfertigung im Digitaldruck">
<auflage>
<grenze formel="0">0-</grenze>
</auflage>
</opt>
</option>
<option id="laufrichtung" name="Laufrichtung" type="Select" default="aus_fus" help="...">
<opt id="aus_fus" name="Außenwicklung Fuß voraus ( Bild 1 )"></opt>
<opt id="aus_kop" name="Außenwicklung Kopf voraus ( Bild 2 )"></opt>
<opt id="aus_wort_ende" name="Außenwicklung Wort Ende voraus ( Bild 3 )"></opt>
<opt id="aus_wort_anfang" name="Außenwicklung Wort Anfang voraus ( Bild 4 )"></opt>
<opt id="innen_fus_vor" name="Innenwicklung Fuß voraus ( Bild 5 )"></opt>
<opt id="innen_kop_vor" name="Innenwicklung Kopf voraus ( Bild 6 )"></opt>
<opt id="innen_wort_ende" name="Innenwicklung Wort Ende voraus ( Bild 7 )"></opt>
<opt id="innen_wort_anfang" name="Innenwicklung Wort Anfang voraus ( Bild 8 )"></opt>
</option>
<option id="material" name="Material" type="Select" default="material_thermo" help="Wählen Sie das passende Material">
<opt id="material_thermo" name="Thermopapier"></opt>
<opt id="material_papier" name="Papier"></opt>
</option>
<option id="rollendurchmesser" name="max. Rollendurchmesser pro Rolle / maximale Anzahl Etiketten" type="Input" default="" help="Wie groß darf die Rolle sein">
</option>
<option id="rollenkern" name="Rollenkern" type="Select" default="76" help="Durchmesser des Rollenkerns">
<opt id="76" name="76mm"></opt>
<opt id="40" name="40mm"></opt>
</option>
<option id="calc" name="calc" default="1" type="Hidden">
<preisgruppe>
<grenze value="klein">
<produktion>
<grenze value="flexo">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pklein_digital_express_1$P)">1-199999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_flexo_1$P">200000-999999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_flexo_2$P">1000000-2499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_flexo_3$P">2500000-3499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_flexo_4$P">3500000-</grenze>
</auflage>
</grenze>
<grenze value="digital">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pklein_digital_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_5$P">150000-</grenze>
</auflage>
</grenze>
<grenze value="digital_express">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pklein_digital_express_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_express_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_express_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_express_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pklein_digital_express_5$P">150000-</grenze>
</auflage>
</grenze>
</produktion>
</grenze>
<grenze value="normal">
<produktion>
<grenze value="flexo">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pnormal_digital_express_1$P)">1-199999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_flexo_1$P">200000-999999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_flexo_2$P">1000000-2499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_flexo_3$P">2500000-3499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_flexo_4$P">3500000-</grenze>
</auflage>
</grenze>
<grenze value="digital">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pnormal_digital_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_5$P">150000-</grenze>
</auflage>
</grenze>
<grenze value="digital_express">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pnormal_digital_express_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_express_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_express_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_express_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pnormal_digital_express_5$P">150000-</grenze>
</auflage>
</grenze>
</produktion>
</grenze>
<grenze value="gross">
<produktion>
<grenze value="flexo">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pgross_digital_express_1$P)">1-199999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_flexo_1$P">200000-999999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_flexo_2$P">1000000-2499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_flexo_3$P">2500000-3499999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_flexo_4$P">3500000-</grenze>
</auflage>
</grenze>
<grenze value="digital">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pgross_digital_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_5$P">150000-</grenze>
</auflage>
</grenze>
<grenze value="digital_express">
<auflage>
<grenze formel="ceil($Vauflage$V/1000*$Pgross_digital_express_1$P)">1-4999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_express_2$P">5000-49999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_express_3$P">50000-99999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_express_4$P">100000-149999</grenze>
<grenze formel="$Vauflage$V/1000*$Pgross_digital_express_5$P">150000-</grenze>
</auflage>
</grenze>
</produktion>
</grenze>
</preisgruppe>
</option>
</root>

View File

View File

@ -0,0 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<container>
<papiercontainer id="einleger">
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="trans"/>
<papier id="c100"/>
<papier id="biotop80"/>
</papiercontainer>
<papiercontainer id="fanbuch">
<papier id="kp80"/>
<papier id="biotop80"/>
<papier id="c100"/>
<papier id="recy80"/>
<papier id="munken90"/>
<papier id="kar"/>
<papier id="lin"/>
</papiercontainer>
<papiercontainer id="brosch_sw_innen">
<papier id="kp80"/>
<papier id="c100"/>
<papier id="recy80"/>
<papier id="munken90"/>
</papiercontainer>
<papiercontainer id="abi_sw_innen">
<papier id="kp80"/>
<papier id="recy80"/>
</papiercontainer>
<papiercontainer id="abi_farb_innen">
<papier id="c100"/>
<papier id="recy80"/>
</papiercontainer>
<papiercontainer id="inkjet">
<papier id="kp80"/>
<papier id="biotop80"/>
<papier id="recy80"/>
</papiercontainer>
<papiercontainer id="swpapier">
<papier id="kp80"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken80"/>
<papier id="farb80"/>
</papiercontainer>
<papiercontainer id="briefpapier">
<papier id="kp80"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken80"/>
<papier id="c100"/>
</papiercontainer>
<papiercontainer id="brosch_sw_umschlag">
<papier id="biotop160"/>
<papier id="recy160"/>
<papier id="k160"/>
<papier id="k160f"/>
<papier id="kp80"/>
<papier id="c100"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken90"/>
</papiercontainer>
<papiercontainer id="brosch_farb_umschlag">
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="biotop160"/>
<papier id="c200"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken90"/>
<papier id="c100"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
</papiercontainer>
<papiercontainer id="brosch_farb_innen">
<papier id="c100"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken90"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
</papiercontainer>
<papiercontainer id="titeldruck">
<papier id="c200"/>
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
</papiercontainer>
<papiercontainer id="katalog_umschlag">
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
</papiercontainer>
<papiercontainer id="katalog_innen">
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
</papiercontainer>
<papiercontainer id="flyer">
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
</papiercontainer>
<papiercontainer id="flyerkarte">
<papier id="kp80"/>
<papier id="recy80"/>
<papier id="munken90"/>
<papier id="c100"/>
<papier id="c120"/>
<papier id="c200"/>
<papier id="c300"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="cro270"/>
<papier id="munken240"/>
<papier id="recy240"/>
</papiercontainer>
<papiercontainer id="1">
<papier id="c100"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
</papiercontainer>
<papiercontainer id="4cpapier">
<papier id="c100_incl"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="biotop80"/>
<papier id="recy80"/>
<papier id="munken90"/>
</papiercontainer>
<papiercontainer id="stro">
<papier id="c100_incl"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
</papiercontainer>
<papiercontainer id="faltflyer">
<papier id="c100"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="bdm170"/>
<papier id="bdg170"/>
</papiercontainer>
<papiercontainer id="karte">
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdg350"/>
<papier id="cro270"/>
</papiercontainer>
<papiercontainer id="postkarte">
<papier id="c300"/>
<papier id="recy240"/>
<papier id="munken240"/>
<papier id="cro270"/>
</papiercontainer>
<papiercontainer id="vk">
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdg350"/>
<papier id="visit"/>
<papier id="cro270"/>
</papiercontainer>
<papiercontainer id="2">
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdg350"/>
<papier id="rtemotion"/>
<papier id="cro270"/>
</papiercontainer>
<papiercontainer id="fk">
<papier id="c200"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="munken240"/>
</papiercontainer>
<papiercontainer id="faltkartekoffset">
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
</papiercontainer>
<papiercontainer id="3">
<papier id="cc100"/>
<papier id="cc120"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
<papier id="cc300"/>
<papier id="bdm250"/>
<papier id="bdm350"/>
<papier id="bdg250"/>
<papier id="bdg350"/>
<papier id="rtemotion"/>
</papiercontainer>
<papiercontainer id="4">
<papier id="bkls"/>
<papier id="bklg"/>
<papier id="bklr"/>
</papiercontainer>
<papiercontainer id="01">
<papier id="kp80"/>
<papier id="k160"/>
<papier id="k160f"/>
</papiercontainer>
<papiercontainer id="cd">
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="biotop160"/>
<papier id="recy160"/>
<papier id="c200"/>
<papier id="c100"/>
<papier id="bdm135"/>
<papier id="bdg135"/>
</papiercontainer>
<papiercontainer id="zertifikat">
<papier id="bdm170"/>
<papier id="bdg170"/>
<papier id="biotop160"/>
<papier id="recy160"/>
<papier id="c200"/>
<papier id="c300"/>
<papier id="bdm250"/>
<papier id="bdg250"/>
<papier id="bdg350"/>
<papier id="visit"/>
<papier id="cro270"/>
<papier id="munken240"/>
</papiercontainer>
<papiercontainer id="serienbrief">
<papier id="kp80"/>
<papier id="c100"/>
<papier id="recy80"/>
<papier id="munken90"/>
<papier id="angel"/>
</papiercontainer>
<papiercontainer id="plakat">
<papier id="160mt"/>
<papier id="80mt"/>
</papiercontainer>
</container>

View File

@ -0,0 +1,90 @@
$klein_flexo_1 = 6.60;
$klein_flexo_2 = 6.10;
$klein_flexo_3 = 5.90;
$klein_flexo_4 = 5.60;
$normal_flexo_1 = 7.20;
$normal_flexo_2 = 6.75;
$normal_flexo_3 = 6.50;
$normal_flexo_4 = 6.20;
$gross_flexo_1 = 8.15;
$gross_flexo_2 = 7.75;
$gross_flexo_3 = 7.50;
$gross_flexo_4 = 7.25;
// Digital
$klein_digital_1 = 18.00;
$klein_digital_2 = 12.00;
$klein_digital_3 = 10.00;
$klein_digital_4 = 9.25;
$klein_digital_5 = 8.25;
$normal_digital_1 = 30.00;
$normal_digital_2 = 22.00;
$normal_digital_3 = 18.00;
$normal_digital_4 = 16.50;
$normal_digital_5 = 15.00;
$gross_digital_1 = 35.00;
$gross_digital_2 = 600.00;
$gross_digital_3 = 22.50;
$gross_digital_4 = 20.00;
$gross_digital_5 = 18.15;
$klein_digital_normal_1 = 18.00;
$klein_digital_normal_2 = 12.00;
$klein_digital_normal_3 = 10.00;
$klein_digital_normal_4 = 9.25;
$klein_digital_normal_5 = 8.25;
$normal_digital_normal_1 = 30.00;
$normal_digital_normal_2 = 22.00;
$normal_digital_normal_3 = 18.00;
$normal_digital_normal_4 = 16.50;
$normal_digital_normal_5 = 15.00;
$gross_digital_normal_1 = 35.00;
$gross_digital_normal_2 = 26.00;
$gross_digital_normal_3 = 22.50;
$gross_digital_normal_4 = 20.00;
$gross_digital_normal_5 = 18.15;
// Digital Express
$klein_digital_express_1 = 18.00;
$klein_digital_express_2 = 12.00;
$klein_digital_express_3 = 10.00;
$klein_digital_express_4 = 9.25;
$klein_digital_express_5 = 8.25;
$normal_digital_express_1 = 30.00;
$normal_digital_express_2 = 22.00;
$normal_digital_express_3 = 18.00;
$normal_digital_express_4 = 16.50;
$normal_digital_express_5 = 15.00;
$gross_digital_express_1 = 35.00;
$gross_digital_express_2 = 26.00;
$gross_digital_express_3 = 22.50;
$gross_digital_express_4 = 20.00;
$gross_digital_express_5 = 18.15;
$klein_digital_express_normal_1 = 18.00;
$klein_digital_express_normal_2 = 12.00;
$klein_digital_express_normal_3 = 10.00;
$klein_digital_express_normal_4 = 9.25;
$klein_digital_express_normal_5 = 8.25;
$normal_digital_express_normal_1 = 30.00;
$normal_digital_express_normal_2 = 22.00;
$normal_digital_express_normal_3 = 18.00;
$normal_digital_express_normal_4 = 16.50;
$normal_digital_express_normal_5 = 15.00;
$gross_digital_express_normal_1 = 35.00;
$gross_digital_express_normal_2 = 26.00;
$gross_digital_express_normal_3 = 22.50;
$gross_digital_express_normal_4 = 20.00;
$gross_digital_express_normal_5 = 18.15;