init app-odoo 15 from 13

This commit is contained in:
ivan deng
2021-10-01 18:54:20 +08:00
parent e346c360a2
commit 990e5a557b
291 changed files with 3014 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
# -*- coding: utf-8 -*-
from . import models
from . import hooks
from .hooks import pre_init_hook
from .hooks import post_init_hook

View File

@@ -0,0 +1,172 @@
# -*- coding: utf-8 -*-
# Created on 2018-11-26
# author: 广州尚鹏https://www.sunpop.cn
# email: 300883@qq.com
# resource of Sunpop
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
# Odoo12在线用户手册长期更新
# https://www.sunpop.cn/documentation/user/12.0/en/index.html
# Odoo12在线开发者手册长期更新
# https://www.sunpop.cn/documentation/12.0/index.html
# Odoo10在线中文用户手册长期更新
# https://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html
# Odoo10离线中文用户手册下载
# https://www.sunpop.cn/odoo10_user_manual_document_offline/
# Odoo10离线开发手册下载-含python教程jquery参考Jinja2模板PostgresSQL参考odoo开发必备
# https://www.sunpop.cn/odoo10_developer_document_offline/
# description:
{
'name': 'odoo 15 Customize OEM(Boost, Data reset)',
'version': '15.21.10.01',
'author': 'Sunpop.cn',
'category': 'Productivity',
'website': 'https://www.sunpop.cn',
'license': 'LGPL-3',
'sequence': 2,
'summary': """
1 click customize odoo, reset data. For quick develop. Set brand, boost, reset data, debug. Language Switcher.
Easy Delete data.reset account chart.
customize my odoo.
""",
'description': """
App Customize Odoo (Change Title,Language,Documentation,Quick Debug)
============
White label odoo.
Support Odoo 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 Dialog enable.
39. Only erp manager can see debug menu..
40. Fix support for enterprise version.
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 选项,让 odoo 看上去像是你的软件产品
支持Odoo 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
""",
'images': ['static/description/banner.gif'],
'depends': [
'base_setup',
'web',
'mail',
'iap',
# '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_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',
],
'qweb': [
'static/src/xml/*.xml',
],
'demo': [],
'test': [],
'css': [],
'js': [],
# 'pre_init_hook': 'pre_init_hook',
# 'post_init_hook': 'post_init_hook',
'installable': True,
'application': True,
'auto_install': True,
}

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.sunpop.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.sunpop.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,24 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<function model="ir.config_parameter" name="set_param" eval="('app_system_name', 'odooApp13')"/>
<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.sunpop.cn/documentation/user/13.0/zh_CN/index.html')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_documentation_dev_url', 'https://www.sunpop.cn/documentation/13.0/index.html')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_support_url', 'https://www.sunpop.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.sunpop.cn/my-account')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_name', 'Sunpop.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)')"/>
</data>
</openerp>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.module.module" id="base.module_web_studio">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_timesheet_grid">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_account_accountant">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_helpdesk">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_hr_appraisal">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_marketing_automation">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_mrp_plm">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_quality_control">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_sale_ebay">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_sale_subscription">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_sign">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_stock_barcode">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_voip">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_website_calendar">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_mrp_workorder">
<field name="website">https://www.sunpop.cn</field>
</record>
<record model="ir.module.module" id="base.module_web_mobile">
<field name="website">https://www.sunpop.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.sunpop.cn</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
# Created on 2018-10-12
# author: 广州尚鹏https://www.sunpop.cn
# email: 300883@qq.com
# resource of Sunpop
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
# Odoo在线中文用户手册长期更新
# https://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html
# Odoo10离线中文用户手册下载
# https://www.sunpop.cn/odoo10_user_manual_document_offline/
# Odoo10离线开发手册下载-含python教程jquery参考Jinja2模板PostgresSQL参考odoo开发必备
# https://www.sunpop.cn/odoo10_developer_document_offline/
# description:
from odoo import api, SUPERUSER_ID, _
def pre_init_hook(cr):
try:
# 更新企业版指向
sql = "UPDATE ir_module_module SET website = '%s' WHERE license like '%s' and website <> ''" % ('https://www.sunpop.cn', 'OEEL%')
cr.execute(sql)
cr.commit()
except Exception as e:
pass
def post_init_hook(cr, registry):
# a = check_module_installed(cr, ['app_web_superbar','aaaaa'])
pass
# cr.execute("")
def uninstall_hook(cr, registry):
"""
数据初始化,卸载时执行
"""
pass
def check_module_installed(cr, modules):
# modules 输入参数是个 list如 ['base', 'sale']
env = api.Environment(cr, SUPERUSER_ID, {})
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 len(m)

