forked from Mapan/odoo17e
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo.addons.hr_payroll.tests.common import TestPayslipBase
|
|
from odoo.tests import tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestPayrollExpense(TestPayslipBase):
|
|
|
|
def test_expense_in_payroll_payment_state(self):
|
|
product_a = self.env['product.product'].create({
|
|
'name': 'test',
|
|
'list_price': 100,
|
|
'standard_price': 100,
|
|
})
|
|
expense_sheet = self.env['hr.expense.sheet'].create({
|
|
'name': 'Test Expenses',
|
|
'employee_id': self.richard_emp.id,
|
|
'accounting_date': '2018-01-02',
|
|
'expense_line_ids': [(0, 0, {
|
|
'name': 'Expense line',
|
|
'employee_id': self.richard_emp.id,
|
|
'product_id': product_a.id,
|
|
})]
|
|
})
|
|
expense_sheet.action_submit_sheet()
|
|
expense_sheet.action_approve_expense_sheets()
|
|
expense_sheet.action_report_in_next_payslip()
|
|
|
|
self.richard_emp.contract_ids[0].state = 'open'
|
|
richard_partner_id = self.env['res.partner'].create({'name': 'Richard', 'phone': '21454'}).id
|
|
self.richard_emp.write({
|
|
'address_id': richard_partner_id,
|
|
'work_contact_id': richard_partner_id,
|
|
'work_email': 'email@email',
|
|
})
|
|
|
|
payslip = self.env['hr.payslip'].create({
|
|
'name': 'Payslip',
|
|
'employee_id': self.richard_emp.id,
|
|
})
|
|
|
|
|
|
payslip.write({'expense_sheet_ids': expense_sheet.ids})
|
|
payslip.compute_sheet()
|
|
payslip.action_payslip_done()
|
|
|
|
# Verify that the payslip is in done state
|
|
self.assertEqual(payslip.state, 'done', 'State not changed!')
|
|
|
|
# Click on the 'Mark as paid' button on payslip
|
|
payslip.action_payslip_paid()
|
|
|
|
# Verify that the payslip is in paid state
|
|
self.assertEqual(payslip.state, 'paid', 'State not changed!')
|
|
|
|
# Verify expense is paid as well
|
|
self.assertEqual(expense_sheet.payment_state, 'paid', 'Expense not paid in payslip')
|