跳至內容
選單
此問題已被標幟
2 回覆
1109 瀏覽次數

Hi to all

I build a custom app within I try to calculate a Date from an other one and an Int.


# Odoo saas~15.2+e (Enterprise Edition)

for record in self :
d = datetime.date(record['x_studio_dde'].year,record['x_studio_dde'].month,record['x_studio_dde'].day)
record['x_studio_dfe'] = d + datetime.timedelta(days = (record['x_studio_dure'] * 30))


On existing records, it works then Odoo sends me the following error

Traceback (most recent call last):
  File "/home/odoo/src/odoo/saas-15.2/odoo/tools/safe_eval.py", line 330, in safe_eval
    return unsafe_eval(c, globals_dict, locals_dict)
  File "", line 2, in 
AttributeError: 'bool' object has no attribute 'year'

If I change the root date... it works without error

If I change the Int value... error

If i remove all existing records and create a new first one.... error


Any idea ? Thanks in advance

Regards

頭像
捨棄
最佳答案

Try simplify it to 

record['x_studio_dfe'] = record.x_studio_dde + datetime.timedelta(days = (record['x_studio_dure'] * 30))

If any of the values used are empty/null then the calculation will not work. So new records will produce an error as the custom dates will be null. You need to add an 'if' condition so that the code only applies if the fields are not empty.

e.g. If record['x_studio_dde']

    execute code

Hope this helps


頭像
捨棄
作者 最佳答案

Hi Lucas,

Thanks, it works! 

for beginners "If" statement starts with a minuscule "if"

頭像
捨棄