View File

@@ -0,0 +1,535 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * app_odoo_customize
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0+e-20200628\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-02 08:16+0000\n"
"PO-Revision-Date: 2020-11-02 08:16+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
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
#, python-format
msgid "(Sunpop.cn Professional Edition)"
msgstr "(Sunpop.cn 专业版)"
#. 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"
" Accounting <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" groups=\"base.group_multi_company\"/>\n"
" </span>"
msgstr ""
"<span class=\"col-3 col-lg-2 text-left\">\n"
" 财务 <span class=\"fa fa-lg fa-building-o\" title=\"只处理当前公司的数据.\" groups=\"base.group_multi_company\"/>\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.view_app_theme_config_settings
msgid "<span>Set to False to hide</span>"
msgstr "<span>设置为 False 则不显示</span>"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Activate the developer mode"
msgstr "激活开发者模式"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Activate the developer mode (with assets)"
msgstr "激活开发者模式 (assets)"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Apply"
msgstr "应用"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Cancel"
msgstr "取消"
#. 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,name:app_odoo_customize.model_res_config_settings
msgid "Config Settings"
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 "Customize Debrand"
msgstr "定制我的odoo"
#. 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
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Deactivate the developer mode"
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
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Developer Manual"
msgstr "开发者手册"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_web_environment_ribbon_backend__display_name
msgid "Display Name"
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
#: 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:ir.model.fields,field_description:app_odoo_customize.field_web_environment_ribbon_backend__id
msgid "ID"
msgstr ""
#. 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_web_environment_ribbon_backend____last_update
msgid "Last Modified on"
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
msgid "Module"
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_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 <span>odooApp</span>"
msgstr "技术支持 <span>Sunpop.cn</span>"
#. 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.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_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_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
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "System Name"
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,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_terms:ir.ui.view,arch_db:app_odoo_customize.app_module_view_kanban
msgid "Upgrade"
msgstr "升级"
#. 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:ir.model,name:app_odoo_customize.model_ir_ui_view
msgid "View"
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. https://www.sunpop.cn"
msgstr "请访问我们的网站获取更多支持. http://www.sunpop.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_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "White Label Setting"
msgstr "个性化odoo设置"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_group
#, python-format
msgid "odooApp"
msgstr ""
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "odooApp Customize Settings"
msgstr "odooApp 定制化设置"

View File

@@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
from . import res_config_settings
from . import ir_ui_view
from . import base_language_install
from . import ir_module_module
from . import web_environment_ribbon_backend
# from . import ir_ui_menu

View File

@@ -0,0 +1,18 @@
# -*- 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"
def lang_install(self):
self.ensure_one()
if self.overwrite:
self.env.cr.execute("""
delete from ir_translation
where lang=%s
""", (self.lang,))
self.env.cr.commit()
return super(BaseLanguageInstall, self).lang_install()

View File

