description | tags | prev | ||
---|---|---|---|---|
Eigene Odoo Aktionen erstellen. |
|
./entwicklung |
{{ $frontmatter.description }}
Fehlen bestimmte Ansichten, können diese ganz einfach mit einer Aktion und einem Menüeintrag erstellt werden. In diesem Bespiel wollen wir die die Komponenten aller Stücklisten in einer Tabelle darstellen.
Navigieren Sie nach Einstellungen > Technisch > Aktionen > Fenster öffnen/schliessen ... und erstellen Sie einen neuen Eintrag:
Name der Aktion: BoM Komponenenten
Objekt: mrp.bom.line
Ansichtsreferenz: Gemäss Angaben
Wertebereich: Gemäss Angaben
Wert aus Kontext: Gemäss Angaben
Navigieren Sie nach Einstellungen > Technisch > Benutzer-Interface > Menüeinträge und erstellen Sie einen neuen Eintrag:
Menü: BoM Komponenenten
Obermenü: Fertigung/Produkte
Aktion: ir.actions.act_window
BoM Komponenenten
Nummernfolge: 3
Nachdem der Browser aktualisiert haben Sie Zugriff auf das neue Menü und Ansicht.
Wenn eine Aktion bearbeiten, können Sie die verfügbaren Ansichtstypen im Feld Ansichtmodus festlegen. Ebenfalls können Sie steuern welche Ansicht abhängig vom Type aufgerufen werden. Auf der selben Bearbeitungsansicht können Sie unter Ansichten eine Liste bearbeiten.
Um den angezeigten Namen eines Fenster anzuspassen, navigieren Sie nach Eisntellungen > Technisch > Aktionen > Fesnter öffnen/schliessen .... Suchen Sie im Feld Name der Aktion nach dem Fensternamen und passen Sie den Namen an.
Odoo unterscheidet im wesentlichen zwischen drei Aktionen.
Fenster-Aktion: Verwendet zum anzeigen von Ansichten. Navigieren Sie nach Einstellungen > Technisch > Aktionen > Fenster öffnen/schliessen.
Server-Aktion: Für geplante Aktionen und Aktionen verknüpft mit Datenmodelle. Navigieren Sie nach Einstellungen > Technisch > Aktionen > Server Aktionen.
Automatische Aktion: Aktion bei bestimmten Zuständen auslösen. Navigieren Sie nach Einstellungen > Technisch > Automation > Server Aktionen.
Navigieren Sie nach Einstellungen > Technisch > Aktionen > Fenster öffnen/schliessen und suchen Sie anhand Namen der Aktion. Mehrere Aktionen können den gleichen Namen haben. Die wichtigsten Felder sind:
- Ansichtsmodus: Verfügbare Ansichten nach Aufruf der Aktion.
- Wertebereich: Filter für die angezeigten Daten.
- Wert aus Kontext: Kontext-Definitionen.
- Ansichten: Ordnet und spezifiziert die Auswahl der verfügbaren Ansichten.
Mit jedem Klick auf ein Menü oder Knopf wird in Odoo eine Aktion ausgeührt. Die ausgeführte Aktion können Sie mit Entwicklertools > Aktion bearbeiten anzeigen und bearbeiten.
Wenn Sie die aktuelle Aktion bearbeiten können Sie im Feld Wert aus Kontext einen Standardwert für das aktuelle Datenmodell festlegen. Dazu ein paar Bespiele:
Heutiges Datum als Standardwert für das Feld ordering_date
.
{ 'default_ordering_date': datetime.datetime.today().strftime('%Y-%m-%d') }
::: warning Dokumentieren Sie die Anpassung von Aktionen. Bei einer Aktualisierung der Module gehen die Änderungen verloren. :::
Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:
Name der Aktion: Feld neu berechnen
Modell: ir.model.fields
Folgeaktion: Python-Code ausführen
Kopieren Sie die folgenden Zeilen in das Feld Pythoncode:
records.ensure_one()
field = records
obj = env[field.model_id.model]
env.add_to_compute(obj._fields[field.name], obj.search([]))
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Felder erscheint nun in der Auswahl Aktion das Menu Feld neu berechnen.
Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:
Name der Aktion: Ansicht Zugriffsrechte aktualisieren
Modell: ir.actions.server
Folgeaktion: Python-Code ausführen
Kopieren Sie die folgenden Zeilen in das Feld Pythoncode:
env["res.groups"]._update_user_groups_view()
Speichern Sie die Aktion und führen Sie diese direkt mit Starten aus.
Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:
Name der Aktion: Compose E-Mail
Modell: Referenz gemäss Geschäftsobjekt
Folgeaktion: Python-Code ausführen
if record:
compose_form = env.ref('mail.email_compose_message_wizard_form', False)
ctx = dict(
default_model='account.move',
default_res_id=record.id,
default_composition_mode='comment',
custom_layout='mail.mail_notification_light',
)
action = {
'name': 'Compose E-Mail',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form.id, 'form')],
'view_id': compose_form.id,
'target': 'new',
'context': ctx,
}
Speichern Sie die Serveraktion und zeigen Sie die Metadaten an. Notieren Sie sich die ID des Datensatzes.
Als nächtes müssen Sie die Formularansicht bearbeiten und ein Snippet hinzufügen um diesen Knopf einzufügen:
<button name="$ID" type="action" string="Compose E-Mail"/>
Wobei $ID
der notierten ID der Serveraktion entspricht.
Mit diesem Knopf können Sie den E-Mail-Dialog öffnen.
Mit Automatischen Aktionen kann ein Datensatz, der aktualisiert wurde, zusätzlich validiert werden. In unserem Beispiel wollen wir unterbinden, dass Qualitätsalarme auf bestimmte Stufen gesetzt werden.
Navigieren Sie nach Einstellungen > Technisch > Automation > Automatische Aktionen und erstellen Sie einen neuen Eintrag:
Modell: Qualitätsalarm
Triggerbedingung: Beim Aktualisieren
Beobachtete Felder: Stufe (quality.alert)
Python Code:
if record.stage_id.sequence in [0,1,2]:
raise UserError('This stage is not allowed!')