init common and customize
11
app_odoo_customize/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import controllers
|
||||
from . import models
|
||||
from . import wizard
|
||||
from . import hooks
|
||||
from .hooks import pre_init_hook
|
||||
from .hooks import post_init_hook
|
||||
|
||||
|
||||
|
||||
194
app_odoo_customize/__manifest__.py
Normal file
@@ -0,0 +1,194 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Created on 2018-11-26
|
||||
# author: 欧度智能,https://www.odooai.cn
|
||||
# email: 300883@qq.com
|
||||
# resource of odooai
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
# Odoo12在线用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/12.0/en/index.html
|
||||
|
||||
# Odoo12在线开发者手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/12.0/index.html
|
||||
|
||||
# Odoo10在线中文用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html
|
||||
|
||||
# Odoo10离线中文用户手册下载
|
||||
# https://www.odooai.cn/odoo10_user_manual_document_offline/
|
||||
# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备)
|
||||
# https://www.odooai.cn/odoo10_developer_document_offline/
|
||||
# description:
|
||||
|
||||
{
|
||||
'name': 'odoo18 Tweak,Ai Employee,Boost,Customize All in One. Customize,UI,Boost,Security,Data,Development Enhance',
|
||||
'version': '24.08.19',
|
||||
'author': 'odooai.cn',
|
||||
'category': 'Extra Tools',
|
||||
'website': 'https://www.odooai.cn',
|
||||
'live_test_url': 'https://demo.odooapp.cn',
|
||||
'license': 'LGPL-3',
|
||||
'sequence': 2,
|
||||
'images': ['static/description/banner.gif'],
|
||||
'summary': """
|
||||
Ai as employee. 1 click Tweak odoo. 48 Functions odoo enhancement. for Customize, UI, Boost, Security, Development.
|
||||
Easy reset data, clear data, reset account chart, reset Demo data.
|
||||
For quick debug. Set brand, Language Switcher all in one.
|
||||
""",
|
||||
'depends': [
|
||||
'app_common',
|
||||
'base_setup',
|
||||
'web',
|
||||
'mail',
|
||||
# 'digest',
|
||||
# when enterprise
|
||||
# 'web_mobile'
|
||||
],
|
||||
'data': [
|
||||
'security/res_groups.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'views/app_odoo_customize_views.xml',
|
||||
'views/app_theme_config_settings_views.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
'views/ir_views.xml',
|
||||
'views/ir_module_module_views.xml',
|
||||
'views/ir_translation_views.xml',
|
||||
'views/ir_module_addons_path_views.xml',
|
||||
'views/ir_ui_menu_views.xml',
|
||||
'views/ir_ui_view_views.xml',
|
||||
'views/ir_model_fields_views.xml',
|
||||
'views/ir_model_data_views.xml',
|
||||
# data
|
||||
'data/ir_config_parameter_data.xml',
|
||||
'data/ir_module_module_data.xml',
|
||||
# 'data/digest_template_data.xml',
|
||||
'data/res_company_data.xml',
|
||||
'data/res_config_settings_data.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'app_odoo_customize/static/src/scss/app.scss',
|
||||
'app_odoo_customize/static/src/scss/ribbon.scss',
|
||||
'app_odoo_customize/static/src/scss/dialog.scss',
|
||||
'app_odoo_customize/static/src/js/user_menu.js',
|
||||
'app_odoo_customize/static/src/js/ribbon.js',
|
||||
'app_odoo_customize/static/src/js/dialog.js',
|
||||
'app_odoo_customize/static/src/webclient/*.js',
|
||||
'app_odoo_customize/static/src/webclient/user_menu.xml',
|
||||
'app_odoo_customize/static/src/xml/res_config_edition.xml',
|
||||
],
|
||||
},
|
||||
'pre_init_hook': 'pre_init_hook',
|
||||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'description': """
|
||||
|
||||
App Customize Odoo (Change Title,Language,Documentation,Quick Debug)
|
||||
============
|
||||
White label odoo.
|
||||
Support Odoo 17,16,15,14,13,12,11,10,9.
|
||||
You can config odoo, make it look like your own platform.
|
||||
1. Deletes Odoo label in footer
|
||||
2. Replaces "Odoo" in Windows title
|
||||
3. Customize Documentation, Support, About links and title in usermenu
|
||||
4. Adds "Developer mode" link to the top right-hand User Menu.
|
||||
5. Adds Quick Language Switcher to the top right-hand User Menu.
|
||||
6. Adds Country flags to the top right-hand User Menu.
|
||||
7. Adds English and Chinese user documentation access to the top right-hand User Menu.
|
||||
8. Adds developer documentation access to the top right-hand User Menu.
|
||||
9. Customize "My odoo.com account" button
|
||||
10. Standalone setting panel, easy to setup.
|
||||
11. Provide 236 country flags.
|
||||
12. Multi-language Support.
|
||||
13. Change Powered by Odoo in login screen.(Please change '../views/app_odoo_customize_view.xml' #15)
|
||||
14. Quick delete test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Project/Message/Workflow etc.
|
||||
15. Reset All the Sequence to beginning of 1: SO/PO/MO/Invoice...
|
||||
16. Fix odoo reload module translation bug while enable english language
|
||||
17. Stop Odoo Auto Subscribe(Moved to app_odoo_boost)
|
||||
18. Show/Hide Author and Website in Apps Dashboard
|
||||
19. One Click to clear all data (Sometime pls click twice)
|
||||
20. Show quick upgrade in app dashboard, click to show module info not go to odoo.com
|
||||
21. Can clear and reset account chart. Be cautious
|
||||
22. Update online manual and developer document to odoo12
|
||||
23. Add reset or clear website blog data
|
||||
24. Customize Odoo Native Module(eg. Enterprise) Url
|
||||
25. Add remove expense data
|
||||
26. Add multi uninstall modules
|
||||
27. Add odoo boost modules link.
|
||||
28. Easy Menu manager.
|
||||
29. Apps version compare. Add Install version in App list. Add Local updatable filter in app list.
|
||||
30. 1 key export app translate file like .po file.
|
||||
31. Show or hide odoo Referral in the top menu.
|
||||
32. Fix odoo bug of complete name bug of product category and stock location..
|
||||
33. Add Demo Ribbon Setting.
|
||||
34. Add Remove all quality data.
|
||||
35. Fixed for odoo 14.
|
||||
36. Add refresh translate for multi module.
|
||||
37. Easy noupdate manage for External Identifiers(xml_id)
|
||||
38. Add Draggable and sizeable Dialog enable.
|
||||
39. Only erp manager can see debug menu..
|
||||
40. Fix support for enterprise version.
|
||||
41. Fix odoo bug, when click Preferences menu not hide in mobile.
|
||||
42. Mobile Enhance. Add menu navbar setup for top or bottom. navigator footer support.
|
||||
43. Check to only Debug / Debug Assets for Odoo Admin. Deny debug from url for other user.
|
||||
44. Check to stop subscribe and follow. This to make odoo speed up.
|
||||
45. Add addons path info to module.
|
||||
46. Add Help documentation anywhere. easy get help for any odoo operation or action.
|
||||
47. Add ai robot app integration. Use Ai as your employee.
|
||||
|
||||
This module can help to white label the Odoo.
|
||||
Also helpful for training and support for your odoo end-user.
|
||||
The user can get the help document just by one click.
|
||||
## 在符合odoo开源协议的前提下,自定义你的odoo系统
|
||||
可完全自行设置下列选项,将 odoo 整合进自有软件产品
|
||||
支持odoo 16,15,14,13,12, 11, 10, 9 版本,社区版企业版通用
|
||||
1. 删除菜单导航页脚的 Odoo 标签
|
||||
2. 将弹出窗口中 "Odoo" 设置为自定义名称
|
||||
3. 自定义用户菜单中的 Documentation, Support, About 的链接
|
||||
4. 在用户菜单中增加快速切换开发模式
|
||||
5. 在用户菜单中增加快速切换多国语言
|
||||
6. 对语言菜单进行美化,设置国旗图标
|
||||
7. 在用户菜单中增加中/英文用户手册,可以不用翻墙加速了
|
||||
8. 在用户菜单中增加开发者手册,含python教程,jquery参考,Jinja2模板,PostgresSQL参考
|
||||
9. 在用户菜单中自定义"My odoo.com account"
|
||||
10. 单独设置面板,每个选项都可以自定义
|
||||
11. 提供236个国家的国旗文件(部份需要自行设置文件名)
|
||||
12. 多语言版本
|
||||
13. 自定义登陆界面中的 Powered by Odoo
|
||||
14. 快速删除测试数据,支持模块包括:销售/POS门店/采购/生产/库存/会计/项目/消息与工作流等.
|
||||
15. 将各类单据的序号重置,从1开始,包括:SO/PO/MO/Invoice 等
|
||||
16. 修复odoo启用英文后模块不显示中文的Bug
|
||||
17. 可停用odoo自动订阅功能,避免“同样对象关注2次”bug,同时提升性能
|
||||
18. 显示/隐藏应用的作者和网站-在应用安装面板中
|
||||
19. 一键清除所有数据(视当前数据情况,有时需点击2次)
|
||||
20. 在应用面板显示快速升级按键,点击时不会导航至 odoo.com
|
||||
21. 清除并重置会计科目表
|
||||
22. 全新升级将odoo12用户及开发手册导航至国内网站,或者自己定义的网站
|
||||
23. 增加清除网站数据功能
|
||||
24. 自定义 odoo 原生模块跳转的url(比如企业版模块)
|
||||
25. 增加删除费用报销数据功能
|
||||
26. 增加批量卸载模块功能
|
||||
27. 增加odoo加速功能
|
||||
28. 快速管理顶级菜单
|
||||
29. App版本比较,快速查看可本地更新的模块
|
||||
30. 一键导出翻译文件 po
|
||||
31. 显示或去除 odoo 推荐
|
||||
32. 增加修复品类及区位名的操作
|
||||
33. 增加 Demo 的显示设置
|
||||
34. 增加清除质检数据
|
||||
35. 优化至odoo14适用
|
||||
36. 可为多个模块强制更新翻译
|
||||
37. noupdate字段的快速管理,主要针对 xml_id
|
||||
38. 对话框可拖拽,可缩放,自动大屏优化
|
||||
39. 只有系统管理员可以操作快速debug
|
||||
40. 增强对企业版的支持
|
||||
41. 修正odoo原生移动端菜单bug,点击个人设置时,原菜单不隐藏等
|
||||
42. 可设置导航栏在上方还是下方,分开桌面与移动端.
|
||||
43. 可设置只允许管理员进入开发者模式,不可在url中直接debut=1来调试
|
||||
44. 可配置停用自动用户订阅功能,这会提速odoo,减少资源消耗
|
||||
45. 为应用模块增加模块路径信息
|
||||
46. 增加快速帮助文档,可以在任意操作中获取相关的 odoo 帮助.
|
||||
""",
|
||||
}
|
||||
4
app_odoo_customize/controllers/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# todo: website 有bug oauth
|
||||
from . import controllers
|
||||
26
app_odoo_customize/controllers/controllers.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import http
|
||||
from odoo.addons.portal.controllers.web import Home
|
||||
from odoo.http import request
|
||||
|
||||
|
||||
class AppHome(Home):
|
||||
|
||||
@http.route()
|
||||
def web_client(self, s_action=None, **kw):
|
||||
# todo: 当前只对 web,要调整为也对 website
|
||||
res = super(AppHome, self).web_client(s_action, **kw)
|
||||
|
||||
if kw.get('debug', False):
|
||||
config_parameter = request.env['ir.config_parameter'].sudo()
|
||||
app_debug_only_admin = config_parameter.get_param('app_debug_only_admin')
|
||||
if request.session.uid and request.env.user.browse(request.session.uid)._is_admin():
|
||||
pass
|
||||
else:
|
||||
if app_debug_only_admin:
|
||||
return request.redirect('/web/session/logout?debug=0')
|
||||
return res
|
||||
|
||||
|
||||
|
||||
156
app_odoo_customize/data/digest_template_data.xml
Normal file
@@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="digest.digest_mail_template" model="mail.template">
|
||||
<field name="body_html"><![CDATA[
|
||||
<table style="width: 100%; border-spacing: 0; font-family: Helvetica,Arial,Verdana,sans-serif;">
|
||||
<tr>
|
||||
<td align="center" valign="top" style="border-collapse: collapse; padding: 0">
|
||||
% set user = ctx.get('user', user)
|
||||
% set company = user.company_id
|
||||
% set data = object.compute_kpis(company, user)
|
||||
% set tips = object.compute_tips(company, user)
|
||||
% set kpi_actions = object.compute_kpis_actions(company, user)
|
||||
% set kpis = data.yesterday.keys()
|
||||
<table style="width: 100%; max-width: 600px; border-spacing: 0; border: 1px solid #e7e7e7; border-bottom: none; color: #6e7172; line-height: 23px; text-align: left;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; padding: 10px 40px; text-align: left;">
|
||||
<strong style="margin-left: -22px; color: #000000; font-size: 22px; line-height: 32px;">${company.name} at a glance</strong>
|
||||
<div style="color: #000000; font-size: 15px; margin-left:-22px;">${datetime.date.today().strftime('%B %d, %Y')}</div>
|
||||
</td>
|
||||
<td style="text-align: right; padding: 10px 40px">
|
||||
<img style="padding: 0px; margin: 0px; height: auto; width: 80px;" src="/logo.png?company=${company.id}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2" style="text-align: center;">
|
||||
<hr width="95%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 14px;"/>
|
||||
</td></tr>
|
||||
</table>
|
||||
% for kpi in kpis:
|
||||
<table style="border-spacing: 0; width: 100%; max-width: 600px;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; background-color: #ffffff; border-left: 1px solid #e7e7e7; border-right: 1px solid #e7e7e7; line-height: 21px; padding: 0 20px 10px 20px; text-align: left;"><br/>
|
||||
<span style="color: #3d466e; font-size: 18px; font-weight: 500; line-height: 23px;">${object.fields_get()[kpi]['string']}</span>
|
||||
%if kpi in kpi_actions:
|
||||
<span style="float: right;">
|
||||
<a href="/web#action=${kpi_actions[kpi]}">View more</a>
|
||||
</span>
|
||||
%endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; margin: 0; padding:0;">
|
||||
<table style="width: 100%; border-spacing: 0; background-color: #f9f9f9; border: 1px solid #e7e7e7; border-top: none;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; margin: 0; padding: 0; display: block; border-top: 2px solid #56b3b5;">
|
||||
<table style="width: 100%; max-width: 199px; border-spacing: 0;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; padding: 20px; text-align: center;">
|
||||
<span style="color: #56b3b5; font-size: 35px; font-weight: bold; text-decoration: none; line-height: 36px;">${data['yesterday'][kpi][kpi]}</span><br/>
|
||||
<span style="color: #888888; display: inline-block; font-size: 12px; line-height: 18px; text-transform: uppercase;">Yesterday</span>
|
||||
% if data['yesterday'][kpi]['margin'] != 0.0:
|
||||
<span style="color: #888888; display: block; font-size: 12px; line-height: 18px; text-transform: uppercase;">
|
||||
% if data['yesterday'][kpi]['margin'] > 0.0:
|
||||
<span style="color: #0bbc22;">▲</span>${"%.2f" % data['yesterday'][kpi]['margin']} %
|
||||
% endif
|
||||
% if data['yesterday'][kpi]['margin'] < 0.0:
|
||||
<span style="color: #ff0000;">▼</span>${"%.2f" % data['yesterday'][kpi]['margin']} %
|
||||
% endif
|
||||
</span>
|
||||
% endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; margin: 0; padding: 0; border-top: 2px solid #9a5b82;">
|
||||
<table style="width: 100%; max-width: 199px; border-spacing: 0; margin: 0; padding: 0;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; padding: 20px; text-align: center;">
|
||||
<span style="color: #9a5b82; font-size: 35px; font-weight: bold; text-decoration: none; line-height: 36px;">${data['lastweek'][kpi][kpi]}</span><br/>
|
||||
<span style="color: #888888; display: inline-block; font-size: 12px; line-height: 18px; text-transform: uppercase;">Last 7 Days</span>
|
||||
% if data['lastweek'][kpi]['margin'] != 0.0:
|
||||
<span style="color: #888888; display: block; font-size: 12px; line-height: 18px; text-transform: uppercase;">
|
||||
% if data['lastweek'][kpi]['margin'] > 0.0:
|
||||
<span style="color: #0bbc22;">▲</span>${"%.2f" % data['lastweek'][kpi]['margin']} %
|
||||
% endif
|
||||
% if data['lastweek'][kpi]['margin'] < 0.0:
|
||||
<span style="color: #ff0000;">▼</span>${"%.2f" % data['lastweek'][kpi]['margin']} %
|
||||
%endif
|
||||
</span>
|
||||
%endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; margin: 0; padding: 0; border-top: 2px solid #56b3b5;">
|
||||
<table style="width: 100%; max-width: 199px; border-spacing: 0; margin: 0; padding: 0;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; margin: 0; padding: 20; text-align: center;">
|
||||
<span style="color: #56b3b5; font-size: 35px; font-weight: bold; text-decoration: none; line-height: 36px">${data['lastmonth'][kpi][kpi]}</span><br/>
|
||||
<span style="color: #888888; display: inline-block; font-size: 12px; line-height: 18px; text-transform: uppercase;">Last 30 Days</span>
|
||||
% if data['lastmonth'][kpi]['margin'] != 0.0:
|
||||
<span style="color: #888888; display: block; font-size: 12px; line-height: 18px; text-transform: uppercase;">
|
||||
% if data['lastmonth'][kpi]['margin'] > 0.0:
|
||||
<span style="color: #0bbc22;">▲</span>${"%.2f" % data['lastmonth'][kpi]['margin']} %
|
||||
% endif
|
||||
% if data['lastmonth'][kpi]['margin'] < 0.0:
|
||||
<span style="color: #ff0000;">▼</span>${"%.2f" % data['lastmonth'][kpi]['margin']} %
|
||||
%endif
|
||||
</span>
|
||||
%endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
% endfor
|
||||
% if tips:
|
||||
<table style="width: 100%; max-width: 600px; margin-top: 5px; border: 1px solid #e7e7e7;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; background-color: #ffffff; line-height: 21px; padding: 0px 20px;"><br/>
|
||||
<div style="color: #3d466e; line-height: 23px;">${ctx['tip_description']|safe}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
% endif
|
||||
<table style="width: 100%; max-width: 600px; margin-top: 5px; border: 1px solid #e7e7e7;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; background-color: #ffffff; line-height: 21px; padding: 0 20px 10px 20px; text-align: center;"><br/>
|
||||
<div style="color: #3d466e; font-size: 16px; font-weight: 600; line-height: 23px;">Run your business from anywhere with Odoo Mobile.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="text-align: center;"><a href="https://www.odooai.cn" target="_blank"><img src="/digest/static/src/img/google_play.png" style="display: inline-block; height: 30px; margin-left: auto; margin-right: 12px;"/></a><a href="https://www.odooai.cn" target="_blank"><img src="/digest/static/src/img/app_store.png" style="display: inline-block; height: 30px; margin-left: 12px; margin-right: auto;"/></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="margin-top: 5px; border: 1px solid #e7e7e7; font-size: 15px; width: 100%; max-width: 600px;">
|
||||
<tr>
|
||||
<td style="border-collapse: collapse; margin: 0; padding: 10px 20px;">
|
||||
% if user.has_group('base.group_system'):
|
||||
<div style="margin-top: 20px;">
|
||||
Want to customize the email?
|
||||
<a href="/web#view_type=form&model=digest.digest&id=${object.id}" target="_blank" style="color: #875A7B;">Choose the metrics you care about</a>
|
||||
</div>
|
||||
<br />
|
||||
% endif
|
||||
<p style="font-size: 11px; margin-top: 10px;">
|
||||
<strong>
|
||||
Sent by
|
||||
<a href="https://www.odoo.com" style="text-decoration: none; color: #875A7B;">Odoo</a> - <a href="/web#view_type=form&model=digest.digest&id=${object.id}" target="_blank" style="color: #888888;">Unsubscribe</a>
|
||||
</strong>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
]]></field>
|
||||
</record>
|
||||
</odoo>
|
||||
27
app_odoo_customize/data/ir_config_parameter_data.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_system_name', 'odooAi')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_lang', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_debug', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_documentation', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_documentation_dev', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_support', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_account', 'True')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_enterprise', 'False')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_share', 'False')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_show_poweredby', 'False')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_documentation_url', 'https://www.odooai.cn/documentation/16.0/index.html')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_documentation_dev_url', 'https://www.odooai.cn/documentation/16.0/developer.html')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_support_url', 'https://www.odooai.cn/trial')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_account_title', 'My Online Account')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_account_url', 'https://www.odooai.cn/my')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_enterprise_url', 'https://www.odooai.cn')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_name', 'odooai.cn')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_color', '#f0f0f0')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_background_color', 'rgba(255,0,0,.4)')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_navbar_pos_pc', 'top')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_navbar_pos_mobile', 'bottom')"/>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('app_debug_only_admin', 'True')"/>
|
||||
</data>
|
||||
</openerp>
|
||||
64
app_odoo_customize/data/ir_module_module_data.xml
Normal file
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record model="ir.module.module" id="base.module_web_studio">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_timesheet_grid">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_account_accountant">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_helpdesk">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_hr_appraisal">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_marketing_automation">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_mrp_plm">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_quality_control">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_sale_ebay">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_sale_subscription">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_sign">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_stock_barcode">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_voip">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_mrp_workorder">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.module" id="base.module_web_mobile">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
9
app_odoo_customize/data/res_company_data.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- 创建数据库时首个公司信息 -->
|
||||
<record id="base.main_company" model="res.company">
|
||||
<field name="website">https://www.odooai.cn</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
6
app_odoo_customize/data/res_config_settings_data.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<function model="res.config.settings" name="set_module_url"/>
|
||||
</data>
|
||||
</odoo>
|
||||
48
app_odoo_customize/hooks.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Created on 2018-10-12
|
||||
# author: 欧度智能,https://www.odooai.cn
|
||||
# email: 300883@qq.com
|
||||
# resource of odooai
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
# Odoo在线中文用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html
|
||||
|
||||
# Odoo10离线中文用户手册下载
|
||||
# https://www.odooai.cn/odoo10_user_manual_document_offline/
|
||||
# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备)
|
||||
# https://www.odooai.cn/odoo10_developer_document_offline/
|
||||
# description:
|
||||
|
||||
from odoo import api, SUPERUSER_ID, _
|
||||
|
||||
|
||||
def pre_init_hook(env):
|
||||
try:
|
||||
# 更新企业版指向
|
||||
sql = "UPDATE ir_module_module SET website = '%s' WHERE license like '%s' and website <> ''" % ('https://www.odooai.cn', 'OEEL%')
|
||||
env.cr.execute(sql)
|
||||
env.cr.commit()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def post_init_hook(env):
|
||||
# a = check_module_installed(cr, ['app_web_superbar','aaaaa'])
|
||||
pass
|
||||
# cr.execute("")
|
||||
|
||||
def uninstall_hook(env):
|
||||
"""
|
||||
数据初始化,卸载时执行
|
||||
"""
|
||||
pass
|
||||
|
||||
def check_module_installed(env, modules):
|
||||
# modules 输入参数是个 list,如 ['base', 'sale']
|
||||
installed = False
|
||||
m = env['ir.module.module'].sudo().search([('name', 'in', modules), ('state', 'in', ['installed', 'to install', 'to upgrade'])])
|
||||
if len(m) == len(modules):
|
||||
installed = True
|
||||
return installed
|
||||
|
||||
772
app_odoo_customize/i18n/zh_CN.po
Normal file
@@ -0,0 +1,772 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * app_odoo_customize
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20230721\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-24 11:23+0000\n"
|
||||
"PO-Revision-Date: 2023-08-24 11:23+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: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid ""
|
||||
"<span class=\"col-3 col-lg-2 text-left\">\n"
|
||||
"\t\t\t\t\t\t\t\t\tAccounting\n"
|
||||
"\t\t\t\t\t\t\t\t</span>"
|
||||
msgstr ""
|
||||
"<span class=\"col-3 col-lg-2 text-left\">\n"
|
||||
" 财务\n"
|
||||
" </span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">All Business</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">所有业务数据</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Base Models</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">基础数据</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Expense</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">费用</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Inventory</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">库存</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">MRP</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">制造</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">POS</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">POS收银</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Project</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">项目</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Purchase</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">采购</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Quality</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">质检</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Sale</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">销售</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span class=\"col-3 col-lg-2 text-left\">Website And Blog</span>"
|
||||
msgstr "<span class=\"col-3 col-lg-2 text-left\">网站与博客</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.ir_module_addons_path_form_view
|
||||
msgid "<span class=\"o_stat_text\"> Modules </span>"
|
||||
msgstr "<span class=\"o_stat_text\"> 模块 </span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "<span>Set to False to hide</span>"
|
||||
msgstr "<span>设置为 False 则不显示</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Activate Assets Debugging"
|
||||
msgstr "激活开发者模式 (assets)"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Activate the developer mode"
|
||||
msgstr "激活开发者模式"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_module__addons_path
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_view_module_filter
|
||||
msgid "Addons Path"
|
||||
msgstr "模块所在目录"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_module__addons_path_id
|
||||
msgid "Addons Path ID"
|
||||
msgstr "模块路径"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.actions.act_window,name:app_odoo_customize.action_ir_module_addons_path
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_ir_module_addons_path
|
||||
msgid "Addons Paths"
|
||||
msgstr "模块路径"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__module_app_chatgpt
|
||||
msgid "Ai Center"
|
||||
msgstr "Ai服务中心"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields.selection,name:app_odoo_customize.selection__res_config_settings__app_navbar_pos_mobile__bottom
|
||||
#: model:ir.model.fields.selection,name:app_odoo_customize.selection__res_config_settings__app_navbar_pos_pc__bottom
|
||||
msgid "Bottom"
|
||||
msgstr "底部"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_debug_only_admin
|
||||
msgid ""
|
||||
"Check to only Debug / Debug Assets for Odoo Admin. Deny debug from url for "
|
||||
"other user."
|
||||
msgstr "勾选后仅Odoo管理员可操作开发者模式。 拒绝其他用户从URL进入调试模式。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_stop_subscribe
|
||||
msgid "Check to stop subscribe and follow. This to make odoo speed up."
|
||||
msgstr "选中以停止订阅并关注。这是为了让odoo加速。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Clean and reset Account Chart"
|
||||
msgstr "清除会计科目,便于重置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Click to set"
|
||||
msgstr "点击设置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__color
|
||||
msgid "Color"
|
||||
msgstr "颜色"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "配置设置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.replace_copyright_name
|
||||
msgid "Copyright &copy;"
|
||||
msgstr "版权所有 &copy;"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "创建者"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__create_date
|
||||
msgid "Created on"
|
||||
msgstr "创建于"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_enterprise_url
|
||||
msgid "Customize Module Url(eg. Enterprise)"
|
||||
msgstr "自定义模块链接(如企业版)"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Data Cleaning (Be careful to do that!)"
|
||||
msgstr "数据清理(请谨慎操作!)"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_debug_only_admin
|
||||
msgid "Debug for Admin"
|
||||
msgstr "仅系统管理员可调试"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All BOM"
|
||||
msgstr "删除所有物料清单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Expense and Sheet"
|
||||
msgstr "删除所有费用与报销申请"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid ""
|
||||
"Delete All MRP/Sale/Purchase/Account/MRP/Inventory/Project/Message/Workflow"
|
||||
msgstr ""
|
||||
"清除所有业务数据 MRP/Sale/Purchase/Account/MRP/Inventory/Project/Message/Workflow"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Manufacturing Order"
|
||||
msgstr "删除所有生产单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Message"
|
||||
msgstr "删除所有消息"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Move/Picking/Package/Lot"
|
||||
msgstr "删除所有库存调拨/拣货/包装/批次数据"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All POS Order"
|
||||
msgstr "删除所有POS订单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Product"
|
||||
msgstr "删除所有产品及变体"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Product Attribute"
|
||||
msgstr "删除所有产品属性"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Project/Task/Forecast"
|
||||
msgstr "删除所有项目/任务/预测"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Purchase Order and Requisition"
|
||||
msgstr "删除所有询价单、采购单,采购招标"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Quality"
|
||||
msgstr "删除所有质检单据"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Quality Setting"
|
||||
msgstr "删除所有质检设置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Sales Order"
|
||||
msgstr "删除所有报价单、销售单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Voucher/Invoice/Bill"
|
||||
msgstr "删除所有收据/发票/账单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Website/Blog"
|
||||
msgstr "删除所有网站/博客"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Delete All Workflow"
|
||||
msgstr "删除所有工作流"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_documentation_dev_url
|
||||
msgid "Developer Documentation Url"
|
||||
msgstr "开发者手册链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "显示名称"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Documentation"
|
||||
msgstr "支持文档"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_documentation_url
|
||||
msgid "Documentation Url"
|
||||
msgstr "用户手册链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
||||
#, python-format
|
||||
msgid "Edition)"
|
||||
msgstr "版)"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_mail_thread
|
||||
msgid "Email Thread"
|
||||
msgstr "邮件会话"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.actions.act_window,name:app_odoo_customize.action_server_module_multi_get_po
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_module_view_kanban
|
||||
msgid "Export Translation"
|
||||
msgstr "导出翻译"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Extra Feature"
|
||||
msgstr "增强功能"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__module_app_odoo_doc
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Get Help Documentation on current odoo operation or topic."
|
||||
msgstr "获取有关当前 odoo 操作或主题的帮助文档。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid ""
|
||||
"Get Help Documentation on current odoo operation or topic. Click to get"
|
||||
msgstr "获取有关odoo当前操作或主题的帮助文档。点击获取"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_ir_http
|
||||
msgid "HTTP Routing"
|
||||
msgstr "HTTP 路由"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__module_app_odoo_doc
|
||||
msgid "Help Document Anywhere"
|
||||
msgstr "即时查看帮助"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_base_language_install
|
||||
msgid "Install Language"
|
||||
msgstr "安装语言"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "上次修改时间"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "最后更新者"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "最后更新于"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Leave the Developer Tools"
|
||||
msgstr "离开开发者模式"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_module__license
|
||||
msgid "License"
|
||||
msgstr "许可协议"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_demo_data
|
||||
msgid "Load demo data"
|
||||
msgstr "加载演示数据"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_module__local_updatable
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_view_module_filter
|
||||
msgid "Local updatable"
|
||||
msgstr "可本地更新"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_ir_module_module
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__module_ids
|
||||
msgid "Module"
|
||||
msgstr "模块"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_ir_module_addons_path
|
||||
msgid "Module Addons Path"
|
||||
msgstr "模块所在目录"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__module_count
|
||||
msgid "Module Count"
|
||||
msgstr "模块计数"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.ir_module_addons_path_kanban_view
|
||||
msgid "Modules"
|
||||
msgstr "模块"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_account_title
|
||||
msgid "My Odoo.com Account Title"
|
||||
msgstr "我的帐户显示标题"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_account_url
|
||||
msgid "My Odoo.com Account Url"
|
||||
msgstr "我的帐户链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_navbar_pos_mobile
|
||||
msgid "Navbar Mobile"
|
||||
msgstr "导航栏移动"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_navbar_pos_pc
|
||||
msgid "Navbar PC"
|
||||
msgstr "导航栏电脑"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Navigator"
|
||||
msgstr "导航栏"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_view_model_data_search
|
||||
msgid "No Updatable"
|
||||
msgstr "无需更新"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "OEM & Boost"
|
||||
msgstr "定制与增强"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
||||
#, python-format
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo欧度"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__path
|
||||
msgid "Path"
|
||||
msgstr "路径"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__path_temp
|
||||
msgid "Path Temp"
|
||||
msgstr "路径Temp"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Please confirm to delete the select data?"
|
||||
msgstr "您确认要删除指定数据?"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.replace_login
|
||||
msgid ""
|
||||
"Powered by\n"
|
||||
" <span>odooai.cn</span>"
|
||||
msgstr "技术支持 <span>odooai.cn</span>"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Preferences"
|
||||
msgstr "偏好"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Refresh Page"
|
||||
msgstr "刷新本页"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.actions.server,name:app_odoo_customize.action_server_module_multi_refresh_po
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_module_view_kanban
|
||||
msgid "Refresh Translation"
|
||||
msgstr "刷新翻译"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Reset Category And Location Complete Name"
|
||||
msgstr "重置品类及区位显示名"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_ir_cron
|
||||
msgid "Scheduled Actions"
|
||||
msgstr "计划任务"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Security and Boost"
|
||||
msgstr "安全与提速"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.actions.act_window,name:app_odoo_customize.action_app_theme_config
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_theme_config
|
||||
msgid "OEM and Boost"
|
||||
msgstr "odoo定制OEM及增强"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_system_name
|
||||
msgid "Setup System Name,which replace Odoo"
|
||||
msgstr "设定系统名称,代替原 Odoo 字样"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_ir_module_addons_path__name
|
||||
msgid "Short Name"
|
||||
msgstr "简称"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__group_show_author_in_apps
|
||||
#: model:res.groups,name:app_odoo_customize.group_show_author_in_apps
|
||||
msgid "Show Author in Apps Dashboard"
|
||||
msgstr "显示应用的作者-在安装面板中"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_ribbon_name
|
||||
msgid "Show Demo Ribbon"
|
||||
msgstr "显示全站测试标签"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_documentation_dev
|
||||
msgid "Show Developer Documentation"
|
||||
msgstr "显示开发者文档"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_documentation
|
||||
msgid "Show Documentation"
|
||||
msgstr "显示文档"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_enterprise
|
||||
msgid "Show Enterprise Tag"
|
||||
msgstr "显示升级企业版标签提醒"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_account
|
||||
msgid "Show My Account"
|
||||
msgstr "显示我的帐户"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__module_odoo_referral
|
||||
msgid "Show Odoo Referral"
|
||||
msgstr "显示Odoo推荐"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_poweredby
|
||||
msgid "Show Powered by Odoo"
|
||||
msgstr "显示Powered by Odoo"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_debug
|
||||
msgid "Show Quick Debug"
|
||||
msgstr "显示快速调试"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_lang
|
||||
msgid "Show Quick Language Switcher"
|
||||
msgstr "显示快速多语言切换"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:res.groups,name:app_odoo_customize.group_show_quick_upgrade
|
||||
msgid "Show Quick Upgrade in Apps Dashboard"
|
||||
msgstr "在应用面板显示快速升级按键"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_share
|
||||
msgid "Show Share Dashboard"
|
||||
msgstr "显示分享Odoo"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_support
|
||||
msgid "Show Support"
|
||||
msgstr "显示支持"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_stop_subscribe
|
||||
msgid "Stop Odoo Subscribe"
|
||||
msgstr "停止Odoo订阅"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/js/user_menu.js:0
|
||||
#, python-format
|
||||
msgid "Support"
|
||||
msgstr "技术支持"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_support_url
|
||||
msgid "Support Url"
|
||||
msgstr "支持链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_system_name
|
||||
msgid "System Name"
|
||||
msgstr "系统名称"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_ir_config_list
|
||||
msgid "System Parameters"
|
||||
msgstr "系统参数"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-python
|
||||
#: code:addons/app_odoo_customize/models/ir_module_module.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The languages that you selected have been successfully update."
|
||||
" You still need to Upgrade the apps to make it "
|
||||
"worked."
|
||||
msgstr "你选择的翻译语言已更新。但你仍然需要更新相关模块才可生效。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_edit_menu_access_search
|
||||
msgid "Top Menu"
|
||||
msgstr "顶级菜单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields.selection,name:app_odoo_customize.selection__res_config_settings__app_navbar_pos_mobile__top
|
||||
#: model:ir.model.fields.selection,name:app_odoo_customize.selection__res_config_settings__app_navbar_pos_pc__top
|
||||
msgid "Top(Default)"
|
||||
msgstr "顶部(默认)"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "UI Config"
|
||||
msgstr "用户界面配置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__group_show_author_in_apps
|
||||
msgid "Uncheck to Hide Author and Website in Apps Dashboard"
|
||||
msgstr "不选中则会隐藏 App 作者及网站"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_enterprise
|
||||
msgid "Uncheck to hide the Enterprise tag"
|
||||
msgstr "不选中则会隐藏升级到企业版标签"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_share
|
||||
msgid "Uncheck to hide the Odoo Share Dashboard"
|
||||
msgstr "不选中则会隐藏odoo分享"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_poweredby
|
||||
msgid "Uncheck to hide the Powered by text"
|
||||
msgstr "不勾选则不显示Odoo Powered by"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__module_odoo_referral
|
||||
msgid "Uncheck to remove the Odoo Referral"
|
||||
msgstr "不勾选则不显示Odoo推荐"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_module_view_kanban
|
||||
msgid "Uninstall"
|
||||
msgstr "卸载"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.actions.server,name:app_odoo_customize.action_server_module_multi_uninstall
|
||||
msgid "Uninstall Modules"
|
||||
msgstr "卸载应用"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_base_module_update
|
||||
msgid "Update Module"
|
||||
msgstr "更新模块"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.app_module_view_kanban
|
||||
msgid "Upgrade"
|
||||
msgstr "升级"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__module_app_chatgpt
|
||||
msgid "Use Ai to boost you business."
|
||||
msgstr "使用 Ai 促进您的业务发展。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "Use Ai to make odoo more powerful."
|
||||
msgstr "使用 Ai 使odoo更强大好用。"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "User Menu"
|
||||
msgstr "用户菜单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid "User Menu Content"
|
||||
msgstr "菜单项具体操作设置"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
|
||||
msgid ""
|
||||
"Visit our website for more apps and Support.\n"
|
||||
"\t\t\t\t\t\t\t\t\t\t\t\t\thttps://www.odooai.cn"
|
||||
msgstr "请访问我们的网站获取更多支持. http://www.odooai.cn"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model,name:app_odoo_customize.model_web_environment_ribbon_backend
|
||||
msgid "Web Environment Ribbon Backend"
|
||||
msgstr "全站测试标签"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_account
|
||||
msgid "When enable,User can login to your website"
|
||||
msgstr "启用后,会显示登录到你的网站"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_lang
|
||||
msgid "When enable,User can quick switch language in user menu"
|
||||
msgstr "启用后,会显示快速语言切换菜单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_documentation_dev
|
||||
msgid "When enable,User can visit development documentation"
|
||||
msgstr "启用后,会显示开发手册链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_documentation
|
||||
msgid "When enable,User can visit user manual"
|
||||
msgstr "启用后,会显示用户手册链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_support
|
||||
msgid "When enable,User can vist your support site"
|
||||
msgstr "启用后,会显示在线支持链接"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_debug
|
||||
msgid "When enable,everyone login can see the debug menu"
|
||||
msgstr "启用后,会显示快速调试菜单"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_group
|
||||
msgid "odooAi"
|
||||
msgstr "odooAi"
|
||||
|
||||
#. module: app_odoo_customize
|
||||
#. odoo-javascript
|
||||
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
|
||||
#, python-format
|
||||
msgid "odooai.cn"
|
||||
msgstr "odooai.cn"
|
||||
11
app_odoo_customize/models/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import res_config_settings
|
||||
from . import base_language_install
|
||||
from . import ir_module_module
|
||||
from . import web_environment_ribbon_backend
|
||||
from . import ir_http
|
||||
from . import ir_module_addons_path
|
||||
from . import mail_thread
|
||||
# from . import ir_ui_view
|
||||
# from . import ir_ui_menu
|
||||
8
app_odoo_customize/models/base_language_install.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class BaseLanguageInstall(models.TransientModel):
|
||||
_inherit = "base.language.install"
|
||||
38
app_odoo_customize/models/ir_http.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
|
||||
from odoo import models
|
||||
from odoo.http import request
|
||||
|
||||
|
||||
|
||||
class IrHttp(models.AbstractModel):
|
||||
_inherit = 'ir.http'
|
||||
|
||||
def session_info(self):
|
||||
result = super(IrHttp, self).session_info()
|
||||
config_parameter = request.env['ir.config_parameter'].sudo()
|
||||
result['app_system_name'] = config_parameter.get_param('app_system_name', 'odooAi')
|
||||
result['app_documentation_url'] = config_parameter.get_param('app_documentation_url')
|
||||
result['app_documentation_dev_url'] = config_parameter.get_param('app_documentation_dev_url')
|
||||
result['app_support_url'] = config_parameter.get_param('app_support_url')
|
||||
result['app_account_title'] = config_parameter.get_param('app_account_title')
|
||||
result['app_account_url'] = config_parameter.get_param('app_account_url')
|
||||
result['app_show_lang'] = config_parameter.get_param('app_show_lang')
|
||||
result['app_show_debug'] = config_parameter.get_param('app_show_debug')
|
||||
result['app_show_documentation'] = config_parameter.get_param('app_show_documentation')
|
||||
result['app_show_documentation_dev'] = config_parameter.get_param('app_show_documentation_dev')
|
||||
result['app_show_support'] = config_parameter.get_param('app_show_support')
|
||||
result['app_show_account'] = config_parameter.get_param('app_show_account')
|
||||
result['app_show_poweredby'] = config_parameter.get_param('app_show_poweredby')
|
||||
# 增加多语言
|
||||
result['app_lang_list'] = self.env['res.lang'].search_read([], ['id', 'code', 'name'])
|
||||
result['is_erp_manager'] = self.env.user.has_group('base.group_erp_manager')
|
||||
# 增加 bar位置处理
|
||||
result['app_navbar_pos_pc'] = config_parameter.get_param('app_navbar_pos_pc', 'top')
|
||||
result['app_navbar_pos_mobile'] = config_parameter.get_param('app_navbar_pos_mobile', 'top')
|
||||
# 此处直接取,不用 session
|
||||
result['app_debug_only_admin'] = config_parameter.get_param('app_debug_only_admin')
|
||||
result['app_stop_subscribe'] = config_parameter.get_param('app_stop_subscribe')
|
||||
return result
|
||||
41
app_odoo_customize/models/ir_module_addons_path.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import random
|
||||
from odoo import api, fields, models, modules, tools, _
|
||||
|
||||
|
||||
class IrModuleAddonsPath(models.Model):
|
||||
_name = "ir.module.addons.path"
|
||||
_description = 'Module Addons Path'
|
||||
|
||||
def _default_bg_color(self):
|
||||
colors = ['#F06050', '#F4A45F', '#F7CD2E', '#6CC1ED', '#EB7E7F', '#5CC482',
|
||||
'#2c8297', '#D8485E', '#9365B8', '#804967', '#475576', ]
|
||||
res = '#FFFFFF'
|
||||
try:
|
||||
res = random.choice(colors)
|
||||
except:
|
||||
pass
|
||||
return res
|
||||
|
||||
name = fields.Char(string='Short Name')
|
||||
path = fields.Char(string='Path')
|
||||
path_temp = fields.Char(string='Path Temp')
|
||||
color = fields.Char(default=_default_bg_color)
|
||||
module_ids = fields.One2many('ir.module.module', 'addons_path_id')
|
||||
module_count = fields.Integer(compute='_compute_module_count')
|
||||
|
||||
def _compute_module_count(self):
|
||||
for rec in self:
|
||||
rec.module_count = len(rec.module_ids)
|
||||
|
||||
def open_apps_view(self):
|
||||
self.ensure_one()
|
||||
|
||||
return {'type': 'ir.actions.act_window',
|
||||
'name': 'Apps',
|
||||
'view_mode': 'kanban,tree,form',
|
||||
'res_model': 'ir.module.module',
|
||||
'context': {},
|
||||
'domain': [('addons_path_id', '=', self.id)],
|
||||
}
|
||||
84
app_odoo_customize/models/ir_module_module.py
Normal file
@@ -0,0 +1,84 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import api, fields, models, modules, tools, _
|
||||
|
||||
import operator
|
||||
|
||||
|
||||
class IrModule(models.Model):
|
||||
_inherit = 'ir.module.module'
|
||||
|
||||
# attention: Incorrect field names !!
|
||||
# installed_version refers the latest version (the one on disk)
|
||||
# latest_version refers the installed version (the one in database)
|
||||
# published_version refers the version available on the repository
|
||||
# installed_version = fields.Char('Latest Version', compute='_get_latest_version')
|
||||
# latest_version = fields.Char('Installed Version', readonly=True)
|
||||
|
||||
local_updatable = fields.Boolean('Local updatable', compute=False, default=False, store=True)
|
||||
addons_path_id = fields.Many2one('ir.module.addons.path', string='Addons Path ID', readonly=True)
|
||||
addons_path = fields.Char(string='Addons Path', related='addons_path_id.path', readonly=True)
|
||||
license = fields.Char(readonly=True)
|
||||
|
||||
def module_multi_uninstall(self):
|
||||
""" Perform the various steps required to uninstall a module completely
|
||||
including the deletion of all database structures created by the module:
|
||||
tables, columns, constraints, etc.
|
||||
"""
|
||||
modules = self.browse(self.env.context.get('active_ids'))
|
||||
[module.button_immediate_uninstall() for module in modules if module not in ['base', 'web']]
|
||||
|
||||
# 更新翻译,当前语言
|
||||
def module_multi_refresh_po(self):
|
||||
lang = self.env.user.lang
|
||||
modules = self.filtered(lambda r: r.state == 'installed')
|
||||
# 先清理, odoo原生经常清理不干净
|
||||
# odoo 16中,不再使用 ir.translation,直接使用json字段
|
||||
# for rec in modules:
|
||||
# translate = self.env['ir.translation'].search([
|
||||
# ('lang', '=', lang),
|
||||
# ('module', '=', rec.name)
|
||||
# ])
|
||||
# translate.sudo().unlink()
|
||||
# 再重载
|
||||
modules._update_translations(filter_lang=lang, overwrite=True)
|
||||
# odoo 16翻译模式改变,仍需更新模块
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'display_notification',
|
||||
'target': 'new',
|
||||
'params': {
|
||||
'message': _("The languages that you selected have been successfully update.\
|
||||
You still need to Upgrade the apps to make it worked."),
|
||||
'type': 'success',
|
||||
'sticky': False,
|
||||
'next': {'type': 'ir.actions.act_window_close'},
|
||||
}
|
||||
}
|
||||
|
||||
def button_get_po(self):
|
||||
self.ensure_one()
|
||||
action = self.env.ref('app_odoo_customize.action_server_module_multi_get_po').sudo().read()[0]
|
||||
action['context'].update({
|
||||
'default_lang': self.env.user.lang,
|
||||
})
|
||||
return action
|
||||
|
||||
def update_list(self):
|
||||
res = super(IrModule, self).update_list()
|
||||
default_version = modules.adapt_version('1.0')
|
||||
known_mods = self.with_context(lang=None).search([])
|
||||
known_mods_names = {mod.name: mod for mod in known_mods}
|
||||
# 处理可更新字段, 不要compute,会出错
|
||||
for mod_name in modules.get_modules():
|
||||
mod = known_mods_names.get(mod_name)
|
||||
if mod:
|
||||
installed_version = self.get_module_info(mod.name).get('version', default_version)
|
||||
if installed_version and mod.latest_version and operator.gt(installed_version, mod.latest_version):
|
||||
local_updatable = True
|
||||
else:
|
||||
local_updatable = False
|
||||
if mod.local_updatable != local_updatable:
|
||||
mod.write({'local_updatable': local_updatable})
|
||||
|
||||
return res
|
||||
26
app_odoo_customize/models/ir_ui_menu.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from odoo import api, fields, models, tools, _
|
||||
|
||||
MENU_ITEM_SEPARATOR = "/"
|
||||
NUMBER_PARENS = re.compile(r"\(([0-9]+)\)")
|
||||
|
||||
|
||||
class IrUiMenu(models.Model):
|
||||
_inherit = 'ir.ui.menu'
|
||||
|
||||
def _get_full_name(self, level=6):
|
||||
""" Return the full name of ``self`` (up to a certain level). """
|
||||
if level <= 0:
|
||||
return '...'
|
||||
if self.parent_id:
|
||||
try:
|
||||
name = self.parent_id._get_full_name(level - 1) + MENU_ITEM_SEPARATOR + (self.name or "")
|
||||
except Exception:
|
||||
name = self.name or "..."
|
||||
else:
|
||||
name = self.name
|
||||
return name
|
||||
|
||||
17
app_odoo_customize/models/ir_ui_view.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import logging
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class View(models.Model):
|
||||
_inherit = 'ir.ui.view'
|
||||
|
||||
def _render_template(self, template, values=None, engine='ir.qweb'):
|
||||
# if template in ['web.login', 'web.webclient_bootstrap']:
|
||||
if not values:
|
||||
values = {}
|
||||
values["title"] = values["app_title"] = self.env['ir.config_parameter'].sudo().get_param("app_system_name", "odooAi")
|
||||
return super(View, self)._render_template(template, values=values, engine=engine)
|
||||
44
app_odoo_customize/models/mail_thread.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class MailThread(models.AbstractModel):
|
||||
_inherit = "mail.thread"
|
||||
|
||||
def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None):
|
||||
""" 停用订阅功能. """
|
||||
ir_config = self.env['ir.config_parameter']
|
||||
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe', False) == "True" else False
|
||||
if app_stop_subscribe:
|
||||
return True
|
||||
else:
|
||||
return super(MailThread, self).message_subscribe(partner_ids, subtype_ids)
|
||||
|
||||
def _message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, customer_ids=None):
|
||||
""" 停用订阅功能. """
|
||||
ir_config = self.env['ir.config_parameter']
|
||||
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe', False) == "True" else False
|
||||
if app_stop_subscribe:
|
||||
return True
|
||||
else:
|
||||
return super(MailThread, self)._message_subscribe(partner_ids, subtype_ids, customer_ids)
|
||||
|
||||
def _message_auto_subscribe_followers(self, updated_values, default_subtype_ids):
|
||||
""" 停用订阅功能. """
|
||||
ir_config = self.env['ir.config_parameter']
|
||||
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe', False) == "True" else False
|
||||
if app_stop_subscribe:
|
||||
return []
|
||||
else:
|
||||
return super(MailThread, self)._message_auto_subscribe_followers(updated_values, default_subtype_ids)
|
||||
|
||||
def _message_auto_subscribe_notify(self, partner_ids, template):
|
||||
""" 停用订阅功能. """
|
||||
ir_config = self.env['ir.config_parameter']
|
||||
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe', False) == "True" else False
|
||||
if app_stop_subscribe:
|
||||
return True
|
||||
else:
|
||||
return super(MailThread, self)._message_auto_subscribe_notify(partner_ids, template)
|
||||
531
app_odoo_customize/models/res_config_settings.py
Normal file
@@ -0,0 +1,531 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import logging
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
app_system_name = fields.Char('System Name', help="Setup System Name,which replace Odoo",
|
||||
default='odooAi', config_parameter='app_system_name')
|
||||
app_show_lang = fields.Boolean('Show Quick Language Switcher',
|
||||
help="When enable,User can quick switch language in user menu",
|
||||
config_parameter='app_show_lang')
|
||||
app_show_debug = fields.Boolean('Show Quick Debug', help="When enable,everyone login can see the debug menu",
|
||||
config_parameter='app_show_debug')
|
||||
app_show_documentation = fields.Boolean('Show Documentation', help="When enable,User can visit user manual",
|
||||
config_parameter='app_show_documentation')
|
||||
# 停用
|
||||
app_show_documentation_dev = fields.Boolean('Show Developer Documentation',
|
||||
help="When enable,User can visit development documentation")
|
||||
app_show_support = fields.Boolean('Show Support', help="When enable,User can vist your support site",
|
||||
config_parameter='app_show_support')
|
||||
app_show_account = fields.Boolean('Show My Account', help="When enable,User can login to your website",
|
||||
config_parameter='app_show_account')
|
||||
app_show_enterprise = fields.Boolean('Show Enterprise Tag', help="Uncheck to hide the Enterprise tag",
|
||||
config_parameter='app_show_enterprise')
|
||||
app_show_share = fields.Boolean('Show Share Dashboard', help="Uncheck to hide the Odoo Share Dashboard",
|
||||
config_parameter='app_show_share')
|
||||
app_show_poweredby = fields.Boolean('Show Powered by Odoo', help="Uncheck to hide the Powered by text",
|
||||
config_parameter='app_show_poweredby')
|
||||
group_show_author_in_apps = fields.Boolean(string="Show Author in Apps Dashboard", implied_group='app_odoo_customize.group_show_author_in_apps',
|
||||
help="Uncheck to Hide Author and Website in Apps Dashboard")
|
||||
module_odoo_referral = fields.Boolean('Show Odoo Referral', help="Uncheck to remove the Odoo Referral")
|
||||
|
||||
app_documentation_url = fields.Char('Documentation Url', config_parameter='app_documentation_url')
|
||||
app_documentation_dev_url = fields.Char('Developer Documentation Url', config_parameter='app_documentation_dev_url')
|
||||
app_support_url = fields.Char('Support Url', config_parameter='app_support_url')
|
||||
app_account_title = fields.Char('My Odoo.com Account Title', config_parameter='app_account_title')
|
||||
app_account_url = fields.Char('My Odoo.com Account Url', config_parameter='app_account_url')
|
||||
app_enterprise_url = fields.Char('Customize Module Url(eg. Enterprise)', config_parameter='app_enterprise_url')
|
||||
app_ribbon_name = fields.Char('Show Demo Ribbon', config_parameter='app_ribbon_name')
|
||||
app_navbar_pos_pc = fields.Selection(string="Navbar PC", selection=[
|
||||
('top', 'Top(Default)'),
|
||||
('bottom', 'Bottom'),
|
||||
# ('left', 'Left'),
|
||||
], config_parameter='app_navbar_pos_pc')
|
||||
app_navbar_pos_mobile = fields.Selection(string="Navbar Mobile", selection=[
|
||||
('top', 'Top(Default)'),
|
||||
('bottom', 'Bottom'),
|
||||
# ('left', 'Left'),
|
||||
], config_parameter='app_navbar_pos_mobile')
|
||||
|
||||
# 安全与提速
|
||||
app_debug_only_admin = fields.Boolean('Debug for Admin', config_parameter='app_debug_only_admin',
|
||||
help="Check to only Debug / Debug Assets for Odoo Admin. Deny debug from url for other user.")
|
||||
app_stop_subscribe = fields.Boolean('Stop Odoo Subscribe', help="Check to stop subscribe and follow. This to make odoo speed up.",
|
||||
config_parameter='app_stop_subscribe')
|
||||
# 处理额外模块
|
||||
module_app_odoo_doc = fields.Boolean("Help Document Anywhere", help='Get Help Documentation on current odoo operation or topic.')
|
||||
module_app_chatgpt = fields.Boolean("Ai Center", help='Use Ai to boost you business.')
|
||||
|
||||
# 应用帮助文档
|
||||
app_doc_root_url = fields.Char('Help of topic domain', config_parameter='app_doc_root_url', default='https://odooai.cn')
|
||||
|
||||
@api.model
|
||||
def set_module_url(self, rec=None):
|
||||
if not self._app_check_sys_op():
|
||||
raise UserError(_('Not allow.'))
|
||||
config_parameter = self.env['ir.config_parameter'].sudo()
|
||||
app_enterprise_url = config_parameter.get_param('app_enterprise_url', 'https://www.odooai.cn')
|
||||
modules = self.env['ir.module.module'].search([('license', 'like', 'OEEL%'), ('website', '!=', False)])
|
||||
if modules:
|
||||
sql = "UPDATE ir_module_module SET website = '%s' WHERE id IN %s" % (app_enterprise_url, tuple(modules.ids))
|
||||
try:
|
||||
self._cr.execute(sql)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
# 清数据,o=对象, s=序列
|
||||
def _remove_app_data(self, o, s=[]):
|
||||
if not self._app_check_sys_op():
|
||||
raise UserError(_('Not allow.'))
|
||||
for line in o:
|
||||
# 检查是否存在
|
||||
try:
|
||||
if not self.env['ir.model']._get(line):
|
||||
continue
|
||||
except Exception as e:
|
||||
_logger.warning('remove data error get ir.model: %s,%s', line, e)
|
||||
continue
|
||||
obj_name = line
|
||||
obj = self.pool.get(obj_name)
|
||||
if not obj:
|
||||
# 有时安装出错数据乱,没有 obj 但有 table
|
||||
t_name = obj_name.replace('.', '_')
|
||||
else:
|
||||
t_name = obj._table
|
||||
|
||||
sql = "delete from %s" % t_name
|
||||
# 增加多公司处理
|
||||
try:
|
||||
self._cr.execute(sql)
|
||||
self._cr.commit()
|
||||
except Exception as e:
|
||||
_logger.warning('remove data error: %s,%s', line, e)
|
||||
# 更新序号
|
||||
for line in s:
|
||||
domain = ['|', ('code', '=ilike', line + '%'), ('prefix', '=ilike', line + '%')]
|
||||
try:
|
||||
seqs = self.env['ir.sequence'].sudo().search(domain)
|
||||
if seqs.exists():
|
||||
seqs.write({
|
||||
'number_next': 1,
|
||||
})
|
||||
except Exception as e:
|
||||
_logger.warning('reset sequence data error: %s,%s', line, e)
|
||||
return True
|
||||
|
||||
def remove_sales(self):
|
||||
to_removes = [
|
||||
# 清除销售单据
|
||||
'sale.order.line',
|
||||
'sale.order',
|
||||
# 销售提成,自用
|
||||
# 'sale.commission.line',
|
||||
# 不能删除报价单模板
|
||||
'sale.order.template.option',
|
||||
'sale.order.template.line',
|
||||
'sale.order.template',
|
||||
]
|
||||
seqs = [
|
||||
'sale',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_product(self):
|
||||
to_removes = [
|
||||
# 清除产品数据
|
||||
'product.product',
|
||||
'product.template',
|
||||
]
|
||||
seqs = [
|
||||
'product.product',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_product_attribute(self):
|
||||
to_removes = [
|
||||
# 清除产品属性
|
||||
'product.attribute.value',
|
||||
'product.attribute',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_pos(self):
|
||||
to_removes = [
|
||||
# 清除POS单据
|
||||
'pos.payment',
|
||||
'pos.order.line',
|
||||
'pos.order',
|
||||
'pos.session',
|
||||
]
|
||||
seqs = [
|
||||
'pos.',
|
||||
]
|
||||
res = self._remove_app_data(to_removes, seqs)
|
||||
|
||||
# 更新要关帐的值,因为 store=true 的计算字段要重置
|
||||
|
||||
try:
|
||||
statement = self.env['account.bank.statement'].search([])
|
||||
for s in statement:
|
||||
s._end_balance()
|
||||
except Exception as e:
|
||||
_logger.error('reset sequence data error: %s', e)
|
||||
return res
|
||||
|
||||
def remove_purchase(self):
|
||||
to_removes = [
|
||||
# 清除采购单据
|
||||
'purchase.order.line',
|
||||
'purchase.order',
|
||||
'purchase.requisition.line',
|
||||
'purchase.requisition',
|
||||
]
|
||||
seqs = [
|
||||
'purchase.',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_expense(self):
|
||||
to_removes = [
|
||||
# 清除
|
||||
'hr.expense.sheet',
|
||||
'hr.expense',
|
||||
'hr.payslip',
|
||||
'hr.payslip.run',
|
||||
]
|
||||
seqs = [
|
||||
'hr.expense.',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_mrp(self):
|
||||
to_removes = [
|
||||
# 清除生产单据
|
||||
'mrp.workcenter.productivity',
|
||||
'mrp.workorder',
|
||||
# 'mrp.production.workcenter.line',
|
||||
'change.production.qty',
|
||||
'mrp.production',
|
||||
# 'mrp.production.product.line',
|
||||
'mrp.unbuild',
|
||||
'change.production.qty',
|
||||
# 'sale.forecast.indirect',
|
||||
# 'sale.forecast',
|
||||
]
|
||||
seqs = [
|
||||
'mrp.',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_mrp_bom(self):
|
||||
to_removes = [
|
||||
# 清除生产BOM
|
||||
'mrp.bom.line',
|
||||
'mrp.bom',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_inventory(self):
|
||||
to_removes = [
|
||||
# 清除库存单据
|
||||
'stock.quant',
|
||||
'stock.move.line',
|
||||
'stock.package_level',
|
||||
'stock.quantity.history',
|
||||
'stock.quant.package',
|
||||
'stock.move',
|
||||
# 'stock.pack.operation',
|
||||
'stock.picking',
|
||||
'stock.scrap',
|
||||
'stock.picking.batch',
|
||||
'stock.inventory.adjustment.name',
|
||||
'stock.valuation.layer',
|
||||
'stock.lot',
|
||||
# 'stock.fixed.putaway.strat',
|
||||
'procurement.group',
|
||||
]
|
||||
seqs = [
|
||||
'stock.',
|
||||
'picking.',
|
||||
'procurement.group',
|
||||
'product.tracking.default',
|
||||
'WH/',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_account(self):
|
||||
to_removes = [
|
||||
# 清除财务会计单据
|
||||
'payment.transaction',
|
||||
# 'account.voucher.line',
|
||||
# 'account.voucher',
|
||||
# 'account.invoice.line',
|
||||
# 'account.invoice.refund',
|
||||
# 'account.invoice',
|
||||
'account.bank.statement.line',
|
||||
'account.payment',
|
||||
'account.batch.payment',
|
||||
'account.analytic.line',
|
||||
'account.analytic.account',
|
||||
'account.partial.reconcile',
|
||||
'account.move.line',
|
||||
'hr.expense.sheet',
|
||||
'account.move',
|
||||
]
|
||||
res = self._remove_app_data(to_removes, [])
|
||||
|
||||
# extra 更新序号
|
||||
domain = [
|
||||
('company_id', '=', self.env.company.id),
|
||||
'|', ('code', '=ilike', 'account.%'),
|
||||
'|', ('prefix', '=ilike', 'BNK1/%'),
|
||||
'|', ('prefix', '=ilike', 'CSH1/%'),
|
||||
'|', ('prefix', '=ilike', 'INV/%'),
|
||||
'|', ('prefix', '=ilike', 'EXCH/%'),
|
||||
'|', ('prefix', '=ilike', 'MISC/%'),
|
||||
'|', ('prefix', '=ilike', '账单/%'),
|
||||
('prefix', '=ilike', '杂项/%')
|
||||
]
|
||||
try:
|
||||
seqs = self.env['ir.sequence'].search(domain)
|
||||
if seqs.exists():
|
||||
seqs.write({
|
||||
'number_next': 1,
|
||||
})
|
||||
except Exception as e:
|
||||
_logger.error('reset sequence data error: %s,%s', domain, e)
|
||||
return res
|
||||
|
||||
def remove_account_chart(self):
|
||||
company_id = self.env.company.id
|
||||
self = self.with_company(self.env.company)
|
||||
to_removes = [
|
||||
# 清除财务科目,用于重设
|
||||
'res.partner.bank',
|
||||
# 'account.invoice',
|
||||
'account.payment',
|
||||
'account.bank.statement',
|
||||
# 'account.tax.account.tag',
|
||||
'account.tax',
|
||||
# 'wizard_multi_charts_accounts',
|
||||
'account.account',
|
||||
]
|
||||
# todo: 要做 remove_hr,因为工资表会用到 account
|
||||
# 更新account关联,很多是多公司字段,故只存在 ir_property,故在原模型,只能用update
|
||||
try:
|
||||
field1 = self.env['ir.model.fields']._get('product.template', "taxes_id").id
|
||||
field2 = self.env['ir.model.fields']._get('product.template', "supplier_taxes_id").id
|
||||
|
||||
sql = "delete from ir_default where (field_id = %s or field_id = %s) and company_id=%d" \
|
||||
% (field1, field2, company_id)
|
||||
sql2 = "update account_journal set bank_account_id=NULL where company_id=%d;" % company_id
|
||||
self._cr.execute(sql)
|
||||
self._cr.execute(sql2)
|
||||
|
||||
self._cr.commit()
|
||||
except Exception as e:
|
||||
_logger.error('remove data error: %s,%s', 'account_chart: set tax and account_journal', e)
|
||||
|
||||
# 增加对 pos的处理
|
||||
if self.env['ir.model']._get('pos.config'):
|
||||
self.env['pos.config'].write({
|
||||
'journal_id': False,
|
||||
})
|
||||
# todo: 以下处理参考 res.partner的合并,将所有m2o的都一次处理,不需要次次找模型
|
||||
# partner 处理
|
||||
try:
|
||||
rec = self.env['res.partner'].search([])
|
||||
for r in rec:
|
||||
r.write({
|
||||
'property_account_receivable_id': None,
|
||||
'property_account_payable_id': None,
|
||||
})
|
||||
except Exception as e:
|
||||
_logger.error('remove data error: %s,%s', 'account_chart', e)
|
||||
# 品类处理
|
||||
try:
|
||||
rec = self.env['product.category'].search([])
|
||||
for r in rec:
|
||||
r.write({
|
||||
'property_account_income_categ_id': None,
|
||||
'property_account_expense_categ_id': None,
|
||||
'property_account_creditor_price_difference_categ': None,
|
||||
'property_stock_account_input_categ_id': None,
|
||||
'property_stock_account_output_categ_id': None,
|
||||
'property_stock_valuation_account_id': None,
|
||||
})
|
||||
except Exception as e:
|
||||
pass
|
||||
# 产品处理
|
||||
try:
|
||||
rec = self.env['product.template'].search([])
|
||||
for r in rec:
|
||||
r.write({
|
||||
'property_account_income_id': None,
|
||||
'property_account_expense_id': None,
|
||||
})
|
||||
except Exception as e:
|
||||
pass
|
||||
# 库存计价处理
|
||||
try:
|
||||
rec = self.env['stock.location'].search([])
|
||||
for r in rec:
|
||||
r.write({
|
||||
'valuation_in_account_id': None,
|
||||
'valuation_out_account_id': None,
|
||||
})
|
||||
except Exception as e:
|
||||
pass # raise Warning(e)
|
||||
|
||||
try:
|
||||
rec = self.env['account.journal'].search([])
|
||||
rec.write({
|
||||
'default_account_id': False,
|
||||
'suspense_account_id': False
|
||||
})
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
seqs = []
|
||||
|
||||
res = self._remove_app_data(to_removes, seqs)
|
||||
return res
|
||||
|
||||
def remove_project(self):
|
||||
to_removes = [
|
||||
# 清除项目
|
||||
'account.analytic.line',
|
||||
'project.task',
|
||||
# 'project.forecast',
|
||||
'project.update',
|
||||
'project.project',
|
||||
'project.collaborator',
|
||||
'project.milestone',
|
||||
# 'project.project.stage',
|
||||
'project.task.recurrence',
|
||||
# 表名为 project_task_user_rel
|
||||
'project.task.stage.personal',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_quality(self):
|
||||
to_removes = [
|
||||
# 清除质检数据
|
||||
'quality.check',
|
||||
'quality.alert',
|
||||
# 'quality.point',
|
||||
# 'quality.alert.stage',
|
||||
# 'quality.alert.team',
|
||||
# 'quality.point.test_type',
|
||||
# 'quality.reason',
|
||||
# 'quality.tag',
|
||||
]
|
||||
seqs = [
|
||||
'quality.check',
|
||||
'quality.alert',
|
||||
# 'quality.point',
|
||||
]
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_quality_setting(self):
|
||||
to_removes = [
|
||||
# 清除质检设置
|
||||
'quality.point',
|
||||
'quality.alert.stage',
|
||||
'quality.alert.team',
|
||||
'quality.point.test_type',
|
||||
'quality.reason',
|
||||
'quality.tag',
|
||||
]
|
||||
return self._remove_app_data(to_removes)
|
||||
|
||||
def remove_website(self):
|
||||
to_removes = [
|
||||
# 清除网站数据,w, w_blog
|
||||
'blog.tag.category',
|
||||
'blog.tag',
|
||||
'blog.post',
|
||||
'blog.blog',
|
||||
'product.wishlist',
|
||||
'website.published.multi.mixin',
|
||||
'website.published.mixin',
|
||||
'website.multi.mixin',
|
||||
'website.visitor',
|
||||
'website.rewrite',
|
||||
'website.seo.metadata',
|
||||
# 'website.page',
|
||||
# 'website.menu',
|
||||
# 'website',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_message(self):
|
||||
to_removes = [
|
||||
# 清除消息数据
|
||||
'mail.message',
|
||||
'mail.followers',
|
||||
'mail.activity',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_workflow(self):
|
||||
to_removes = [
|
||||
# 清除工作流
|
||||
# 'wkf.workitem',
|
||||
# 'wkf.instance',
|
||||
]
|
||||
seqs = []
|
||||
return self._remove_app_data(to_removes, seqs)
|
||||
|
||||
def remove_all_biz(self):
|
||||
self.remove_account()
|
||||
self.remove_quality()
|
||||
self.remove_inventory()
|
||||
self.remove_purchase()
|
||||
self.remove_mrp()
|
||||
self.remove_sales()
|
||||
self.remove_project()
|
||||
self.remove_pos()
|
||||
self.remove_expense()
|
||||
self.remove_message()
|
||||
return True
|
||||
|
||||
def reset_cat_loc_name(self):
|
||||
ids = self.env['product.category'].search([
|
||||
('parent_id', '!=', False)
|
||||
], order='complete_name')
|
||||
for rec in ids:
|
||||
try:
|
||||
rec._compute_complete_name()
|
||||
except:
|
||||
pass
|
||||
ids = self.env['stock.location'].search([
|
||||
('location_id', '!=', False),
|
||||
('usage', '!=', 'views'),
|
||||
], order='complete_name')
|
||||
for rec in ids:
|
||||
try:
|
||||
rec._compute_complete_name()
|
||||
except:
|
||||
pass
|
||||
return True
|
||||
|
||||
def action_set_app_doc_root_to_my(self):
|
||||
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
||||
self.app_doc_root_url = base_url
|
||||
|
||||
# def action_set_all_to_app_doc_root_url(self):
|
||||
# if self.app_doc_root_url:
|
||||
36
app_odoo_customize/models/web_environment_ribbon_backend.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Copyright 2017 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class WebEnvironmentRibbonBackend(models.AbstractModel):
|
||||
|
||||
_name = "web.environment.ribbon.backend"
|
||||
_description = "Web Environment Ribbon Backend"
|
||||
|
||||
@api.model
|
||||
def _prepare_ribbon_format_vals(self):
|
||||
return {"db_name": self.env.cr.dbname}
|
||||
|
||||
@api.model
|
||||
def _prepare_ribbon_name(self):
|
||||
name_tmpl = self.env["ir.config_parameter"].sudo().get_param("app_ribbon_name") or False
|
||||
vals = self._prepare_ribbon_format_vals()
|
||||
return name_tmpl and name_tmpl.format(**vals) or name_tmpl
|
||||
|
||||
@api.model
|
||||
def get_environment_ribbon(self):
|
||||
"""
|
||||
This method returns the ribbon data from ir config parameters
|
||||
:return: dictionary
|
||||
"""
|
||||
ir_config_model = self.env["ir.config_parameter"]
|
||||
name = self._prepare_ribbon_name()
|
||||
return {
|
||||
"name": name,
|
||||
"color": ir_config_model.sudo().get_param("app_ribbon_color"),
|
||||
"background_color": ir_config_model.sudo().get_param(
|
||||
"app_ribbon_background_color"
|
||||
),
|
||||
}
|
||||
92
app_odoo_customize/readme.md
Normal file
@@ -0,0 +1,92 @@
|
||||
##App Odoo Customize(Debranding Title,Language,Documentation,Quick Debug,Quick Data Clear)
|
||||
============
|
||||
White label odoo.
|
||||
Support Odoo 13,12, 11, 10, 9. Including communicate and enterprise version.
|
||||
You can config odoo, make it look like your own platform.
|
||||
1. Deletes Odoo label in footer
|
||||
2. Replaces "Odoo" in Windows title
|
||||
3. Customize Documentation, Support, About links and title in usermenu
|
||||
4. Adds "Developer mode" link to the top right-hand User Menu.
|
||||
5. Adds Quick Language Switcher to the top right-hand User Menu.
|
||||
6. Adds Country flags to the top right-hand User Menu.
|
||||
7. Adds English and Chinese user documentation access to the top right-hand User Menu.
|
||||
8. Adds developer documentation access to the top right-hand User Menu.
|
||||
9. Customize "My odoo.com account" button
|
||||
10. Standalone setting panel, easy to setup.
|
||||
11. Provide 236 country flags.
|
||||
12. Multi-language Support.
|
||||
13. Change Powered by Odoo in login screen.(Please change '../views/app_odoo_customize_view.xml' #15)
|
||||
14. Quick delete test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Project/Message/Workflow etc.
|
||||
15. Reset All the Sequence to beginning of 1: SO/PO/MO/Invoice...
|
||||
16. Fix odoo reload module translation bug while enable english language
|
||||
17. Stop Odoo Auto Subscribe(Performance Improve)
|
||||
18. Show/Hide Author and Website in Apps Dashboard
|
||||
19. One Click to clear all data (Sometime pls click twice)
|
||||
20. Show quick upgrade in app dashboard, click to show module info not go to odoo.com
|
||||
21. Can clear and reset account chart. Be cautious
|
||||
22. Update online manual and developer document to odoo17
|
||||
23. Add reset or clear website blog data
|
||||
24. Customize Odoo Native Module(eg. Enterprise) Url
|
||||
25. Add remove expense data
|
||||
26. Add multi uninstall modules
|
||||
27. Add odoo boost modules link.
|
||||
|
||||
This module can help to white label the Odoo.
|
||||
Also helpful for training and support for your odoo end-user.
|
||||
The user can get the help document just by one click.
|
||||
|
||||
For more support
|
||||
https://www.odooai.cn
|
||||
|
||||
## 在符合odoo开源协议的前提下,去除odoo版权信息,自定义你的odoo
|
||||
可完全自行设置下列 odoo 选项,让 odoo 看上去像是你的软件产品
|
||||
支持Odoo 13,12, 11, 10, 9 版本,社区版企业版通用
|
||||
|
||||
1. 删除菜单导航页脚的 Odoo 标签
|
||||
2. 将弹出窗口中 "Odoo" 设置为自定义名称
|
||||
3. 自定义用户菜单中的 Documentation, Support, About 的链接
|
||||
4. 在用户菜单中增加快速切换开发模式
|
||||
5. 在用户菜单中增加快速切换多国语言
|
||||
6. 对语言菜单进行美化,设置国旗图标
|
||||
7. 在用户菜单中增加中/英文用户手册,可以不用翻墙加速了
|
||||
8. 在用户菜单中增加开发者手册,含python教程,jquery参考,Jinja2模板,PostgresSQL参考
|
||||
9. 在用户菜单中自定义"My odoo.com account"
|
||||
10. 单独设置面板,每个选项都可以自定义
|
||||
11. 提供236个国家的国旗文件(部份需要自行设置文件名)
|
||||
12. 多语言版本
|
||||
13. 自定义登陆界面中的 Powered by Odoo
|
||||
14. 快速删除测试数据,支持模块包括:销售/POS门店/采购/生产/库存/会计/项目/消息与工作流等.
|
||||
15. 将各类单据的序号重置,从1开始,包括:SO/PO/MO/Invoice 等
|
||||
16. 修复odoo启用英文后模块不显示中文的Bug
|
||||
17. 可停用odoo自动订阅功能,避免“同样对象关注2次”bug,同时提升性能
|
||||
18. 显示/隐藏应用的作者和网站-在应用安装面板中
|
||||
19. 一键清除所有数据(视当前数据情况,有时需点击2次)
|
||||
20. 在应用面板显示快速升级按键,点击时不会导航至 odoo.com
|
||||
21. 清除并重置会计科目表
|
||||
22. 全新升级将odoo12用户及开发手册导航至国内网站,或者自己定义的网站
|
||||
23. 增加清除网站数据功能
|
||||
24. 自定义 odoo 原生模块跳转的url(比如企业版模块)
|
||||
25. 增加删除费用报销数据功能
|
||||
26. 增加批量卸载模块功能
|
||||
27. 增加odoo加速功能
|
||||
|
||||
使用方法:将解压后的 app_odoo_customize 放到 odoo的 addons目录下,激活开发者模式,应用-->更新应用列表,
|
||||
找到 "App odoo Customize"模块,安装即可。
|
||||
|
||||
|
||||
## 其它技术资源:
|
||||
# Odoo12在线用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/12.0/en/index.html
|
||||
|
||||
# Odoo12在线开发者手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/12.0/index.html
|
||||
|
||||
# Odoo10在线中文用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html
|
||||
|
||||
# Odoo10离线中文用户手册下载
|
||||
# https://www.odooai.cn/odoo10_user_manual_document_offline/
|
||||
# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备)
|
||||
# https://www.odooai.cn/odoo10_developer_document_offline/
|
||||
# description:
|
||||
|
||||
3
app_odoo_customize/security/ir.model.access.csv
Normal file
@@ -0,0 +1,3 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_ir_config_parameter_system,ir_config_parameter_system,base.model_ir_config_parameter,base.group_user,1,0,0,0
|
||||
access_ir_module_addons_path_user,ir_module_addons_path_user,app_odoo_customize.model_ir_module_addons_path,base.group_system,1,1,1,1
|
||||
|
19
app_odoo_customize/security/res_groups.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
<record id="group_show_author_in_apps" model="res.groups">
|
||||
<field name="name">Show Author in Apps Dashboard</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
<record id="group_show_quick_upgrade" model="res.groups">
|
||||
<field name="name">Show Quick Upgrade in Apps Dashboard</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
<!--系统设置默认值-->
|
||||
<!--1 默认显示快速升级-->
|
||||
<record id="base.group_user" model="res.groups">
|
||||
<field name="implied_ids"
|
||||
eval="[(4, ref('app_odoo_customize.group_show_quick_upgrade'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
BIN
app_odoo_customize/static/description/app_web_enterprise_03.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
app_odoo_customize/static/description/banner.gif
Normal file
|
After Width: | Height: | Size: 549 KiB |
BIN
app_odoo_customize/static/description/banner.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
app_odoo_customize/static/description/banner_ai.png
Normal file
|
After Width: | Height: | Size: 563 KiB |
BIN
app_odoo_customize/static/description/cnreadme.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
app_odoo_customize/static/description/icon.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
327
app_odoo_customize/static/description/index.html
Normal file
@@ -0,0 +1,327 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
# Copyright (C) 2009~2024 odooAi.cn
|
||||
##############################################################################
|
||||
-->
|
||||
<html>
|
||||
<!-- Modules Title and brief -->
|
||||
|
||||
<!-- begin title-->
|
||||
<section class="oe_container container o_cc o_cc2">
|
||||
<h2 class="text-center bg-warning text-white pt24 pb24">odoo 17 Tweak,Ai Employee,Boost,Customize All in One. </h2>
|
||||
<h3 class="text-center">Customize,UI,Boost,Security,Data,Development Enhance</h3>
|
||||
<h4 class="text-center pt40 text-danger">Also you can follow out github for more odoo app.</h4>
|
||||
<p class="bg-primary"> https://github.com/guohuadeng/app-odoo</p>
|
||||
<p class="text-center"> odoo优化48项大全,oem去Logo,odoo提速与数据清理 </p>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="container app">
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="row">
|
||||
<h2 class="oe_slogan">This is a Long Term Support Apps.Update: v17.24.03.13</h2>
|
||||
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">1. Deletes Odoo label in footer</li>
|
||||
<li class="list-group-item">2. Replaces "Odoo" in Windows title</li>
|
||||
<li class="list-group-item">3. Customize Documentation, Support, About links and title in usermenu</li>
|
||||
<li class="list-group-item">4. Adds "Developer mode" link to the top right-hand User Menu.</li>
|
||||
<li class="list-group-item">5. Adds Quick Language Switcher to the top right-hand User Menu.</li>
|
||||
<li class="list-group-item">6. Adds Country flags to the top right-hand User Menu.</li>
|
||||
<li class="list-group-item">7. Adds English and Chinese user documentation access to the top right-hand User Menu.</li>
|
||||
<li class="list-group-item">8. Adds developer documentation access to the top right-hand User Menu.</li>
|
||||
<li class="list-group-item">9. Customize "My odoo.com account" button</li>
|
||||
<li class="list-group-item">10. Standalone setting panel, easy to setup.</li>
|
||||
<li class="list-group-item">11. Provide 236 country flags.</li>
|
||||
<li class="list-group-item">12. Multi-language Support.</li>
|
||||
<li class="list-group-item">13. Change Powered by Odoo in login screen.(Please change '../views/app_odoo_customize_view.xml' #15)</li>
|
||||
<li class="list-group-item">14. Quick delete test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Project/Base Models.</li>
|
||||
<li class="list-group-item">15. Reset All the Sequence to beginning of 1: SO/PO/MO/Invoice...</li>
|
||||
<li class="list-group-item">16. Fix odoo reload module translation bug while enable english language</li>
|
||||
<li class="list-group-item">17. Stop Odoo Auto Subscribe(Performance Improve)</li>
|
||||
<li class="list-group-item">18. Show/Hide Author and Website in Apps Dashboard (odoo 11 only)</li>
|
||||
<li class="list-group-item">19. One Click to clear all data (Sometime pls click twice)</li>
|
||||
<li class="list-group-item">20. Show quick upgrade in app dashboard, click to show module info not go to odoo.com</li>
|
||||
<li class="list-group-item">21. Can clear and reset account chart. Be cautious.</li>
|
||||
<li class="list-group-item">22. Update online manual and developer document to odoo17.</li>
|
||||
<li class="list-group-item">23. Add reset or clear website blog data</li>
|
||||
<li class="list-group-item">24. Customize Odoo Native Module(eg. Enterprise) Url</li>
|
||||
<li class="list-group-item">25. Add remove expense data</li>
|
||||
<li class="list-group-item">26. Add multi uninstall modules</li>
|
||||
<li class="list-group-item">27. Add odoo boost modules link.</li>
|
||||
<li class="list-group-item">28. Easy Menu manager.</li>
|
||||
<li class="list-group-item">29. Apps version compare. Add Install version in App list. Add Local updatable filter in app list.</li>
|
||||
<li class="list-group-item">30. 1 key export app translate file like .po file.</li>
|
||||
<li class="list-group-item">32. Fix odoo bug of complete name bug of product category and stock location..</li>
|
||||
<li class="list-group-item">33. Add Demo Ribbon Setting.</li>
|
||||
<li class="list-group-item">34. Add Remove all quality data.</li>
|
||||
<li class="list-group-item">35. Fixed for odoo 14.</li>
|
||||
<li class="list-group-item">36. Add refresh translate for multi module.</li>
|
||||
<li class="list-group-item">37. Easy noupdate manage for External Identifiers(xml_id).</li>
|
||||
<li class="list-group-item">38. Add Draggable Dialog enable.</li>
|
||||
<li class="list-group-item">39. Only erp manager can see debug menu.</li>
|
||||
<li class="list-group-item">40. Fix support for enterprise version.</li>
|
||||
<li class="list-group-item">41. Fix odoo bug, when click Preferences menu not hide in mobile.</li>
|
||||
<li class="list-group-item">42. Add menu navbar setup for top or bottom. navigator footer support.</li>
|
||||
<li class="list-group-item">43. Check to only Debug / Debug Assets for Odoo Admin. Deny debug from url for other user.</li>
|
||||
<li class="list-group-item">44. Check to stop subscribe and follow. This to make odoo speed up.</li>
|
||||
<li class="list-group-item">45. Add addons path info to module.</li>
|
||||
<li class="list-group-item">46. Add Help documentation anywhere. easy get help for any odoo operation or action.</li>
|
||||
<li class="list-group-item">47. Add ai robot app integration. Use Ai as your employee.</li>
|
||||
<li class="list-group-item">48. Add menu debug information of action and xml id.</li>
|
||||
</ul>
|
||||
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
|
||||
<p>If you want to change the login page. </p>
|
||||
<p class="mb16">Please modify the file \views\app_odoo_customize_views.xml </p>
|
||||
</div>
|
||||
<p>
|
||||
This module can help to white label the Odoo.
|
||||
Also helpful for training and support for your odoo end-user.<br/>
|
||||
The user can get the help document just by one click.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Help Document Anywhere</h2>
|
||||
<h4 class="oe_slogan">Get Help Documentation on current odoo operation or topic.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp1.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">You can use you company logo for the document with you help document</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp2.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">You can set extra help doc for any addons</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp3.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Must in development mode</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp4.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">New Ai Center Support</h2>
|
||||
<h4 class="oe_slogan">You can install Ai service like chatgpt and google bard and azure openai.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setai1.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Odoo Customize(Debranding Title,Language,Documentation,Quick Debug)</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="banner.gif" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Multi-language support: Chinese ready</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setcn1.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
<img src="setcn2.png" style="border:1px solid black"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style=" argin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%; ">
|
||||
<h2 class='oe_mt32'>How to use: Go to Settings -> odooAi -> Customize Boost Odoo</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set0.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">OEM White label your odoo</h2>
|
||||
<h4 class="oe_slogan">Replaces "Odoo" in Windows title, Deletes Odoo label in footer, Customize all odoo link to my link</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set1.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Mobile Enhance. Add menu navbar setup for top or bottom. navigator footer support.</h2>
|
||||
<h4 class="oe_slogan">Easy set navbar on bottom or top.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setnav.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">odoo SECURITY AND BOOST</h2>
|
||||
<h4 class="oe_slogan">Eonly Debug / Debug Assets for Odoo Admin. Deny debug from url for other user.stop subscribe and follow. This to make odoo speed up.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setboost.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Add quick operation for odoo modules. </h2>
|
||||
<h4 class="oe_slogan">Refresh translate. Upgrade, Uninstall, help on topic</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule1.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Easy mass module operation</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule2.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Easy Export translate follow your language</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule3.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8"> Add Draggable and sizeable Dialog enable.</h2>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setdialog.gif"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Show/Hide Author and Website in Apps Dashboard</h2>
|
||||
</div>
|
||||
<p>Before</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set18-1.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
<p>After uncheck "Show Author in Apps Dashboard"</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set18-2.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Show quick upgrade in app dashboard, click to show module info not go to odoo.com</h2>
|
||||
</div>
|
||||
<p>No more redirect to odoo.com</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set20.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Setup more flags: just rename the flag pic to locale code of the country</h2>
|
||||
<p>You can find the pictures in "\app-odoo\app_odoo_customize\static\src\img\flags"</p>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set2.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Customize Extra enterprise Module Url(eg. Enterprise).</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set21.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Quick Delete test Data.</h2>
|
||||
<p>You can quickly delete all the test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Message/Workflow etc.</p>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set3.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Multi-language Support..</h2>
|
||||
<h4 class="oe_slogan"> </h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="cnreadme.png"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="mt8">
|
||||
Also you can
|
||||
<a href="https://www.odoo.com/apps/modules/browse?author=odooai.cn" target="_blank">
|
||||
get more powerful odoo apps from us.
|
||||
</a>. like [superbar widget]
|
||||
</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<a href="https://www.odoo.com/apps/modules/browse?author=odooai.cn" target="_blank">
|
||||
<img oe_demo oe_screenshot img img-fluid src="https://apps.odoocdn.com/apps/assets/15.0/app_web_superbar/superbar.gif"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
|
||||
<p>This moduld allows user to quickly customize and debranding Odoo. Quick debug, Language Switcher,
|
||||
Online Documentation Access,Quick Data Clear. </p>
|
||||
<p class="mb16">Support odoo 17,16,15,14,13,12,11,10,9. Including community and enterprise version. </p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container oe_dark">
|
||||
<div class="oe_row oe_spaced text-center">
|
||||
<div class="row">
|
||||
<h2 class="oe_slogan">Technical Help & Support</h2>
|
||||
</div>
|
||||
<div class="col-md-12 pad0">
|
||||
<div class="oe_mt16">
|
||||
<p><h4>
|
||||
For any type of technical help & support requests, Feel free to contact us</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:odoo@china.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> odoo@china.com</a>
|
||||
<p><h4>
|
||||
Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:300883@qq.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> 300883@qq.com</a>
|
||||
</div>
|
||||
<div class="oe_mt16">
|
||||
<h4>
|
||||
Visit our website for more support.</h4>
|
||||
<h4>https://www.odooai.cn</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</html>
|
||||
416
app_odoo_customize/static/description/index_cn.html
Normal file
@@ -0,0 +1,416 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
# Copyright (C) 2009~2024 odooAi.cn
|
||||
##############################################################################
|
||||
-->
|
||||
<html>
|
||||
<!-- Modules Title and brief -->
|
||||
|
||||
<!-- begin title-->
|
||||
<section class="oe_container container o_cc o_cc2">
|
||||
<h2 class="text-center bg-warning text-white pt24 pb24">odoo 17 Tweak,Ai Employee,Boost,Customize All in One. </h2>
|
||||
<h3 class="text-center">Customize,UI,Boost,Security,Data,Development Enhance</h3>
|
||||
<h4 class="text-center pt40 text-danger">Also you can follow out github for more odoo app.</h4>
|
||||
<p class="bg-primary"> https://github.com/guohuadeng/app-odoo </p>
|
||||
<p class="text-center"> odoo优化48项大全,oem去Logo,odoo提速与数据清理 </p>
|
||||
</section>
|
||||
|
||||
<section class="container app">
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="row">
|
||||
<h4 class="mt8">
|
||||
如果你使用企业版,请获取我们针对企业版的定制优化模块<br>
|
||||
<a href="https://www.odoo.com/apps/modules/17.0/app_web_enterprise/" target="_blank">
|
||||
从odoo官方应用商店获取 "app_web_enterprise" 应用模块
|
||||
</a>
|
||||
</h4>
|
||||
<h2 class="oe_slogan">这是一个长期更新维护的odoo应用模块</h2>
|
||||
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
|
||||
<h3>Update: v24.03.13</h3>
|
||||
<p>安全优化,避免越权操作</p>
|
||||
<p>47. 增加 Ai 如 ChatGpt 或百度ai的快速安装选项.</p>
|
||||
<p>48. 增加菜单Debug功能.</p>
|
||||
<h3>Update: v16.24.01.11</h3>
|
||||
<p>应用界面升级,整合进odoo通用设置</p>
|
||||
<p>46. 增加快速帮助文档,可以在任意操作中获取相关的 odoo 帮助.</p>
|
||||
<p>45. 为应用模块增加模块路径信息</p>
|
||||
<h3>Update: v16.23.08.15</h3>
|
||||
<p>44. 可配置停用自动用户订阅功能,这会提速odoo,减少资源消耗</p>
|
||||
<p>43. 可设置只允许管理员进入开发者模式,不可在url中直接debut=1来调试</p>
|
||||
<h3>Update: v16.23.07.25</h3>
|
||||
<p>42. 可设置导航栏在上方还是下方,分开桌面与移动端.</p>
|
||||
<h3>Update: v16.23.07.14</h3>
|
||||
<p>41. 修正odoo原生移动端菜单bug,点击个人设置时,原菜单不隐藏等</p>
|
||||
<h3>Update: v16.23.05.04</h3>
|
||||
<p>Fix bug in mobile view in popup menu.</p>
|
||||
<h3>Update: v16.23.02.17</h3>
|
||||
<p>Fix odoo Debug and Debug Assets.</p>
|
||||
<h3>Update: v16.23.02.06</h3>
|
||||
<p>Fix odoo ribbon.</p>
|
||||
<p>Fix odoo translate update.</p>
|
||||
<h3>Update: v16.22.10.21</h3>
|
||||
<p>Add odoo16 support.</p>
|
||||
<h3>Update: v15.21.10.21</h3>
|
||||
<p>odoo15 remove data optimization. Easy and fast remove big data.</p>
|
||||
<h3>Update: v15.22.03.15</h3>
|
||||
<p>Add odoo15 supported.</p>
|
||||
<h3>Update: v13.21.08.04</h3>
|
||||
<p>40. 增强对企业版的支持</p>
|
||||
<p>39. 只有系统管理员可以操作快速debug</p>
|
||||
<p>38. 对话框可拖拽,可缩放,自动大屏优化</p>
|
||||
<p>37. noupdate字段的快速管理,主要针对 xml_id.</p>
|
||||
<h3>Update: v14.21.03.31</h3>
|
||||
<p>Account date reset, and account chart reset support multi company reset.</p>
|
||||
<h3>Update: v14.21.03.03</h3>
|
||||
<p>Fixed odoo Title.</p>
|
||||
<h3>Update: v14.20.12.29</h3>
|
||||
<p>36. 可为多个模块强制更新翻译</p>
|
||||
<h3>Update: v14.20.08.29</h3>
|
||||
<p>35. 优化至odoo14适用</p>
|
||||
<p>34. Add Remove all quality data(for odoo Enterprise)</p>
|
||||
<p>33. Add Demo Ribbon Setting.</p>
|
||||
<p>32. Fix odoo bug of complete name bug of product category and stock location.</p>
|
||||
<h3>Update: v13.20.08.29</h3>
|
||||
<p>36. Add odoo 14 support.</p>
|
||||
<h3>Update: v13.20.04.12</h3>
|
||||
<p>31. Show or hide odoo Referral in the top menu.</p>
|
||||
<h3>Update: v13.20.03.23</h3>
|
||||
<p>30. 1 key export app translate file like .po file.</p>
|
||||
<h3>Update: v13.20.02.25</h3>
|
||||
<p>28. Easy Menu manager.</p>
|
||||
<p>29. Add Install version in App list. Add Local updatable filter in app list.</p>
|
||||
<h3>Update: v13.19.10.19</h3>
|
||||
<p>27. Add Odoo 13 support, all function add</p>
|
||||
<h3>Update: v12.19.04.30</h3>
|
||||
<p>26. Add multi uninstall modules</p>
|
||||
<h3>Update: v12.19.04.18</h3>
|
||||
<p>25. Add remove expense data</p>
|
||||
<h3>Update: v12.19.04.17</h3>
|
||||
<p>Add Customize Odoo Native Module(eg. Enterprise) Url</p>
|
||||
<h3>Update: v12.19.3.15</h3>
|
||||
<p>Add reset or clear website blog data</p>
|
||||
<h3>Update: v12.19.3.12</h3>
|
||||
<p>Optimize chinese translate and document.</p>
|
||||
<p>Fix bug: Data reset.</p>
|
||||
<h3>Update: v12.19.1.20</h3>
|
||||
<p>Fix bug: Save config error.</p>
|
||||
<h3>Update: v12.19.1.05</h3>
|
||||
<p>Fix bug: If you install Muk moudle, odooapp customize would pop error like "attachment_location". Sometime you need to uninstall this app and restart odoo, install again to take affect.</p>
|
||||
<h3>Update: v12.0.12.25</h3>
|
||||
<p>add 22. Update online manual and developer document to odoo17.</p>
|
||||
<h3>Update: v12.0.11.08</h3>
|
||||
<p>Add 21. Reset Account Chart.</p>
|
||||
<h3>Update: v12.0.9.30</h3>
|
||||
<p>Add 20. Show quick upgrade in app dashboard</p>
|
||||
<h3>Update: v12.0.9.25</h3>
|
||||
<p>Now ready for Odoo 13,12, please email to me. guohuadeng@hotmail.com</p>
|
||||
<h3>Update: v12.0.7.23</h3>
|
||||
<p>Fix Login bug when install website.</p>
|
||||
<p>Add 19. One Click to clear all data (Sometime pls click twice)</p>
|
||||
<p>Add 18. Show/Hide Author and Website in Apps Dashboard</p>
|
||||
<h2 class="text-primary">More Powerful addons:</h2>
|
||||
<p class="">
|
||||
<a class="btn btn-block btn-success mt16 mb16" href="http://www.odoo.com/apps/modules/browse?author=odooai.cn">odooai.cn Awesome Odoo
|
||||
Addons</a>
|
||||
</p>
|
||||
<br>
|
||||
<h3>支持odoo 17,16,15,14,13,12, 11, 10, 9 版本,社区版企业版通用</h3>
|
||||
<ul class="list-group">
|
||||
<li class='list-group-item'>1. 删除菜单导航页脚的 Odoo 标签</li>
|
||||
<li class='list-group-item'>2. 将弹出窗口中 "Odoo" 设置为自定义名称</li>
|
||||
<li class='list-group-item'>3. 自定义用户菜单中的 Documentation, Support, About 的链接</li>
|
||||
<li class='list-group-item'>4. 在用户菜单中增加快速切换开发模式</li>
|
||||
<li class='list-group-item'>5. 在用户菜单中增加快速切换多国语言</li>
|
||||
<li class='list-group-item'>6. 对语言菜单进行美化,设置国旗图标</li>
|
||||
<li class='list-group-item'>7. 在用户菜单中增加中/英文用户手册,可以不用翻墙加速了</li>
|
||||
<li class='list-group-item'>8. 在用户菜单中增加开发者手册,含python教程,jquery参考,Jinja2模板,PostgresSQL参考</li>
|
||||
<li class='list-group-item'>9. 在用户菜单中自定义"My odoo.com account"</li>
|
||||
<li class='list-group-item'>10. 单独设置面板,每个选项都可以自定义</li>
|
||||
<li class='list-group-item'>11. 提供236个国家的国旗文件(部份需要自行设置文件名)</li>
|
||||
<li class='list-group-item'>12. 多语言版本</li>
|
||||
<li class='list-group-item'>13. 自定义登陆界面中的 Powered by Odoo</li>
|
||||
<li class='list-group-item'>14. 快速删除测试数据,支持模块包括:销售/POS门店/采购/生产/库存/会计/项目/消息与工作流等.</li>
|
||||
<li class='list-group-item'>15. 将各类单据的序号重置,从1开始,包括:SO/PO/MO/Invoice 等</li>
|
||||
<li class='list-group-item'>16. 修复odoo启用英文后模块不显示中文的Bug</li>
|
||||
<li class='list-group-item'>17. 可停用odoo自动订阅功能,避免“同样对象关注2次”bug,同时提升性能</li>
|
||||
<li class='list-group-item'>18. 显示/隐藏应用的作者和网站-在应用安装面板中</li>
|
||||
<li class='list-group-item'>19. 一键清除所有数据(视当前数据情况,有时需点击2次)</li>
|
||||
<li class='list-group-item'>20. 在应用面板显示快速升级按键,点击时不会导航至 odoo.com</li>
|
||||
<li class='list-group-item'>21. 清除并重置会计科目表</li>
|
||||
<li class='list-group-item'>22. 全新升级将odoo12用户及开发手册导航至国内网站,或者自己定义的网站</li>
|
||||
<li class='list-group-item'>23. 增加清除网站数据功能</li>
|
||||
<li class='list-group-item'>24. 自定义 odoo 原生模块跳转的url(比如企业版模块)</li>
|
||||
<li class='list-group-item'>25. 增加删除费用报销数据功能</li>
|
||||
<li class='list-group-item'>26. 增加批量卸载模块功能</li>
|
||||
<li class='list-group-item'>27. 增加odoo加速功能</li>
|
||||
<li class='list-group-item'>28. 快速管理顶级菜单</li>
|
||||
<li class='list-group-item'>29. App版本比较,快速查看可本地更新的模块</li>
|
||||
<li class='list-group-item'>30. 一键导出翻译文件 po</li>
|
||||
<li class='list-group-item'>31. 显示或去除 odoo 推荐</li>
|
||||
<li class='list-group-item'>32. 增加修复品类及区位名的操作</li>
|
||||
<li class='list-group-item'>33. 增加 Demo 的显示设置</li>
|
||||
<li class='list-group-item'>34. 增加清除质检数据</li>
|
||||
<li class='list-group-item'>35. 优化至odoo14适用</li>
|
||||
<li class='list-group-item'>36. 可为多个模块强制更新翻译</li>
|
||||
<li class='list-group-item'>37. noupdate字段的快速管理,主要针对 xml_id</li>
|
||||
<li class='list-group-item'>38. 对话框可拖拽,可缩放,自动大屏优化</li>
|
||||
<li class='list-group-item'>39. 只有系统管理员可以操作快速debug</li>
|
||||
<li class='list-group-item'>40. 增强对企业版的支持</li>
|
||||
<li class='list-group-item'>41. 修正odoo原生移动端菜单bug,点击个人设置时,原菜单不隐藏等</li>
|
||||
<li class='list-group-item'>42. 可设置导航栏在上方还是下方,分开桌面与移动端.</li>
|
||||
<li class='list-group-item'>43. 可设置只允许管理员进入开发者模式,不可在url中直接debut=1来调试</li>
|
||||
<li class='list-group-item'>44. 可配置停用自动用户订阅功能,这会提速odoo,减少资源消耗</li>
|
||||
<li class='list-group-item'>45. 为应用模块增加模块路径信息</li>
|
||||
<li class='list-group-item'>46. 增加快速帮助文档,可以在任意操作中获取相关的 odoo 帮助.</li>
|
||||
|
||||
</ul>
|
||||
<p>此模块用于 OEM 你的 odoo,增加自己公司的 Logo 相关信息及版权相关信息。
|
||||
<br/>
|
||||
便于快速开发、快速培训、可速查找odoo帮助文档。也可以方便的进行odoo数据清理与重置。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">odoo系统内快速帮助</h2>
|
||||
<h4 class="oe_slogan">增加快速帮助文档,可以在任意操作中获取相关的 odoo 帮助.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp1.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">自动设置文章Logo为公司Logo</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp2.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">可手动设置模块帮助链接</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp3.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">注意必须在开发者模式</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="sethelp4.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Ai服务中心支持</h2>
|
||||
<h4 class="oe_slogan">你可以安装最新的 ChatGPT 或者 微软、谷歌等Ai.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setai1.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Odoo 快速自定义,OEM改造,快速Debug、语言切换等全面增强</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="banner.gif" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>多语言支持,中文已处理</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setcn1.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
<img src="setcn2.png" style="border:1px solid black"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style=" argin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%; ">
|
||||
<h2 class='oe_mt32'>如何使用: 转到 设置 -> odooAi -> 定制与增强</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set0.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">OEM White label your odoo</h2>
|
||||
<h4 class="oe_slogan">Replaces "Odoo" in Windows title, Deletes Odoo label in footer, Customize all odoo link to my link</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set1.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Mobile Enhance. Add menu navbar setup for top or bottom. navigator footer support.</h2>
|
||||
<h4 class="oe_slogan">Easy set navbar on bottom or top.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setnav.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">odoo SECURITY AND BOOST</h2>
|
||||
<h4 class="oe_slogan">Eonly Debug / Debug Assets for Odoo Admin. Deny debug from url for other user.stop subscribe and follow. This to make odoo speed up.</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setboost.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Add quick operation for odoo modules. </h2>
|
||||
<h4 class="oe_slogan">Refresh translate. Upgrade, Uninstall, help on topic</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule1.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Easy mass module operation</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule2.png"/>
|
||||
</div>
|
||||
<h4 class="oe_slogan">Easy Export translate follow your language</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setmodule3.png"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8"> Add Draggable and sizeable Dialog enable.</h2>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="setdialog.gif"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Show/Hide Author and Website in Apps Dashboard</h2>
|
||||
</div>
|
||||
<p>Before</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set18-1.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
<p>After uncheck "Show Author in Apps Dashboard"</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set18-2.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Show quick upgrade in app dashboard, click to show module info not go to odoo.com</h2>
|
||||
</div>
|
||||
<p>No more redirect to odoo.com</p>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set20.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Setup more flags: just rename the flag pic to locale code of the country</h2>
|
||||
<p>You can find the pictures in "\app-odoo\app_odoo_customize\static\src\img\flags"</p>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set2.png" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Customize Extra enterprise Module Url(eg. Enterprise).</h2>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set21.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_row oe_spaced" style="max-width: 95%;">
|
||||
<div class="oe_demo"
|
||||
style="margin: 20px auto; padding: 0 15px 0 0; border:none; border-top:solid 1px #dedede; width: 96%;">
|
||||
<h2 class='oe_mt32'>Quick Delete test Data.</h2>
|
||||
<p>You can quickly delete all the test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Message/Workflow etc.</p>
|
||||
</div>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="set3.jpg" style="border:1px solid black"/>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="bg-warning text-center pt8 pb8">Multi-language Support..</h2>
|
||||
<h4 class="oe_slogan"> </h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="cnreadme.png"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="mt8">
|
||||
Also you can
|
||||
<a href="https://www.odoo.com/apps/modules/browse?author=odooai.cn" target="_blank">
|
||||
get more powerful odoo apps from us.
|
||||
</a>. like [superbar widget]
|
||||
</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<a href="https://www.odoo.com/apps/modules/browse?author=odooai.cn" target="_blank">
|
||||
<img oe_demo oe_screenshot img img-fluid src="https://apps.odoocdn.com/apps/assets/15.0/app_web_superbar/superbar.gif"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
|
||||
<p>This moduld allows user to quickly customize and debranding Odoo. Quick debug, Language Switcher,
|
||||
Online Documentation Access,Quick Data Clear. </p>
|
||||
<p class="mb16">Support Odoo 17,16,15,14,13, 12, 11, 10, 9. Including community and enterprise version. </p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container oe_dark">
|
||||
<div class="oe_row oe_spaced text-center">
|
||||
<div class="row">
|
||||
<h2 class="oe_slogan">Technical Help & Support</h2>
|
||||
</div>
|
||||
<div class="col-md-12 pad0">
|
||||
<div class="oe_mt16">
|
||||
<p><h4>
|
||||
For any type of technical help & support requests, Feel free to contact us</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:odoo@china.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> odoo@china.com</a>
|
||||
<p><h4>
|
||||
Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)</h4></p>
|
||||
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
|
||||
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:300883@qq.com"><span
|
||||
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
|
||||
<i class="fa fa-envelope"></i> 300883@qq.com</a>
|
||||
</div>
|
||||
<div class="oe_mt16">
|
||||
<h4>
|
||||
Visit our website for more support.</h4>
|
||||
<h4>https://www.odooai.cn</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</html>
|
||||
BIN
app_odoo_customize/static/description/set0.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app_odoo_customize/static/description/set1.jpg
Normal file
|
After Width: | Height: | Size: 230 KiB |
BIN
app_odoo_customize/static/description/set18-1.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
app_odoo_customize/static/description/set18-2.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
app_odoo_customize/static/description/set19.jpg
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
app_odoo_customize/static/description/set2.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
app_odoo_customize/static/description/set20.jpg
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
app_odoo_customize/static/description/set21.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
app_odoo_customize/static/description/set3.jpg
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
app_odoo_customize/static/description/setai1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app_odoo_customize/static/description/setboost.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
app_odoo_customize/static/description/setcn1.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
app_odoo_customize/static/description/setcn2.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
app_odoo_customize/static/description/setdialog.gif
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
app_odoo_customize/static/description/sethelp1.png
Normal file
|
After Width: | Height: | Size: 371 KiB |
BIN
app_odoo_customize/static/description/sethelp2.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
app_odoo_customize/static/description/sethelp3.png
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
app_odoo_customize/static/description/sethelp4.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
app_odoo_customize/static/description/setmodule1.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
app_odoo_customize/static/description/setmodule2.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
app_odoo_customize/static/description/setmodule3.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
app_odoo_customize/static/description/setnav.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,53 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { Dropdown } from "@web/core/dropdown/dropdown";
|
||||
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { browser } from "@web/core/browser/browser";
|
||||
import { symmetricalDifference } from "@web/core/utils/arrays";
|
||||
|
||||
import { Component, useState } from "@odoo/owl";
|
||||
|
||||
export class SwitchLangMenu extends Component {
|
||||
setup() {
|
||||
this.LangService = useService("Lang");
|
||||
this.currentLang = this.LangService.currentLang;
|
||||
this.state = useState({ langToSet: [] });
|
||||
}
|
||||
|
||||
setLang(LangId) {
|
||||
this.state.langToSet = symmetricalDifference(this.state.langToSet, [
|
||||
LangId,
|
||||
]);
|
||||
browser.clearTimeout(this.toggleTimer);
|
||||
this.toggleTimer = browser.setTimeout(() => {
|
||||
this.LangService.set2Lang("toggle", ...this.state.langToSet);
|
||||
}, this.constructor.toggleDelay);
|
||||
}
|
||||
|
||||
logIntoLang(LangId) {
|
||||
browser.clearTimeout(this.toggleTimer);
|
||||
this.LangService.set2Lang("loginto", LangId);
|
||||
}
|
||||
|
||||
get selectedCompanies() {
|
||||
return symmetricalDifference(
|
||||
this.LangService.allowedLangIds,
|
||||
this.state.langToSet
|
||||
);
|
||||
}
|
||||
}
|
||||
SwitchLangMenu.template = "web.SwitchLangMenu";
|
||||
SwitchLangMenu.components = { Dropdown, DropdownItem };
|
||||
SwitchLangMenu.toggleDelay = 1000;
|
||||
|
||||
export const systrayItem = {
|
||||
Component: SwitchLangMenu,
|
||||
isDisplayed(env) {
|
||||
const { availableCompanies } = env.services.Lang;
|
||||
return Object.keys(availableCompanies).length > 1;
|
||||
},
|
||||
};
|
||||
|
||||
registry.category("systray").add("SwitchLangMenu", systrayItem, { sequence: 1 });
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<t t-name="web.SwitchLangMenu" owl="1">
|
||||
<Dropdown class="'o_switch_Lang_menu d-none d-md-block'" position="'bottom-end'">
|
||||
<t t-set-slot="toggler">
|
||||
<i class="fa fa-building d-lg-none"/>
|
||||
<span class="oe_topbar_name d-none d-lg-block" t-esc="currentLang.name"/>
|
||||
</t>
|
||||
<t t-foreach="Object.values(LangService.availableCompanies).sort((c1, c2) => c1.sequence - c2.sequence)" t-as="Lang" t-key="Lang.id">
|
||||
<t t-call="web.SwitchLangItem">
|
||||
<t t-set="Lang" t-value="Lang" />
|
||||
</t>
|
||||
</t>
|
||||
</Dropdown>
|
||||
</t>
|
||||
|
||||
|
||||
<t t-name="web.SwitchLangItem" owl="1">
|
||||
<DropdownItem class="'p-0 bg-white'">
|
||||
<t t-set="isLangSelected" t-value="selectedCompanies.includes(Lang.id)"/>
|
||||
<t t-set="isCurrent" t-value="Lang.id === LangService.currentLang.id"/>
|
||||
<div class="d-flex" data-menu="Lang" t-att-data-Lang-id="Lang.id">
|
||||
<div
|
||||
role="menuitemcheckbox"
|
||||
t-att-aria-checked="isLangSelected ? 'true' : 'false'"
|
||||
t-att-aria-label="Lang.name"
|
||||
t-att-title="(isLangSelected ? 'Hide ' : 'Show ') + Lang.name + ' content.'"
|
||||
tabindex="0"
|
||||
class="border-end toggle_Lang"
|
||||
t-attf-class="{{isCurrent ? 'border-primary' : ''}}"
|
||||
t-on-click.stop="() => this.setLang(Lang.id)">
|
||||
|
||||
<span class="btn btn-light border-0 p-2">
|
||||
<i class="fa fa-fw py-2" t-att-class="isLangSelected ? 'fa-check-square text-primary' : 'fa-square-o'"/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
role="button"
|
||||
t-att-aria-pressed="isCurrent ? 'true' : 'false'"
|
||||
t-att-aria-label="'Switch to ' + Lang.name "
|
||||
t-att-title="'Switch to ' + Lang.name "
|
||||
tabindex="0"
|
||||
class="d-flex flex-grow-1 align-items-center py-0 log_into ps-2"
|
||||
t-att-class="isCurrent ? 'alert-primary ms-1 me-2' : 'btn btn-light fw-normal border-0'"
|
||||
t-on-click="() => this.logIntoLang(Lang.id)">
|
||||
|
||||
<span
|
||||
class='Lang_label pe-3'
|
||||
t-att-class="isCurrent ? 'text-900 fw-bold' : 'ms-1'">
|
||||
<t t-esc="Lang.name"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</DropdownItem>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
BIN
app_odoo_customize/static/src/img/flags/ar_SY.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
app_odoo_customize/static/src/img/flags/bg.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app_odoo_customize/static/src/img/flags/bs_BA.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app_odoo_customize/static/src/img/flags/de_DE.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app_odoo_customize/static/src/img/flags/en_AU.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app_odoo_customize/static/src/img/flags/en_GB.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
app_odoo_customize/static/src/img/flags/en_US.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_AR.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_BO.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_CL.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_CO.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_CR.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_DO.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_EC.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_ES.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_GT.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_MX.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_UY.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app_odoo_customize/static/src/img/flags/es_VE.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_afghanistan.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_algeria.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_american_samoa.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_andorra.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_angola.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_anguilla.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 21 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_armenia.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_aruba.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_austria.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_azerbaijan.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_bahamas.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_bahrain.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_bangladesh.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_barbados.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_belarus.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_belgium.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_belize.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_benin.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_bermuda.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_bhutan.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_botswana.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 34 KiB |
BIN
app_odoo_customize/static/src/img/flags/flag_brunei.png
Normal file
|
After Width: | Height: | Size: 28 KiB |