This question has been flagged

Hi,

I just start my experience with Odoo and try to make my first module for user wich work with Timesheet. I want create module that count at real time hours of Login user and show this hours at hr timesheet sheet.sheet. 

When I install this module and try to go to Timesheet menu I get this error:


Traceback (most recent call last):
  File "C:\odoo-10.0\odoo\http.py", line 642, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "C:\odoo-10.0\odoo\http.py", line 684, in dispatch
    result = self._call_function(**self.params)
  File "C:\odoo-10.0\odoo\http.py", line 334, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\odoo-10.0\odoo\service\model.py", line 101, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\odoo-10.0\odoo\http.py", line 327, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\odoo-10.0\odoo\http.py", line 942, in __call__
    return self.method(*args, **kw)
  File "C:\odoo-10.0\odoo\http.py", line 507, in response_wrap
    response = f(*args, **kw)
  File "C:\odoo-10.0\addons\web\controllers\main.py", line 895, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "C:\odoo-10.0\addons\web\controllers\main.py", line 887, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "C:\odoo-10.0\odoo\api.py", line 689, in call_kw
    return call_kw_multi(method, model, args, kwargs)
  File "C:\odoo-10.0\odoo\api.py", line 680, in call_kw_multi
    result = method(recs, *args, **kwargs)
  File "C:\odoo-10.0\odoo\models.py", line 3038, in read
    data[record][name] = convert(record[name], record, use_name_get)
  File "C:\odoo-10.0\odoo\models.py", line 5251, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "C:\odoo-10.0\odoo\fields.py", line 927, in __get__
    self.determine_value(record)
  File "C:\odoo-10.0\odoo\fields.py", line 1041, in determine_value
    self.compute_value(recs)
  File "C:\odoo-10.0\odoo\fields.py", line 993, in compute_value
    self._compute_value(records)
  File "C:\odoo-10.0\odoo\fields.py", line 984, in _compute_value
    getattr(records, self.compute)()
  File "C:\odoo-10.0\addons\attendance\models\login.py", line 26, in _compute_time_difference
    if attendance.check_out:
AttributeError: 'hr_timesheet_sheet.sheet' object has no attribute 'check_out'

login.py:


from openerp import api, fields, models
from odoo.tools.translate import _
from odoo.exceptions import UserError
import logging
_logger = logging.getLogger(__name__)

class HrTimesheetSheet(models.Model):
_inherit = 'hr_timesheet_sheet.sheet'

time_difference = fields.Float(compute='_compute_time_difference', string='Time Difference')
@api.multi

def _compute_time_difference(self):
for attendance in self:
if attendance.check_out:
time_end = fields.Datetime.from_string(attendance.check_out)
else:
time_end = fields.Datetime.from_string(
str(fields.Datetime.context_timestamp(
self, timestamp=fields.datetime.now()
))
)
time_start = fields.Datetime.from_string(attendance.check_in)
delta = time_end - time_start
# Timedelta object has no minutes nor hours fields
hours_difference = delta.seconds / 3600.0 + delta.days * 24
attendance.time_difference = hours_difference

Views:
<openerp>
<data noupdate="0">
<record id="hr_timesheet_sheet_form_work_hours" model="ir.ui.view">
<field name="name">timesheet.sheet.form.new</field>
<field name="model">hr_timesheet_sheet.sheet</field>
<field name="inherit_id" ref="hr_timesheet_attendance.hr_timesheet_sheet_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='total_difference']" position="after">
<field name="time_difference" widget="float_time" sum="Attendance Time"/>
</xpath>
</field>
</record>
 </data>
</openerp>
Avatar
Discard
Best Answer

Hi Maks: Are you using a custom/3rd party module ? There is no class called HrTimesheetSheet in the Odoo code.

Avatar
Discard
Author

Hi Paresh: I created new module so I decided to create new class, or this is mistake? can I use also created classes?

Nothing wrong with creating a new class. But you are trying to inherit from 'hr_timesheet_sheet.sheet' and as far as I can see this class does not exist in the base code.

Author

Hi Paresh: I take that class from hr_timesheet_attendance/ hr_timesheet_sheet.py. Now I have another error :

File "C:\odoo-10.0\odoo\modules\loading.py", line 153, in load_module_graph

registry.setup_models(cr, partial=True)

File "C:\odoo-10.0\odoo\modules\registry.py", line 303, in setup_models

model._setup_complete()

File "C:\odoo-10.0\odoo\models.py", line 2896, in _setup_complete

field.setup_triggers(self)

File "C:\odoo-10.0\odoo\fields.py", line 759, in setup_triggers

for model, field, path in self.resolve_deps(model):

File "C:\odoo-10.0\odoo\fields.py", line 737, in resolve_deps

field = model._fields[fname]

KeyError: 'check_in'