diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/sale_timesheet/tests/common.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/sale_timesheet/tests/common.py')
| -rw-r--r-- | addons/sale_timesheet/tests/common.py | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/addons/sale_timesheet/tests/common.py b/addons/sale_timesheet/tests/common.py new file mode 100644 index 00000000..d17db84a --- /dev/null +++ b/addons/sale_timesheet/tests/common.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.mail.tests.common import mail_new_test_user +from odoo.addons.sale.tests.common import TestSaleCommon + + +class TestCommonSaleTimesheet(TestSaleCommon): + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + + cls.user_employee_company_B = mail_new_test_user( + cls.env, + name='Gregor Clegane Employee', + login='gregor', + email='gregor@example.com', + notification_type='email', + groups='base.group_user', + company_id=cls.company_data_2['company'].id, + company_ids=[cls.company_data_2['company'].id], + ) + cls.user_manager_company_B = mail_new_test_user( + cls.env, + name='Cersei Lannister Manager', + login='cersei', + email='cersei@example.com', + notification_type='email', + groups='base.group_user', + company_id=cls.company_data_2['company'].id, + company_ids=[cls.company_data_2['company'].id, cls.env.company.id], + ) + + cls.employee_user = cls.env['hr.employee'].create({ + 'name': 'Employee User', + 'timesheet_cost': 15, + }) + cls.employee_manager = cls.env['hr.employee'].create({ + 'name': 'Employee Manager', + 'timesheet_cost': 45, + }) + + cls.employee_company_B = cls.env['hr.employee'].create({ + 'name': 'Gregor Clegane', + 'user_id': cls.user_employee_company_B.id, + 'timesheet_cost': 15, + }) + + cls.manager_company_B = cls.env['hr.employee'].create({ + 'name': 'Cersei Lannister', + 'user_id': cls.user_manager_company_B.id, + 'timesheet_cost': 45, + }) + + # Account and project + cls.account_sale = cls.company_data['default_account_revenue'] + cls.analytic_account_sale = cls.env['account.analytic.account'].create({ + 'name': 'Project for selling timesheet - AA', + 'code': 'AA-2030', + 'company_id': cls.company_data['company'].id, + }) + cls.analytic_account_sale_company_B = cls.env['account.analytic.account'].create({ + 'name': 'Project for selling timesheet Company B - AA', + 'code': 'AA-2030', + 'company_id': cls.company_data_2['company'].id, + }) + + # Create projects + cls.project_global = cls.env['project.project'].create({ + 'name': 'Project for selling timesheets', + 'allow_timesheets': True, + 'analytic_account_id': cls.analytic_account_sale.id, + 'allow_billable': True, + }) + cls.project_template = cls.env['project.project'].create({ + 'name': 'Project TEMPLATE for services', + 'allow_timesheets': True, + }) + cls.project_template_state = cls.env['project.task.type'].create({ + 'name': 'Only stage in project template', + 'sequence': 1, + 'project_ids': [(4, cls.project_template.id)] + }) + + # Create service products + uom_hour = cls.env.ref('uom.product_uom_hour') + + # -- ordered quantities (ordered, timesheet) + cls.product_order_timesheet1 = cls.env['product.product'].create({ + 'name': "Service Ordered, create no task", + 'standard_price': 11, + 'list_price': 13, + 'type': 'service', + 'invoice_policy': 'order', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-ORDERED1', + 'service_type': 'timesheet', + 'service_tracking': 'no', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_order_timesheet2 = cls.env['product.product'].create({ + 'name': "Service Ordered, create task in global project", + 'standard_price': 30, + 'list_price': 90, + 'type': 'service', + 'invoice_policy': 'order', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-ORDERED2', + 'service_type': 'timesheet', + 'service_tracking': 'task_global_project', + 'project_id': cls.project_global.id, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_order_timesheet3 = cls.env['product.product'].create({ + 'name': "Service Ordered, create task in new project", + 'standard_price': 10, + 'list_price': 20, + 'type': 'service', + 'invoice_policy': 'order', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-ORDERED3', + 'service_type': 'timesheet', + 'service_tracking': 'task_in_project', + 'project_id': False, # will create a project + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_order_timesheet4 = cls.env['product.product'].create({ + 'name': "Service Ordered, create project only", + 'standard_price': 15, + 'list_price': 30, + 'type': 'service', + 'invoice_policy': 'order', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-ORDERED4', + 'service_type': 'timesheet', + 'service_tracking': 'project_only', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_order_timesheet5 = cls.env['product.product'].create({ + 'name': "Service Ordered, create project only based on template", + 'standard_price': 17, + 'list_price': 34, + 'type': 'service', + 'invoice_policy': 'order', + 'uom_id': cls.env.ref('uom.product_uom_hour').id, + 'uom_po_id': cls.env.ref('uom.product_uom_hour').id, + 'default_code': 'SERV-ORDERED4', + 'service_type': 'timesheet', + 'service_tracking': 'project_only', + 'project_id': False, + 'project_template_id': cls.project_template.id, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + + # -- timesheet on tasks (delivered, timesheet) + cls.product_delivery_timesheet1 = cls.env['product.product'].create({ + 'name': "Service delivered, create no task", + 'standard_price': 11, + 'list_price': 13, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI1', + 'service_type': 'timesheet', + 'service_tracking': 'no', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_timesheet2 = cls.env['product.product'].create({ + 'name': "Service delivered, create task in global project", + 'standard_price': 30, + 'list_price': 90, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI2', + 'service_type': 'timesheet', + 'service_tracking': 'task_global_project', + 'project_id': cls.project_global.id, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_timesheet3 = cls.env['product.product'].create({ + 'name': "Service delivered, create task in new project", + 'standard_price': 10, + 'list_price': 20, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI3', + 'service_type': 'timesheet', + 'service_tracking': 'task_in_project', + 'project_id': False, # will create a project + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_timesheet4 = cls.env['product.product'].create({ + 'name': "Service delivered, create project only", + 'standard_price': 15, + 'list_price': 30, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI4', + 'service_type': 'timesheet', + 'service_tracking': 'project_only', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_timesheet5 = cls.env['product.product'].create({ + 'name': "Service delivered, create project only based on template", + 'standard_price': 17, + 'list_price': 34, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': cls.env.ref('uom.product_uom_hour').id, + 'uom_po_id': cls.env.ref('uom.product_uom_hour').id, + 'default_code': 'SERV-DELI5', + 'service_type': 'timesheet', + 'service_tracking': 'project_only', + 'project_template_id': cls.project_template.id, + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + + # -- milestones (delivered, manual) + cls.product_delivery_manual1 = cls.env['product.product'].create({ + 'name': "Service delivered, create no task", + 'standard_price': 11, + 'list_price': 13, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI1', + 'service_type': 'manual', + 'service_tracking': 'no', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_manual2 = cls.env['product.product'].create({ + 'name': "Service delivered, create task in global project", + 'standard_price': 30, + 'list_price': 90, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI2', + 'service_type': 'manual', + 'service_tracking': 'task_global_project', + 'project_id': cls.project_global.id, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_manual3 = cls.env['product.product'].create({ + 'name': "Service delivered, create task in new project", + 'standard_price': 10, + 'list_price': 20, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI3', + 'service_type': 'manual', + 'service_tracking': 'task_in_project', + 'project_id': False, # will create a project + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_manual4 = cls.env['product.product'].create({ + 'name': "Service delivered, create project only", + 'standard_price': 15, + 'list_price': 30, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': uom_hour.id, + 'uom_po_id': uom_hour.id, + 'default_code': 'SERV-DELI4', + 'service_type': 'manual', + 'service_tracking': 'project_only', + 'project_id': False, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) + cls.product_delivery_manual5 = cls.env['product.product'].create({ + 'name': "Service delivered, create project only with template", + 'standard_price': 17, + 'list_price': 34, + 'type': 'service', + 'invoice_policy': 'delivery', + 'uom_id': cls.env.ref('uom.product_uom_hour').id, + 'uom_po_id': cls.env.ref('uom.product_uom_hour').id, + 'default_code': 'SERV-DELI4', + 'service_type': 'manual', + 'service_tracking': 'project_only', + 'project_id': False, + 'project_template_id': cls.project_template.id, + 'taxes_id': False, + 'property_account_income_id': cls.account_sale.id, + }) |
