Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
3 Răspunsuri
9455 Vizualizări

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

Imagine profil
Abandonează
Cel mai bun răspuns

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 .
 

 


Imagine profil
Abandonează
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 Cel mai bun răspuns
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
Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
0
ian. 24
1450
1
nov. 23
10095
5
nov. 22
3894
1
mai 22
4632
0
mar. 22
3016