Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
3 Antworten
9413 Ansichten

Hello Everyone,

Can someone explain me what's wrong with my code ?

i'm getting the following error:

UnboundLocalError: local variable 'total_amount' referenced before assignment

My Code:

payment_id = fields.Integer(string='Payment ID')
    ammount = fields.Integer ("Value 1")
    rate = fields.Integer ("Value 1")
    total = fields.Float (string = 'Multiplicar'compute = '_compute_total')

    @api.depends ('ammount''rate','payment_id')
    def _compute_total (self):
        for record in self:
            if str(record.payment_id) == 1:
                record.total_amount = record.ammount * record.rate
            elif str(record.payment_id) == 2:
                total_amount = record.ammount / record.rate
            else:
                self.total = total_amount

My request is to calculate TOTAL (multiply or divide) depending on the Payment(Currency) ID.

Ex:
Currency1: USD (ID:1)
Currency2: LBP (ID:2)
if Currency1 selected then ammount is Multiplied by the rate
if Currency2 selected then ammount is Divided by the rate
everything else than these Currencies is equal to the main ammount.

Hope someone can solve it.

Cheers

Avatar
Verwerfen
Beste Antwort

Hi, 

You are getting this error because you haven't assigned what value should total_amount hold , You need to define the variable before using it .

    def _compute_total (self):
        for record in self:
            if str(record.payment_id) == 1:
                record.total_amount = record.ammount * record.rate
            elif str(record.payment_id) == 2:
                total_amount = record.ammount / record.rate
            else:
                self.total = total_amount  // Error is in this line , because you need to define total_amount before assigning .
 

 


Avatar
Verwerfen
Autor

Hello Kiran,

Thank you a lot for your raply.

You mean by your answer defining total_ammount as a field ? if not then how to define it in this situation ?

Thank you again.

Autor Beste Antwort
FIX based on Kiran Mohan's reply:

@api.depends('ammount''rate','payment_id')
 def _compute_total(self):
  for record in self:
   if int(record.payment_id) == 1:
    record.total = record.ammount * record.rate
   elif int(record.payment_id) == 2:
    record.total = record.ammount / record.rate 
   else:
    record.total = record.ammount
Avatar
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
0
Jan. 24
1409
1
Nov. 23
10026
5
Nov. 22
3878
1
Mai 22
4592
0
März 22
2993