1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/hr_payroll/tests/test_payslip_flow.py
2024-12-10 09:04:09 +07:00

115 lines
4.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
from odoo.addons.hr_payroll.tests.common import TestPayslipBase
from dateutil.relativedelta import relativedelta
class TestPayslipFlow(TestPayslipBase):
def test_00_payslip_flow(self):
""" Testing payslip flow and report printing """
# activate Richard's contract
self.richard_emp.contract_ids[0].state = 'open'
# I create an employee Payslip
richard_payslip = self.env['hr.payslip'].create({
'name': 'Payslip of Richard',
'employee_id': self.richard_emp.id
})
payslip_input = self.env['hr.payslip.input'].search([('payslip_id', '=', richard_payslip.id)])
# I assign the amount to Input data
payslip_input.write({'amount': 5.0})
# I verify the payslip is in draft state
self.assertEqual(richard_payslip.state, 'draft', 'State not changed!')
richard_payslip.compute_sheet()
# Then I click on the 'Confirm' button on payslip
richard_payslip.action_payslip_done()
# I verify that the payslip is in done state
self.assertEqual(richard_payslip.state, 'done', 'State not changed!')
# Then I click on the 'Mark as paid' button on payslip
richard_payslip.action_payslip_paid()
# I verify that the payslip is in paid state
self.assertEqual(richard_payslip.state, 'paid', 'State not changed!')
# I want to check refund payslip so I click on refund button.
richard_payslip.refund_sheet()
# I check on new payslip Credit Note is checked or not.
payslip_refund = self.env['hr.payslip'].search([('name', 'like', 'Refund: '+ richard_payslip.name), ('credit_note', '=', True)])
self.assertTrue(bool(payslip_refund), "Payslip not refunded!")
# I want to generate a payslip from Payslip run.
payslip_run = self.env['hr.payslip.run'].create({
'date_end': '2011-09-30',
'date_start': '2011-09-01',
'name': 'Payslip for Employee'
})
# I create record for generating the payslip for this Payslip run.
payslip_employee = self.env['hr.payslip.employees'].create({
'employee_ids': [(4, self.richard_emp.id)]
})
# I generate the payslip by clicking on Generat button wizard.
payslip_employee.with_context(active_id=payslip_run.id).compute_sheet()
def test_01_batch_with_specific_structure(self):
""" Create a batch with a given structure different than the regular pay"""
specific_structure = self.env['hr.payroll.structure'].create({
'name': 'End of the Year Bonus - Test',
'type_id': self.structure_type.id,
})
self.richard_emp.contract_ids[0].state = 'open'
# 13th month pay
payslip_run = self.env['hr.payslip.run'].create({
'date_start': datetime.date.today() + relativedelta(years=-1, month=8, day=1),
'date_end': datetime.date.today() + relativedelta(years=-1, month=8, day=31),
'name': 'End of the year bonus'
})
# I create record for generating the payslip for this Payslip run.
payslip_employee = self.env['hr.payslip.employees'].create({
'employee_ids': [(4, self.richard_emp.id)],
'structure_id': specific_structure.id,
})
# I generate the payslip by clicking on Generat button wizard.
payslip_employee.with_context(active_id=payslip_run.id).compute_sheet()
self.assertEqual(len(payslip_run.slip_ids), 1)
self.assertEqual(payslip_run.slip_ids.struct_id.id, specific_structure.id)
def test_02_payslip_batch_with_archived_employee(self):
# activate Richard's contract
self.richard_emp.contract_ids[0].state = 'open'
# archive his contact
self.richard_emp.action_archive()
# 13th month pay
payslip_run = self.env['hr.payslip.run'].create({
'date_start': datetime.date.today() + relativedelta(years=-1, month=8, day=1),
'date_end': datetime.date.today() + relativedelta(years=-1, month=8, day=31),
'name': 'End of the year bonus'
})
# I create record for generating the payslip for this Payslip run.
payslip_employee = self.env['hr.payslip.employees'].create({
'employee_ids': [(4, self.richard_emp.id)],
})
# I generate the payslip by clicking on Generat button wizard.
payslip_employee.with_context(active_id=payslip_run.id).compute_sheet()
self.assertEqual(len(payslip_run.slip_ids), 1)