Germany mailing list archives
germany@odoo-community.org
Browse archives
Technische Frage
byHallo zusammen,
ich baue seit einiger Zeit an einem odoo-System um Bestellungen und ihre Kostenstellen zu dokumentieren. Dort bin ich auf ein Problem gestoßen. Der Code sieht vereinfacht ungefähr so aus:
class Order(models.Model):
order_line = fields.One2Many('order.line', ...
cost_center_line = fields.One2Many('cost_center_line', ...
amount_total = fields.Monetary(store=True, compute='_compute_amount')
amount_cost_center = fields.Monetary(store=True, compute='_compute_cost_center_amount')
@api.depends('order_line.price_total')
def _compute_amount(self):
for rec in self:
amount = 0.0
for line in rec.order_line:
amount += line.price_total
rec.amount_total = amount
@api.depends('cost_center_line.amount')
def _compute_cost_center_amount(self):
for rec in self:
amount = 0.0
for line in rec.cost_center_line:
amount += line.amount
rec.amount_cost_center = amount
@api.constrains('amount_total','amount_cost_center')
def _constrains_amount(self):
for rec in self:
if rec.amount_total != rec.amount.cost_center:
raise ValidationError('...')
Das Problem tritt auf, wenn eine Order bereits gespeichert ist und noch einmal bearbeitet wird.
Wird eine Kostenstelle oder ein Produkt entfernt und die verbleibenden Werte angeglichen, löst der Constraint aus, weil die compute-Felder den gelöschten Posten aus irgend einem Grund immer noch dazurechnen.
Ich bin schon länger auf der Suche nach Unterstützung, hatte aber bisher kein Glück.
Viele Grüße
Markus Mitsch