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