diff --git a/akl_multi_tab_plugin/__init__.py b/akl_multi_tab_plugin/__init__.py
new file mode 100644
index 000000000..40a96afc6
--- /dev/null
+++ b/akl_multi_tab_plugin/__init__.py
@@ -0,0 +1 @@
+# -*- coding: utf-8 -*-
diff --git a/akl_multi_tab_plugin/__manifest__.py b/akl_multi_tab_plugin/__manifest__.py
new file mode 100644
index 000000000..e6258d207
--- /dev/null
+++ b/akl_multi_tab_plugin/__manifest__.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "akl_multi_tab_plugin",
+
+ 'summary': """
+ akl multi tab plugin for odoo""",
+
+ 'description': """
+ akl multi tab plugin
+ multi tab,
+ multi tab theme,
+ odoo theme
+ """,
+
+ 'author': 'ylhc',
+ 'website': 'https://www.openerpnext.com',
+ 'live_test_url': 'https://www.openerpnext.com',
+
+ 'category': 'Backend/Theme',
+ 'version': '17.0.0.3',
+ 'license': 'OPL-1',
+ 'images': ['static/description/banner.png',
+ 'static/description/akl_screenshot.png'],
+
+ 'depends': ['base', 'web'],
+
+ "application": False,
+ "installable": True,
+ "auto_install": False,
+
+ 'price': 200.00,
+ 'currency': 'USD',
+
+ 'data': [],
+
+ 'assets': {
+ 'web.assets_backend': [
+
+ 'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss',
+ 'akl_multi_tab_plugin/static/src/akl_action_container.scss',
+
+ 'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js',
+ 'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.xml',
+
+ 'akl_multi_tab_plugin/static/src/akl_action_container.js',
+ 'akl_multi_tab_plugin/static/src/akl_action_service.js',
+ 'akl_multi_tab_plugin/static/src/akl_list_patch.js'
+ ]
+ }
+}
diff --git a/akl_multi_tab_plugin/i18n/zh_CN.po b/akl_multi_tab_plugin/i18n/zh_CN.po
new file mode 100644
index 000000000..2c29ca399
--- /dev/null
+++ b/akl_multi_tab_plugin/i18n/zh_CN.po
@@ -0,0 +1,96 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * akl_multi_tab_plugin
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-19 02:10+0000\n"
+"PO-Revision-Date: 2023-05-19 02:10+0000\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid ""
+"A popup window has been blocked. You may need to change your browser "
+"settings to allow popup windows for this page."
+msgstr ""
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
+#, python-format
+msgid "Close All Tabs"
+msgstr "关闭所有"
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
+#, python-format
+msgid "Close Current Tab"
+msgstr "关闭当前"
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
+#, python-format
+msgid "Close Other Tabs"
+msgstr "关闭其它"
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid "No view of type '%s' could be found in the current action."
+msgstr ""
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid "Report"
+msgstr "报告"
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid ""
+"Unable to find Wkhtmltopdf on this system. The report will be shown in html."
+msgstr ""
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid ""
+"You need to start Odoo with at least two workers to print a pdf version of "
+"the reports."
+msgstr ""
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid ""
+"You should upgrade your version of Wkhtmltopdf to at least 0.12.0 in order "
+"to get a correct display of headers and footers as well as support for "
+"table-breaking between pages."
+msgstr ""
+
+#. module: akl_multi_tab_plugin
+#. odoo-javascript
+#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
+#, python-format
+msgid ""
+"Your installation of Wkhtmltopdf seems to be broken. The report will be "
+"shown in html."
+msgstr ""
diff --git a/akl_multi_tab_plugin/security/ir.model.access.csv b/akl_multi_tab_plugin/security/ir.model.access.csv
new file mode 100644
index 000000000..e0b6afc76
--- /dev/null
+++ b/akl_multi_tab_plugin/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_akl_multitab_plugin_akl_multitab_plugin,akl_multitab_plugin.akl_multitab_plugin,model_akl_multitab_plugin_akl_multitab_plugin,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/css/akl_action_manager.scss b/akl_multi_tab_plugin/static/css/akl_action_manager.scss
new file mode 100644
index 000000000..901fdef75
--- /dev/null
+++ b/akl_multi_tab_plugin/static/css/akl_action_manager.scss
@@ -0,0 +1,31 @@
+// .akl_controller_container {
+// overflow-y: hidden;
+
+// .o_view_controller {
+// display: flex;
+// height: 100%;
+// overflow: hidden;
+// flex-direction: column;
+
+// .o_content {
+// flex: 1 1 auto;
+// overflow-y: scroll;
+// }
+// }
+// }
+
+// .o_action {
+// display: flex;
+// flex-direction: column;
+// flex: 1 1 auto;
+// height: 100%
+// }
+
+.o_action_manager_test {
+ direction: ltr;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1 1 auto;
+ flex: 1 1 auto;
+ height: 100%;
+ overflow: hidden;
+}
diff --git a/akl_multi_tab_plugin/static/description/admin_theme.gif b/akl_multi_tab_plugin/static/description/admin_theme.gif
new file mode 100644
index 000000000..42ceeba34
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/admin_theme.gif differ
diff --git a/akl_multi_tab_plugin/static/description/akl_screenshot.png b/akl_multi_tab_plugin/static/description/akl_screenshot.png
new file mode 100644
index 000000000..fdbd004dd
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/akl_screenshot.png differ
diff --git a/akl_multi_tab_plugin/static/description/anita_list.gif b/akl_multi_tab_plugin/static/description/anita_list.gif
new file mode 100644
index 000000000..f63e756a3
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/anita_list.gif differ
diff --git a/akl_multi_tab_plugin/static/description/anita_modeler.png b/akl_multi_tab_plugin/static/description/anita_modeler.png
new file mode 100644
index 000000000..a56f812f4
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/anita_modeler.png differ
diff --git a/akl_multi_tab_plugin/static/description/anita_switcher.png b/akl_multi_tab_plugin/static/description/anita_switcher.png
new file mode 100644
index 000000000..f7309adcc
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/anita_switcher.png differ
diff --git a/akl_multi_tab_plugin/static/description/app_icons/awsome.png b/akl_multi_tab_plugin/static/description/app_icons/awsome.png
new file mode 100644
index 000000000..f00d3e137
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/app_icons/awsome.png differ
diff --git a/akl_multi_tab_plugin/static/description/app_icons/bk.png b/akl_multi_tab_plugin/static/description/app_icons/bk.png
new file mode 100644
index 000000000..bbfae7fc1
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/app_icons/bk.png differ
diff --git a/akl_multi_tab_plugin/static/description/app_icons/fxSelection.png b/akl_multi_tab_plugin/static/description/app_icons/fxSelection.png
new file mode 100644
index 000000000..84181e3ff
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/app_icons/fxSelection.png differ
diff --git a/akl_multi_tab_plugin/static/description/app_icons/fxTemplateWidget.png b/akl_multi_tab_plugin/static/description/app_icons/fxTemplateWidget.png
new file mode 100644
index 000000000..bbfae7fc1
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/app_icons/fxTemplateWidget.png differ
diff --git a/akl_multi_tab_plugin/static/description/app_icons/fxTheme.png b/akl_multi_tab_plugin/static/description/app_icons/fxTheme.png
new file mode 100644
index 000000000..994cd7401
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/app_icons/fxTheme.png differ
diff --git a/akl_multi_tab_plugin/static/description/awesome_theme.gif b/akl_multi_tab_plugin/static/description/awesome_theme.gif
new file mode 100644
index 000000000..c45dd1fdd
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/awesome_theme.gif differ
diff --git a/akl_multi_tab_plugin/static/description/banner.png b/akl_multi_tab_plugin/static/description/banner.png
new file mode 100644
index 000000000..618aefb0e
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/banner.png differ
diff --git a/akl_multi_tab_plugin/static/description/chrome_cHD8ozAeT9.gif b/akl_multi_tab_plugin/static/description/chrome_cHD8ozAeT9.gif
new file mode 100644
index 000000000..95b95f249
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/chrome_cHD8ozAeT9.gif differ
diff --git a/akl_multi_tab_plugin/static/description/icon.png b/akl_multi_tab_plugin/static/description/icon.png
new file mode 100644
index 000000000..e6aacba15
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/icon.png differ
diff --git a/akl_multi_tab_plugin/static/description/images/icon.png b/akl_multi_tab_plugin/static/description/images/icon.png
new file mode 100644
index 000000000..96e9c888e
Binary files /dev/null and b/akl_multi_tab_plugin/static/description/images/icon.png differ
diff --git a/akl_multi_tab_plugin/static/description/index.html b/akl_multi_tab_plugin/static/description/index.html
new file mode 100644
index 000000000..a5743aa41
--- /dev/null
+++ b/akl_multi_tab_plugin/static/description/index.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+ Akl multi tab pulgin is an advanced module that allows you to create multiple tabs in your Odoo backend.
+
+
+
+
+
+
(Current Release V16.0.0.5 -- 2023.04.22)
+
+
+
+
+
Overview
+
+
+
+
+
+
+
+
+
Our other products, Just click the image to visit
+
+
+
+
+ Admin Theme
+
+
+
+
+
+
+
+
+
+
+
+
Awesome theme
+
+ Awesome theme is a theme to enhance your product
+
+
+
+
+
+
+
+
+
+
+
+ rubbish Modeler
+
+
+
+
+
+
+
+
+
+
+
+ rubbish List
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+ 16.0.0.1-Feb 1, 2023
+
+
+ -
+ update
+
first version
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/src/akl_action_container.js b/akl_multi_tab_plugin/static/src/akl_action_container.js
new file mode 100644
index 000000000..47dbfd74a
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/akl_action_container.js
@@ -0,0 +1,24 @@
+/** @odoo-module alias=xxxx_module **/
+function a0_0x4cf1(_0x21b1d5,_0x216b92){const _0x316dc9=a0_0x316d();return a0_0x4cf1=function(_0x4cf109,_0x202606){_0x4cf109=_0x4cf109-0x1a9;let _0x1eb200=_0x316dc9[_0x4cf109];return _0x1eb200;},a0_0x4cf1(_0x21b1d5,_0x216b92);}
+ function a0_0x316d(){const _0x58f4ff=['_set_current_action_stack','stringify','indexOf','32314788TSkGqC','trigger','Component','splice','2265xoLUOF','_on_close_cur_action','get_action_info','template','xml_id','binding_type','_get_action_jsId','parse','11731272DkwQuH','2371484QGnEhJ','includes','context','addEventListener','res_id','178114eOIcZL','keys','action_infos','name','action','componentProps','action_service','jsId','params','binding_model_id','removeActionStacks','tag','ref_action','components','removeStacks','binding_view_types','1605485jmalnP','domain','removeAllStacks','active','find','length','_on_close_action','bus','2814MbxYFU','_on_active_action','_get_action','findIndex','setChangingTab','push','4107858MTrFmd','env','view_mode','res_model','17FboqgX'];a0_0x316d=function(){return _0x58f4ff;};return a0_0x316d();}const a0_0xcd1ea9=a0_0x4cf1;(function(_0x2ec97e,_0x47518c){const _0x88d9b7=a0_0x4cf1,_0x3f1cf7=_0x2ec97e();while(!![]){try{const _0x24c9bb=-parseInt(_0x88d9b7(0x1d5))/0x1*(-parseInt(_0x88d9b7(0x1b3))/0x2)+parseInt(_0x88d9b7(0x1d1))/0x3+parseInt(_0x88d9b7(0x1ae))/0x4+-parseInt(_0x88d9b7(0x1dd))/0x5*(parseInt(_0x88d9b7(0x1cb))/0x6)+-parseInt(_0x88d9b7(0x1c3))/0x7+parseInt(_0x88d9b7(0x1ad))/0x8+-parseInt(_0x88d9b7(0x1d9))/0x9;if(_0x24c9bb===_0x47518c)break;else _0x3f1cf7['push'](_0x3f1cf7['shift']());}catch(_0x50a454){_0x3f1cf7['push'](_0x3f1cf7['shift']());}}}(a0_0x316d,0xde36f));
+ import {ActionContainer} from '@web/webclient/actions/action_container';
+ import {patch} from '@web/core/utils/patch';
+ import {AklMultiTab} from './components/multi_tab/akl_multi_tab';
+ import {xml,useState} from '@odoo/owl';
+ import {useService} from '@web/core/utils/hooks';patch(ActionContainer['prototype'],{'setup'(){const _0x44986e=a0_0x4cf1;super['setup'](arguments),this['action_infos']=useState([]),this[_0x44986e(0x1b9)]=useService('action'),this[_0x44986e(0x1d2)]['bus']['addEventListener']('ACTION_MANAGER:UPDATE',({detail:_0x24cc1a})=>{const _0x38510b=_0x44986e;if(!_0x24cc1a[_0x38510b(0x1db)])return;for(let _0x18f8d8=0x0;_0x18f8d8{const _0x185926=_0x38510b;return _0x29d485[_0x185926(0x1b7)]&&_0x29d485[_0x185926(0x1b7)][_0x185926(0x1be)]=='menu';});_0x3ecb48!=-0x1&&this[_0x38510b(0x1b5)]['splice'](_0x3ecb48,0x1);}this['_set_current_action_stack'](_0x24cc1a);}),this[_0x44986e(0x1d2)][_0x44986e(0x1ca)][_0x44986e(0x1b1)]('ACTION_MANAGER:CLOSE_CURRENT_TAB',()=>{const _0x3f98c3=_0x44986e;this[_0x3f98c3(0x1de)](),this[_0x3f98c3(0x1d2)][_0x3f98c3(0x1ca)][_0x3f98c3(0x1da)]('ACTION_MANAGER:UI-UPDATED');});},'get_action_info'(_0x46e4a6,_0x14f7d3){const _0xfd655f=a0_0x4cf1;if(!_0x46e4a6)return null;let _0x1a743e=_0x46e4a6[_0xfd655f(0x1b8)]&&_0x46e4a6['componentProps'][_0xfd655f(0x1b7)]||_0x46e4a6[_0xfd655f(0x1b7)];while(_0x1a743e[_0xfd655f(0x1bf)]){_0x1a743e=_0x1a743e[_0xfd655f(0x1bf)];if(_0x1a743e==_0x1a743e[_0xfd655f(0x1bf)])break;}let _0x139294=JSON['parse'](JSON[_0xfd655f(0x1d7)](_0x1a743e['context']||{}));!_0x139294[_0xfd655f(0x1bb)]?_0x139294[_0xfd655f(0x1bb)]={}:(delete _0x139294[_0xfd655f(0x1bb)]['action'],delete _0x139294[_0xfd655f(0x1bb)]['cids'],delete _0x139294[_0xfd655f(0x1bb)]['model'],delete _0x139294[_0xfd655f(0x1bb)]['view_type'],delete _0x139294[_0xfd655f(0x1bb)]['menu_id']);_0x139294[_0xfd655f(0x1bb)]={};for(let _0x25c5a0 in _0x139294){_0x25c5a0[_0xfd655f(0x1d8)]('search_default_')!=-0x1&&delete _0x139294[_0x25c5a0];}
+ function _0x1b99e3(_0x1abfa9,_0x3f022a){const _0x5738d2=_0xfd655f;if(_0x1abfa9===_0x3f022a)return!![];if(typeof _0x1abfa9!=='object'||_0x1abfa9===null||typeof _0x3f022a!=='object'||_0x3f022a===null)return![];let _0x53332f=Object[_0x5738d2(0x1b4)](_0x1abfa9),_0x1d585b=Object[_0x5738d2(0x1b4)](_0x3f022a);if(_0x53332f['length']!==_0x1d585b[_0x5738d2(0x1c8)])return![];for(let _0x1842ea of _0x53332f){if(!_0x1d585b[_0x5738d2(0x1af)](_0x1842ea)||!_0x1b99e3(_0x1abfa9[_0x1842ea],_0x3f022a[_0x1842ea]))return![];}return!![];}let _0x4dbda1=this[_0xfd655f(0x1b5)][_0xfd655f(0x1c7)](_0x12b6ad=>{const _0x43acd3=_0xfd655f;let _0x4f89e2=_0x12b6ad[_0x43acd3(0x1b8)][_0x43acd3(0x1b7)]||_0x12b6ad[_0x43acd3(0x1b7)];while(_0x4f89e2[_0x43acd3(0x1bf)]){_0x4f89e2=_0x4f89e2['ref_action'];if(_0x4f89e2==_0x4f89e2[_0x43acd3(0x1bf)])break;}let _0x589e75=JSON[_0x43acd3(0x1ac)](JSON[_0x43acd3(0x1d7)](_0x4f89e2[_0x43acd3(0x1b0)]||{}));!_0x589e75[_0x43acd3(0x1bb)]?_0x589e75[_0x43acd3(0x1bb)]={}:(delete _0x589e75[_0x43acd3(0x1bb)]['action'],delete _0x589e75[_0x43acd3(0x1bb)]['cids'],delete _0x589e75[_0x43acd3(0x1bb)]['model'],delete _0x589e75['params']['view_type'],delete _0x589e75[_0x43acd3(0x1bb)]['menu_id']);_0x589e75[_0x43acd3(0x1bb)]={};for(let _0x170188 in _0x589e75){_0x170188[_0x43acd3(0x1d8)]('search_default_')!=-0x1&&delete _0x589e75[_0x170188];}return _0x4f89e2['id']==_0x1a743e['id']&&_0x4f89e2['name']==_0x1a743e[_0x43acd3(0x1b6)]&&_0x4f89e2[_0x43acd3(0x1d4)]==_0x4f89e2[_0x43acd3(0x1d4)]&&_0x4f89e2[_0x43acd3(0x1a9)]==_0x1a743e[_0x43acd3(0x1a9)]&&_0x4f89e2[_0x43acd3(0x1d3)]==_0x1a743e['view_mode']&&_0x4f89e2[_0x43acd3(0x1bc)]==_0x1a743e[_0x43acd3(0x1bc)]&&_0x4f89e2[_0x43acd3(0x1aa)]==_0x1a743e[_0x43acd3(0x1aa)]&&_0x4f89e2[_0x43acd3(0x1c2)]==_0x1a743e[_0x43acd3(0x1c2)]&&_0x4f89e2[_0x43acd3(0x1b2)]==_0x1a743e[_0x43acd3(0x1b2)]&&JSON[_0x43acd3(0x1d7)](_0x4f89e2[_0x43acd3(0x1c4)]||{})==JSON[_0x43acd3(0x1d7)](_0x1a743e[_0x43acd3(0x1c4)]||{})&&_0x1b99e3(_0x589e75,_0x139294)?!![]:![];});return _0x4dbda1;},'_get_action'(_0x1770da){const _0x4a453f=a0_0x4cf1;let _0x1c91b0=_0x1770da[_0x4a453f(0x1b8)]['action']||_0x1770da['action'];while(_0x1c91b0[_0x4a453f(0x1bf)]){_0x1c91b0=_0x1c91b0[_0x4a453f(0x1bf)];if(_0x1c91b0==_0x1c91b0[_0x4a453f(0x1bf)])break;}return _0x1c91b0;},'_get_action_jsId'(_0xc596f6){const _0x29ba56=a0_0x4cf1;let _0x4008cf=this[_0x29ba56(0x1cd)](_0xc596f6);return _0x4008cf[_0x29ba56(0x1ba)];},'_set_current_action_stack'(_0x1ca1f1){const _0x3b7932=a0_0x4cf1;let _0x3c0449=this[_0x3b7932(0x1ab)](_0x1ca1f1);this['action_service']['setCurrentAction'](_0x3c0449),this[_0x3b7932(0x1d2)][_0x3b7932(0x1ca)][_0x3b7932(0x1da)]('MULTI_TAB:UPDATE',{'jsId':_0x3c0449});},'_on_active_action'(_0x42a27f){const _0x5ce4d9=a0_0x4cf1;this[_0x5ce4d9(0x1d6)](_0x42a27f);for(let _0x297281=0x0;_0x2972810x0&&(this[_0x287c18(0x1b5)][_0x38afd3][_0x287c18(0x1c6)]=!![],this[_0x287c18(0x1cc)](this[_0x287c18(0x1b5)][_0x38afd3])),this[_0x287c18(0x1b9)][_0x287c18(0x1cf)](!![]);},'_close_other_action'(_0x2e9d08){const _0x1efa03=a0_0x4cf1;_0x2e9d08=this[_0x1efa03(0x1df)](_0x2e9d08);let _0x5d5475=[];for(let _0x53e099=0x0;_0x53e099
+
+
+ `;
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/src/akl_action_container.scss b/akl_multi_tab_plugin/static/src/akl_action_container.scss
new file mode 100644
index 000000000..f9c4f4b8b
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/akl_action_container.scss
@@ -0,0 +1,29 @@
+.akl_controller_container {
+ overflow-y: hidden;
+ flex: 1 1 auto;
+
+ .o_view_controller {
+ display: flex;
+ height: 100%;
+ overflow: hidden;
+ flex-direction: column;
+
+ .o_content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ }
+ }
+
+ .o_action {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+ background-color: white;
+ .o_content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ background-color: white;
+ }
+ }
+}
diff --git a/akl_multi_tab_plugin/static/src/akl_action_service.js b/akl_multi_tab_plugin/static/src/akl_action_service.js
new file mode 100644
index 000000000..23c9677c3
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/akl_action_service.js
@@ -0,0 +1,51 @@
+/** @odoo-module **/
+const a0_0x642ffa=a0_0x4cf9;(function(_0x2c7b7f,_0x2fa7aa){const _0x5c1ba2=a0_0x4cf9,_0x21b912=_0x2c7b7f();while(!![]){try{const _0x2e355f=-parseInt(_0x5c1ba2(0x14d))/0x1*(parseInt(_0x5c1ba2(0x1da))/0x2)+parseInt(_0x5c1ba2(0x13d))/0x3*(parseInt(_0x5c1ba2(0x1cf))/0x4)+parseInt(_0x5c1ba2(0x148))/0x5*(-parseInt(_0x5c1ba2(0x194))/0x6)+parseInt(_0x5c1ba2(0x185))/0x7*(-parseInt(_0x5c1ba2(0x13f))/0x8)+-parseInt(_0x5c1ba2(0x154))/0x9*(parseInt(_0x5c1ba2(0x18c))/0xa)+parseInt(_0x5c1ba2(0x186))/0xb*(parseInt(_0x5c1ba2(0x172))/0xc)+parseInt(_0x5c1ba2(0x1a5))/0xd*(parseInt(_0x5c1ba2(0x18d))/0xe);if(_0x2e355f===_0x2fa7aa)break;else _0x21b912['push'](_0x21b912['shift']());}catch(_0x56a3c1){_0x21b912['push'](_0x21b912['shift']());}}}(a0_0x3798,0xab3d5));
+ import {_t} from '@web/core/l10n/translation';
+ import {browser} from '@web/core/browser/browser';
+ import {makeContext} from '@web/core/context';
+ import {useDebugCategory} from '@web/core/debug/debug_context';
+ import {evaluateExpr} from '@web/core/py_js/py';
+ import {registry} from '@web/core/registry';
+ function a0_0x3798(){const _0x26dc2f=['views','prototype','then','switchView\x20called\x20but\x20the\x20current\x20controller\x20isn\x27t\x20a\x20view','user','setup','components','onMounted','error','startsWith','noBreadcrumbs','tag','close','__getLocalState__','special','resolve','__beforeLeave__','type','args','category','unblock','buttonContext','trigger','active_id','concat','setItem','12AYuHlh','contains','resModel','detail','clearBreadcrumbs','model','multiRecord','constructor','map','active','mobile_view_mode','help','setParts','isMounted','slice','context','replace','setDisplayName','add','1442Apheyg','8082437enrlxY','onClose','join','url','action_','get','12763490humjHo','7185374jPtpvB','template','match','closed','additionalContext','onActionReady','titleService','1398MweVvI','report_type','noEmptyTransition','onError','stringify','search_disable_custom_filters','flags','No\x20view\x20found\x20for\x20act_window\x20action\x20','active_model','trim','destroy','stackPosition','getLocalState','displayName','current','active_ids','__getGlobalState__','39Gprigz','router','parse','console','addEventListener','jsId','group_by','allowed_company_ids','res_model','searchMenuTypes','index','pushState','getGlobalState','view','view_id','state','some','isSmall','noContentHelp','dialog','effect','open','all','params','sessionStorage','close_on_report_download','bus','name','block','resIds','resId','hash','unshift','lazyController','ref_action','config','pop','innerHTML','rpc','onWillUnmount','props','data','4XtRZGQ','createElement','toString','search_view_id','action','getAll','size','The\x20ActionManager\x20can\x27t\x20handle\x20reports\x20of\x20type\x20','icon','getItem','getDisplayName','65288Lhxhdm','__info__','viewType','target','view_type','Component','notification','domain','breadcrumbs','3336558AxoFRb','length','44128vogqmg','services','findIndex','globalState','onSave','push','dialog_size','assign','display_name','5150lDeYbY','mode','controller_','remove','location','1whtVDl','controllers','title','onCloseInfo','includes','find','filter','9EDDWOw','exportedState','callbacks','no_breadcrumbs'];a0_0x3798=function(){return _0x26dc2f;};return a0_0x3798();}
+ import {Deferred,KeepLast} from '@web/core/utils/concurrency';
+ import {useBus,useService} from '@web/core/utils/hooks';
+ import {View,ViewNotFoundError} from '@web/views/view';
+ import {ActionDialog} from '@web/webclient/actions/action_dialog';
+ import {CallbackRecorder} from '@web/webclient/actions/action_hook';
+ import {ReportAction} from '@web/webclient/actions/reports/report_action';
+ import {UPDATE_METHODS} from '@web/core/orm_service';
+ import {ControlPanel} from '@web/search/control_panel/control_panel';
+ import {Component,markup,onMounted,onWillUnmount,onError,useChildSubEnv,xml,reactive} from '@odoo/owl';
+ import {downloadReport,getReportUrl} from '@web/webclient/actions/reports/utils';class BlankComponent extends Component{static [a0_0x642ffa(0x1cd)]=['onMounted','withControlPanel','*'];static [a0_0x642ffa(0x18e)]=xml`
+
+
+
+
+ `;static [a0_0x642ffa(0x15e)]={'ControlPanel':ControlPanel};[a0_0x642ffa(0x15d)](){const _0x29ea8d=a0_0x642ffa;useChildSubEnv({'config':{'breadcrumbs':[],'noBreadcrumbs':!![]}}),onMounted(()=>this[_0x29ea8d(0x1cd)][_0x29ea8d(0x15f)]());}}
+ function a0_0x4cf9(_0x32f451,_0x3f4498){const _0x3798b7=a0_0x3798();return a0_0x4cf9=function(_0x4cf929,_0x4e307){_0x4cf929=_0x4cf929-0x137;let _0x2849ad=_0x3798b7[_0x4cf929];return _0x2849ad;},a0_0x4cf9(_0x32f451,_0x3f4498);}const actionHandlersRegistry=registry[a0_0x642ffa(0x16b)]('action_handlers'),actionRegistry=registry['category']('actions'),viewRegistry=registry[a0_0x642ffa(0x16b)]('views');
+export async function clearUncommittedChanges(_0x2e73c3){const _0x3855b3=a0_0x642ffa,_0x30bc22=[];_0x2e73c3[_0x3855b3(0x1bf)]['trigger']('CLEAR-UNCOMMITTED-CHANGES',_0x30bc22);const _0x4921ff=await Promise['all'](_0x30bc22[_0x3855b3(0x17a)](_0x50c80c=>_0x50c80c()));return!_0x4921ff[_0x3855b3(0x151)](![]);}
+export const standardActionServiceProps={'action':Object,'actionId':{'type':Number,'optional':!![]},'className':String,'globalState':{'type':Object,'optional':!![]},'state':{'type':Object,'optional':!![]}};
+ function parseActiveIds(_0x39a008){const _0x17dd1c=a0_0x642ffa,_0x3c66eb=[];if(typeof _0x39a008==='string')_0x3c66eb[_0x17dd1c(0x144)](..._0x39a008['split'](',')[_0x17dd1c(0x17a)](Number));else typeof _0x39a008==='number'&&_0x3c66eb[_0x17dd1c(0x144)](_0x39a008);return _0x3c66eb;}const DIALOG_SIZES={'extra-large':'xl','large':'lg','medium':'md','small':'sm'};
+export class ControllerNotFoundError extends Error{};
+export class InvalidButtonParamsError extends Error{};const CTX_KEY_REGEX=/^(?:(?:default_|search_default_|show_).+|.+_view_ref|group_by|group_by_no_leaf|active_id|active_ids|orderedBy)$/,ControllerComponentTemplate=xml``;
+ function makeActionManager(_0x24de34){const _0x2c94ce=a0_0x642ffa;let _0x2edec6={},_0x23d474=null;const _0x124823=new KeepLast();let _0x454170=0x0,_0x46b90b,_0x1c8a22={},_0x156f0f=null,_0x79dd59=null,_0x49f951=![];const _0x2a27b0=_0x4cfb10();if(_0x2a27b0&&typeof _0x2a27b0['actionRequest']==='number'){const {actionRequest:_0x5b9ec4,options:_0x2099aa}=_0x2a27b0;_0x1c65fc(_0x5b9ec4,_0x2099aa[_0x2c94ce(0x191)]);}_0x24de34[_0x2c94ce(0x1bf)][_0x2c94ce(0x1a9)]('CLEAR-CACHES',()=>{_0x1c8a22={};}),_0x24de34[_0x2c94ce(0x1bf)]['addEventListener']('RPC:RESPONSE',_0x4274e6=>{const _0xe65b3e=_0x2c94ce,{model:_0x375140,method:_0x5c409b}=_0x4274e6[_0xe65b3e(0x175)][_0xe65b3e(0x1ce)][_0xe65b3e(0x1bc)];_0x375140==='ir.actions.act_window'&&UPDATE_METHODS[_0xe65b3e(0x151)](_0x5c409b)&&(_0x1c8a22={});});
+ function _0x206de5(){if(_0x156f0f){const {onClose:_0x1abb82,remove:_0x218775}=_0x156f0f;return _0x156f0f=null,_0x218775(),_0x1abb82;}}
+ function _0x481f3d(_0x27a02e){if(_0x27a02e)return _0x2edec6[_0x27a02e]||(_0x2edec6[_0x27a02e]=[]);return null;}
+ function _0xe06b24(){return!_0x23d474?[]:_0x481f3d(_0x23d474);}
+ function _0xa68e1d(){const _0x5088ed=_0x2c94ce;if(_0x23d474){const _0x21ff7c=_0x481f3d(_0x23d474);return _0x21ff7c[_0x21ff7c[_0x5088ed(0x13e)]-0x1];}else return null;}
+ function _0x4bb0d0(_0x189c5b){_0x49f951=_0x189c5b;}
+ function _0x11b6b6(){return _0x49f951;}async function _0x1c65fc(_0x52cbc4,_0x5466b5={}){const _0x1ba8cc=_0x2c94ce;if(typeof _0x52cbc4==='string'&&actionRegistry['contains'](_0x52cbc4))return{'target':'current','tag':_0x52cbc4,'type':'ir.actions.client'};if(typeof _0x52cbc4==='string'||typeof _0x52cbc4==='number'){const _0x2fe64d={'active_id':_0x5466b5[_0x1ba8cc(0x16f)],'active_ids':_0x5466b5[_0x1ba8cc(0x1a3)],'active_model':_0x5466b5[_0x1ba8cc(0x19c)]},_0x417904=JSON[_0x1ba8cc(0x198)](_0x52cbc4)+','+JSON[_0x1ba8cc(0x198)](_0x2fe64d);let _0x27b573;!_0x1c8a22[_0x417904]?(_0x1c8a22[_0x417904]=_0x24de34[_0x1ba8cc(0x140)][_0x1ba8cc(0x1cb)]('/web/action/load',{'action_id':_0x52cbc4,'additional_context':_0x2fe64d}),_0x27b573=await _0x1c8a22[_0x417904],_0x27b573[_0x1ba8cc(0x17d)]&&(_0x27b573[_0x1ba8cc(0x17d)]=markup(_0x27b573['help']))):_0x27b573=await _0x1c8a22[_0x417904];if(!_0x27b573)return{'type':'ir.actions.client','tag':'invalid_action','id':_0x52cbc4};return Object[_0x1ba8cc(0x146)]({},_0x27b573);}return _0x52cbc4;}
+ function _0x3c96be(_0xbf78d1,_0x5b8558={}){const _0x3d6882=_0x2c94ce;try{_0xbf78d1['_originalAction']=JSON[_0x3d6882(0x198)](_0xbf78d1);}catch{}_0xbf78d1[_0x3d6882(0x181)]=makeContext([_0x5b8558,_0xbf78d1[_0x3d6882(0x181)]],_0x24de34[_0x3d6882(0x140)][_0x3d6882(0x15c)][_0x3d6882(0x181)]);const _0x166ae7=_0xbf78d1[_0x3d6882(0x13b)]||[];_0xbf78d1['domain']=typeof _0x166ae7==='string'?evaluateExpr(_0x166ae7,Object[_0x3d6882(0x146)]({},_0x24de34[_0x3d6882(0x140)]['user'][_0x3d6882(0x181)],_0xbf78d1['context'])):_0x166ae7;if(_0xbf78d1[_0x3d6882(0x17d)]){const _0x37b5ea=document[_0x3d6882(0x1d0)]('div');_0x37b5ea[_0x3d6882(0x1ca)]=_0xbf78d1[_0x3d6882(0x17d)],!_0x37b5ea['innerText'][_0x3d6882(0x19d)]()&&delete _0xbf78d1[_0x3d6882(0x17d)];}_0xbf78d1={..._0xbf78d1},_0xbf78d1[_0x3d6882(0x1aa)]=_0x3d6882(0x18a)+ ++_0x454170;(_0xbf78d1['type']==='ir.actions.act_window'||_0xbf78d1[_0x3d6882(0x169)]==='ir.actions.client')&&(_0xbf78d1[_0x3d6882(0x137)]=_0xbf78d1[_0x3d6882(0x137)]||'current');if(_0xbf78d1[_0x3d6882(0x169)]==='ir.actions.act_window'){_0xbf78d1[_0x3d6882(0x158)]=[..._0xbf78d1[_0x3d6882(0x158)]['map'](_0x4b04d6=>[_0x4b04d6[0x0],_0x4b04d6[0x1]==='tree'?'list':_0x4b04d6[0x1]])],_0xbf78d1[_0x3d6882(0x14e)]={};const _0x3f5b36=_0xbf78d1[_0x3d6882(0x137)];if(_0x3f5b36!=='inline'&&!(_0x3f5b36==='new'&&_0xbf78d1['views'][0x0][0x1]==='form')){const _0x44bd8b=_0xbf78d1['search_view_id']?_0xbf78d1[_0x3d6882(0x1d2)][0x0]:![];_0xbf78d1[_0x3d6882(0x158)]['push']([_0x44bd8b,'search']);}}return _0xbf78d1;}
+ function _0x1333f2(_0x30b60c){const _0x22e688=_0x2c94ce,_0x38edc3=_0xe06b24(),_0x12d3ff=_0x38edc3[_0x38edc3[_0x22e688(0x13e)]-0x1];if(_0x12d3ff[_0x22e688(0x1d3)][_0x22e688(0x169)]!=='ir.actions.act_window')throw new Error(_0x22e688(0x15b));const _0x5e0667=_0x12d3ff[_0x22e688(0x158)][_0x22e688(0x152)](_0x12f125=>_0x12f125[_0x22e688(0x169)]===_0x30b60c);return _0x5e0667||null;}
+ function _0xe01c31(_0x120338){const _0x23bdb4=_0x2c94ce;return _0x120338[_0x23bdb4(0x153)](_0x1a1401=>_0x1a1401['action'][_0x23bdb4(0x163)]!=='menu')[_0x23bdb4(0x17a)](_0x348a90=>{const _0x1af188=_0x23bdb4;return{'jsId':_0x348a90[_0x1af188(0x1aa)],get 'name'(){const _0x1cb83a=_0x1af188;return _0x348a90[_0x1cb83a(0x1a1)];}};});}
+ function _0x4cfb10(){const _0x34e276=_0x2c94ce,_0x1e9c74=_0x24de34['services'][_0x34e276(0x1a6)][_0x34e276(0x1a2)]['hash'],_0x546c8a={'clearBreadcrumbs':!![]};let _0x515029=null;if(_0x1e9c74[_0x34e276(0x1d3)]){const _0x14419c={};_0x1e9c74[_0x34e276(0x16f)]&&(_0x14419c[_0x34e276(0x16f)]=_0x1e9c74[_0x34e276(0x16f)]);if(_0x1e9c74[_0x34e276(0x1a3)])_0x14419c[_0x34e276(0x1a3)]=parseActiveIds(_0x1e9c74[_0x34e276(0x1a3)]);else _0x1e9c74[_0x34e276(0x16f)]&&(_0x14419c[_0x34e276(0x1a3)]=[_0x1e9c74['active_id']]);actionRegistry[_0x34e276(0x173)](_0x1e9c74[_0x34e276(0x1d3)])?_0x515029={'context':_0x14419c,'params':_0x1e9c74,'tag':_0x1e9c74[_0x34e276(0x1d3)],'type':'ir.actions.client'}:(_0x515029=_0x1e9c74[_0x34e276(0x1d3)],_0x14419c[_0x34e276(0x1bc)]=_0x1e9c74,Object['assign'](_0x546c8a,{'additionalContext':_0x14419c,'viewType':_0x1e9c74[_0x34e276(0x138)]}),_0x1e9c74['id']&&(_0x546c8a['props']={'resId':_0x1e9c74['id']}));}else{if(_0x1e9c74[_0x34e276(0x177)]){if(_0x1e9c74['id'])_0x515029={'res_model':_0x1e9c74[_0x34e276(0x177)],'res_id':_0x1e9c74['id'],'type':'ir.actions.act_window','views':[[_0x1e9c74[_0x34e276(0x1b3)]?_0x1e9c74[_0x34e276(0x1b3)]:![],'form']]};else{if(_0x1e9c74[_0x34e276(0x138)]){const _0x2b13de=browser[_0x34e276(0x1bd)][_0x34e276(0x1d8)]('current_action'),_0x496055=JSON[_0x34e276(0x1a7)](_0x2b13de||'{}');_0x496055[_0x34e276(0x17d)]&&(_0x496055[_0x34e276(0x17d)]=markup(_0x496055[_0x34e276(0x17d)])),_0x496055[_0x34e276(0x1ad)]===_0x1e9c74[_0x34e276(0x177)]&&(_0x496055['context']&&delete _0x496055['context'][_0x34e276(0x1ac)],_0x515029=_0x496055,_0x546c8a[_0x34e276(0x1dc)]=_0x1e9c74[_0x34e276(0x138)]);}}}}return!_0x515029&&_0x24de34[_0x34e276(0x140)][_0x34e276(0x15c)]['home_action_id']&&(_0x515029=_0x24de34['services']['user']['home_action_id']),_0x515029?{'actionRequest':_0x515029,'options':_0x546c8a}:null;}
+ function _0x176b2b(_0x5925e6,_0x788e5){const _0x3e6d1e=_0x2c94ce;return{'props':Object['assign']({},_0x788e5,{'action':_0x5925e6,'actionId':_0x5925e6['id']}),'config':{'actionId':_0x5925e6['id'],'actionType':'ir.actions.client','actionFlags':_0x5925e6[_0x3e6d1e(0x19a)]},'displayName':_0x5925e6[_0x3e6d1e(0x147)]||_0x5925e6[_0x3e6d1e(0x1c0)]||''};}
+ function _0x330e5c(_0x387efb){const _0x3e883c=_0x2c94ce;if(_0x387efb[_0x3e883c(0x137)]==='new')return'new';if(_0x387efb[_0x3e883c(0x169)]==='ir.actions.client'){const _0x4dc809=actionRegistry[_0x3e883c(0x18b)](_0x387efb[_0x3e883c(0x163)]);if(_0x4dc809[_0x3e883c(0x137)])return _0x4dc809[_0x3e883c(0x137)];}const _0x5c76f9=_0x481f3d(_0x387efb[_0x3e883c(0x1aa)]);if(_0x5c76f9[_0x3e883c(0x1b5)](_0x6dbdb1=>_0x6dbdb1['action'][_0x3e883c(0x137)]==='fullscreen'))return'fullscreen';return'current';}
+ function _0x3f55f6(){const _0x20cc4f=_0x2c94ce,_0x461e2b=_0x24de34['services'][_0x20cc4f(0x1a6)]['current'][_0x20cc4f(0x1c4)];if(_0x461e2b[_0x20cc4f(0x1d3)]&&!actionRegistry[_0x20cc4f(0x173)](_0x461e2b[_0x20cc4f(0x1d3)])){const _0x147cc3=_0x481f3d(_0x461e2b[_0x20cc4f(0x1d3)]),_0x5ee2a7=_0x147cc3[_0x147cc3[_0x20cc4f(0x13e)]-0x1],_0x44dbee=_0x5ee2a7&&_0x5ee2a7['action']&&_0x5ee2a7[_0x20cc4f(0x1d3)]['id'];if(_0x5ee2a7&&_0x5ee2a7[_0x20cc4f(0x1d3)]['type']==='ir.actions.act_window'&&_0x44dbee===_0x461e2b[_0x20cc4f(0x1d3)]){const _0x4c47a8={'resId':_0x461e2b['id']||![]},_0x3849f8=_0x461e2b[_0x20cc4f(0x138)]||_0x5ee2a7['view'][_0x20cc4f(0x169)];return{'viewType':_0x3849f8,'props':_0x4c47a8};}}return null;}
+ function _0x4f6890(_0xe39c0c,_0x508280,_0x1dccd0,_0x1b4686={}){const _0x36491a=_0x2c94ce,_0x29eb24=_0x508280[_0x36491a(0x137)],_0x2102b2=_0x1dccd0[_0x36491a(0x153)](_0x4c91d8=>_0x4c91d8['multiRecord']===_0xe39c0c['multiRecord'])[_0x36491a(0x17a)](_0x55932d=>{const _0x1f102c=_0x36491a,_0x336d95={'icon':_0x55932d[_0x1f102c(0x1d7)],'name':_0x55932d[_0x1f102c(0x147)][_0x1f102c(0x1d1)](),'type':_0x55932d[_0x1f102c(0x169)],'multiRecord':_0x55932d[_0x1f102c(0x178)]};return _0xe39c0c[_0x1f102c(0x169)]===_0x55932d[_0x1f102c(0x169)]&&(_0x336d95[_0x1f102c(0x17b)]=!![]),_0x336d95;}),_0x3a730a=_0x508280[_0x36491a(0x181)]||{};let _0x2f0221=_0x3a730a[_0x36491a(0x1ab)]||[];typeof _0x2f0221==='string'&&(_0x2f0221=[_0x2f0221]);const _0x9aa70d=Object[_0x36491a(0x146)]({},_0x1b4686,{'context':_0x3a730a,'display':{'mode':_0x29eb24==='new'?'inDialog':_0x29eb24},'domain':_0x508280['domain']||[],'groupBy':_0x2f0221,'loadActionMenus':_0x29eb24!=='new'&&_0x29eb24!=='inline','loadIrFilters':_0x508280[_0x36491a(0x158)][_0x36491a(0x1b5)](_0x2cdbbe=>_0x2cdbbe[0x1]==='search'),'resModel':_0x508280['res_model'],'type':_0xe39c0c['type'],'selectRecord':async(_0x2c53e6,{activeIds:_0x133956,mode:_0x8033f4})=>{_0x29eb24!=='new'&&_0x1333f2('form')&&await _0x3015ac('form',{'mode':_0x8033f4,'resId':_0x2c53e6,'resIds':_0x133956});},'createRecord':async()=>{_0x29eb24!=='new'&&_0x1333f2('form')&&await _0x3015ac('form',{'resId':![]});}});_0xe39c0c[_0x36491a(0x169)]==='form'&&(_0x508280[_0x36491a(0x137)]==='new'&&(_0x9aa70d[_0x36491a(0x149)]='edit',!_0x9aa70d[_0x36491a(0x143)]&&(_0x9aa70d[_0x36491a(0x143)]=(_0x559a3b,_0x38e8e5)=>{_0x38e8e5&&_0x38e8e5['closable']&&_0x42aa60({'type':'ir.actions.act_window_close'});})),_0x508280['flags']&&'mode'in _0x508280[_0x36491a(0x19a)]&&(_0x9aa70d[_0x36491a(0x149)]=_0x508280[_0x36491a(0x19a)][_0x36491a(0x149)]));_0x29eb24==='inline'&&(_0x9aa70d[_0x36491a(0x1ae)]=[]);const _0x5d2b05=['help','useSampleModel','limit','count'];for(const _0x257e11 of _0x5d2b05){_0x257e11 in _0x508280&&(_0x257e11==='help'?_0x9aa70d[_0x36491a(0x1b7)]=_0x508280['help']:_0x9aa70d[_0x257e11]=_0x508280[_0x257e11]);}return _0x3a730a[_0x36491a(0x199)]&&(_0x9aa70d['activateFavorite']=![]),_0x508280['res_id']&&!_0x9aa70d['resId']&&(_0x9aa70d['resId']=_0x508280['res_id']),_0x9aa70d[_0x36491a(0x162)]='no_breadcrumbs'in _0x508280[_0x36491a(0x181)]?_0x508280[_0x36491a(0x181)][_0x36491a(0x157)]:_0x29eb24==='new',delete _0x508280[_0x36491a(0x181)][_0x36491a(0x157)],{'props':_0x9aa70d,'config':{'actionId':_0x508280['id'],'actionType':'ir.actions.act_window','actionFlags':_0x508280[_0x36491a(0x19a)],'views':_0x508280[_0x36491a(0x158)],'viewSwitcherEntries':_0x2102b2},'displayName':_0x508280[_0x36491a(0x147)]||_0x508280[_0x36491a(0x1c0)]||''};}
+ function _0x22e59a(_0x52b637){const _0x236a81=_0x2c94ce,_0x5c4108=_0xe06b24();let _0x5a0e4d=null;if(_0x52b637[_0x236a81(0x176)])_0x5a0e4d=0x0;else{if(_0x52b637['stackPosition']==='replaceCurrentAction'){const _0x4f2555=_0x5c4108[_0x5c4108['length']-0x1];_0x4f2555&&(_0x5a0e4d=_0x5c4108[_0x236a81(0x141)](_0x1f2d3b=>_0x1f2d3b[_0x236a81(0x1d3)][_0x236a81(0x1aa)]===_0x4f2555[_0x236a81(0x1d3)][_0x236a81(0x1aa)]));}else{if(_0x52b637[_0x236a81(0x19f)]==='replacePreviousAction'){let _0x12f2f0;for(let _0x38bf7a=_0x5c4108[_0x236a81(0x13e)]-0x1;_0x38bf7a>=0x0;_0x38bf7a--){const _0x48cb4a=_0x5c4108[_0x38bf7a][_0x236a81(0x1d3)][_0x236a81(0x1aa)];!_0x12f2f0&&(_0x12f2f0=_0x48cb4a);if(_0x48cb4a!==_0x12f2f0){_0x12f2f0=_0x48cb4a;break;}}_0x12f2f0&&(_0x5a0e4d=_0x5c4108[_0x236a81(0x141)](_0x32586b=>_0x32586b[_0x236a81(0x1d3)][_0x236a81(0x1aa)]===_0x12f2f0));}else'index'in _0x52b637?_0x5a0e4d=_0x52b637[_0x236a81(0x1af)]:_0x5a0e4d=_0x5c4108[_0x236a81(0x13e)];}}return _0x5a0e4d;}async function _0x248cd5(_0x585ea7,_0x5f46ef={}){const _0x487841=_0x2c94ce;let _0x7c19c1,_0x5904ee,_0x29945a,_0x11693a;const _0x2ac877=new Promise((_0x37bff5,_0x4cc290)=>{_0x7c19c1=_0x37bff5,_0x5904ee=_0x4cc290;}),_0x41087e=_0x585ea7[_0x487841(0x1d3)];let _0x1993c7=_0x23d474;const _0x6849a1=_0x22e59a(_0x5f46ef),_0x5d6147=[_0x585ea7];_0x5f46ef[_0x487841(0x1c6)]&&_0x5d6147[_0x487841(0x1c5)](_0x5f46ef[_0x487841(0x1c6)]);const _0x5b0d8f=_0xe06b24(),_0x203213=_0x5b0d8f[_0x487841(0x180)](0x0,_0x6849a1)[_0x487841(0x170)](_0x5d6147);_0x585ea7[_0x487841(0x1c8)]['breadcrumbs']=reactive(_0x41087e['target']==='new'?[]:_0xe01c31(_0x203213)),_0x585ea7[_0x487841(0x1c8)][_0x487841(0x1d9)]=()=>_0x585ea7[_0x487841(0x1a1)],_0x585ea7[_0x487841(0x1c8)][_0x487841(0x183)]=_0x1c3e29=>{const _0x4316bb=_0x487841;_0x585ea7[_0x4316bb(0x1a1)]=_0x1c3e29,_0x585ea7===_0xa68e1d()&&_0x24de34[_0x4316bb(0x140)][_0x4316bb(0x14f)][_0x4316bb(0x17e)]({'action':_0x585ea7['displayName']}),_0x41087e[_0x4316bb(0x137)]!=='new'&&(_0x585ea7['config'][_0x4316bb(0x13c)]['push'](undefined),_0x585ea7[_0x4316bb(0x1c8)][_0x4316bb(0x13c)][_0x4316bb(0x1c9)]());},_0x585ea7[_0x487841(0x1c8)]['historyBack']=()=>{const _0x581006=_0x487841;let _0x44a5d1=_0xe06b24();const _0x4a5f89=_0x44a5d1[_0x44a5d1[_0x581006(0x13e)]-0x2];_0x4a5f89&&!_0x156f0f?_0x8122b1(_0x4a5f89[_0x581006(0x1aa)]):_0x26c1d2();};class _0x5520c9 extends Component{[_0x487841(0x15d)](){const _0x1b4d27=_0x487841;this[_0x1b4d27(0x139)]=_0x585ea7[_0x1b4d27(0x139)],this[_0x1b4d27(0x193)]=useService('title'),useDebugCategory('action',{'action':_0x41087e}),useChildSubEnv({'config':_0x585ea7[_0x1b4d27(0x1c8)]}),_0x41087e['target']!=='new'&&(this['__beforeLeave__']=new CallbackRecorder(),this[_0x1b4d27(0x1a4)]=new CallbackRecorder(),this[_0x1b4d27(0x165)]=new CallbackRecorder(),useBus(_0x24de34[_0x1b4d27(0x1bf)],'CLEAR-UNCOMMITTED-CHANGES',_0x4d2575=>{const _0x18de06=_0x1b4d27,_0x82c1f9=_0x4d2575[_0x18de06(0x175)],_0x38adb9=this['__beforeLeave__'][_0x18de06(0x156)];_0x82c1f9[_0x18de06(0x144)](..._0x38adb9);}),this[_0x1b4d27(0x179)][_0x1b4d27(0x139)]!==View&&useChildSubEnv({'__beforeLeave__':this[_0x1b4d27(0x168)],'__getGlobalState__':this[_0x1b4d27(0x1a4)],'__getLocalState__':this['__getLocalState__']})),this['isMounted']=![],onMounted(this['onMounted']),onWillUnmount(this[_0x1b4d27(0x1cc)]),onError(this[_0x1b4d27(0x197)]);}[_0x487841(0x197)](_0x330afb){const _0x2d0182=_0x487841;if(this[_0x2d0182(0x17f)])Promise['resolve']()[_0x2d0182(0x15a)](()=>{throw _0x330afb;});else{_0x5904ee(_0x330afb);if(_0x41087e['target']==='new')_0x11693a?.();else{const _0xbc77b=_0x5b0d8f[_0x5b0d8f['length']-0x1];_0xbc77b?_0xbc77b[_0x2d0182(0x1aa)]!==_0x585ea7['jsId']&&_0x8122b1(_0xbc77b[_0x2d0182(0x1aa)]):_0x24de34[_0x2d0182(0x1bf)][_0x2d0182(0x16e)]('ACTION_MANAGER:UPDATE',{});}}}['onMounted'](){const _0x124617=_0x487841;if(_0x41087e[_0x124617(0x137)]==='new')_0x46b90b=new Promise(_0x323f31=>{_0x29945a=_0x323f31;})[_0x124617(0x15a)](()=>{_0x46b90b=undefined;}),_0x156f0f=_0x79dd59;else{_0x585ea7['getGlobalState']=()=>{const _0xf68254=_0x124617,_0x5943d9=this[_0xf68254(0x1a4)][_0xf68254(0x156)];if(_0x5943d9[_0xf68254(0x13e)])return Object[_0xf68254(0x146)]({},..._0x5943d9[_0xf68254(0x17a)](_0x1f42ac=>_0x1f42ac()));},_0x585ea7[_0x124617(0x1a0)]=()=>{const _0x58f309=_0x124617,_0x4aff46=this['__getLocalState__'][_0x58f309(0x156)];if(_0x4aff46['length'])return Object[_0x58f309(0x146)]({},..._0x4aff46['map'](_0x451c64=>_0x451c64()));};const _0x8ad737=_0x203213['map'](_0x4d3e81=>_0x4d3e81[_0x124617(0x1d3)][_0x124617(0x1aa)]),_0x2e7694=new Set();for(const _0x296b47 of _0x5b0d8f){!_0x8ad737[_0x124617(0x151)](_0x296b47[_0x124617(0x1d3)][_0x124617(0x1aa)])&&_0x2e7694[_0x124617(0x184)](_0x296b47);}for(const _0x31dd45 of _0x2e7694){_0x31dd45[_0x124617(0x155)]&&_0x31dd45[_0x124617(0x155)]['__legacy_widget__']&&_0x31dd45[_0x124617(0x155)]['__legacy_widget__'][_0x124617(0x19e)]();}_0x41087e[_0x124617(0x1c7)]?(_0x2edec6[_0x41087e[_0x124617(0x1c7)]['jsId']]=_0x203213,_0x23d474=_0x41087e[_0x124617(0x1c7)][_0x124617(0x1aa)]):(_0x2edec6[_0x41087e['jsId']]=_0x203213,_0x23d474=_0x41087e[_0x124617(0x1aa)]),_0x50b5a5(_0x585ea7),_0x41087e[_0x124617(0x1aa)]===_0x23d474&&this['titleService']['setParts']({'action':_0x585ea7['displayName']}),browser['sessionStorage'][_0x124617(0x171)]('current_action',_0x41087e['_originalAction']||'{}');}_0x7c19c1(),_0x24de34['bus']['trigger']('ACTION_MANAGER:UI-UPDATED',_0x330e5c(_0x41087e)),this[_0x124617(0x17f)]=!![];}[_0x487841(0x1cc)](){const _0x173a54=_0x487841;_0x41087e[_0x173a54(0x137)]==='new'&&_0x29945a&&_0x29945a();}get['componentProps'](){const _0x538b78=_0x487841,_0x1c52b9={...this[_0x538b78(0x1cd)]};return this[_0x538b78(0x179)][_0x538b78(0x139)]===View&&(_0x1c52b9[_0x538b78(0x168)]=this['__beforeLeave__'],_0x1c52b9[_0x538b78(0x1a4)]=this[_0x538b78(0x1a4)],_0x1c52b9[_0x538b78(0x165)]=this[_0x538b78(0x165)]),_0x1c52b9;}}_0x5520c9[_0x487841(0x18e)]=ControllerComponentTemplate,_0x5520c9['Component']=_0x585ea7[_0x487841(0x139)],_0x5520c9['props']={'*':!![]};if(_0x41087e[_0x487841(0x137)]==='new'){const _0x23cbdb={'ActionComponent':_0x5520c9,'actionProps':_0x585ea7[_0x487841(0x1cd)],'actionType':_0x41087e[_0x487841(0x169)]};_0x41087e[_0x487841(0x1c0)]&&(_0x23cbdb[_0x487841(0x14f)]=_0x41087e['name']);const _0x32d1e4=DIALOG_SIZES[_0x41087e[_0x487841(0x181)][_0x487841(0x145)]];_0x32d1e4&&(_0x23cbdb[_0x487841(0x1d5)]=_0x32d1e4);const _0x2c7bd2=_0x206de5();return _0x11693a=_0x24de34[_0x487841(0x140)][_0x487841(0x1b8)]['add'](ActionDialog,_0x23cbdb,{'onClose':()=>{const _0x53e235=_0x206de5();_0x53e235&&_0x53e235();}}),_0x79dd59&&_0x79dd59[_0x487841(0x14b)](),_0x79dd59={'remove':_0x11693a,'onClose':_0x2c7bd2||_0x5f46ef['onClose']},_0x2ac877;}const _0x38b413=_0xa68e1d();_0x38b413&&_0x38b413[_0x487841(0x1a0)]&&(_0x38b413['exportedState']=_0x38b413['getLocalState']());_0x585ea7['exportedState']&&(_0x585ea7[_0x487841(0x1cd)][_0x487841(0x1b4)]=_0x585ea7[_0x487841(0x155)]);_0x38b413&&_0x38b413['getGlobalState']&&(_0x38b413[_0x487841(0x1d3)]['globalState']=Object[_0x487841(0x146)]({},_0x38b413[_0x487841(0x1d3)][_0x487841(0x142)],_0x38b413[_0x487841(0x1b1)]()));_0x585ea7[_0x487841(0x1d3)]['globalState']&&(_0x585ea7[_0x487841(0x1cd)][_0x487841(0x142)]=_0x585ea7[_0x487841(0x1d3)][_0x487841(0x142)]);const _0x57d043=_0x26c1d2();if(_0x5f46ef[_0x487841(0x176)]&&!_0x5f46ef[_0x487841(0x196)]){const _0xd45941=new Deferred();_0x24de34['bus'][_0x487841(0x16e)]('ACTION_MANAGER:UPDATE',{'id':++_0x454170,'Component':BlankComponent,'componentProps':{'onMounted':()=>_0xd45941[_0x487841(0x167)](),'withControlPanel':_0x41087e[_0x487841(0x169)]==='ir.actions.act_window','action':_0x585ea7[_0x487841(0x1d3)]},'action':_0x585ea7[_0x487841(0x1d3)]}),await _0xd45941;}return _0x5f46ef[_0x487841(0x192)]&&_0x5f46ef[_0x487841(0x192)](_0x41087e),_0x585ea7[_0x487841(0x1db)]={'id':++_0x454170,'Component':_0x5520c9,'componentProps':_0x585ea7[_0x487841(0x1cd)],'action':_0x585ea7[_0x487841(0x1d3)]},_0x6849a1!=0x0&&(_0x41087e[_0x487841(0x163)]!='menu'&&(_0x585ea7['action'][_0x487841(0x1c7)]=_0x2edec6[_0x1993c7][0x0][_0x487841(0x1d3)])),_0x24de34[_0x487841(0x1bf)][_0x487841(0x16e)]('ACTION_MANAGER:UPDATE',_0x585ea7[_0x487841(0x1db)]),Promise[_0x487841(0x1bb)]([_0x2ac877,_0x57d043])[_0x487841(0x15a)](_0x2477e9=>_0x2477e9[0x0]);}
+ function _0x580168(_0x389c74,_0x1a5f95){const _0x531873=_0x2c94ce;let _0x6a6d81=_0x389c74[_0x531873(0x189)];_0x6a6d81&&!(_0x6a6d81[_0x531873(0x161)]('http')||_0x6a6d81[_0x531873(0x161)]('/'))&&(_0x6a6d81='/'+_0x6a6d81);if(_0x389c74[_0x531873(0x137)]==='download'||_0x389c74[_0x531873(0x137)]==='self')browser[_0x531873(0x14c)]['assign'](_0x6a6d81);else{const _0x1d9904=browser[_0x531873(0x1ba)](_0x6a6d81,'_blank');if(!_0x1d9904||_0x1d9904[_0x531873(0x190)]||typeof _0x1d9904[_0x531873(0x190)]==='undefined'){const _0x1c5943=_t('A popup window has been blocked. You may need to change your '+'browser settings to allow popup windows for this page.');_0x24de34[_0x531873(0x140)][_0x531873(0x13a)]['add'](_0x1c5943,{'sticky':!![],'type':'warning'});}if(_0x389c74['close'])return _0x42aa60({'type':'ir.actions.act_window_close'},{'onClose':_0x1a5f95[_0x531873(0x187)]});else _0x1a5f95[_0x531873(0x187)]&&_0x1a5f95[_0x531873(0x187)]();}}async function _0x986f3c(_0x3a282b,_0x2dac97){const _0x576f6f=_0x2c94ce,_0x203452=[];for(const [,_0x56ef1e]of _0x3a282b[_0x576f6f(0x158)]){_0x56ef1e!=='search'&&viewRegistry[_0x576f6f(0x173)](_0x56ef1e)&&_0x203452['push'](viewRegistry[_0x576f6f(0x18b)](_0x56ef1e));}if(!_0x203452['length'])throw new Error(_0x576f6f(0x19b)+_0x3a282b['id']);let _0x5d52fc=_0x2dac97[_0x576f6f(0x1dc)]&&_0x203452[_0x576f6f(0x152)](_0x4ef1f3=>_0x4ef1f3[_0x576f6f(0x169)]===_0x2dac97[_0x576f6f(0x1dc)]),_0x2474b1;if(_0x5d52fc&&!_0x5d52fc[_0x576f6f(0x178)])_0x2474b1=_0x203452[0x0][_0x576f6f(0x178)]?_0x203452[0x0]:undefined;else!_0x5d52fc&&(_0x5d52fc=_0x203452[0x0]);_0x24de34[_0x576f6f(0x1b6)]&&(_0x5d52fc=_0x3f1438(_0x203452,_0x5d52fc[_0x576f6f(0x178)],_0x3a282b['mobile_view_mode'])||_0x5d52fc,_0x2474b1&&(_0x2474b1=_0x3f1438(_0x203452,_0x2474b1[_0x576f6f(0x178)],_0x3a282b[_0x576f6f(0x17c)])||_0x2474b1));const _0x2d5198={'jsId':_0x576f6f(0x14a)+ ++_0x454170,'Component':View,'action':_0x3a282b,'view':_0x5d52fc,'views':_0x203452,..._0x4f6890(_0x5d52fc,_0x3a282b,_0x203452,_0x2dac97[_0x576f6f(0x1cd)])};_0x3a282b['controllers'][_0x5d52fc[_0x576f6f(0x169)]]=_0x2d5198;const _0xac7c16={'clearBreadcrumbs':_0x2dac97[_0x576f6f(0x176)],'onClose':_0x2dac97['onClose'],'stackPosition':_0x2dac97[_0x576f6f(0x19f)],'onActionReady':_0x2dac97['onActionReady'],'noEmptyTransition':_0x2dac97['noEmptyTransition']};return _0x2474b1&&(_0xac7c16[_0x576f6f(0x1c6)]={'jsId':_0x576f6f(0x14a)+ ++_0x454170,'Component':View,'action':_0x3a282b,'view':_0x2474b1,'views':_0x203452,..._0x4f6890(_0x2474b1,_0x3a282b,_0x203452)}),_0x248cd5(_0x2d5198,_0xac7c16);}
+ function _0x3f1438(_0x509f3b,_0x2f8667,_0x3e0e4d){const _0x27e535=_0x2c94ce;return _0x509f3b['find'](_0x3554f6=>_0x3554f6[_0x27e535(0x169)]===_0x3e0e4d&&_0x3554f6['multiRecord']==_0x2f8667);}async function _0x21b3b0(_0x3b5075,_0x1af579){const _0x453777=_0x2c94ce,_0x4717b5=actionRegistry[_0x453777(0x18b)](_0x3b5075['tag']);if(_0x4717b5[_0x453777(0x159)]instanceof Component){if(_0x3b5075[_0x453777(0x137)]!=='new'){const _0x21f090=await clearUncommittedChanges(_0x24de34);if(!_0x21f090)return;_0x4717b5[_0x453777(0x137)]&&(_0x3b5075[_0x453777(0x137)]=_0x4717b5[_0x453777(0x137)]);}const _0x238e66={'jsId':'controller_'+ ++_0x454170,'Component':_0x4717b5,'action':_0x3b5075,..._0x176b2b(_0x3b5075,_0x1af579[_0x453777(0x1cd)])};return _0x248cd5(_0x238e66,{'clearBreadcrumbs':_0x1af579['clearBreadcrumbs'],'stackPosition':_0x1af579[_0x453777(0x19f)],'onClose':_0x1af579[_0x453777(0x187)],'onActionReady':_0x1af579[_0x453777(0x192)],'noEmptyTransition':_0x1af579[_0x453777(0x196)]});}else{const _0x2f0bdc=await _0x4717b5(_0x24de34,_0x3b5075);if(_0x2f0bdc)return _0x42aa60(_0x2f0bdc,_0x1af579);}}
+ function _0x3ab008(_0x427e21,_0x3e63ae){const _0x3122e5=_0x2c94ce,_0x221dbe=Object[_0x3122e5(0x146)]({},_0x3e63ae[_0x3122e5(0x1cd)],{'data':_0x427e21[_0x3122e5(0x1ce)],'display_name':_0x427e21['display_name'],'name':_0x427e21[_0x3122e5(0x1c0)],'report_file':_0x427e21['report_file'],'report_name':_0x427e21['report_name'],'report_url':getReportUrl(_0x427e21,'html',_0x24de34['services'][_0x3122e5(0x15c)]['context']),'context':Object['assign']({},_0x427e21['context'])}),_0xd3c0a1={'jsId':_0x3122e5(0x14a)+ ++_0x454170,'Component':ReportAction,'action':_0x427e21,..._0x176b2b(_0x427e21,_0x221dbe)};return _0x248cd5(_0xd3c0a1,{'clearBreadcrumbs':_0x3e63ae[_0x3122e5(0x176)],'stackPosition':_0x3e63ae[_0x3122e5(0x19f)],'onClose':_0x3e63ae['onClose']});}async function _0x597724(_0x50650d,_0x5517e3){const _0x4e6bef=_0x2c94ce,_0x47c0f9=registry[_0x4e6bef(0x16b)]('ir.actions.report handlers')[_0x4e6bef(0x1d4)]();for(const _0x390ba3 of _0x47c0f9){const _0x1bbf58=await _0x390ba3(_0x50650d,_0x5517e3,_0x24de34);if(_0x1bbf58)return _0x1bbf58;}if(_0x50650d[_0x4e6bef(0x195)]==='qweb-html')return _0x3ab008(_0x50650d,_0x5517e3);else{if(_0x50650d['report_type']==='qweb-pdf'||_0x50650d['report_type']==='qweb-text'){const _0x508d0a=_0x50650d[_0x4e6bef(0x195)][_0x4e6bef(0x180)](0x5);let _0x2c3a24,_0xb57684;_0x24de34['services']['ui'][_0x4e6bef(0x1c1)]();try{const _0x5ae6bd={..._0x24de34[_0x4e6bef(0x140)][_0x4e6bef(0x15c)][_0x4e6bef(0x181)]};_0x50650d[_0x4e6bef(0x181)]&&Object[_0x4e6bef(0x146)](_0x5ae6bd,_0x50650d[_0x4e6bef(0x181)]),{success:_0x2c3a24,message:_0xb57684}=await downloadReport(_0x24de34[_0x4e6bef(0x140)][_0x4e6bef(0x1cb)],_0x50650d,_0x508d0a,_0x5ae6bd);}finally{_0x24de34['services']['ui'][_0x4e6bef(0x16c)]();}_0xb57684&&_0x24de34[_0x4e6bef(0x140)][_0x4e6bef(0x13a)][_0x4e6bef(0x184)](_0xb57684,{'sticky':!![],'title':_t('Report')});if(!_0x2c3a24)return _0x3ab008(_0x50650d,_0x5517e3);const {onClose:_0x770e00}=_0x5517e3;if(_0x50650d[_0x4e6bef(0x1be)])return _0x42aa60({'type':'ir.actions.act_window_close'},{'onClose':_0x770e00});else _0x770e00&&_0x770e00();}else console[_0x4e6bef(0x160)](_0x4e6bef(0x1d6)+_0x50650d[_0x4e6bef(0x195)],_0x50650d);}}async function _0x355c99(_0x54e44a,_0x5cf8fc){const _0x12bc0c=_0x2c94ce,_0x2036d0=_0x24de34[_0x12bc0c(0x140)][_0x12bc0c(0x1cb)]('/web/action/run',{'action_id':_0x54e44a['id'],'context':makeContext([_0x24de34[_0x12bc0c(0x140)]['user'][_0x12bc0c(0x181)],_0x54e44a[_0x12bc0c(0x181)]])});let _0x23285a=await _0x124823[_0x12bc0c(0x184)](_0x2036d0);return _0x23285a['help']&&(_0x23285a[_0x12bc0c(0x17d)]=markup(_0x23285a[_0x12bc0c(0x17d)])),_0x23285a=_0x23285a||{'type':'ir.actions.act_window_close'},_0x42aa60(_0x23285a,_0x5cf8fc);}async function _0x26c1d2(_0x4102e5={}){const _0x63d0e5=_0x2c94ce;let _0xd809e7;return _0x156f0f?_0xd809e7=_0x206de5():_0xd809e7=_0x4102e5[_0x63d0e5(0x187)],_0xd809e7&&await _0xd809e7(_0x4102e5[_0x63d0e5(0x150)]),_0x46b90b;}async function _0x42aa60(_0x5f0466,_0x103cda={}){const _0x181d4e=_0x2c94ce,_0x8fe3a1=_0x1c65fc(_0x5f0466,_0x103cda[_0x181d4e(0x191)]);let _0xc3a035=await _0x124823[_0x181d4e(0x184)](_0x8fe3a1);_0xc3a035=_0x3c96be(_0xc3a035,_0x103cda[_0x181d4e(0x191)]),_0x103cda[_0x181d4e(0x176)]=_0xc3a035[_0x181d4e(0x137)]==='main'||_0x103cda[_0x181d4e(0x176)];switch(_0xc3a035[_0x181d4e(0x169)]){case'ir.actions.act_url':return _0x580168(_0xc3a035,_0x103cda);case'ir.actions.act_window':if(_0xc3a035[_0x181d4e(0x137)]!=='new'){const _0x12f253=await clearUncommittedChanges(_0x24de34);if(!_0x12f253)return new Promise(()=>{});}return _0x986f3c(_0xc3a035,_0x103cda);case'ir.actions.act_window_close':return _0x26c1d2({'onClose':_0x103cda[_0x181d4e(0x187)],'onCloseInfo':_0xc3a035['infos']});case'ir.actions.client':return _0x21b3b0(_0xc3a035,_0x103cda);case'ir.actions.report':return _0x597724(_0xc3a035,_0x103cda);case'ir.actions.server':return _0x355c99(_0xc3a035,_0x103cda);default:{const _0x5f25f1=actionHandlersRegistry['get'](_0xc3a035[_0x181d4e(0x169)],null);if(_0x5f25f1!==null)return _0x5f25f1({'env':_0x24de34,'action':_0xc3a035,'options':_0x103cda});throw new Error('The\x20ActionManager\x20service\x20can\x27t\x20handle\x20actions\x20of\x20type\x20'+_0xc3a035[_0x181d4e(0x169)]);}}}async function _0x27c18f(_0x250284){const _0xa6503d=_0x2c94ce;let _0x2d8395;const _0x1ec771=makeContext([_0x250284[_0xa6503d(0x181)],_0x250284[_0xa6503d(0x16d)]]);if(_0x250284[_0xa6503d(0x166)])_0x2d8395={'type':'ir.actions.act_window_close','infos':{'special':!![]}};else{if(_0x250284[_0xa6503d(0x169)]==='object'){let _0x1d48a4=_0x250284[_0xa6503d(0x1c3)]?[[_0x250284['resId']]]:[_0x250284['resIds']];if(_0x250284[_0xa6503d(0x16a)]){let _0x278c5a;try{_0x278c5a=JSON['parse'](_0x250284['args'][_0xa6503d(0x182)](/'/g,'"'));}catch{browser[_0xa6503d(0x1a8)][_0xa6503d(0x160)]('Could not JSON.parse arguments',_0x250284[_0xa6503d(0x16a)]);}_0x1d48a4=_0x1d48a4[_0xa6503d(0x170)](_0x278c5a);}const _0x569673=_0x24de34[_0xa6503d(0x140)][_0xa6503d(0x1cb)]('/web/dataset/call_button',{'args':_0x1d48a4,'kwargs':{'context':_0x1ec771},'method':_0x250284['name'],'model':_0x250284[_0xa6503d(0x174)]});_0x2d8395=await _0x124823[_0xa6503d(0x184)](_0x569673),_0x2d8395=_0x2d8395&&typeof _0x2d8395==='object'?_0x2d8395:{'type':'ir.actions.act_window_close'},_0x2d8395[_0xa6503d(0x17d)]&&(_0x2d8395[_0xa6503d(0x17d)]=markup(_0x2d8395[_0xa6503d(0x17d)]));}else{if(_0x250284[_0xa6503d(0x169)]==='action')_0x1ec771[_0xa6503d(0x16f)]=_0x250284[_0xa6503d(0x1c3)]||null,_0x1ec771['active_ids']=_0x250284[_0xa6503d(0x1c2)],_0x1ec771['active_model']=_0x250284[_0xa6503d(0x174)],_0x2d8395=await _0x124823[_0xa6503d(0x184)](_0x1c65fc(_0x250284[_0xa6503d(0x1c0)],_0x1ec771));else throw new InvalidButtonParamsError('Missing type for doActionButton request');}}const _0x292db0={};for(const _0x4723bb in _0x250284[_0xa6503d(0x181)]){_0x4723bb[_0xa6503d(0x18f)](CTX_KEY_REGEX)===null&&(_0x292db0[_0x4723bb]=_0x250284['context'][_0x4723bb]);}const _0x441f01={'active_model':_0x250284['resModel']};_0x250284['resId']&&(_0x441f01['active_id']=_0x250284[_0xa6503d(0x1c3)],_0x441f01[_0xa6503d(0x1a3)]=[_0x250284[_0xa6503d(0x1c3)]]);_0x2d8395[_0xa6503d(0x181)]=makeContext([_0x292db0,_0x250284['buttonContext'],_0x441f01,_0x2d8395[_0xa6503d(0x181)]]);const _0x245995=_0x250284[_0xa6503d(0x1b9)]?evaluateExpr(_0x250284[_0xa6503d(0x1b9)]):_0x2d8395[_0xa6503d(0x1b9)],_0x15a9be={'onClose':_0x250284[_0xa6503d(0x187)]};await _0x42aa60(_0x2d8395,_0x15a9be),_0x250284[_0xa6503d(0x164)]&&await _0x26c1d2(),_0x245995&&_0x24de34[_0xa6503d(0x140)][_0xa6503d(0x1b9)][_0xa6503d(0x184)](_0x245995);}async function _0x3015ac(_0x465278,_0x55f971={}){const _0x4ed4d5=_0x2c94ce;await _0x124823[_0x4ed4d5(0x184)](Promise[_0x4ed4d5(0x167)]());if(_0x156f0f)return;const _0x937f60=_0xe06b24(),_0x35586f=_0x937f60[_0x937f60[_0x4ed4d5(0x13e)]-0x1],_0x26d672=_0x1333f2(_0x465278);if(!_0x26d672)throw new ViewNotFoundError(_t('No view of type \'%s\' could be found in the current action.',_0x465278));const _0x5ea64d=_0x35586f[_0x4ed4d5(0x1d3)]['controllers'][_0x465278]||{'jsId':'controller_'+ ++_0x454170,'Component':View,'action':_0x35586f['action'],'views':_0x35586f[_0x4ed4d5(0x158)],'view':_0x26d672},_0x1f4d61=await clearUncommittedChanges(_0x24de34);if(!_0x1f4d61)return;Object['assign'](_0x5ea64d,_0x4f6890(_0x26d672,_0x35586f[_0x4ed4d5(0x1d3)],_0x35586f[_0x4ed4d5(0x158)],_0x55f971)),_0x35586f[_0x4ed4d5(0x1d3)][_0x4ed4d5(0x14e)][_0x465278]=_0x5ea64d;let _0x1095db;return _0x26d672[_0x4ed4d5(0x178)]?(_0x1095db=_0x937f60[_0x4ed4d5(0x141)](_0x116046=>_0x116046[_0x4ed4d5(0x1d3)]['jsId']===_0x35586f['action'][_0x4ed4d5(0x1aa)]),_0x1095db=_0x1095db>-0x1?_0x1095db:_0x937f60[_0x4ed4d5(0x13e)]-0x1):(_0x1095db=_0x937f60[_0x4ed4d5(0x141)](_0x220ad6=>_0x220ad6[_0x4ed4d5(0x1d3)][_0x4ed4d5(0x1aa)]===_0x35586f[_0x4ed4d5(0x1d3)][_0x4ed4d5(0x1aa)]&&!_0x220ad6[_0x4ed4d5(0x1b2)][_0x4ed4d5(0x178)]),_0x1095db=_0x1095db>-0x1?_0x1095db:_0x937f60[_0x4ed4d5(0x13e)]),_0x248cd5(_0x5ea64d,{'index':_0x1095db});}async function _0x8122b1(_0x419ca9){const _0x2b0d6d=_0x2c94ce,_0x5eef8a=_0xe06b24();await _0x124823[_0x2b0d6d(0x184)](Promise[_0x2b0d6d(0x167)]());let _0x14f098;!_0x419ca9?_0x14f098=_0x5eef8a['length']-0x2:_0x14f098=_0x5eef8a[_0x2b0d6d(0x141)](_0x1f7537=>_0x1f7537[_0x2b0d6d(0x1aa)]===_0x419ca9);if(_0x14f098<0x0){const _0x5433f0=_0x419ca9?'Invalid controller to restore':'No controller to restore';throw new ControllerNotFoundError(_0x5433f0);}const _0x46784e=await clearUncommittedChanges(_0x24de34);if(!_0x46784e)return;const _0x3eff52=_0x5eef8a[_0x14f098];if(_0x3eff52[_0x2b0d6d(0x1d3)][_0x2b0d6d(0x169)]==='ir.actions.act_window'){const {action:_0x32505c,exportedState:_0x56b2c2,view:_0x46ca35,views:_0xdabe81}=_0x3eff52,_0x3ffbf8={..._0x3eff52['props']};_0x56b2c2&&'resId'in _0x56b2c2&&(_0x3ffbf8['resId']=_0x56b2c2[_0x2b0d6d(0x1c3)]),Object[_0x2b0d6d(0x146)](_0x3eff52,_0x4f6890(_0x46ca35,_0x32505c,_0xdabe81,_0x3ffbf8));}return _0x248cd5(_0x3eff52,{'index':_0x14f098});}async function _0xeb04d6(){const _0x4b4525=_0x3f55f6();if(_0x4b4525){const {viewType:_0x4efa12,props:_0x2b487f}=_0x4b4525,_0x545499=_0x1333f2(_0x4efa12);if(_0x545499)return await _0x3015ac(_0x4efa12,_0x2b487f),!![];}else{const _0x45870a=_0x4cfb10();if(_0x45870a){const {actionRequest:_0x1cf17a,options:_0x550eeb}=_0x45870a;return await _0x42aa60(_0x1cf17a,_0x550eeb),!![];}}return![];}
+ function _0x50b5a5(_0x2efd99){const _0x3958ac=_0x2c94ce,_0x5e2319={},_0x417fdb=_0x2efd99['action'];if(_0x417fdb['id'])_0x5e2319[_0x3958ac(0x1d3)]=_0x417fdb['id'];else _0x417fdb[_0x3958ac(0x169)]==='ir.actions.client'&&(_0x5e2319['action']=_0x417fdb[_0x3958ac(0x163)]);if(_0x417fdb[_0x3958ac(0x181)]){const _0x3b8c07=_0x417fdb[_0x3958ac(0x181)][_0x3958ac(0x16f)];_0x3b8c07&&(_0x5e2319[_0x3958ac(0x16f)]=_0x3b8c07);const _0x5db616=_0x417fdb[_0x3958ac(0x181)][_0x3958ac(0x1a3)];_0x5db616&&!(_0x5db616[_0x3958ac(0x13e)]===0x1&&_0x5db616[0x0]===_0x3b8c07)&&(_0x5e2319[_0x3958ac(0x1a3)]=_0x5db616[_0x3958ac(0x188)](','));}if(_0x417fdb[_0x3958ac(0x169)]==='ir.actions.act_window'){const _0x50b110=_0x2efd99[_0x3958ac(0x1cd)];_0x5e2319[_0x3958ac(0x177)]=_0x50b110[_0x3958ac(0x174)],_0x5e2319[_0x3958ac(0x138)]=_0x50b110[_0x3958ac(0x169)],_0x5e2319['id']=_0x50b110[_0x3958ac(0x1c3)]||_0x50b110[_0x3958ac(0x1b4)]&&_0x50b110['state'][_0x3958ac(0x1c3)]||undefined;}_0x24de34[_0x3958ac(0x140)]['router'][_0x3958ac(0x1b0)](_0x5e2319,{'replace':!![]});}return{'doAction':_0x42aa60,'doActionButton':_0x27c18f,'switchView':_0x3015ac,'restore':_0x8122b1,'loadState':_0xeb04d6,async 'loadAction'(_0x377614,_0x47440f){const _0x120342=await _0x1c65fc(_0x377614,_0x47440f);return _0x3c96be(_0x120342,_0x47440f);},get 'currentController'(){return _0xa68e1d();},'setChangingTab':_0x4bb0d0,'isChangingTab':_0x11b6b6,'removeAllStacks':()=>{_0x2edec6={};},'removeStacks':_0x276317=>{for(var _0x5192e1=0x0;_0x5192e1<_0x276317['length'];_0x5192e1++){var _0x1c24c1=_0x276317[_0x5192e1];delete _0x2edec6[_0x1c24c1];}},'setCurrentAction':_0x22c3b4=>{const _0x469fd1=_0x2c94ce;_0x23d474=_0x22c3b4;const _0x386c03=_0xa68e1d();_0x386c03&&_0x24de34[_0x469fd1(0x140)][_0x469fd1(0x14f)]['setParts']({'action':_0x386c03[_0x469fd1(0x1a1)]});},'getCurrentAction':()=>{return _0x23d474;}};};
+export const actionService={'dependencies':['effect','localization','notification','router','rpc','title','ui','user','dialog'],'start'(_0xa0c18e){return makeActionManager(_0xa0c18e);}};registry[a0_0x642ffa(0x16b)]('services')['remove']('action'),registry['category']('services')['add']('action',actionService);
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/src/akl_list_patch.js b/akl_multi_tab_plugin/static/src/akl_list_patch.js
new file mode 100644
index 000000000..24e804d72
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/akl_list_patch.js
@@ -0,0 +1,6 @@
+/** @odoo-module **/
+var a0_0x5b689a=a0_0x2250;
+ function a0_0x445c(){var _0x598052=['prototype','2208StNOog','20OajDHW','11297UeBxIP','846246BWEOIy','496968ABTLzO','2cfhcWh','891315OhDNgy','209340slCIla','7msdRcI','8EhRpni','142691pwdXlh','486975ZdRObU'];a0_0x445c=function(){return _0x598052;};return a0_0x445c();}(function(_0x486f61,_0xa803e2){var _0x2b6a4e=a0_0x2250,_0x1ff604=_0x486f61();while(!![]){try{var _0x37856e=-parseInt(_0x2b6a4e(0xba))/0x1*(-parseInt(_0x2b6a4e(0xc2))/0x2)+-parseInt(_0x2b6a4e(0xc4))/0x3*(-parseInt(_0x2b6a4e(0xb9))/0x4)+-parseInt(_0x2b6a4e(0xbb))/0x5+-parseInt(_0x2b6a4e(0xc0))/0x6*(parseInt(_0x2b6a4e(0xc5))/0x7)+parseInt(_0x2b6a4e(0xc1))/0x8+parseInt(_0x2b6a4e(0xc3))/0x9*(parseInt(_0x2b6a4e(0xbe))/0xa)+parseInt(_0x2b6a4e(0xbf))/0xb*(-parseInt(_0x2b6a4e(0xbd))/0xc);if(_0x37856e===_0xa803e2)break;else _0x1ff604['push'](_0x1ff604['shift']());}catch(_0x493b3c){_0x1ff604['push'](_0x1ff604['shift']());}}}(a0_0x445c,0x1c15e));
+ function a0_0x2250(_0x53db8a,_0x46c24d){var _0x445cbc=a0_0x445c();return a0_0x2250=function(_0x22502a,_0x196500){_0x22502a=_0x22502a-0xb9;var _0x1e86bf=_0x445cbc[_0x22502a];return _0x1e86bf;},a0_0x2250(_0x53db8a,_0x46c24d);}
+ import {patch} from '@web/core/utils/patch';
+ import {ListRenderer} from '@web/views/list/list_renderer';patch(ListRenderer[a0_0x5b689a(0xbc)],{'freezeColumnWidths'(){if(!$(this['tableRef']['el'])['is'](':visible'))return;super['freezeColumnWidths'](this,arguments);}});
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js
new file mode 100644
index 000000000..0d907f510
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js
@@ -0,0 +1,8 @@
+/** @odoo-module **/
+const a0_0x1681c6=a0_0x32e2;
+ function a0_0x32e2(_0x1e018a,_0x4e6248){const _0x1a0fdb=a0_0x1a0f();return a0_0x32e2=function(_0x32e294,_0x124900){_0x32e294=_0x32e294-0x76;let _0x57aaee=_0x1a0fdb[_0x32e294];return _0x57aaee;},a0_0x32e2(_0x1e018a,_0x4e6248);}(function(_0x2a590c,_0x1aae1c){const _0x36da33=a0_0x32e2,_0x2df6b5=_0x2a590c();while(!![]){try{const _0x1ce317=-parseInt(_0x36da33(0x7a))/0x1*(parseInt(_0x36da33(0x87))/0x2)+-parseInt(_0x36da33(0x7c))/0x3+-parseInt(_0x36da33(0x8f))/0x4+-parseInt(_0x36da33(0x89))/0x5+-parseInt(_0x36da33(0x84))/0x6*(-parseInt(_0x36da33(0x78))/0x7)+parseInt(_0x36da33(0x9a))/0x8+parseInt(_0x36da33(0x91))/0x9;if(_0x1ce317===_0x1aae1c)break;else _0x2df6b5['push'](_0x2df6b5['shift']());}catch(_0x5edea1){_0x2df6b5['push'](_0x2df6b5['shift']());}}}(a0_0x1a0f,0x535cc));
+ import {Component,useRef} from '@odoo/owl';
+ import {Dropdown} from '@web/core/dropdown/dropdown';
+ function a0_0x1a0f(){const _0x5daab9=['_on_multi_tab_prev','display_name','_on_click_tab_close','962724hllhBm','close_action','17115021gRXQdN','position','close_all_action','setup','find','name','_on_multi_tab_next','left','get_menu_label','195824sQDODu','rollPage','_get_display_name','active_action','length','outerWidth','tabContainerRef','children','template','1317071zAkJHp','_close_current_action','7184zqjNpq','action_infos','1497948IOCxfc','querySelector','close_other_action','_get_cur_active_tab','each','indexOf','active','action','6DqyGMA','css','env','118vrlfVU','ref_action','3044975TBqSnX','props','current_action_info'];a0_0x1a0f=function(){return _0x5daab9;};return a0_0x1a0f();}
+ import {DropdownItem} from '@web/core/dropdown/dropdown_item';
+export class AklMultiTab extends Component{[a0_0x1681c6(0x94)](){const _0x52c5bd=a0_0x1681c6;super[_0x52c5bd(0x94)](),this[_0x52c5bd(0xa0)]=useRef('tab_container');}[a0_0x1681c6(0x8e)](_0x3434cf){const _0x2cb209=a0_0x1681c6;this[_0x2cb209(0x8a)][_0x2cb209(0x90)](_0x3434cf);}[a0_0x1681c6(0x7f)](){const _0x33fbc4=a0_0x1681c6;if(this[_0x33fbc4(0x8b)])return this[_0x33fbc4(0x8b)];else return this[_0x33fbc4(0x7b)]['length']>0x0?this[_0x33fbc4(0x7b)][this[_0x33fbc4(0x7b)][_0x33fbc4(0x9e)]-0x1]:null;}get['action_infos'](){const _0x4e521b=a0_0x1681c6;return this[_0x4e521b(0x8a)][_0x4e521b(0x7b)];}get['current_action_info'](){const _0x42eb79=a0_0x1681c6;return this['action_infos'][_0x42eb79(0x95)](_0x26afad=>_0x26afad[_0x42eb79(0x82)]);}[a0_0x1681c6(0x99)](_0x47cf55){const _0x12c1ae=a0_0x1681c6;switch(_0x47cf55){case'Close Current Tab':return this['env']['_t']('Close Current Tab');case'Close Other Tabs':return this[_0x12c1ae(0x86)]['_t']('Close Other Tabs');case'Close All Tabs':return this['env']['_t']('Close All Tabs');}}[a0_0x1681c6(0x8c)](){const _0x572eac=a0_0x1681c6;if(this[_0x572eac(0x7b)][_0x572eac(0x9e)]==0x0)return;var _0x2fa4cd=this[_0x572eac(0x7b)][_0x572eac(0x81)](this[_0x572eac(0x8b)]);_0x2fa4cd=_0x2fa4cd-0x1;if(_0x2fa4cd<0x0){if(this[_0x572eac(0x7b)][_0x572eac(0x9e)]>0x1)_0x2fa4cd=this[_0x572eac(0x7b)]['length']-0x1;else return;}let _0x567478=this[_0x572eac(0x7b)][_0x2fa4cd];this['props']['active_action'](_0x567478),this['rollPage']('auto',_0x2fa4cd);}[a0_0x1681c6(0x97)](){const _0x4222d7=a0_0x1681c6;if(this[_0x4222d7(0x7b)][_0x4222d7(0x9e)]<=0x1)return;var _0x2a9573=this['action_infos']['indexOf'](this[_0x4222d7(0x8b)]);_0x2a9573=_0x2a9573+0x1;_0x2a9573>=this['action_infos'][_0x4222d7(0x9e)]&&(_0x2a9573=0x0);let _0x52dd07=this['action_infos'][_0x2a9573];this['props'][_0x4222d7(0x9d)](_0x52dd07),this['rollPage']('auto',_0x2a9573);}['_on_click_tab_item'](_0x1a8ef4){const _0x48c04e=a0_0x1681c6;var _0x48b327=this[_0x48c04e(0x8a)][_0x48c04e(0x7b)][_0x48c04e(0x81)](_0x1a8ef4);this[_0x48c04e(0x8a)][_0x48c04e(0x9d)](_0x1a8ef4),this[_0x48c04e(0x9b)]('auto',_0x48b327);}[a0_0x1681c6(0x79)](){const _0x5746fe=a0_0x1681c6;this[_0x5746fe(0x8b)]&&this[_0x5746fe(0x8a)][_0x5746fe(0x90)](this['current_action_info']);}['_close_other_action'](){const _0x14dfd0=a0_0x1681c6;this['current_action_info']&&this[_0x14dfd0(0x8a)][_0x14dfd0(0x7e)](this['current_action_info']);}['_close_all_action'](){const _0x10565f=a0_0x1681c6;this[_0x10565f(0x8a)][_0x10565f(0x93)]();}[a0_0x1681c6(0x9c)](_0x4c4356){const _0x387b45=a0_0x1681c6;let _0x4addda=_0x4c4356[_0x387b45(0x83)][_0x387b45(0x88)]||_0x4c4356[_0x387b45(0x83)];while(_0x4addda&&_0x4addda[_0x387b45(0x88)]&&_0x4addda[_0x387b45(0x88)]!==_0x4addda){_0x4addda=_0x4addda[_0x387b45(0x88)];}return _0x4addda[_0x387b45(0x8d)]||_0x4addda[_0x387b45(0x96)]||'New';}[a0_0x1681c6(0x9b)](_0x165669,_0x142840){const _0x297006=a0_0x1681c6;let _0x1a0f61=$(this[_0x297006(0xa0)]['el'][_0x297006(0x7d)]('.akl_page_items')),_0x3f139e=_0x1a0f61[_0x297006(0x76)]('li'),_0x4e4e68=_0x1a0f61[_0x297006(0x9f)](),_0x323ded=parseFloat(_0x1a0f61[_0x297006(0x85)]('left'));if(_0x165669==='left'){if(!_0x323ded&&_0x323ded<=0x0)return;let _0x3a549c=-_0x323ded-_0x4e4e68;_0x3f139e[_0x297006(0x80)](function(_0x5466a3,_0x5ed0ba){const _0x421ad3=_0x297006;let _0x513855=$(_0x5ed0ba),_0x739bf6=_0x513855[_0x421ad3(0x92)]()['left'];if(_0x739bf6>=_0x3a549c)return _0x1a0f61[_0x421ad3(0x85)]('left',-_0x739bf6),![];});}else{if(_0x165669==='auto'){let _0x367137=_0x3f139e['eq'](_0x142840);if(!_0x367137[0x0])return;;let _0x48dfa2=_0x367137[_0x297006(0x92)]()[_0x297006(0x98)];if(_0x48dfa2<-_0x323ded)return _0x1a0f61[_0x297006(0x85)]('left',-_0x48dfa2);if(_0x48dfa2+_0x367137['outerWidth']()>=_0x4e4e68-_0x323ded){let _0x49a814=_0x48dfa2+_0x367137[_0x297006(0x9f)]()-(_0x4e4e68-_0x323ded);_0x3f139e[_0x297006(0x80)](function(_0x6de8d0,_0x3b8397){const _0x57629b=_0x297006;let _0x287525=$(_0x3b8397),_0x4d3d11=_0x287525[_0x57629b(0x92)]()['left'];if(_0x4d3d11+_0x323ded>0x0){if(_0x4d3d11-_0x323ded>_0x49a814)return _0x1a0f61['css']('left',-_0x4d3d11),![];}});}}else _0x3f139e[_0x297006(0x80)](function(_0x4a76e1,_0x2bc12c){const _0x7a02db=_0x297006;let _0x1d7964=$(_0x2bc12c),_0x497596=_0x1d7964['position']()['left'];if(_0x497596+_0x1d7964['outerWidth']()>=_0x4e4e68-_0x323ded)return _0x1a0f61[_0x7a02db(0x85)]('left',-_0x497596),![];});}}};AklMultiTab[a0_0x1681c6(0x8a)]={'action_infos':{'type':Array},'close_action':{'type':Function},'active_action':{'type':Function},'close_other_action':{'type':Function},'close_all_action':{'type':Function}},AklMultiTab['components']={'Dropdown':Dropdown,'DropdownItem':DropdownItem},AklMultiTab[a0_0x1681c6(0x77)]='akl_multi_tab.tab';
\ No newline at end of file
diff --git a/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss
new file mode 100644
index 000000000..88fa81136
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss
@@ -0,0 +1,299 @@
+.akl_multi_tab_container {
+
+ line-height: 40px;
+ background-color: #fff;
+ border-bottom: 1px solid #dee2e6;
+ box-sizing: border-box;
+ z-index: 3;
+
+ .akl_multi_tab {
+ position: relative;
+ padding: 0 80px 0 40px;
+ height: 40px;
+ display: flex;
+ flex-direction: row;
+ box-sizing: border-box;
+
+ .akl_tab_scroll {
+
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+
+ .akl_page_items {
+ position: relative;
+ left: 0px;
+ ;
+ height: 100%;
+ flex: 1 1 auto;
+ background: rgb(255, 255, 255);
+ overflow: visible;
+ white-space: nowrap;
+ padding: 0px;
+
+ li {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+
+ vertical-align: middle;
+ font-size: 14px;
+ transition: all .2s;
+ -webkit-transition: all .2s;
+ min-width: 65px;
+ padding: 0 15px;
+ text-align: center;
+ cursor: pointer;
+
+ line-height: 40px;
+ max-width: 160px;
+ text-overflow: ellipsis;
+ padding-right: 40px;
+ overflow: hidden;
+ border-right: 1px solid #f6f6f6;
+ vertical-align: top;
+ position: relative;
+ white-space: nowrap;
+ padding: 0px 30px 0px 10px;
+ user-select: none;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 0;
+ height: 2px;
+ border-radius: 0;
+ background-color: #292B34;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ }
+
+ &.akl_multi_tab_active {
+ &::after {
+ width: 100%;
+ }
+ }
+
+ &:hover {
+ background-color: #f6f6f6;
+
+ &::after {
+ width: 100%;
+ }
+ }
+
+ .akl_tab_close {
+
+ position: absolute;
+ right: 8px;
+ top: 50%;
+ margin: -8px 0 0 0;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ border-radius: 50%;
+ font-size: 12px;
+
+ &:first {
+ display: none;
+ }
+
+ &:hover {
+ background-color: #FF5722;
+ color: #fff;
+ }
+
+ svg {
+ margin-top: -2px;
+ }
+ }
+
+ &.active {
+ background-color: #f6f6f6;
+ }
+ }
+ }
+ }
+
+ .akl_tab_control {
+ width: 40px;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ box-sizing: border-box;
+ border-left: 1px solid #f6f6f6;
+
+ &:hover {
+ background-color: #f6f6f6;
+ }
+ }
+
+ .akl_icon_prev {
+ border-right: 1px solid #f6f6f6;
+ color: #666;
+ line-height: 40px;
+ margin: 0;
+ padding: 0;
+
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-font-smoothing: antialiased;
+ -webkit-transition: all .3s;
+
+ font-size: 16px;
+ font-style: normal;
+ position: absolute;
+
+ top: 0;
+ left: 0;
+
+ width: 40px;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ box-sizing: border-box;
+ border-left: none;
+ border-right: 1px solid #f6f6f6;
+ }
+
+ .akl_icon_next {
+ border-right: 1px solid #f6f6f6;
+ color: #666;
+ line-height: 40px;
+ margin: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ font-family: layui-icon !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ position: absolute;
+ top: 0;
+ width: 40px;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ box-sizing: border-box;
+ border-left: 1px solid #f6f6f6;
+ right: 40px;
+ }
+
+ .akl_icon_down {
+ //right: 1px;
+ color: #666;
+ line-height: 40px;
+ margin: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-transition: all .3s;
+ font-family: layui-icon !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ position: absolute;
+ top: 0;
+ width: 40px;
+ height: 100%;
+ text-align: center;
+ cursor: pointer;
+ box-sizing: border-box;
+ border-left: 1px solid #f6f6f6;
+ right: 0;
+
+ .dropdown-toggle {
+ width: 100%;
+ height: 100%;
+ background: none;
+ border: none;
+ }
+
+ .dropdown-menu {
+ .dropdown-item {
+ line-height: 30px;
+ }
+ }
+ }
+
+ .akl_multi_tab_active {
+ background-color: #f6f6f6;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+ border-radius: 0;
+ background-color: #292B34;
+ transition: all .3s;
+ -webkit-transition: all .3s;
+ }
+ }
+ }
+
+ .dropdown-menu {
+ z-index: 1000;
+ }
+}
+
+.o_action_manager {
+ display: flex;
+ flex-direction: column;
+
+ .akl_tab_page_container {
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ flex: 1 1 auto;
+
+ // > div {
+ // flex: 1 1 auto;
+ // overflow: auto;
+ // display: flex;
+ // flex-direction: column;
+ // }
+
+ .o_view_controller {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ overflow: hidden;
+ height: 100%;
+
+ .o_content {
+ overflow: auto;
+ }
+ }
+
+ }
+}
+
+.o_home_menu_background {
+ .akl_multi_tab_container {
+ display: none !important;
+ }
+}
+
+[name='product_template_id'] {
+ div, span {
+ width: 100% !important;
+ display: block !important;
+ }
+ span {
+ white-space: pre-wrap !important;
+ word-break: break-all !important;
+ text-overflow: initial !important;
+ }
+}
+
+
+td[name='product_id'] {
+ white-space: pre-wrap !important;
+ word-break: break-all !important;
+ text-overflow: initial !important;
+}
diff --git a/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.xml b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.xml
new file mode 100644
index 000000000..ea7ae0c92
--- /dev/null
+++ b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Close Current Tab
+
+
+ Close Other Tabs
+
+
+ Close All Tabs
+
+
+
+
+
+
+
+