Momentan können für Services beliebig viele Tarife erfasst werden. Wenn wie im Bild oben eine Tarifgruppe zweimal verwendet wird, ist nicht klar definiert, welcher Tarif dann z.B. in der Aktivität eines Projektes verwendet wird. (Wenn man sich von Acitivty#setService herunterhangelt, landet man im obigen Snippet, L273)
Hier müsste man sich auf eines von folgenden festlegen:
Es darf pro Tarifgruppe nur ein Tarif in einem Service definiert sein
Beim erfassen einer Aktivität auf einem Projekt muss der entsprechende Tarif ausgewählt werden können.
Zudem ist das Verhalten inkonsistent, wenn die Tarifgruppe des Projekts auf dem Service nicht spezifiziert ist: Wenn ein Tarif der "Standard Tarifgruppe" (die mit ID 1, in unserem Fall Kanton) definiert ist, dann wird dieser verwendet, falls für die auf dem Projekt eingestellte Tarifgruppe nicht gefunden wird. Andersherum, wenn kein Tarif der Standard Gruppe definiert ist, dann werden einfach keine Werte bezogen. Somit bekommt eine Aktivität keine Einheit, was ziemlich sicher die Ursache von #70 ist.
Bei Offerten ist es noch schlimmer - wird kein passender Tarif gefunden, wird ein Fehler geworfen.
PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function getRateValue() on null in /home/stiftun8/public_html/dimetest/src/Dime/OfferBundle/Entity/OfferPosition.php:278
Stack trace:
#0 /home/stiftun8/public_html/dimetest/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php(591): Dime\OfferBundle\Entity\OfferPosition->setService(Object(Dime\TimetrackerBundle\Entity\Service))
#1 /home/stiftun8/public_html/dimetest/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php(187): Symfony\Component\PropertyAccess\PropertyAccessor->writeProperty(Array, 'service', Object(Dime\TimetrackerBundle\Entity\Service))
#2 /home/stiftun8/public_html/dimetest/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php(85): Symfony\Component\PropertyAccess\PropertyAccessor->setValue(Object(Dime\OfferBundle\Entity\OfferPosition), Object(Symfony\Component\PropertyAccess\PropertyPath), Object(Dime\TimetrackerBu in /home/stiftun8/public_html/dimetest/src/Dime/OfferBundle/Entity/OfferPosition.php on line 278
Ist dieses Verhalten einer "Standard Tarifgruppe" erwünscht?
Wenn ja, sollte das irgendwo dokumentiert und vor allem in Benutzerinterface klar ersichtlich sein.
Wenn nicht, sollte klar darauf aufmerksam gemacht werden, dass der Service nicht für die ausgewählte Tarifgruppe konfiguriert ist.
[x] Es muss mindestens 1 Tarif pro Service erfasst sein
[x] Es dürfen exakt 0-1 Tarife pro Tarifgruppe auf einem Service erfasst sein
[x] Es gibt keine "Standard Tarifgruppe": Wenn ein Service verwendet wird, der nicht der Tarifgruppe des Projekts entspricht, soll in jedem Fall eine Fehlermeldung/Warnung erscheinen => Es sollen nur Services, die zur ausgewählten Tarifgruppe passen, zur Auswahl stehen.
[x] Services sollten immer eine Einheit haben. Dies soll erzwungen werden. (#70)
Reporter: Zivi
https://github.com/stiftungswo/Dime/blob/9a916b40341ed8193dc986d812b9d098a848baff/src/Dime/TimetrackerBundle/Entity/Service.php#L269-L281
Momentan können für Services beliebig viele Tarife erfasst werden. Wenn wie im Bild oben eine Tarifgruppe zweimal verwendet wird, ist nicht klar definiert, welcher Tarif dann z.B. in der Aktivität eines Projektes verwendet wird. (Wenn man sich von Acitivty#setService herunterhangelt, landet man im obigen Snippet, L273)
Hier müsste man sich auf eines von folgenden festlegen:
Zudem ist das Verhalten inkonsistent, wenn die Tarifgruppe des Projekts auf dem Service nicht spezifiziert ist: Wenn ein Tarif der "Standard Tarifgruppe" (die mit ID 1, in unserem Fall Kanton) definiert ist, dann wird dieser verwendet, falls für die auf dem Projekt eingestellte Tarifgruppe nicht gefunden wird. Andersherum, wenn kein Tarif der Standard Gruppe definiert ist, dann werden einfach keine Werte bezogen. Somit bekommt eine Aktivität keine Einheit, was ziemlich sicher die Ursache von #70 ist.
Bei Offerten ist es noch schlimmer - wird kein passender Tarif gefunden, wird ein Fehler geworfen.
Ist dieses Verhalten einer "Standard Tarifgruppe" erwünscht?