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

83 lines
3.4 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details
from freezegun import freeze_time
from odoo.tests import Form, tagged
from odoo.addons.sale_planning.tests.test_sale_planning import TestCommonSalePlanning
@tagged('post_install', '-at_install')
class TestSaleForecast(TestCommonSalePlanning):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.planning_partner = cls.env['res.partner'].create({
'name': 'Customer Credee'
})
cls.plannable_forecast_product = cls.env['product.product'].create({
'name': 'Junior Developer Service',
'type': 'service',
'planning_enabled': True,
'planning_role_id': cls.planning_role_junior.id,
'service_tracking': 'task_in_project',
})
cls.plannable_forecast_so = cls.env['sale.order'].create({
'partner_id': cls.planning_partner.id,
})
cls.plannable_forecast_sol = cls.env['sale.order.line'].create({
'order_id': cls.plannable_forecast_so.id,
'product_id': cls.plannable_forecast_product.id,
'product_uom_qty': 10,
})
product_task_in_project1 = cls.env['product.product'].create({
'name': 'Task in Project',
'type': 'service',
'service_tracking': 'task_in_project',
})
product_task_in_project2 = cls.env['product.product'].create({
'name': 'Task in Project 2',
'type': 'service',
'service_tracking': 'task_in_project',
})
sale_order = cls.env['sale.order'].create({
'partner_id': cls.planning_partner.id,
})
cls.sale_order_line1 = cls.env['sale.order.line'].create({
'order_id': sale_order.id,
'product_id': product_task_in_project1.id,
})
cls.sale_order_line2 = cls.env['sale.order.line'].create({
'order_id': sale_order.id,
'product_id': product_task_in_project2.id,
})
sale_order.action_confirm()
@classmethod
def setUpEmployees(cls):
super().setUpEmployees()
user_group_employee = cls.env.ref('base.group_user')
user_group_project_user = cls.env.ref('project.group_project_user')
cls.user_projectuser_wout = cls.env['res.users'].with_context({'no_reset_password': True}).create({
'name': 'Wout',
'login': 'Wout',
'email': 'wout@test.com',
'groups_id': [(6, 0, [user_group_employee.id, user_group_project_user.id])],
})
cls.employee_wout.write({'user_id': cls.user_projectuser_wout.id})
def test_sale_line_id_value_depending_project(self):
line1_project = self.sale_order_line1.project_id
line2_project = self.sale_order_line2.project_id
slot1 = self.env['planning.slot'].create({
'project_id': line1_project.id,
})
self.assertEqual(slot1.sale_line_id, line1_project.sale_line_id, 'Sale order item of Planning should be same as project')
slot1.write({'project_id': line2_project.id})
# changing project of slot should not change to new project's sol if sol of slot is already set
self.assertEqual(slot1.sale_line_id, line1_project.sale_line_id, 'Sale order item of Planning should not change to new project\'s sol if it\'s already set')