ERP Nutzererkennung - PHPUnit Tests - BRUTTO / NETTO in B2B und B2C
Während der PHPUnit-Tests ist mir bei der Brutto-/Netto-Erkennung etwas aufgefallen, das möglicherweise ungeschickt ist.
Da in PHPUnit alles in einer Instanz läuft ist das aufgefallen. Bei der Nutzerstatus Erkennung von B2B oder B2C merken wir uns in der Laufzeit den Status des Nutzers wenn er einmal erkannt wurde. Das Problem dabei ist, dass wir unterschiedliche Systemarten haben (B2B, B2C etc.), und die Erkennung des Nutzerstatus davon beeinflusst wird aber wir in einer Runtime sind (Mehrere Systemarten werden gewechsel aber eine Instanz). Der relevante Code befindet sich in:
packages/quiqqer/erp/src/QUI/ERP/Utils/User.php
→ getBruttoNettoUserStatus
Problemstellung
Wenn das System in einem B2B-System läuft, erhält ein Brutto-Nutzer (also ein B2C-Nutzer) den Status IS_NETTO_USER
– was bedeutet, dass er fälschlicherweise als B2B-Nutzer erkannt wird.
Grundsätzlich haben wir definiert, dass in einem B2B-System nur B2B-Nutzer existieren dürfen. Ich bin mir nicht sicher, ob diese Regel in der Praxis sinnvoll ist.
quiqqer.erp.isNettoUser
Einfluss der Nutzer-Eigenschaft Die Eigenschaft quiqqer.erp.isNettoUser
, die wir später eingeführt haben, hat in diesem Fall keine Auswirkungen, da die Systemart als wichtiger angesehen wird. Vielleicht müssen wir genau hier noch einmal über die Priorisierung nachdenken:
- Sollte
quiqqer.erp.isNettoUser
wichtiger sein als die Systemart? - Falls ja, könnten dann B2C-Nutzer in einem B2B-System existieren? Man kann Sie jedenfalls anlegen und erhält möglicherweise komische Ergebnisse.
Lösung in PHPUnit
Aktuell setze ich RUNTIME_NETTO_BRUTTO_STATUS
in den Tests, damit die Brutto-/Netto-Erkennung keinen Einfluss auf die Testergebnisse hat. Dennoch sollten wir über eine grundsätzliche Anpassung nachdenken, um das Problem sauber zu lösen.
@mor FYI