[FIX] point_of_sale: Make tests demo data independent

Part-of: odoo/odoo#146649
This commit is contained in:
Yannick Tivisse
2023-12-18 23:32:05 +00:00
parent b1f392ce58
commit de4fc8bb2f
10 changed files with 174 additions and 99 deletions
@@ -1606,6 +1606,7 @@ class PosSession(models.Model):
'pos.order': self.env['pos.order'].search([('session_id', '=', self.id), ('state', '=', 'draft')]).export_for_ui()
}
def _load_model(self, model):
model_name = model.replace('.', '_')
loader = getattr(self, '_get_pos_ui_%s' % model_name, None)
+50 -48
View File
@@ -1,68 +1,70 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import odoo
import time
from odoo import fields
from odoo.tests import common
from odoo.tests import tagged
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
class TestAngloSaxonCommon(common.TransactionCase):
def setUp(self):
super(TestAngloSaxonCommon, self).setUp()
self.PosMakePayment = self.env['pos.make.payment']
self.PosOrder = self.env['pos.order']
self.Statement = self.env['account.bank.statement']
self.company = self.env.ref('base.main_company')
self.warehouse = self.env['stock.warehouse'].search([('company_id', '=', self.env.company.id)], limit=1)
self.partner = self.env['res.partner'].create({'name': 'Partner 1'})
self.category = self.env.ref('product.product_category_all')
self.category = self.category.copy({'name': 'New category','property_valuation': 'real_time'})
self.account = self.env['account.account'].create({'name': 'Receivable', 'code': 'RCV00', 'account_type': 'asset_receivable', 'reconcile': True})
account_expense = self.env['account.account'].create({'name': 'Expense', 'code': 'EXP00', 'account_type': 'expense', 'reconcile': True})
account_income = self.env['account.account'].create({'name': 'Income', 'code': 'INC00', 'account_type': 'income', 'reconcile': True})
account_output = self.env['account.account'].create({'name': 'Output', 'code': 'OUT00', 'account_type': 'expense', 'reconcile': True})
account_valuation = self.env['account.account'].create({'name': 'Valuation', 'code': 'STV00', 'account_type': 'expense', 'reconcile': True})
self.partner.property_account_receivable_id = self.account
self.category.property_account_income_categ_id = account_income
self.category.property_account_expense_categ_id = account_expense
self.category.property_stock_account_input_categ_id = self.account
self.category.property_stock_account_output_categ_id = account_output
self.category.property_stock_valuation_account_id = account_valuation
self.category.property_stock_journal = self.env['account.journal'].create({'name': 'Stock journal', 'type': 'sale', 'code': 'STK00'})
self.pos_config = self.env.ref('point_of_sale.pos_config_main')
self.cash_journal = self.env['account.journal'].create(
class TestAngloSaxonCommon(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.PosMakePayment = cls.env['pos.make.payment']
cls.PosOrder = cls.env['pos.order']
cls.Statement = cls.env['account.bank.statement']
cls.company = cls.env.company
cls.warehouse = cls.env['stock.warehouse'].search([('company_id', '=', cls.env.company.id)], limit=1)
cls.partner = cls.env['res.partner'].create({'name': 'Partner 1'})
cls.category = cls.env.ref('product.product_category_all')
cls.category = cls.category.copy({'name': 'New category','property_valuation': 'real_time'})
cls.account = cls.env['account.account'].create({'name': 'Receivable', 'code': 'RCV00', 'account_type': 'asset_receivable', 'reconcile': True})
account_expense = cls.env['account.account'].create({'name': 'Expense', 'code': 'EXP00', 'account_type': 'expense', 'reconcile': True})
account_income = cls.env['account.account'].create({'name': 'Income', 'code': 'INC00', 'account_type': 'income', 'reconcile': True})
account_output = cls.env['account.account'].create({'name': 'Output', 'code': 'OUT00', 'account_type': 'expense', 'reconcile': True})
account_valuation = cls.env['account.account'].create({'name': 'Valuation', 'code': 'STV00', 'account_type': 'expense', 'reconcile': True})
cls.partner.property_account_receivable_id = cls.account
cls.category.property_account_income_categ_id = account_income
cls.category.property_account_expense_categ_id = account_expense
cls.category.property_stock_account_input_categ_id = cls.account
cls.category.property_stock_account_output_categ_id = account_output
cls.category.property_stock_valuation_account_id = account_valuation
cls.category.property_stock_journal = cls.env['account.journal'].create({'name': 'Stock journal', 'type': 'sale', 'code': 'STK00'})
cls.cash_journal = cls.env['account.journal'].create(
{'name': 'CASH journal', 'type': 'cash', 'code': 'CSH02'})
self.cash_payment_method = self.env['pos.payment.method'].create({
cls.cash_payment_method = cls.env['pos.payment.method'].create({
'name': 'Cash Test',
'journal_id': self.cash_journal.id,
'journal_id': cls.cash_journal.id,
})
self.pos_config = self.pos_config.copy({'name': 'New POS config', 'payment_method_ids': self.cash_payment_method})
self.product = self.env['product.product'].create({
cls.pos_config = cls.env['pos.config'].create({
'name': 'New POS config',
'payment_method_ids': cls.cash_payment_method,
})
cls.product = cls.env['product.product'].create({
'name': 'New product',
'standard_price': 100,
'available_in_pos': True,
'type': 'product',
})
self.company.anglo_saxon_accounting = True
self.company.point_of_sale_update_stock_quantities = 'real'
self.product.categ_id = self.category
self.product.property_account_expense_id = account_expense
self.product.property_account_income_id = account_income
sale_journal = self.env['account.journal'].create({'name': 'POS journal', 'type': 'sale', 'code': 'POS00'})
self.pos_config.journal_id = sale_journal
self.cash_journal = self.env['account.journal'].create({'name': 'CASH journal', 'type': 'cash', 'code': 'CSH00'})
self.sale_journal = self.env['account.journal'].create({'name': 'SALE journal', 'type': 'sale', 'code': 'INV00'})
self.pos_config.invoice_journal_id = self.sale_journal
self.cash_payment_method = self.env['pos.payment.method'].create({
cls.company.anglo_saxon_accounting = True
cls.company.point_of_sale_update_stock_quantities = 'real'
cls.product.categ_id = cls.category
cls.product.property_account_expense_id = account_expense
cls.product.property_account_income_id = account_income
sale_journal = cls.env['account.journal'].create({'name': 'POS journal', 'type': 'sale', 'code': 'POS00'})
cls.pos_config.journal_id = sale_journal
cls.cash_journal = cls.env['account.journal'].create({'name': 'CASH journal', 'type': 'cash', 'code': 'CSH00'})
cls.sale_journal = cls.env['account.journal'].create({'name': 'SALE journal', 'type': 'sale', 'code': 'INV00'})
cls.pos_config.invoice_journal_id = cls.sale_journal
cls.cash_payment_method = cls.env['pos.payment.method'].create({
'name': 'Cash Test',
'journal_id': self.cash_journal.id,
'receivable_account_id': self.account.id,
'journal_id': cls.cash_journal.id,
'receivable_account_id': cls.account.id,
})
self.pos_config.write({'payment_method_ids': [(6, 0, self.cash_payment_method.ids)]})
cls.pos_config.write({'payment_method_ids': [(6, 0, cls.cash_payment_method.ids)]})
@odoo.tests.tagged('post_install', '-at_install')
@tagged('post_install', '-at_install')
class TestAngloSaxonFlow(TestAngloSaxonCommon):
def test_create_account_move_line(self):
+15 -2
View File
@@ -1,15 +1,18 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from odoo import Command
from odoo.api import Environment
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
from odoo.tests import loaded_demo_data, tagged
from odoo.addons.account.tests.common import AccountTestInvoicingHttpCommon
from odoo.addons.point_of_sale.tests.common_setup_methods import setup_pos_combo_items
from datetime import date, timedelta
from odoo.addons.point_of_sale.tests.common import archive_products
import odoo.tests
_logger = logging.getLogger(__name__)
class TestPointOfSaleHttpCommon(AccountTestInvoicingHttpCommon):
@@ -515,9 +518,12 @@ class TestPointOfSaleHttpCommon(AccountTestInvoicingHttpCommon):
env['ir.property']._set_default("property_product_pricelist", "res.partner", public_pricelist, main_company)
@odoo.tests.tagged('post_install', '-at_install')
@tagged('post_install', '-at_install')
class TestUi(TestPointOfSaleHttpCommon):
def test_01_pos_basic_order(self):
if not loaded_demo_data(self.env):
_logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.")
return
self.main_pos_config.write({
'iface_tipproduct': True,
@@ -547,6 +553,9 @@ class TestUi(TestPointOfSaleHttpCommon):
self.assertEqual(email_count, 1)
def test_02_pos_with_invoiced(self):
if not loaded_demo_data(self.env):
_logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.")
return
self.pos_user.write({
'groups_id': [
(4, self.env.ref('account.group_account_invoice').id),
@@ -566,6 +575,9 @@ class TestUi(TestPointOfSaleHttpCommon):
self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config, 'ProductConfiguratorTour', login="pos_user")
def test_05_ticket_screen(self):
if not loaded_demo_data(self.env):
_logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.")
return
self.pos_user.write({
'groups_id': [
(4, self.env.ref('account.group_account_invoice').id),
@@ -722,6 +734,7 @@ class TestUi(TestPointOfSaleHttpCommon):
self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'PaymentScreenRoundingHalfUp', login="pos_user")
def test_rounding_half_up_cash_and_bank(self):
self.env['res.partner'].create({'name': 'Nicole Ford'})
company = self.main_pos_config.company_id
rouding_method = self.env['account.cash.rounding'].create({
'name': 'Rounding HALF-UP',
+9 -1
View File
@@ -1,7 +1,11 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import tagged, HttpCase
import logging
from odoo.tests import tagged, HttpCase, loaded_demo_data
_logger = logging.getLogger(__name__)
@tagged("post_install", "-at_install")
@@ -15,6 +19,10 @@ class WebSuite(HttpCase):
def test_pos_js(self):
# open a session, the /pos/ui controller will redirect to it
# TODO: Adapt to work without demo data
if not loaded_demo_data(self.env):
_logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.")
return
self.main_pos_config.open_ui()
self.main_pos_config.current_session_id.set_cashbox_pos(0, None)
@@ -16,6 +16,15 @@ class TestConfigureShops(TestPoSCommon):
pos_config_id field.
"""
@classmethod
def setUpClass(cls):
super().setUpClass()
# If not enabled (like in demo data), landing on res.config will try
# to disable module_sale_quotation_builder and raise an issue
group_order_template = cls.env.ref('sale_management.group_sale_order_template', raise_if_not_found=False)
if group_order_template:
cls.env.ref('base.group_user').write({"implied_ids": [(4, group_order_template.id)]})
def _remove_on_payment_taxes(self):
""" Call this when testing the res.config.settings with Form.
The `on_payment` taxes need to be removed, otherwise, a warning will show in the log.
+4 -2
View File
@@ -24,7 +24,8 @@ class TestPosHrHttpCommon(TestPointOfSaleHttpCommon):
})
# User employee
emp1 = cls.env.ref("hr.employee_han").sudo().copy({
emp1 = cls.env['hr.employee'].create({
'name': 'Test Employee 1',
"company_id": cls.env.company.id,
})
emp1_user = new_test_user(
@@ -37,7 +38,8 @@ class TestPosHrHttpCommon(TestPointOfSaleHttpCommon):
emp1.write({"name": "Pos Employee1", "pin": "2580", "user_id": emp1_user.id})
# Non-user employee
emp2 = cls.env.ref("hr.employee_jve").sudo().copy({
emp2 = cls.env['hr.employee'].create({
'name': 'Test Employee 2',
"company_id": cls.env.company.id,
})
emp2.write({"name": "Pos Employee2", "pin": "1234"})
+55 -36
View File
@@ -4,46 +4,64 @@
import odoo.tests
from odoo.addons.point_of_sale.tests.common_setup_methods import setup_pos_combo_items
from odoo.addons.point_of_sale.tests.common import archive_products
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.addons.base.tests.common import HttpCaseWithUserDemo
@odoo.tests.tagged('post_install', '-at_install')
class TestFrontend(odoo.tests.HttpCase):
def setUp(self):
super().setUp()
self.env = self.env(user=self.env.ref('base.user_admin'))
archive_products(self.env)
account_obj = self.env['account.account']
class TestFrontend(AccountTestInvoicingCommon, HttpCaseWithUserDemo):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.user_demo.groups_id += cls.env.ref('point_of_sale.group_pos_manager') + cls.env.ref('account.group_account_invoice')
user_admin = cls.env.ref('base.user_admin')
(cls.user_demo + user_admin).write({
'company_id': cls.env.company.id,
'company_ids': [(4, cls.env.company.id)],
})
cls.env = cls.env(user=user_admin)
archive_products(cls.env)
account_obj = cls.env['account.account']
account_receivable = account_obj.create({'code': 'X1012',
'name': 'Account Receivable - Test',
'account_type': 'asset_receivable',
'reconcile': True})
drinks_category = self.env['pos.category'].create({'name': 'Drinks'})
drinks_category = cls.env['pos.category'].create({'name': 'Drinks'})
printer = self.env['pos.printer'].create({
printer = cls.env['pos.printer'].create({
'name': 'Preparation Printer',
'epson_printer_ip': '127.0.0.1',
'printer_type': 'epson_epos',
'product_categories_ids': [drinks_category.id]
})
main_company = self.env.ref('base.main_company')
main_company = cls.env.company
second_cash_journal = self.env['account.journal'].create({
cls.env['pos.payment.method'].create({
'name': 'Bank',
'journal_id': cls.company_data['default_journal_bank'].id,
'receivable_account_id': cls.company_data['default_account_receivable'].id,
'company_id': cls.env.company.id,
})
second_cash_journal = cls.env['account.journal'].create({
'name': 'Cash 2',
'type': 'cash',
'company_id': main_company.id
})
})
self.env['pos.payment.method'].create({
cls.env['pos.payment.method'].create({
'name': 'Cash 2',
'split_transactions': False,
'receivable_account_id': account_receivable.id,
'journal_id': second_cash_journal.id,
})
pos_config = self.env['pos.config'].create({
'name': 'Bar',
pos_config = cls.env['pos.config'].create({
'name': 'Bar Prout',
'module_pos_restaurant': True,
'iface_splitbill': True,
'iface_printbill': True,
@@ -53,22 +71,23 @@ class TestFrontend(odoo.tests.HttpCase):
'is_order_printer': True,
'printer_ids': [(4, printer.id)],
'iface_tipproduct': False,
'company_id': cls.env.company.id,
})
pos_config.floor_ids.unlink()
main_floor = self.env['restaurant.floor'].create({
main_floor = cls.env['restaurant.floor'].create({
'name': 'Main Floor',
'pos_config_ids': [(4, pos_config.id)],
})
table_05 = self.env['restaurant.table'].create({
cls.env['restaurant.table'].create({
'name': '5',
'floor_id': main_floor.id,
'seats': 4,
'position_h': 100,
'position_v': 100,
})
table_04 = self.env['restaurant.table'].create({
cls.env['restaurant.table'].create({
'name': '4',
'floor_id': main_floor.id,
'seats': 4,
@@ -76,7 +95,7 @@ class TestFrontend(odoo.tests.HttpCase):
'position_h': 150,
'position_v': 100,
})
table_02 = self.env['restaurant.table'].create({
cls.env['restaurant.table'].create({
'name': '2',
'floor_id': main_floor.id,
'seats': 4,
@@ -84,12 +103,12 @@ class TestFrontend(odoo.tests.HttpCase):
'position_v': 100,
})
second_floor = self.env['restaurant.floor'].create({
second_floor = cls.env['restaurant.floor'].create({
'name': 'Second Floor',
'pos_config_ids': [(4, pos_config.id)],
})
table_01 = self.env['restaurant.table'].create({
cls.env['restaurant.table'].create({
'name': '1',
'floor_id': second_floor.id,
'seats': 4,
@@ -97,7 +116,7 @@ class TestFrontend(odoo.tests.HttpCase):
'position_h': 100,
'position_v': 150,
})
table_03 = self.env['restaurant.table'].create({
cls.env['restaurant.table'].create({
'name': '3',
'floor_id': second_floor.id,
'seats': 4,
@@ -105,21 +124,21 @@ class TestFrontend(odoo.tests.HttpCase):
'position_v': 250,
})
self.env['ir.property']._set_default(
cls.env['ir.property']._set_default(
'property_account_receivable_id',
'res.partner',
account_receivable,
main_company,
)
test_sale_journal = self.env['account.journal'].create({
test_sale_journal = cls.env['account.journal'].create({
'name': 'Sales Journal - Test',
'code': 'TSJ',
'type': 'sale',
'company_id': main_company.id
})
cash_journal = self.env['account.journal'].create({
cash_journal = cls.env['account.journal'].create({
'name': 'Cash Test',
'code': 'TCJ',
'type': 'cash',
@@ -137,51 +156,51 @@ class TestFrontend(odoo.tests.HttpCase):
})],
})
coke = self.env['product.product'].create({
cls.env['product.product'].create({
'available_in_pos': True,
'list_price': 2.20,
'name': 'Coca-Cola',
'weight': 0.01,
'pos_categ_ids': [(4, drinks_category.id)],
'categ_id': self.env.ref('point_of_sale.product_category_pos').id,
'categ_id': cls.env.ref('point_of_sale.product_category_pos').id,
'taxes_id': [(6, 0, [])],
})
water = self.env['product.product'].create({
cls.env['product.product'].create({
'available_in_pos': True,
'list_price': 2.20,
'name': 'Water',
'weight': 0.01,
'pos_categ_ids': [(4, drinks_category.id)],
'categ_id': self.env.ref('point_of_sale.product_category_pos').id,
'categ_id': cls.env.ref('point_of_sale.product_category_pos').id,
'taxes_id': [(6, 0, [])],
})
minute_maid = self.env['product.product'].create({
cls.env['product.product'].create({
'available_in_pos': True,
'list_price': 2.20,
'name': 'Minute Maid',
'weight': 0.01,
'pos_categ_ids': [(4, drinks_category.id)],
'categ_id': self.env.ref('point_of_sale.product_category_pos').id,
'categ_id': cls.env.ref('point_of_sale.product_category_pos').id,
'taxes_id': [(6, 0, [])],
})
pricelist = self.env['product.pricelist'].create({'name': 'Restaurant Pricelist'})
pricelist = cls.env['product.pricelist'].create({'name': 'Restaurant Pricelist'})
pos_config.write({'pricelist_id': pricelist.id})
self.pos_config = pos_config
cls.pos_config = pos_config
self.pos_admin = self.env['res.users'].create({
cls.pos_admin = cls.env['res.users'].create({
'name': 'A powerfull PoS man!',
'login': 'pos_admin',
'password': 'pos_admin',
'groups_id': [
(4, self.env.ref('base.group_user').id),
(4, self.env.ref('point_of_sale.group_pos_manager').id),
(4, cls.env.ref('base.group_user').id),
(4, cls.env.ref('point_of_sale.group_pos_manager').id),
],
})
self.pos_admin.partner_id.email = 'pos_admin@test.com'
cls.pos_admin.partner_id.email = 'pos_admin@test.com'
def test_01_pos_restaurant(self):
+12 -9
View File
@@ -45,7 +45,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
self.bom_a = bom_product_form.save()
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_2').id,
'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id,
'order_line': [(0, 0, {
'product_id': self.kit.id,
'name': self.kit.name,
@@ -99,14 +99,16 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
'lst_price': 11,
'taxes_id': [odoo.Command.clear()],
})
partner_1 = self.env['res.partner'].create({'name': 'Test Partner 1'})
partner_2 = self.env['res.partner'].create({'name': 'Test Partner 2'})
self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_1').id,
'partner_shipping_id': self.env.ref('base.res_partner_2').id,
'partner_id': partner_1.id,
'partner_shipping_id': partner_2.id,
'order_line': [(0, 0, {'product_id': product1.id})],
})
self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_1').id,
'partner_shipping_id': self.env.ref('base.res_partner_1').id,
'partner_id': partner_1.id,
'partner_shipping_id': partner_1.id,
'order_line': [(0, 0, {'product_id': product2.id})],
})
self.main_pos_config.open_ui()
@@ -131,7 +133,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
})
#create a sale order with 2 lines
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_2').id,
'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id,
'order_line': [(0, 0, {
'product_id': product_a.id,
'name': product_a.name,
@@ -166,7 +168,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
def test_downpayment_refund(self):
#create a sale order
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_2').id,
'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id,
'order_line': [(0, 0, {
'product_id': self.product_a.id,
'name': self.product_a.name,
@@ -190,6 +192,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
self.assertEqual(len(sale_order.order_line), 3)
self.assertEqual(sale_order.order_line[1].qty_invoiced, 1)
self.assertEqual(sale_order.order_line[2].qty_invoiced, -1)
def test_settle_order_unreserve_order_lines(self):
#create a product category that use the closest location for the removal strategy
self.removal_strategy = self.env['product.removal'].search([('method', '=', 'closest')], limit=1)
@@ -233,7 +236,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
quants.action_apply_inventory()
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_2').id,
'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id,
'order_line': [(0, 0, {
'product_id': self.product.id,
'name': self.product.name,
@@ -276,7 +279,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon):
})
#create a sale order with 2 lines
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_2').id,
'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id,
'order_line': [(0, 0, {
'product_id': product_a.id,
'name': product_a.name,
@@ -24,7 +24,7 @@ class TestSelfOrderCombo(SelfOrderCommonTest):
'self_ordering_pay_after': 'each',
'self_ordering_service_mode': 'counter',
})
self.pos_user.groups_id += self.env.ref('account.group_account_invoice')
self.pos_config.with_user(self.pos_user).open_ui()
self_route = self.pos_config._get_self_order_route()
@@ -15,6 +15,24 @@ class TestSelfOrderMobile(SelfOrderCommonTest):
'self_ordering_service_mode': 'table',
})
floor_main = self.env["restaurant.floor"].create({
"name": 'Main Floor',
"background_color": 'rgb(249,250,251)',
"pos_config_ids": [(6, 0, self.pos_config.ids)],
})
self.env["restaurant.table"].create({
"name": '3',
"floor_id": floor_main.id,
"seats": 2,
"color": 'rgb(53,211,116)',
"shape": 'square',
"width": '100',
"height": '100',
"position_h": '374',
"position_v": '50',
})
self.pos_config.with_user(self.pos_user).open_ui()
self_route = self.pos_config._get_self_order_route()