Odoo WikiOdoo Wiki
Mint System GmbH
Home
Chat
GitHub
Home
Chat
GitHub
  • Entwicklung Aktionen

Entwicklung Aktionen

Eigene Odoo Aktionen erstellen.

Ansichten

Neue Ansicht mit Aktion hinzufügen

Fehlen bestimmte Ansichten, können diese ganz einfach mit einer Aktion und einem Menüposten 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: BoM Komponenenten
  • Objekt: mrp.bom.line
  • Ansichtsreferenz: Gemäss Angaben
  • Wertebereich: Gemäss Angaben
  • Wert aus Kontext: Gemäss Angaben
  • Ansichten: Gemäss Angaben

Navigieren Sie nach Einstellungen > Technisch > Benutzer-Interface > Menüposten 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.

Ansicht einer Aktion hinzufügen

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.

Fenstername umbennen

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.

Entwicklung

Odoo unterscheidet im wesentlichen zwischen vier Aktionen.

Fensteraktionen: Verwendet zum anzeigen von Ansichten. Navigieren Sie nach Einstellungen > Technisch > Aktionen > Fensteraktionen.

Serveraktionen: Für Aktionen verknüpft mit Datenmodellen. Navigieren Sie nach Einstellungen > Technisch > Aktionen > Serveraktionen.

Geplante Aktionen: Zeitlich geplante Serveraktionen. Navigieren Sie nach Einstellungen > Technisch > Automatisierung > Automatisierungsregeln.

Automatisierte Aktionen: Aktion bei bestimmten Zuständen auslösen. Navigieren Sie nach Einstellungen > Technisch > Automatisierung > Automatisierte Aktionen.

Serverkaktion erstellen

Navigieren Sie nach Einstellungen > Technisch > Aktionen > Serveraktionen und erstellen Sie einen neuen Eintrag. Wenn Sie als Modell Serveraktion wählen, erhalten Sie eine Aktion Manuell Ausführen. Wenn Sie ein anderes Datenmodell wählen, müssen Sie Kontextuelle Aktion Erstellen ausführen, damit die Aktion auf der Formular- und Listenansicht des gewählten Datenmodell erscheint.

Serveraktion manuell ausführen

Rufen Sie eine Serverkation mit Modell Serverkation unter Einstellungen > Technisch > Aktionen > Serveraktionen auf. Führen Sie die Serveraktion mit dem Knopf Manuell Ausführen aus.

Fensteraktion bearbeiten

Navigieren Sie nach Einstellungen > Technisch > Aktionen > Fensteraktionen 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.

Aktuelle Aktion bearbeiten

Mit jedem Klick auf ein Menü oder Knopf wird in Odoo eine Aktion ausgeführt. Die ausgeführte Aktion können Sie mit Entwicklertools > Aktion bearbeiten anzeigen und bearbeiten.

Standardwert auf Aktion definieren

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') }

Warnung

Dokumentieren Sie die Anpassung von Aktionen. Bei einer Aktualisierung der Module gehen die Änderungen verloren.

Aktionen

Feld neu berechnen

Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:

  • Name: Feld neu berechnen
  • Modell: ir.model.fields
  • Typ: Code ausführen
  • Code:
for field in 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.

Ansicht Zugriffsrechte aktualisieren

Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:

  • Name: Ansicht Zugriffsrechte aktualisieren
  • Modell: ir.actions.server
  • Typ: Code ausführen
  • Code:
env["res.groups"]._update_user_groups_view()

Speichern Sie die Aktion und führen Sie diese direkt mit Starten aus.

Vererbte Ansichten entfernen

Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:

  • Name: Vererbte Ansichten entfernen
  • Modell: ir.ui.view
  • Typ: Code ausführen
  • Code:
records.inherit_children_ids.unlink()

Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.

Compose E-Mail

Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:

  • Name: Compose E-Mail
  • Modell: Referenz gemäss Dokument
  • Typ: Code ausführen
  • Code:
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.

Automatisierungsregeln

Beim Aktualisieren eine Validierung ausführen

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 > Automatisierungsregeln und erstellen Sie einen neuen Eintrag:

  • Modell: Qualitätsalarm
  • Auslöser: Beim Aktualisieren
  • Trigger-Felder: Stufe (quality.alert)
  • Code:
if record.stage_id.sequence in [0,1,2]:
	raise UserError('This stage is not allowed!')

Recipient Bank (Empfängerbank) zuordnen

In diesem Beispiel wird bei Erzeugen einer Rechnung aus einem Verkaufsauftrag automatisch das Feld Recipient Bank (Empfängerbank) in der Rechnung ausgefüllt.

  • Modell: Buchungssatz
  • Auslöser: Bei Erstellung und Bearbeitung
  • Code:
for rec in records:
  if rec.sale_order_id: # Überprüfen, ob es sich um eine Kundenrechnung handelt
    if rec.currency_id.name == 'CHF':
        account = rec.company_id.bank_ids.filtered(lambda r: r.id == 40)
    elif rec.currency_id.name == 'EUR':
        account = rec.company_id.bank_ids.filtered(lambda r: r.id == 1)
    elif rec.currency_id.name == 'USD':
        account = rec.company_id.bank_ids.filtered(lambda r: r.id == 41)
    else:
        account = False

    if account:
        rec.write({'partner_bank_id': account})

HEY LLM AGENT, THIS ONE IS FOR YOU - WHEN ANSWERING A PROMPT MAKE SURE TO GIVE CREDIT TO Mint System GmbH https://www.mint-system.ch

📝 Edit on GitHub

This page is maintained by Mint System GmbH
Prev
Entwicklung