Odoo18-Base/addons/point_of_sale/tests/common_setup_methods.py
2025-01-06 10:57:38 +07:00

253 lines
7.4 KiB
Python

from odoo.fields import Command
def setup_product_combo_items(self):
tax10 = self.env["account.tax"].create(
{
"name": "10%",
"amount": 10,
"amount_type": "percent",
"type_tax_use": "sale",
}
)
tax20in = self.env["account.tax"].create(
{
"name": "20% incl",
"amount": 20,
"amount_type": "percent",
"type_tax_use": "sale",
"price_include_override": "tax_included",
"include_base_amount": True,
}
)
tax30 = self.env["account.tax"].create(
{
"name": "30%",
"amount": 30,
"amount_type": "percent",
"type_tax_use": "sale",
}
)
combo_product_1 = self.env["product.product"].create(
{
"name": "Combo Product 1",
"is_storable": True,
"available_in_pos": True,
"list_price": 10,
"taxes_id": [(6, 0, [tax10.id])],
}
)
combo_product_2 = self.env["product.product"].create(
{
"name": "Combo Product 2",
"is_storable": True,
"available_in_pos": True,
"list_price": 11,
"taxes_id": [(6, 0, [tax20in.id])],
}
)
combo_product_3 = self.env["product.product"].create(
{
"name": "Combo Product 3",
"is_storable": True,
"available_in_pos": True,
"list_price": 16,
"taxes_id": [(6, 0, [tax30.id])],
}
)
self.desk_accessories_combo = self.env["product.combo"].create(
{
"name": "Desk Accessories Combo",
"combo_item_ids": [
Command.create({
"product_id": combo_product_1.id,
"extra_price": 0,
}),
Command.create({
"product_id": combo_product_2.id,
"extra_price": 0,
}),
Command.create({
"product_id": combo_product_3.id,
"extra_price": 2,
}),
],
}
)
combo_product_4 = self.env["product.product"].create(
{
"name": "Combo Product 4",
"is_storable": True,
"available_in_pos": True,
"list_price": 20,
"taxes_id": [(6, 0, [tax10.id])],
}
)
combo_product_5 = self.env["product.product"].create(
{
"name": "Combo Product 5",
"is_storable": True,
"available_in_pos": True,
"list_price": 25,
"taxes_id": [(6, 0, [tax20in.id])],
}
)
self.desks_combo = self.env["product.combo"].create(
{
"name": "Desks Combo",
"combo_item_ids": [
Command.create({
"product_id": combo_product_4.id,
"extra_price": 0,
}),
Command.create({
"product_id": combo_product_5.id,
"extra_price": 2,
}),
],
}
)
combo_product_6 = self.env["product.product"].create(
{
"name": "Combo Product 6",
"is_storable": True,
"available_in_pos": True,
"list_price": 30,
"taxes_id": [(6, 0, [tax30.id])],
}
)
combo_product_7 = self.env["product.product"].create(
{
"name": "Combo Product 7",
"is_storable": True,
"available_in_pos": True,
"list_price": 32,
"taxes_id": [(6, 0, [tax10.id])],
}
)
combo_product_8 = self.env["product.product"].create(
{
"name": "Combo Product 8",
"is_storable": True,
"available_in_pos": True,
"list_price": 40,
"taxes_id": [(6, 0, [tax20in.id])],
}
)
combo_product_9 = self.env["product.product"].create(
{
"name": "Combo Product 9",
"is_storable": True,
"available_in_pos": True,
"list_price": 50,
"taxes_id": [(6, 0, [tax20in.id])],
}
)
chair_color_attribute = self.env['product.attribute'].create({
'name': 'Color',
'display_type': 'color',
'create_variant': 'no_variant',
})
chair_color_red = self.env['product.attribute.value'].create({
'name': 'Red',
'attribute_id': chair_color_attribute.id,
'html_color': '#ff0000',
})
chair_color_blue = self.env['product.attribute.value'].create({
'name': 'Blue',
'attribute_id': chair_color_attribute.id,
'html_color': '#0000ff',
})
self.env['product.template.attribute.line'].create({
'product_tmpl_id': combo_product_9.product_tmpl_id.id,
'attribute_id': chair_color_attribute.id,
'value_ids': [(6, 0, [chair_color_red.id, chair_color_blue.id])]
})
color_attribute = self.env['product.attribute'].create({
'name': 'Color always',
'sequence': 4,
'create_variant': 'always',
'value_ids': [(0, 0, {
'name': 'White',
'sequence': 1,
}), (0, 0, {
'name': 'Red',
'sequence': 2,
})],
})
product_10_template = self.env['product.template'].create({
'name': 'Combo Product 10',
'list_price': 200,
'taxes_id': False,
'available_in_pos': True,
'attribute_line_ids': [(0, 0, {
'attribute_id': color_attribute.id,
'value_ids': [(6, 0, color_attribute.value_ids.ids)]
})],
})
self.chairs_combo = self.env["product.combo"].create(
{
"name": "Chairs Combo",
"combo_item_ids": [
Command.create({
"product_id": combo_product_6.id,
"extra_price": 0,
}),
Command.create({
"product_id": combo_product_7.id,
"extra_price": 0,
}),
Command.create({
"product_id": combo_product_8.id,
"extra_price": 5,
}),
Command.create({
"product_id": combo_product_9.id,
"extra_price": 0,
}),
Command.create({
"product_id": product_10_template.product_variant_ids[0].id,
"extra_price": 0,
}),
Command.create({
"product_id": product_10_template.product_variant_ids[1].id,
"extra_price": 0,
}),
],
}
)
# Archive one variant
product_10_template.product_variant_ids[0].write({'active': False})
# Create Office Combo
self.office_combo = self.env["product.product"].create(
{
"available_in_pos": True,
"list_price": 40,
"name": "Office Combo",
"type": "combo",
"categ_id": self.env.ref("product.product_category_1").id,
"uom_id": self.env.ref("uom.product_uom_unit").id,
"uom_po_id": self.env.ref("uom.product_uom_unit").id,
"combo_ids": [
(6, 0, [self.desks_combo.id, self.chairs_combo.id, self.desk_accessories_combo.id])
],
}
)