============================= Attendance Timesheet Scenario ============================= Imports:: >>> import datetime as dt >>> from proteus import Model >>> from trytond import backend >>> from trytond.modules.company.tests.tools import create_company, get_company >>> from trytond.tests.tools import activate_modules, assertEqual Activate attendance.line module:: >>> config = activate_modules(['attendance', 'timesheet']) Create a company:: >>> _ = create_company() >>> company = get_company() Create work:: >>> Work = Model.get('timesheet.work') >>> work = Work(name="Work") >>> work.save() Create an employee:: >>> Party = Model.get('party.party') >>> Employee = Model.get('company.employee') >>> employee = Employee() >>> party = Party(name='Employee') >>> party.save() >>> employee.party = party >>> employee.company = company >>> employee.save() Fill attendance:: >>> Attendance = Model.get('attendance.line') >>> def present(employee, type, at): ... attendance = Attendance(employee=employee, at=at) ... attendance.type = type ... attendance.save() >>> present(employee, 'in', dt.datetime(2020, 4, 1, 9)) >>> present(employee, 'out', dt.datetime(2020, 4, 1, 12)) >>> present(employee, 'in', dt.datetime(2020, 4, 1, 13)) >>> present(employee, 'out', dt.datetime(2020, 4, 1, 18)) Fill time sheet:: >>> Timesheet = Model.get('timesheet.line') >>> def spend(employee, work, date, duration): ... timesheet = Timesheet(employee=employee, work=work) ... timesheet.date = date ... timesheet.duration = duration ... timesheet.save() >>> spend(employee, work, dt.date(2020, 4, 1), dt.timedelta(hours=7)) >>> spend(employee, work, dt.date(2020, 4, 2), dt.timedelta(hours=2)) Check attendance time sheet:: >>> Sheet = Model.get('attendance.sheet') >>> sheet, = Sheet.find([('date', '=', dt.date(2020, 4, 1))]) >>> sheet.duration datetime.timedelta(seconds=28800) >>> sheet.timesheet_duration datetime.timedelta(seconds=25200) >>> if backend.name != 'sqlite': ... sheet, = Sheet.find([('date', '=', dt.date(2020, 4, 2))]) ... sheet.duration ... assertEqual(sheet.timesheet_duration, dt.timedelta(hours=2))