mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-21 06:12:03 +02:00
206 lines
8.6 KiB
Python
206 lines
8.6 KiB
Python
# Copyright 2024 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import Command
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestMaintenanceProject(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
cls.Equipment = cls.env["maintenance.equipment"]
|
|
cls.EquipmentCategory = cls.env["maintenance.equipment.category"]
|
|
cls.MaintenanceEquipmentCategory = cls.env["maintenance.equipment.category"]
|
|
cls.PurchaseOrder = cls.env["purchase.order"]
|
|
cls.PurchaseOrderLine = cls.env["purchase.order.line"]
|
|
cls.ProductCategory = cls.env["product.category"]
|
|
cls.ProductProduct = cls.env["product.product"]
|
|
cls.ProductTemplate = cls.env["product.template"]
|
|
cls.ResPartner = cls.env["res.partner"]
|
|
|
|
cls.partner = cls.ResPartner.create(
|
|
{
|
|
"name": "partner",
|
|
}
|
|
)
|
|
uom_unit = cls.env.ref("uom.product_uom_unit")
|
|
cls.maintenance_equipment_category1 = cls.MaintenanceEquipmentCategory.create(
|
|
{"name": "My Maintenance Equipment Category 1"}
|
|
)
|
|
cls.maintenance_equipment_category2 = cls.MaintenanceEquipmentCategory.create(
|
|
{"name": "My Maintenance Equipment Category 2"}
|
|
)
|
|
cls.product_category01 = cls.ProductCategory.create(
|
|
{
|
|
"name": "My Product Category 1",
|
|
"equipment_category_ids": [
|
|
Command.set(
|
|
[
|
|
cls.maintenance_equipment_category1.id,
|
|
cls.maintenance_equipment_category2.id,
|
|
]
|
|
)
|
|
],
|
|
}
|
|
)
|
|
cls.product_category02 = cls.ProductCategory.create(
|
|
{
|
|
"name": "My Product Category 2",
|
|
"equipment_category_ids": [
|
|
Command.set([cls.maintenance_equipment_category2.id])
|
|
],
|
|
}
|
|
)
|
|
cls.product_order_maintenance = cls.ProductProduct.create(
|
|
{
|
|
"name": "My Product",
|
|
"standard_price": 235.0,
|
|
"list_price": 280.0,
|
|
"type": "consu",
|
|
"uom_id": uom_unit.id,
|
|
"uom_po_id": uom_unit.id,
|
|
"purchase_method": "purchase",
|
|
"default_code": "PROD_ORDER",
|
|
"taxes_id": False,
|
|
"maintenance_ok": True,
|
|
"categ_id": cls.product_category01.id,
|
|
}
|
|
)
|
|
cls.product_order_no_maintenance = cls.ProductProduct.create(
|
|
{
|
|
"name": "My Product",
|
|
"standard_price": 235.0,
|
|
"list_price": 280.0,
|
|
"type": "consu",
|
|
"uom_id": uom_unit.id,
|
|
"uom_po_id": uom_unit.id,
|
|
"purchase_method": "purchase",
|
|
"default_code": "PROD_ORDER",
|
|
"taxes_id": False,
|
|
"categ_id": cls.product_category02.id,
|
|
}
|
|
)
|
|
cls.purchase_order = cls.PurchaseOrder.with_context(
|
|
tracking_disable=True
|
|
).create(
|
|
{
|
|
"partner_id": cls.partner.id,
|
|
}
|
|
)
|
|
PurchaseOrderLine = cls.PurchaseOrderLine.with_context(tracking_disable=True)
|
|
cls.purchase_line_order01 = PurchaseOrderLine.create(
|
|
{
|
|
"name": cls.product_order_maintenance.name,
|
|
"product_id": cls.product_order_maintenance.id,
|
|
"product_qty": 10.0,
|
|
"product_uom": cls.product_order_maintenance.uom_id.id,
|
|
"price_unit": cls.product_order_maintenance.list_price,
|
|
"order_id": cls.purchase_order.id,
|
|
"taxes_id": False,
|
|
}
|
|
)
|
|
cls.purchase_line_order02 = PurchaseOrderLine.create(
|
|
{
|
|
"name": cls.product_order_no_maintenance.name,
|
|
"product_id": cls.product_order_no_maintenance.id,
|
|
"product_qty": 10.0,
|
|
"product_uom": cls.product_order_no_maintenance.uom_id.id,
|
|
"price_unit": cls.product_order_no_maintenance.list_price,
|
|
"order_id": cls.purchase_order.id,
|
|
"taxes_id": False,
|
|
}
|
|
)
|
|
|
|
def test_equipment_count(self):
|
|
self.purchase_order.button_approve()
|
|
self.assertEqual(self.purchase_order.equipment_count, 10)
|
|
self.assertEqual(self.purchase_line_order01.equipment_count, 10)
|
|
self.assertEqual(self.purchase_line_order02.equipment_count, 0)
|
|
self.purchase_order.button_draft()
|
|
self.purchase_line_order01.product_qty = 1
|
|
self.purchase_order.button_approve()
|
|
self.assertEqual(self.purchase_order.equipment_count, 10)
|
|
self.purchase_order.button_draft()
|
|
self.purchase_line_order01.equipment_ids.unlink()
|
|
self.purchase_order.button_approve()
|
|
self.assertEqual(self.purchase_order.equipment_count, 1)
|
|
|
|
def test_unlink_purchase_oder(self):
|
|
self.purchase_order.button_approve()
|
|
equipments = self.purchase_order.order_line.equipment_ids
|
|
self.assertEqual(equipments.purchase_id, self.purchase_order)
|
|
self.assertEqual(equipments.purchase_line_id, self.purchase_line_order01)
|
|
self.purchase_order.button_cancel()
|
|
self.assertEqual(equipments.purchase_id, self.purchase_order)
|
|
self.assertEqual(equipments.purchase_line_id, self.purchase_line_order01)
|
|
self.purchase_order.unlink()
|
|
self.assertFalse(equipments.purchase_id)
|
|
self.assertFalse(equipments.purchase_line_id)
|
|
|
|
def test_equipment_category_id(self):
|
|
self.assertEqual(
|
|
self.purchase_line_order01.equipment_category_id,
|
|
self.maintenance_equipment_category1,
|
|
)
|
|
self.assertFalse(self.purchase_line_order02.equipment_category_id)
|
|
self.product_order_no_maintenance.product_tmpl_id.maintenance_ok = True
|
|
self.assertFalse(self.purchase_line_order02.equipment_category_id)
|
|
self.purchase_line_order02.product_id = self.product_order_maintenance
|
|
self.purchase_line_order02.product_id = self.product_order_no_maintenance
|
|
self.assertEqual(
|
|
self.purchase_line_order02.equipment_category_id,
|
|
self.maintenance_equipment_category2,
|
|
)
|
|
self.purchase_line_order01.equipment_ids.unlink()
|
|
self.purchase_line_order01.equipment_category_id = False
|
|
self.purchase_order.button_approve()
|
|
self.assertEqual(
|
|
self.purchase_line_order01.equipment_category_id,
|
|
self.maintenance_equipment_category1,
|
|
)
|
|
self.purchase_line_order01.equipment_ids.unlink()
|
|
self.purchase_line_order01.equipment_category_id = False
|
|
product_category_withouth_equipement_category = self.ProductCategory.create(
|
|
{
|
|
"name": "My Product Category 2",
|
|
}
|
|
)
|
|
self.purchase_line_order01.product_id.product_tmpl_id.categ_id = (
|
|
product_category_withouth_equipement_category.id
|
|
)
|
|
self.purchase_order.button_approve()
|
|
self.assertTrue(self.purchase_line_order01.equipment_category_id)
|
|
self.assertNotEqual(
|
|
self.purchase_line_order01.equipment_category_id,
|
|
self.maintenance_equipment_category1,
|
|
)
|
|
|
|
def test_account_move_line(self):
|
|
self.purchase_order.button_approve()
|
|
self.purchase_order.action_create_invoice()
|
|
self.assertEqual(
|
|
self.purchase_order.order_line.equipment_ids,
|
|
self.purchase_order.invoice_ids.line_ids.equipment_ids,
|
|
)
|
|
|
|
def test_action_view_equipments(self):
|
|
action = self.purchase_order.action_view_equipments()
|
|
self.assertEqual(action, {"type": "ir.actions.act_window_close"})
|
|
self.purchase_line_order01.product_qty = 1
|
|
self.purchase_order.button_approve()
|
|
view = self.env.ref("maintenance.hr_equipment_view_form", False)
|
|
action = self.purchase_order.action_view_equipments()
|
|
self.assertEqual(action["views"], [(view and view.id or False, "form")])
|
|
self.assertEqual(
|
|
action["res_id"], self.purchase_line_order01.equipment_ids[0:].id
|
|
)
|
|
self.purchase_order.button_draft()
|
|
self.purchase_line_order01.equipment_ids.unlink()
|
|
self.purchase_line_order01.product_qty = 2
|
|
self.purchase_order.button_approve()
|
|
action = self.purchase_order.action_view_equipments()
|
|
self.assertEqual(
|
|
action["domain"], [("purchase_id", "=", self.purchase_order.id)]
|
|
)
|