- In order to test hr_timesheet_sheet module in OpenERP, I create Timesheet and check validation process done by manager. - I set TimeSheet allowed difference for company - !record {model: res.company, id: base.main_company}: timesheet_max_difference: 1.00 - I assign this product(Service on Timesheet) and journal(Timesheet Journal) to employee "Quentin Paolino" - !record {model: hr.employee, id: hr.employee_qdp}: product_id: product.product_product_consultant journal_id: hr_timesheet.analytic_journal - I create a timesheet for employee "Quentin Paolino". - !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: date_from: !eval time.strftime('%Y-%m-01') name: Quentin Paolino state: new user_id: base.user_demo employee_id: 'hr.employee_qdp' - Quentin "Sign In" at around 9am. - !record {model: hr.attendance, id: hr_attendance_1}: action: sign_in employee_id: 'hr.employee_qdp' name: !eval datetime.now().strftime('%Y-%m-%d 09:%M:%S') - I test that Quentin in signed in - !assert {model: hr.employee, id: hr.employee_qdp}: - state == 'present' - At the time of logout, I create attendance and perform "Sign Out". - !record {model: hr.attendance, id: hr_attendance_2}: action: sign_out employee_id: 'hr.employee_qdp' name: !eval datetime.now().strftime('%Y-%m-%d 17:30:00') - I create Timesheet Entry for time spend on today work. - !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: timesheet_ids: - account_id: account.analytic_agrolait date: !eval time.strftime('%Y-%m-%d') name: 'Develop yaml for hr module' user_id: base.user_demo unit_amount: 6.00 amount: -90.00 product_id: product.product_product_consultant general_account_id: account.a_expense journal_id: hr_timesheet.analytic_journal - I confirm my Timesheet at end of period by click on "Confirm" button, if the difference between Timesheet hour and attendance hour is more than 1 hour it will give message. - !python {model: hr_timesheet_sheet.sheet}: | uid = ref('base.user_root') from openerp import netsvc from openerp.osv import osv try: self.button_confirm(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], {"active_ids": [ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form")],"active_id": ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form"), }) assert False, "The validation of the timesheet was unexpectedly accepted despite the 2:30 hours of difference" except osv.except_osv: pass - I Modified the timesheet record and make the difference less than 1 hour. - !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: timesheet_ids: - account_id: account.analytic_agrolait date: !eval time.strftime('%Y-%m-%d') name: 'Develop yaml for hr module' unit_amount: 2.00 user_id: base.user_demo amount: -90.00 product_id: product.product_product_consultant general_account_id: account.a_expense journal_id: hr_timesheet.analytic_journal - I set an allowed difference of 1 hour - !record {model: res.company, id: base.main_company}: timesheet_max_difference: 1.00 - I try again to confirm the timesheet after modification. - !python {model: hr_timesheet_sheet.sheet}: | uid = ref('base.user_root') self.button_confirm(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], {"active_ids": [ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form")],"active_id": ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form"), }) - This time timesheet confirmed successfully. I check that state is "Confirmed". - !assert {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: - state == 'confirm' - The manager will accept This request by click on "Accept" button. - !python {model: hr_timesheet_sheet.sheet}: | self.write(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], {'state': 'done'}) - I check that state is "Done". - !assert {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: - state == 'done'