stiftungswo / Dime

DimeERP - Timetracker, Offers & Invoices
MIT License
5 stars 1 forks source link

Festlegen von Tarifen in Services #120

Closed tourn closed 6 years ago

tourn commented 6 years ago

Reporter: Zivi


image

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.

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?

swoadmin commented 6 years ago

https://sentry.io/swo/dime/issues/504114009/

tourn commented 6 years ago

Besprechung mit Andi ergibt: