Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odpovědi
1279 Zobrazení

Hello everyone and thanks you in advance for your precious help.


I have an issue that i cant figure it out. I want to create a field that calculate the difference between 2 dates which are also on 2 different field in order to obtain the difference between those 2 dates and write the result on a third field.

When i try to change the dates, the error is : 

The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/home/odoo/src/odoo/15.0/odoo/http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/odoo/src/odoo/15.0/odoo/http.py", line 301, in _handle_exception
    raise exception.with_traceback(None) from new_cause
  File "", line 1
    for record in self
                     ^
SyntaxError: invalid syntax

-------------The code

for record in self:
date1 = record.x_studio_entr_date_rencontre_prospect # first date's field
date2 = record.x_studio_sortie_date_fiche_collecte_rceptionne_1 # second date's field
 
if date1 and date2 and (isinstance(date1, datetime.date)) and (isinstance(date2, datetime.date)): #control both fields are not empty 
difference = date2-date1
difference_jours = difference.days #calcul the difference
record['x_studio_kpi_1'] = difference_jours 
 
else : 
record['x_studio_kpi_1'] = 0



Avatar
Zrušit
Autor
Hello, 

Thanks you for your answer, unfortunnaly it doesnt work. The errors when i compute is : 

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/odoo/src/odoo/15.0/odoo/http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/odoo/src/odoo/15.0/odoo/http.py", line 301, in _handle_exception
    raise exception.with_traceback(None) from new_cause
ValueError: forbidden opcode(s) in 'lambda': STORE_ATTR


Hi Alex,

Is this a computed field?

Autor Nejlepší odpověď

Yes it is, we want to calculate the difference between two dates, and those two dates may change many times for the same form and therefore the difference will need to be calculated again.


Thanks you a lot for your help.



Avatar
Zrušit
Nejlepší odpověď

Hii Alex,
By looking at your syntax error , it is easy to understand that you have implemented the wrong for loop or this loop missing its properties / data,
make sure you provided correct indentation for the for loop.
I hope this information will be helpful to you.
Feel free for further assistance at contact@geminatecs.com

Thank You, 
Geminate Consultancy Services
w : www.geminatecs.com

Avatar
Zrušit
Nejlepší odpověď

Try this:

x_studio_entr_date_rencontre_prospect = fields.Datetime(string='Date 1')
x_studio_sortie_date_fiche_collecte_rceptionne_1 = fields.Datetime(string='Date 2')
x_studio_kpi_1 = fields.Integer(string='Difference')

def calculate_date_difference(self):
​for record in self:
date1 = record.x_studio_entr_date_rencontre_prospect
​date2 = record.x_studio_sortie_date_fiche_collecte_rceptionne_1

​if date1 and date2:
​​delta = date2 - date1
​record.x_studio_kpi_1 = delta.days
​else:

​record.x_studio_kpi_1 = 0
Avatar
Zrušit