2017-02-13 3 views
2

In Odoo 10 habe ich meine eigene benutzerdefinierte Anwendung erstellt (mit der neuen Studio-Funktion), aber ich habe ein Problem bei der Berechnung von Daten zwischen Datensätzen, die zu verschiedenen Ansichten gehören.Odoo 10 - Zählwerte von verknüpften Datensätzen

In dem Szenario habe ich zwei Modelle (Modell A und Modell B), wo Datensätze von Modell B mit Datensätzen von Modell A über ein viel2on relationales Feld verbunden sind. In Modell B gibt es ein Feld, in das ein numerischer Wert eingegeben wird.

Im Idealfall möchte ich eine Form der automatisierten Aktion/Serveraktion haben, die die Datensätze in Modell A durchläuft und dann die zugehörigen Datensätze in Modell B durchläuft und die Werte des zuvor genannten numerischen Wertefelds addiert und setzt den Wert eines Feldes in Modell A gleich der gleichwertigen Zahl, bevor es mit dem nächsten Datensatz fortfährt.

Zum Beispiel willen sagen, dass die Feldnamen sind:
Modell A = x_a
- Modell A-ID-Feld = x_id_field
- Zielfeld für berechneten Wert = x_compute

Modell B = x_b
- many2one field = x_a_id
- Zahlenfeld = x_value_field

Ich habe versucht, die automatisierten Aktionen zu verwenden, um grundlegenden Python-Code auszuführen (weil ich dachte, dies wäre so einfach wie eine verschachtelte Schleife), aber alle meine Versuche waren Fehler, weil ich nicht wusste, wie Datensätze in odoo und wie man auf andere Modelle und ihre Aufzeichnungen (von Python) zugreifen kann.

Wie würde ich das erreichen?

Antwort

1

Im Idealfall, was ich möchte, ist eine Form von automatisierter Action/Server Aktion erreichen haben, die in Modell A durch die Datensätze Schleifen, dann in einer Schleife durch verknüpfte Datensätze in Modell B Addition der Werte des zuvor erwähnten Zahlenwertfeld und setzt den Wert eines Feldes in Modell A gleich der gleichgestellten Zahl, bevor auf den nächsten Datensatz weitergeht.

Eine automatisierte Aktion mit nahe stehenden Dokument Modell = Modell ein auf der Registerkarte Aktionen einen Server Aktion erstellen:

model_b_records = self.env['model_b'].search([('many2one_field', '!=', False)]) 

for record in model_b_records: 
    record.many2one_field.target_field_for_computed_value = record.numerical_field 

Speichern Sie die Server Aktion und ausführen.

Der Code sollte selbsterklärend sein, für alle Fragen zögern Sie nicht zu fragen und kommentieren unten.

Verwandte Themen