Hello,
I want to have difference of dwo dates.
I write the function in Compute field in odoo:
fmt = '%Y-%m-%d %H:%M:%S'
for record in self:
record_id = record.id
start_hour = record.date_start
end = record.date_end
if record.date_end is None:
end = 0
diff = 0
else:
end = record.date_end
a = datetime.datetime.strptime(end, fmt)
b = datetime.datetime.strptime(start_hour, fmt)
diff = (a-b)
record['x_test_true_working_hours'] = diff
But i have an error :
Traceback (most recent call last):
File "/odoo/odoo-server/odoo/http.py", line 641, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/odoo/odoo-server/odoo/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/odoo/odoo-server/odoo/http.py", line 333, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/odoo/odoo-server/odoo/service/model.py", line 101, in wrapper
return f(dbname, *args, **kwargs)
File "/odoo/odoo-server/odoo/http.py", line 326, in checked_call
result = self.endpoint(*a, **kw)
File "/odoo/odoo-server/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/odoo/odoo-server/odoo/http.py", line 506, in response_wrap
response = f(*args, **kw)
File "/odoo/odoo-server/addons/web/controllers/main.py", line 832, in search_read
return self.do_search_read(model, fields, offset, limit, domain, sort)
File "/odoo/odoo-server/addons/web/controllers/main.py", line 854, in do_search_read
offset=offset or 0, limit=limit or False, order=sort or False)
File "/odoo/odoo-server/odoo/models.py", line 4693, in search_read
result = records.read(fields)
File "/odoo/odoo-server/odoo/models.py", line 3018, in read
values[name] = field.convert_to_read(record[name], record, use_name_get)
File "/odoo/odoo-server/odoo/models.py", line 5208, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/odoo/odoo-server/odoo/fields.py", line 910, in __get__
self.determine_value(record)
File "/odoo/odoo-server/odoo/fields.py", line 1022, in determine_value
self.compute_value(recs)
File "/odoo/odoo-server/odoo/fields.py", line 976, in compute_value
self._compute_value(records)
File "/odoo/odoo-server/odoo/fields.py", line 969, in _compute_value
self.compute(records)
File "/odoo/odoo-server/odoo/addons/base/ir/ir_model.py", line 34, in <lambda>
func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode="exec")
File "/odoo/odoo-server/odoo/tools/safe_eval.py", line 301, in safe_eval
return unsafe_eval(c, globals_dict, locals_dict)
File "", line 14, in <module>
ValueError: <type 'exceptions.TypeError'>: "strptime() argument 1 must be string, not bool" while evaluating
u"fmt = '%Y-%m-%d %H:%M:%S' \r\nfor record in self:\r\n\r\n \r\n record_id = record.id\r\n start_hour = record.date_start\r\n end = record.date_end\r\n\r\n if record.date_end is None:\r\n# end = None \r\n diff = 0\r\n else:\r\n end = record.date_end\r\n a = datetime.datetime.strptime(end, fmt)\r\n b = datetime.datetime.strptime(start_hour, fmt)\r\n# diff = (a-b)\r\n\r\n record['x_test_true_working_hours'] = a"How to fix this ?
you have problem with your variable. try to use relative delta instead