init common and customize

This commit is contained in:
Ivan Office
2024-08-19 18:41:50 +08:00
parent 6f068e6c27
commit 7025bb9611
354 changed files with 14557 additions and 0 deletions

View 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

View 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 帮助.
""",
}

View File

@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# todo: website 有bug oauth
from . import controllers

View 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

View 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&amp;model=digest.digest&amp;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&amp;model=digest.digest&amp;id=${object.id}" target="_blank" style="color: #888888;">Unsubscribe</a>
</strong>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
]]></field>
</record>
</odoo>

View 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>

View 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>

View 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>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<function model="res.config.settings" name="set_module_url"/>
</data>
</odoo>

View 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

View 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 &amp;copy;"
msgstr "版权所有 &amp;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"

View 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

View 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"

View 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

View 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)],
}

View 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

View 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

View 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)

View 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)

View 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:

View 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"
),
}

View 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:

View 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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_ir_config_parameter_system ir_config_parameter_system base.model_ir_config_parameter base.group_user 1 0 0 0
3 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

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View 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>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -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 });

View File

@@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Some files were not shown because too many files have changed in this diff Show More