94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
---
|
|
title: Entwicklung Datenmodelle
|
|
description: Odoo Datenmodell erweitern.
|
|
kind: howto
|
|
section: true
|
|
prev: ./development
|
|
---
|
|
|
|
# Entwicklung Datenmodelle
|
|
|
|

|
|
|
|
{{ $frontmatter.description }}
|
|
|
|
## Modelle
|
|
|
|
### Datenmodell anzeigen
|
|
|
|
Öffnen Sie _Einstellungen > Technisch > Datenbankstruktur > Modelle_ und suchen Sie das entsprechende Datenmodell.
|
|
|
|
### Datenmodell entfernen
|
|
|
|
Öffnen Sie _Einstellungen > Technisch > Datenbankstruktur > Modelle_ und suchen Sie das entsprechende Datenmodell. Markieren Sie dieses und wählen Sie _Aktionen > Löschen_.
|
|
|
|
::: warning
|
|
Diese Vorgang kann die Integrität und Verfügbarkeit des Systems beeinträchtigen. Führen Sie die Aktion nur aus, wenn Sie sich den möglichen Auswirkungen bewusst sind.
|
|
:::
|
|
|
|
## Felder
|
|
|
|
### Neues Feld hinzufügen
|
|
|
|
An jedem Objekt kann an einfach ein Feld hinzugefügt werden. Öffnen Sie eine Ansicht im Entwicklermodus und wählen Sie _Entwicklertools > Felder anzeigen_. Wählen Sie _+ Anlegen_ und geben Sie folgende Informationen ein:
|
|
|
|
- Feldname: Beginnt mit `x_` und darf keine Leerschläge enthalten und sollte kleingeschrieben und auf Englisch sein.
|
|
- Feldbezeichnung: Passender Name in der angezeigten Sprache.
|
|
- Typfeld-Text: Auswahls den Felddatentyps.
|
|
|
|
Dazu ein Beispiel mit [Abwesenheit](HR%20Holidays.md):
|
|
|
|

|
|
|
|
### Neues berechnetes Feld hinzufügen
|
|
|
|
Wir nehmen an, dass Sie auf der Lagerbechnung ein berechnetes Feld benötigen. Dieses Feld soll die Anzahl Kisten berechnen, die es braucht um das Produkt zu verpacken. Immer wenn die _Erledigte Menge_ ändert, soll das Feld berechnet werden.
|
|
|
|
Erstellen Sie ein neues Feld unter _Einstellungen > Technisch > Datenbankstruktur > Felder_ mit diesen Attributen:
|
|
|
|
- **Feldname**: `x_count_boxes`
|
|
- **Feldbezeichnung**: Anzahl Kisten
|
|
- **Modell**: Lagerbuchung (technischer Name ist `stock.move`)
|
|
- **Typfeld-Text**: Ganzzahl
|
|
- **Basiseigenschaften**:
|
|
- Nur Lesen
|
|
- Gespeichert
|
|
- **Abhängigkeiten**: `quantity_done`
|
|
- **Berechnen**:
|
|
|
|
```python
|
|
for rec in self:
|
|
if rec.product_packaging:
|
|
if rec.product_packaging.name == "Schale":
|
|
rec['x_count_boxes'] = (rec.quantity_done + 2.4)/2.5
|
|
if rec.product_packaging.name == "Kiste":
|
|
rec['x_count_boxes'] = (rec.quantity_done + 9)/10
|
|
```
|
|
|
|
Dieser Code berechnet abhängig von der gewählten Verpackung und deren Füllmenge die Anzahl Kisten. Mit Python-Code können Sie natürlich jegliche Logik für die Berechnung entwickeln.
|
|
|
|

|
|
|
|
### Neues Beziehungs-Feld hinzufügen
|
|
|
|
Wir nehmen an, dass Sie auf der Auftragsposition ein Beziehungs-Feld benötigen. Dieses Feld soll die Kundenreferenz auf dem zugehörigen Verkaufsauftrag anzeigen.
|
|
|
|
Erstellen Sie ein neues Feld unter _Einstellungen > Technisch > Datenbankstruktur > Felder_ mit diesen Attributen:
|
|
|
|
- **Feldname**: `x_client_order_ref`
|
|
- **Feldbezeichnung**: Kundenreferenz
|
|
- **Modell**: Auftragsposition (technischer Name ist `sale.order.line`)
|
|
- **Typfeld-Text**: Text
|
|
- **Basiseigenschaften**:
|
|
- Nur Lesen
|
|
- Gespeichert
|
|
- **Beziehungs-Feld**: `order_id.client_order_ref`
|
|
|
|

|
|
|
|
Dieses Feld können Sie nun in Berichten oder Listenansichten anzeigen.
|
|
|
|
### Datenmodell für Webfomulare freischalten
|
|
|
|
Navigieren Sie nach _Einstellungen > Technisch > Modelle_ und zeigen Sie das Datenmodell an, welche Sie für Webformulare freischalten möchten. Im Tab _Webformulare_ aktivieren Sie die Option _Nutzbar in Formularen_. Geben Sie eine passe Bezeichnung im Feld _Bezeichnung für die Formularaktion_ ein und schränken die verfügbaren Felder mit _Feld für benutzerdefinierte Formulardaten_ ein.
|