Erstellt vor 13 Monaten

Geschlossen vor 13 Monaten

#2451 closed Fehler (fixed)

Lager->Einlagern (mit Part-Picker) prüft auf falsches Recht

Erstellt von: bibi@… Verantwortlicher: bibi@…
Priorität: normal Meilenstein:
Komponente: kivitendo ERP Version: 3.0.0 unstable
Schweregrad: normal Stichworte:
Beobachter:

Beschreibung

Zum Einlagern über Lager->Einlagern reicht das Recht "Lagerverwaltung/Bestandsveränderung" ("warehouse_management") nicht aus, sondern für den Part-Picker wird noch "Artikel, Dienstleistungen, Erzeugnisse erfassen und bearbeiten" ("Create and edit parts, services, assemblies") benötigt.

Zudem zeigt der Part-Picker auch die Preise an. Das sollte evtl. nicht sein, wenn "Artikel, Dienstleistungen, Erzeugnisse erfassen und bearbeiten" oder "Details und Berichte von Waren, Dienstleistungen und Erzeugnissen anzeigen" nicht an ist.

Änderungshistorie (4)

comment:1 Geändert vor 13 Monaten durch bibi@…

Ich füge mal das Recht 'warehosue_management' zu SL::Controller::Parts hinzu und schließe dieses Ticket. Für die Preise machen ich einen Verbesserungswunsch auf.

comment:2 Geändert vor 13 Monaten durch bibi@…

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert
  • Verantwortlicher auf bibi@… gesetzt

In 91aa159378605af7676d25ed070532fa6c5eee3c/erp:

Das Recht "Lagerverwaltung/Bestandsveränderung?" zum Part-Controller hinzugefügt.

Hintergrund: Wenn man nur dieses Recht hat, sollte man auch Einlagern können.
Das ging aber bisher nicht, da hier der Part-Picker verwendet wird und dieser
im Part-Controller nur das Recht "Artikel, Dienstleistungen, Erzeugnisse
erfassen und bearbeiten" vorsah.

Behebt #2451.

comment:3 Geändert vor 13 Monaten durch m.bunkus@…

  • Lösung fixed gelöscht
  • Status von closed nach reopened geändert

Sorry, aber der Change ist nicht sonderlich gut durchdacht. Er führt dazu, dass das Recht für alle Aktionen benötigt wird, die in diesem Controller momentan vorhanden sind oder später mal eingeführt werden. Das ist schlichtweg falsch.

__PACKAGE__->run_before() sollte eigentlich gar nicht genutzt werden, oder für alles bis auf den Part-Picker-AJAX-Response. Das hat Sven ursprünglich schon falsch gemacht. Warum? Weil die Auswahl von Artikeln bisher z.B. nicht erfordert, dass man das Recht zum Bearbeiten derselben hat! Denkt nur an die Einkaufs-/Verkaufsbelegmasken.

Zum Anderen ist es definitiv falsch, dann auch noch immer das Lagerrecht zu verlangen.

Der richtige Fix würde lauten:

Die Prüfung auf part_service_assembly_edit in run_before für alle Methoden durchführen, die eben nicht dem Partpicker zuzuschreiben sind. Das geht auch schon problemlos, indem man run_before den Parameter exclude => [ qw(ajax_autocomplete part_picker_search part_picker_result) ] mitgibt. Siehe Doku in SL::Controller::Base.

Damit sind die vom Partpicker benötigten Funktionen komplett frei von Rechteprüfung, was aber in meinen Augen OK ist. Falls diese doch bestimmte Rechte benötigen (falls man mal z.B. part_readonly oder so einführt), dann kann man problemlos einen zweiten run_before(…, only => [ qw(ajax_autocomplete…) ]) einbauen.

Momentan ist es schlichtweg eine Ebene schlechter als vorher geworden; sorry :) Daher öffne ich das Ticket wieder.

comment:4 Geändert vor 13 Monaten durch bibi@…

  • Lösung auf fixed gesetzt
  • Status von reopened nach closed geändert

In 63575bd21459f4253f3841cf1095bdbd0b438b5d/erp:

Rechteprüfung im Part-Controller nicht für Part-Picker-Aktionen durchführen.

Behebt #2451.

Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.