@@ -0,0 +1,58 @@
# -*- 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='_get_latest_version', compute_sudo=False, default=False, store=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.browse(self.env.context.get('active_ids'))
# 先清理, odoo原生经常清理不干净
for rec in modules:
translate = self.env['ir.translation'].search([
('lang', '=', lang),
('module', '=', rec.name)
])
translate.sudo().unlink()
# 再重载
self.sudo().with_context(overwrite=True)._update_translations(lang)
def button_get_po(self):
self.ensure_one()
action = self.env.ref('app_odoo_customize.action_server_module_multi_get_po').read()[0]
action['context'].update({
'default_lang': self.env.user.lang,
})
return action
@api.depends('name', 'state')
def _get_latest_version(self):
default_version = modules.adapt_version('1.0')
for module in self:
module.installed_version = self.get_module_info(module.name).get('version', default_version)
if module.installed_version and module.latest_version and operator.gt(module.installed_version, module.latest_version):
module.local_updatable = True
else:
module.local_updatable = False

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,18 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_logger = logging.getLogger(__name__)
class View(models.Model):
_inherit = 'ir.ui.view'
@api.model
def render_template(self, template, values=None, engine='ir.qweb'):
if template in ['web.login', 'web.webclient_bootstrap']:
if not values:
values = {}
values["title"] = self.env['ir.config_parameter'].sudo().get_param("app_system_name", "odooApp")
return super(View, self).render_template(template, values=values, engine=engine)

View File

