2016-04-25 7 views
0

Ich hatte die Funktion von compute_amount editieren alles ist in Ordnung das Problem ist jetzt, wenn ich die Rechnung bezahle ich immer noch die alte Menge vor jeder Änderung hat jemand daran arbeiten ??? Das ist mein neuer compute_amountBearbeiten compute_amount

@api.one 
@api.depends('invoice_line.price_subtotal', 'tax_line.amount','timbre','partner_id') 
def _compute_amount(self): 
    if self.type == 'out_invoice': 
     if self.partner_id.rs == True: 
      print'rs',self.partner_id.rs 
      self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line) 
      self.amount_tax = sum(line.amount for line in self.tax_line) 
      self.amount_rs = (self.amount_untaxed + self.amount_tax) * 0.01 
      self.amount_total = self.amount_untaxed + self.amount_tax + self.amount_rs + self.timbre 
     else : 
      self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line) 
      self.amount_tax = sum(line.amount for line in self.tax_line) 
      self.amount_total = self.amount_untaxed + self.amount_tax + self.timbre 

    else : 
     self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line) 
     self.amount_tax = sum(line.amount for line in self.tax_line) 
     self.amount_total = self.amount_untaxed + self.amount_tax 
+0

Wie war das Alte? – dccdany

+0

Diese Funktion ist für die Berechnung der neuen Menge –

+0

Können Sie die alte auch vergleichen? – dccdany

Antwort

0

Wenn es eine ON_CHANGE Methode ist und das Feld hat ein Read-only-Attribut, das Schreibverfahren nicht den neuen Wert bekommen.
Für dieses Problem die Lösung möglicherweise, wenn Sie ein unsichtbares Spiegelfunktionsfeld erstellen.

+0

Es ist keine on_change-Methode von der ersten das Betrag_Gesamt ist wie dieses 'Betrag_Gesamt': fields.float (string = 'Total TTC', Ziffern = dp.get_precision ('Konto'), store = True, readonly = Wahr, compute = _compute_amount), ich juste bearbeiten die compute_amount und wie eine Mirror-Funktion verwenden –

+0

Soweit ich weiß, ist das Readonly-Feld nicht aktualisierbar. Mit Spiegelfunktion meine ich ein anderes Funktionsfeld, was eine Kopie aus dem ursprünglichen Feld ist. So können Sie einen schreibgeschützten Feldwert und die Schreibmethode auch den neuen Wert erhalten. ' ' So in In diesem Fall, wenn Sie die Spiegelung und den ursprünglichen Feldwert ändern, wird der Benutzer den neuen Wert erkennen und der Schreibvorgang erhält den ursprünglichen neuen Wert. –

+0

Und wenn ich es so mache, wie du es gesagt hast, wenn ich die Rechnung bezahle, werde ich den neuen Betrag bekommen ?? –