@@ -0,0 +1,541 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_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")
app_show_lang = fields.Boolean('Show Quick Language Switcher',
help="When enable,User can quick switch language in user menu")
app_show_debug = fields.Boolean('Show Quick Debug', help="When enable,everyone login can see the debug menu")
app_show_documentation = fields.Boolean('Show Documentation', help="When enable,User can visit user manual")
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")
app_show_account = fields.Boolean('Show My Account', help="When enable,User can login to your website")
app_show_enterprise = fields.Boolean('Show Enterprise Tag', help="Uncheck to hide the Enterprise tag")
app_show_share = fields.Boolean('Show Share Dashboard', help="Uncheck to hide the Odoo Share Dashboard")
app_show_poweredby = fields.Boolean('Show Powered by Odoo', help="Uncheck to hide the Powered by text")
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')
app_documentation_dev_url = fields.Char('Developer Documentation Url')
app_support_url = fields.Char('Support Url')
app_account_title = fields.Char('My Odoo.com Account Title')
app_account_url = fields.Char('My Odoo.com Account Url')
app_enterprise_url = fields.Char('Customize Module Url(eg. Enterprise)')
app_ribbon_name = fields.Char('Show Demo Ribbon')
@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
ir_config = self.env['ir.config_parameter'].sudo()
app_system_name = ir_config.get_param('app_system_name', default='odooApp')
app_show_lang = True if ir_config.get_param('app_show_lang') == "True" else False
app_show_debug = True if ir_config.get_param('app_show_debug') == "True" else False
app_show_documentation = True if ir_config.get_param('app_show_documentation') == "True" else False
app_show_documentation_dev = True if ir_config.get_param('app_show_documentation_dev') == "True" else False
app_show_support = True if ir_config.get_param('app_show_support') == "True" else False
app_show_account = True if ir_config.get_param('app_show_account') == "True" else False
app_show_enterprise = True if ir_config.get_param('app_show_enterprise') == "True" else False
app_show_share = True if ir_config.get_param('app_show_share') == "True" else False
app_show_poweredby = True if ir_config.get_param('app_show_poweredby') == "True" else False
app_documentation_url = ir_config.get_param('app_documentation_url',
default='https://www.sunpop.cn/documentation/user/12.0/en/index.html')
app_documentation_dev_url = ir_config.get_param('app_documentation_dev_url',
default='https://www.sunpop.cn/documentation/12.0/index.html')
app_support_url = ir_config.get_param('app_support_url', default='https://www.sunpop.cn/trial/')
app_account_title = ir_config.get_param('app_account_title', default='My Online Account')
app_account_url = ir_config.get_param('app_account_url', default='https://www.sunpop.cn/my-account/')
app_enterprise_url = ir_config.get_param('app_enterprise_url', default='https://www.sunpop.cn')
app_ribbon_name = ir_config.get_param('app_ribbon_name', default='*Sunpop.cn')
res.update(
app_system_name=app_system_name,
app_show_lang=app_show_lang,
app_show_debug=app_show_debug,
app_show_documentation=app_show_documentation,
app_show_documentation_dev=app_show_documentation_dev,
app_show_support=app_show_support,
app_show_account=app_show_account,
app_show_enterprise=app_show_enterprise,
app_show_share=app_show_share,
app_show_poweredby=app_show_poweredby,
app_documentation_url=app_documentation_url,
app_documentation_dev_url=app_documentation_dev_url,
app_support_url=app_support_url,
app_account_title=app_account_title,
app_account_url=app_account_url,
app_enterprise_url=app_enterprise_url,
app_ribbon_name=app_ribbon_name
)
return res
def set_values(self):
super(ResConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("app_system_name", self.app_system_name or "")
ir_config.set_param("app_show_lang", self.app_show_lang or "False")
ir_config.set_param("app_show_debug", self.app_show_debug or "False")
ir_config.set_param("app_show_documentation", self.app_show_documentation or "False")
ir_config.set_param("app_show_documentation_dev", self.app_show_documentation_dev or "False")
ir_config.set_param("app_show_support", self.app_show_support or "False")
ir_config.set_param("app_show_account", self.app_show_account or "False")
ir_config.set_param("app_show_enterprise", self.app_show_enterprise or "False")
ir_config.set_param("app_show_share", self.app_show_share or "False")
ir_config.set_param("app_show_poweredby", self.app_show_poweredby or "False")
ir_config.set_param("app_documentation_url",
self.app_documentation_url or "https://www.sunpop.cn/documentation/user/12.0/en/index.html")
ir_config.set_param("app_documentation_dev_url",
self.app_documentation_dev_url or "https://www.sunpop.cn/documentation/12.0/index.html")
ir_config.set_param("app_support_url", self.app_support_url or "https://www.sunpop.cn/trial/")
ir_config.set_param("app_account_title", self.app_account_title or "My Online Account")
ir_config.set_param("app_account_url", self.app_account_url or "https://www.sunpop.cn/my-account/")
ir_config.set_param("app_enterprise_url", self.app_enterprise_url or "https://www.sunpop.cn")
ir_config.set_param("app_ribbon_name", self.app_ribbon_name or "*Sunpop.cn")
def set_module_url(self):
sql = "UPDATE ir_module_module SET website = '%s' WHERE license like '%s' and website <> ''" % (self.app_enterprise_url, 'OEEL%')
try:
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
pass
# 清数据o=对象, s=序列
def remove_app_data(self, o, s=[]):
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'].sudo().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.line',
'stock.inventory',
'stock.valuation.layer',
'stock.production.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.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_context(force_company=company_id, company_id=company_id)
to_removes = [
# 清除财务科目,用于重设
'res.partner.bank',
'account.move.line',
'account.invoice',
'account.payment',
'account.bank.statement',
'account.tax.account.tag',
'account.tax',
'account.account.account.tag',
'wizard_multi_charts_accounts',
'account.journal',
'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)
seqs = []
res = self.remove_app_data(to_removes, seqs)
self.env.company.write({'chart_template_id': False})
return res
def remove_project(self):
to_removes = [
# 清除项目
'account.analytic.line',
'project.task',
'project.forecast',
'project.project',
]
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.redirect',
'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

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 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.
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.sunpop.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.sunpop.cn/documentation/user/12.0/en/index.html
# Odoo12在线开发者手册长期更新
# https://www.sunpop.cn/documentation/12.0/index.html
# Odoo10在线中文用户手册长期更新
# https://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html
# Odoo10离线中文用户手册下载
# https://www.sunpop.cn/odoo10_user_manual_document_offline/
# Odoo10离线开发手册下载-含python教程jquery参考Jinja2模板PostgresSQL参考odoo开发必备
# https://www.sunpop.cn/odoo10_developer_document_offline/
# description:

View File

@@ -0,0 +1,2 @@
"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
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

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: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -0,0 +1,288 @@
<section class="oe_container app">
<div class="oe_row oe_spaced" style="max-width: 95%;">
<div class="oe_span12">
<h2 class="oe_slogan">App Odoo Customize, Odoo Boost</h2>
<h4 class="mt8">
If you are using odoo enterprise.<br>
<a href="https://www.odoo.com/apps/modules/13.0/app_web_enterprise/" target="_blank">
Get "app_web_enterprise" for more customize
</a>
</h4>
<div class="oe_demo oe_screenshot">
<a class="btn btn-block btn-success mt16 mb16" target="_blank" href="https://apps.odoo.com/apps/modules/13.0/app_app_web_enterprise/">
<img src="app_web_enterprise_03.jpg" style="border:1px solid black"/>
</a>
<br/>
</div>
<h4 class="mt8">
You can follow this repo on github. To get the latest update of free odoo app.
<p>https://github.com/guohuadeng/app-odoo</p>
</h4>
<h4 class="mt8">
Also you can
<a href="https://www.odoo.com/apps/modules/browse?author=Sunpop.cn" target="_blank">
get more powerful odoo apps from us.
</a>. like [superbar widget]
</h4>
<div class="oe_demo oe_screenshot">
<a href="https://www.odoo.com/apps/modules/browse?author=Sunpop.cn" target="_blank">
<img oe_demo oe_screenshot src="https://www.odoo.com/apps/modules/13.0/app_web_superbar/banner.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 14,13, 12, 11, 10, 9. Including community and enterprise version. </p>
</div>
<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>
</div>
</div>
</section>
<section class="oe_container app">
<div class="oe_row oe_spaced" style="max-width: 95%;">
<div class="oe_span12">
<h2 class="oe_slogan">This is a Long Term Support Apps.</h2>
<div class="oe_demo" style=" margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;">
<h3>Update: v13.21.08.04</h3>
<p>39. Only erp manager can see debug menu..</p>
<p>38. Add Draggable Dialog enable.</p>
<p>37. Easy noupdate manage for External Identifiers(xml_id).</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 odoo12.</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>
<h1 class="text-primary">More Powerful addons:</h1>
<p class="">
<a class="btn btn-block btn-success mt16 mb16" href="http://www.odoo.com/apps/modules/browse?author=Sunpop.cn">Sunpop.cn Awesome Odoo Addons</a>
</p>
<br>
<h3>Odoo 13, 12, 11, 10 Support. Community and Enterprise version support</h3>
<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 odoo12.</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>
</ul>
<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 class="oe_demo oe_screenshot">
<img src="cnreadme.png" style="border:1px solid black"/>
<br/>
</div>
</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'>Odoo Customize(Debranding Title,Language,Documentation,Quick Debug)</h2>
</div>
<div class="oe_demo oe_screenshot">
<img src="banner.gif" style="border:1px solid black"/>
<br/>
<img src="set3.jpg" 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 src="set11.png" style="border:1px solid black"/>
</br>
<img src="set12.png" style="border:1px solid black"/>
<br/>
</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 -> odooApp Settings</h2>
</div>
<div class="oe_demo oe_screenshot">
<img src="set1.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'>Set System Icon (odoo 10 only)</h2>
</div>
<div class="oe_demo oe_screenshot">
<img src="set19.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/Hide Author and Website in Apps Dashboard</h2>
</div>
<p>Before</p>
<div class="oe_demo oe_screenshot">
<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 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 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 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 Module Url(eg. Enterprise).</h2>
</div>
<div class="oe_demo oe_screenshot">
<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 src="set3.jpg" style="border:1px solid black"/>
<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced text-center">
<div class="oe_span12">
<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:guohuadeng@hotmail.com"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-envelope"></i> guohuadeng@hotmail.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.sunpop.cn</h4>
</div>
</div>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 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: 75 KiB

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: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 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: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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