init app_odoo v12

This commit is contained in:
ivan deng
2018-09-17 13:13:28 +08:00
parent b9ff0c210b
commit 17963fab85
223 changed files with 447 additions and 10032 deletions

View File

@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
import models
from . import models

View File

@@ -15,19 +15,23 @@
# http://www.sunpop.cn/odoo10_developer_document_offline/
# description:
{
'name': 'App Odoo Customize(Backend Debranding Title,Language,Documentation,Quick Debug,Delete clear)',
'version': '10.0.2.4',
'name': 'App Odoo Customize(Backend Debranding Title,Language,Documentation,Quick Debug,Clear Data)',
'version': '11.0.9.12',
'author': 'Sunpop.cn',
'category': 'Productivity',
'website': 'http://www.sunpop.cn',
'license': 'AGPL-3',
'sequence': 2,
'summary': 'Quick customize and debranding your own Odoo. Quick debug, Language Switcher, Online Documentation Access,Delete test data.',
'summary': """
Keyword: odoo debrand, odoo debranding, customize my odoo.
Quick customize and debranding your own Odoo. Quick debug, Language Switcher, Online Documentation Access,Delete test data.
""",
'description': """
App Odoo Customize(Debranding Title,Language,Documentation,Quick Debug)
============
White label odoo.
Support Odoo 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
@@ -42,10 +46,12 @@ You can config odoo, make it look like your own platform.
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/Message/Workflow etc.
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)
This module can help to white label the Odoo.
Also helpful for training and support for your odoo end-user.
@@ -53,12 +59,16 @@ The user can get the help document just by one click.
""",
'images': ['static/description/banner.png'],
'depends': ['web','mail'],
'depends': ['base', 'web', 'mail'],
'data': [
'views/app_odoo_customize_view.xml',
'views/app_theme_config_settings_view.xml',
'views/ir_model_view.xml',
# data
'data/ir_config_parameter.xml',
'data/res_company_data.xml',
'data/res_groups.xml',
'security/ir.model.access.csv',
],
'demo': [],
'test': [
@@ -70,4 +80,3 @@ The user can get the help document just by one click.
'static/src/xml/customize_user_menu.xml',
],
}

View File

@@ -46,7 +46,7 @@
<field name="key">app_stop_subscribe</field>
<field name="value">False</field>
</record>
<record id="app_documentation_url" model="ir.config_parameter">
<field name="key">app_documentation_url</field>
<field name="value">http://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html</field>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- 创建数据库时首个公司信息 -->
<record id="base.main_company" model="res.company">
<field name="website">http://www.sunpop.cn</field>
<field name="logo" type="base64" file="app_odoo_customize/static/src/img/logo_sunpop.png"/>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="0">
<record id="group_show_author_in_apps" model="res.groups">
<field name="name">Show Author and Website in Apps Dashboard</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
</openerp>

View File

@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e-20171107\n"
"Project-Id-Version: Odoo Server 11.0+e-20180313\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-10 11:41+0000\n"
"PO-Revision-Date: 2018-01-10 11:41+0000\n"
"POT-Creation-Date: 2018-03-22 17:49+0000\n"
"PO-Revision-Date: 2018-03-22 17:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -34,6 +34,11 @@ msgstr "激活开发者模式"
msgid "Activate the developer mode (with assets)"
msgstr "激活开发者模式 (assets)"
#. module: app_odoo_customize
#: model:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "All Business"
msgstr "所有业务"
#. module: app_odoo_customize
#: model:ir.model,name:app_odoo_customize.model_app_theme_config_settings
msgid "App Odoo Customize settings"
@@ -57,7 +62,7 @@ msgstr "取消"
#. module: app_odoo_customize
#: model:ir.model.fields,help:app_odoo_customize.field_app_theme_config_settings_app_stop_subscribe
msgid "Check to stop Odoo Subscribe function"
msgstr "Check to stop Odoo Subscribe function"
msgstr "选中可停止odoo内置的用户消息订阅"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings_create_uid
@@ -86,6 +91,11 @@ msgstr "取消激活开发者模式"
msgid "Delete All BOM"
msgstr "删除所有物料清单"
#. module: app_odoo_customize
#: model: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:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Delete All Manufacturing Order"
@@ -116,6 +126,11 @@ msgstr "删除所有产品及变体"
msgid "Delete All Product Attribute"
msgstr "删除所有产品属性"
#. module: app_odoo_customize
#: model: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:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Delete All Purchase Order and Requisition"
@@ -186,12 +201,12 @@ msgstr "显示/隐藏菜单项"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings___last_update
msgid "Last Modified on"
msgstr "最后修改"
msgstr "最后修改时间"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings_write_uid
msgid "Last Updated by"
msgstr "最后更新"
msgstr "最后更新"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings_write_date
@@ -229,9 +244,9 @@ msgid "Please confirm to delete the select data?"
msgstr "确认删除指定数据?"
#. module: app_odoo_customize
#: model:ir.ui.view,arch_db:app_odoo_customize.replace_login
msgid "Powered by <span>odooApp</span>"
msgstr "技术支持 <span>odooApp</span>"
#: model:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Project"
msgstr "项目"
#. module: app_odoo_customize
#: model:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
@@ -248,6 +263,12 @@ msgstr "销售"
msgid "Setup System Name,which replace Odoo"
msgstr "设置系统名称取代Odoo"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings_group_show_author_in_apps
#: model:res.groups,name:app_odoo_customize.group_show_author_in_apps
msgid "Show Author and Website in Apps Dashboard"
msgstr "显示应用的作者和网站-在应用安装面板中"
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_app_theme_config_settings_app_show_documentation_dev
msgid "Show Developer Documentation"
@@ -309,6 +330,11 @@ msgstr "支持链接"
msgid "System Name"
msgstr "系统名称"
#. module: app_odoo_customize
#: model:ir.model.fields,help:app_odoo_customize.field_app_theme_config_settings_group_show_author_in_apps
msgid "Uncheck to Hide Author and Website in Apps Dashboard"
msgstr "Uncheck to Hide Author and Website in Apps Dashboard"
#. module: app_odoo_customize
#: model:ir.model.fields,help:app_odoo_customize.field_app_theme_config_settings_app_show_enterprise
msgid "Uncheck to hide the Enterprise tag"
@@ -379,17 +405,17 @@ msgstr "个性化odoo设置"
msgid "ir.ui.view"
msgstr "ir.ui.view"
#. module: app_odoo_customize
#: model:ir.ui.menu,name:base.menu_app_group
msgid "odooApp"
msgstr "odooApp"
#. 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 "odooApp Customize"
msgstr "odooApp 定制"
#. module: app_odoo_customize
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_group
msgid "odooApp"
msgstr "odooApp"
#. module: app_odoo_customize
#: model:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "odooApp Customize Settings"

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
import ir_ui_view
import app_theme_config_settings
import base_language_install
import mail_thread
from . import app_theme_config_settings
from . import ir_ui_view
from . import base_language_install
# from . import mail_thread

View File

@@ -25,6 +25,8 @@ class AppThemeConfigSettings(models.TransientModel):
app_show_share = fields.Boolean('Show Share Dashboard', help=u"Uncheck to hide the Odoo Share Dashboard")
app_show_poweredby = fields.Boolean('Show Powered by Odoo', help=u"Uncheck to hide the Powered by text")
app_stop_subscribe = fields.Boolean('Stop Odoo Subscribe(Performance Improve)', help=u"Check to stop Odoo Subscribe function")
group_show_author_in_apps = fields.Boolean(string="Show Author and Website in Apps Dashboard", implied_group='app_odoo_customize.group_show_author_in_apps',
help=u"Uncheck to Hide Author and Website in Apps Dashboard")
app_documentation_url = fields.Char('Documentation Url')
app_documentation_dev_url = fields.Char('Developer Documentation Url')
@@ -33,28 +35,28 @@ class AppThemeConfigSettings(models.TransientModel):
app_account_url = fields.Char('My Odoo.com Account Url')
@api.model
def get_default_all(self, fields):
def get_values(self):
ir_config = self.env['ir.config_parameter']
app_system_name = ir_config.get_param('app_system_name', default='odooApp')
app_system_name = ir_config.sudo().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_stop_subscribe = True if ir_config.get_param('app_stop_subscribe') == "True" else False
app_show_lang = True if ir_config.sudo().get_param('app_show_lang') == "True" else False
app_show_debug = True if ir_config.sudo().get_param('app_show_debug') == "True" else False
app_show_documentation = True if ir_config.sudo().get_param('app_show_documentation') == "True" else False
app_show_documentation_dev = True if ir_config.sudo().get_param('app_show_documentation_dev') == "True" else False
app_show_support = True if ir_config.sudo().get_param('app_show_support') == "True" else False
app_show_account = True if ir_config.sudo().get_param('app_show_account') == "True" else False
app_show_enterprise = True if ir_config.sudo().get_param('app_show_enterprise') == "True" else False
app_show_share = True if ir_config.sudo().get_param('app_show_share') == "True" else False
app_show_poweredby = True if ir_config.sudo().get_param('app_show_poweredby') == "True" else False
app_stop_subscribe = True if ir_config.sudo().get_param('app_stop_subscribe') == "True" else False
app_documentation_url = ir_config.get_param('app_documentation_url',
app_documentation_url = ir_config.sudo().get_param('app_documentation_url',
default='http://www.sunpop.cn/documentation/user/10.0/en/index.html')
app_documentation_dev_url = ir_config.get_param('app_documentation_dev_url',
app_documentation_dev_url = ir_config.sudo().get_param('app_documentation_dev_url',
default='http://www.sunpop.cn/documentation/10.0/index.html')
app_support_url = ir_config.get_param('app_support_url', default='http://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='http://www.sunpop.cn/my-account/')
app_support_url = ir_config.sudo().get_param('app_support_url', default='http://www.sunpop.cn/trial/')
app_account_title = ir_config.sudo().get_param('app_account_title', default='My Online Account')
app_account_url = ir_config.sudo().get_param('app_account_url', default='http://www.sunpop.cn/my-account/')
return dict(
app_system_name=app_system_name,
app_show_lang=app_show_lang,
@@ -67,7 +69,7 @@ class AppThemeConfigSettings(models.TransientModel):
app_show_share=app_show_share,
app_show_poweredby=app_show_poweredby,
app_stop_subscribe=app_stop_subscribe,
app_documentation_url=app_documentation_url,
app_documentation_dev_url=app_documentation_dev_url,
app_support_url=app_support_url,
@@ -76,7 +78,7 @@ class AppThemeConfigSettings(models.TransientModel):
)
@api.multi
def set_default_all(self):
def set_values(self):
self.ensure_one()
ir_config = self.env['ir.config_parameter']
ir_config.set_param("app_system_name", self.app_system_name or "")
@@ -90,6 +92,7 @@ class AppThemeConfigSettings(models.TransientModel):
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_stop_subscribe", self.app_stop_subscribe or "False")
# ir_config.set_param("group_show_author_in_apps", self.group_show_author_in_apps or "False")
ir_config.set_param("app_documentation_url",
self.app_documentation_url or "http://www.sunpop.cn/documentation/user/10.0/en/index.html")
@@ -109,10 +112,10 @@ class AppThemeConfigSettings(models.TransientModel):
['sale.order', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
@@ -123,7 +126,7 @@ class AppThemeConfigSettings(models.TransientModel):
})
sql = "update ir_sequence set number_next=1 where code ='sale.order';"
self._cr.execute(sql)
except Exception, e:
except Exception as e:
raise Warning(e)
return True
@@ -134,10 +137,10 @@ class AppThemeConfigSettings(models.TransientModel):
['product.template', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号,针对自动产品编号
@@ -148,8 +151,8 @@ class AppThemeConfigSettings(models.TransientModel):
})
sql = "update ir_sequence set number_next=1 where code ='product.product';"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
def remove_product_attribute(self):
@@ -159,14 +162,14 @@ class AppThemeConfigSettings(models.TransientModel):
['product.attribute', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -177,10 +180,10 @@ class AppThemeConfigSettings(models.TransientModel):
['pos.order', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
@@ -191,8 +194,8 @@ class AppThemeConfigSettings(models.TransientModel):
})
sql = "update ir_sequence set number_next=1 where code ='pos.order';"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -205,10 +208,10 @@ class AppThemeConfigSettings(models.TransientModel):
['purchase.requisition', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
@@ -219,8 +222,8 @@ class AppThemeConfigSettings(models.TransientModel):
})
sql = "update ir_sequence set number_next=1 where code ='purchase.order';"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -230,16 +233,19 @@ class AppThemeConfigSettings(models.TransientModel):
['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', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
@@ -250,8 +256,8 @@ class AppThemeConfigSettings(models.TransientModel):
})
sql = "update ir_sequence set number_next=1 where (code ='mrp.production' or code ='mrp.unbuild');"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -262,14 +268,14 @@ class AppThemeConfigSettings(models.TransientModel):
['mrp.bom', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -279,6 +285,7 @@ class AppThemeConfigSettings(models.TransientModel):
['stock.quant', ],
['stock.quant.package', ],
['stock.quant.move.rel', ],
['stock.move.line', ],
['stock.move', ],
['stock.pack.operation', ],
['stock.picking', ],
@@ -292,10 +299,10 @@ class AppThemeConfigSettings(models.TransientModel):
['procurement.group', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
@@ -333,8 +340,8 @@ class AppThemeConfigSettings(models.TransientModel):
"or prefix ='WH/PICK/'" \
");"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -354,10 +361,10 @@ class AppThemeConfigSettings(models.TransientModel):
['account.move', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
@@ -382,7 +389,7 @@ class AppThemeConfigSettings(models.TransientModel):
seq.write({
'number_next': 1,
})
# todo: 帐单 or BILL/%
# todo: 帐单 or BILL/%
sql = "update ir_sequence set number_next=1 where (" \
"code ='account.reconcile' " \
"or code ='account.payment.customer.invoice' " \
@@ -398,8 +405,29 @@ class AppThemeConfigSettings(models.TransientModel):
"or prefix like '杂项/%'" \
");"
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
def remove_project(self):
to_removes = [
# 清除项目
['account.analytic.line', ],
['project.task', ],
['project.forecast', ],
['project.project', ],
]
try:
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
# 更新序号
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -410,14 +438,14 @@ class AppThemeConfigSettings(models.TransientModel):
['mail.followers', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj and obj._table:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
@@ -428,13 +456,27 @@ class AppThemeConfigSettings(models.TransientModel):
['wkf.instance', ],
]
try:
for line in to_removes :
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table_exist:
if obj and obj._table:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
except Exception, e:
raise Warning(e)
except Exception as e:
pass # raise Warning(e)
return True
@api.multi
def remove_all_biz(self):
try:
self.remove_sales()
self.remove_purchase()
self.remove_account()
self.remove_mrp()
self.remove_inventory()
self.remove_project()
self.remove_message()
except Exception as e:
pass # raise Warning(e)
return True

View File

@@ -14,5 +14,5 @@ class View(models.Model):
if template in ['web.login', 'web.webclient_bootstrap']:
if not values:
values = {}
values["title"] = self.env['ir.config_parameter'].get_param("app_system_name", "odooApp")
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

@@ -12,7 +12,7 @@ class MailThread(models.AbstractModel):
def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, force=True):
""" 停用订阅功能. """
ir_config = self.env['ir.config_parameter']
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe') == "True" else False
app_stop_subscribe = False if ir_config.get_param('app_stop_subscribe') == "True" else False
if app_stop_subscribe:
return
else:
@@ -22,7 +22,7 @@ class MailThread(models.AbstractModel):
def message_auto_subscribe(self, updated_fields, values=None):
""" 停用订阅功能. """
ir_config = self.env['ir.config_parameter']
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe') == "True" else False
app_stop_subscribe = False if ir_config.get_param('app_stop_subscribe') == "True" else False
if app_stop_subscribe:
return
else:
@@ -32,7 +32,7 @@ class MailThread(models.AbstractModel):
def _message_auto_subscribe_notify(self, partner_ids):
""" 停用订阅功能. """
ir_config = self.env['ir.config_parameter']
app_stop_subscribe = True if ir_config.get_param('app_stop_subscribe') == "True" else False
app_stop_subscribe = False if ir_config.get_param('app_stop_subscribe') == "True" else False
if app_stop_subscribe:
return
else:

View File

@@ -1,6 +1,7 @@
##App Odoo Customize(Debranding Title,Language,Documentation,Quick Debug,Quick Data Clear)
============
White label odoo.
White label odoo.
Support Odoo 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
@@ -19,6 +20,8 @@ You can config odoo, make it look like your own platform.
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 (odoo 11 only)
19. Set System Icon (odoo 10 only)
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.
@@ -41,10 +44,12 @@ http://www.sunpop.cn
11. 提供236个国家的国旗文件部份需要自行设置文件名
12. 多语言版本
13. 自定义登陆界面中的 Powered by Odoo
14. 快速删除测试数据,支持模块包括:销售/POS门店/采购/生产/库存/会计/消息与工作流等.
14. 快速删除测试数据,支持模块包括:销售/POS门店/采购/生产/库存/会计/项目/消息与工作流等.
15. 将各类单据的序号重置从1开始包括SO/PO/MO/Invoice 等
16. 修复odoo启用英文后模块不显示中文的Bug
17. 可停用odoo自动订阅功能避免“同样对象关注2次”bug同时提升性能
18. 显示/隐藏应用的作者和网站-在应用安装面板中
19. 一键清除所有数据视当前数据情况有时需点击2次
使用方法:将解压后的 app_odoo_customize 放到 odoo的 addons目录下激活开发者模式应用-->更新应用列表,
找到 "App odoo Customize"模块,安装即可。

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@@ -1,15 +1,19 @@
<section class="oe_container">
<div class="oe_row oe_spaced" style="max-width: 800px;">
<div class="oe_row oe_spaced" style="max-width: 95%;">
<div class="oe_span12">
<h2 class="oe_slogan">App Odoo Customize</h2>
<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>
<h1>More Powerful UI addons:
<a class="btn btn-primary mb16" href="https://www.odoo.com/apps/modules/10.0/app_ui_enhance/">App UI enhance</a>
<h3>Lastest update: v11.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>More Powerful addons:
<a class="btn btn-primary mb16" href="http://www.odoo.com/apps/modules/browse?author=Sunpop.cn">Sunpop.cn Addons</a>
</h1>
<br>
<h3>Lastest update: v10.0.2.4, 2018-02-04</h3>
<h3>Add Odoo 11 Support</h3>
<ul>
<li>1. Deletes Odoo label in footer</li>
<li>2. Replaces "Odoo" in Windows title</li>
@@ -24,10 +28,13 @@
<li>11. Provide 236 country flags.</li>
<li>12. Multi-language Support.</li>
<li>13. Change Powered by Odoo in login screen.(Please change '../views/app_odoo_customize_view.xml' #15)</li>
<li>14. Quick delete test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Base Models.</li>
<li>14. Quick delete test data in Apps: Sales/POS/Purchase/MRP/Inventory/Accounting/Project/Base Models.</li>
<li>15. Reset All the Sequence to beginning of 1: SO/PO/MO/Invoice...</li>
<li>16. Fix odoo reload module translation bug while enable english language</li>
<li>17. Stop Odoo Auto Subscribe(Performance Improve)</li>
<li>18. Show/Hide Author and Website in Apps Dashboard (odoo 11 only)</li>
<li>19. One Click to clear all data (Sometime pls click twice)</li>
<li>20. Set System Icon (odoo 10 only)</li>
</ul>
<p>
This module can help to white label the Odoo.
@@ -44,7 +51,7 @@
</div>
<div class="oe_row oe_spaced" style="max-width: 800px;">
<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>
@@ -67,7 +74,7 @@
</div>
</div>
<div class="oe_row oe_spaced" style="max-width: 800px;">
<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>
@@ -78,7 +85,35 @@
</div>
</div>
<div class="oe_row oe_spaced" style="max-width: 800px;">
<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 and Website 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'>Setup more flags: just rename the flag pic to locale code of the country</h2>
@@ -90,7 +125,7 @@
</div>
</div>
<div class="oe_row oe_spaced" style="max-width: 800px;">
<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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 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: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -1,4 +1,4 @@
odoo.define('app_system_name', function (require) {
odoo.define('app_odoo_customize.app_system_name', function (require) {
"use strict";
var WebClient = require('web.WebClient');

View File

@@ -1,117 +1,164 @@
odoo.define('app_odoo_customize.customize_user_menu', function (require) {
odoo.define('app_odoo_customize.UserMenu', function (require) {
"use strict";
var Model = require('web.Model');
var session = require('web.session');
/**
* This widget is appended by the webclient to the right of the navbar.
* It displays the avatar and the name of the logged user (and optionally the
* db name, in debug mode).
* If clicked, it opens a dropdown allowing the user to perform actions like
* editing its preferences, accessing the documentation, logging out...
*/
var UserMenu = require('web.UserMenu');
var documentation_url;
//避免错误,要再定义
var documentation_url = 'http://www.sunpop.cn';
var documentation_dev_url;
var support_url;
var account_title;
var account_url;
UserMenu.include({
on_menu_debug: function () {
window.location = $.param.querystring(window.location.href, 'debug');
init: function () {
this._super.apply(this, arguments);
var self = this;
var session = this.getSession();
var lang_list = '';
self._rpc({
model: 'res.lang',
method: 'search_read',
domain: [],
fields: ['name', 'code'],
lazy: false,
}).then(function (res) {
_.each(res, function (lang) {
var a = '';
if (lang['code'] === session.user_context.lang) {
a = '<i class="fa fa-check"></i>';
} else {
a = '';
}
lang_list += '<li><a href="#" data-lang-menu="lang" data-lang-id="' + lang['code'] + '"><img class="flag" src="app_odoo_customize/static/src/img/flags/' + lang['code'] + '.png"/>' + lang['name'] + a + '</a></li>';
});
lang_list += '<li class="divider"></li>';
$('switch-lang').replaceWith(lang_list);
})
//取参数
self._rpc({
model: 'ir.config_parameter',
method: 'search_read',
domain: [['key', '=like', 'app_%']],
fields: ['key', 'value'],
lazy: false,
}).then(function (res) {
$.each(res, function (key, val) {
if (val.key == 'app_documentation_url')
documentation_url = val.value;
if (val.key == 'app_documentation_dev_url')
documentation_dev_url = val.value;
if (val.key == 'app_support_url')
support_url = val.value;
if (val.key == 'app_account_title')
account_title = val.value;
if (val.key == 'app_account_url')
account_url = val.value;
// 控制显示
if (val.key == 'app_show_lang' && val.value == "False") {
$('switch-lang').hide();
}
if (session.user_context.uid!=1 || (val.key == 'app_show_debug' && val.value == "False")) {
$('[data-menu="debug"]').parent().hide();
$('[data-menu="debugassets"]').parent().hide();
$('[data-menu="quitdebug"]').parent().hide();
}
if (val.key == 'app_show_documentation' && val.value == "False") {
$('[data-menu="documentation"]').parent().hide();
}
if (val.key == 'app_show_documentation_dev' && val.value == "False") {
$('[data-menu="documentation_dev"]').parent().hide();
}
if (val.key == 'app_show_support' && val.value == "False") {
$('[data-menu="support"]').parent().hide();
}
if (val.key == 'app_show_account' && val.value == "False") {
$('[data-menu="account"]').parent().hide();
}
if (val.key == 'app_account_title' && val.value) {
$('[data-menu="account"]').html(account_title);
}
if (val.key == 'app_show_poweredby' && val.value == "False") {
$('.o_sub_menu_footer').hide();
}
});
})
},
on_menu_debugassets: function () {
window.location = $.param.querystring(window.location.href, 'debug=assets');
/**
* @override
* 由于odoo11 没传ev到事件所以要重载
*/
start: function () {
var self = this;
return this._super.apply(this, arguments).then(function () {
//语言切换特殊处理
self.$el.on('click', 'li a[data-lang-menu]', function (ev) {
ev.preventDefault();
var f = self['_onMenuLang']
f.call(self, $(this));
});
//控制debug显示
var mMode = 'normal';
if (window.location.href.indexOf('debug') != -1)
mMode = 'debug';
if (window.location.href.indexOf('debug=assets') != -1)
mMode = 'assets';
if (mMode == 'normal')
$('[data-menu="quitdebug"]').parent().hide();
if (mMode == 'debug')
$('[data-menu="debug"]').parent().hide();
if (mMode == 'assets')
$('[data-menu="debugassets"]').parent().hide();
});
},
on_menu_quitdebug: function () {
window.location.search = "?";
},
on_menu_documentation: function () {
window.open(documentation_url, '_blank');
},
on_menu_documentation_dev: function () {
window.open(documentation_dev_url, '_blank');
},
on_menu_support: function () {
window.open(support_url, '_blank');
},
on_menu_account: function () {
_onMenuAccount: function () {
window.open(account_url, '_blank');
},
});
_onMenuDocumentation: function () {
window.open(documentation_url, '_blank');
},
_onMenuSupport: function () {
window.open(support_url, '_blank');
},
//增加的方法
_onMenuDebug: function () {
window.location = $.param.querystring(window.location.href, 'debug');
},
_onMenuDebugassets: function () {
window.location = $.param.querystring(window.location.href, 'debug=assets');
},
_onMenuQuitdebug: function () {
window.location.search = "?";
},
_onMenuDocumentation_dev: function () {
window.open(documentation_dev_url, '_blank');
},
_onMenuLang: function (ev) {
var self = this;
var lang = ($(ev).data("lang-id"));
var session = this.getSession();
return this._rpc({
model: 'res.users',
method: 'write',
args: [session.uid, {'lang': lang}],
}).then(function (result) {
self.do_action({
type: 'ir.actions.client',
res_model: 'res.users',
tag: 'reload_context',
target: 'current',
});
});
},
})
$(document).ready(function () {
var self = this;
documentation_url = 'http://www.sunpop.cn/documentation/user/10.0/zh_CN/index.html';
documentation_dev_url = 'http://www.sunpop.cn/documentation/10.0/index.html';
support_url = 'http://www.sunpop.cn/trial';
account_title = 'My Online Account';
account_url = 'http://www.sunpop.cn/my-account';
setTimeout(function () {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_debug']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False")) {
$('[data-menu="debug"]').parent().hide();
$('[data-menu="debugassets"]').parent().hide();
$('[data-menu="quitdebug"]').parent().hide();
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_documentation']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('[data-menu="documentation"]').parent().hide();
else {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_documentation_url']], ['value']]).then(function (res) {
if (res.length >= 1) {
_.each(res, function (item) {
documentation_url = item['value'];
});
}
});
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_documentation_dev']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('[data-menu="documentation_dev"]').parent().hide();
else {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_documentation_dev_url']], ['value']]).then(function (res) {
if (res.length >= 1) {
_.each(res, function (item) {
documentation_dev_url = item['value'];
});
}
});
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_support']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('[data-menu="support"]').parent().hide();
else {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_support_url']], ['value']]).then(function (res) {
if (res.length >= 1) {
_.each(res, function (item) {
support_url = item['value'];
});
}
});
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_account']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('[data-menu="account"]').parent().hide();
else {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_account_title']], ['value']]).then(function (res) {
if (res.length >= 1) {
_.each(res, function (item) {
account_title = item['value'];
});
}
$('[data-menu="account"]').html(account_title);
});
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_account_url']], ['value']]).then(function (res) {
if (res.length >= 1) {
_.each(res, function (item) {
account_url = item['value'];
});
}
});
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_poweredby']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('.o_sub_menu_footer').hide();
});
}, 2500);
});
})
});

View File

@@ -1,49 +0,0 @@
odoo.define('app_odoo_customize.switch_language', function (require) {
"use strict";
var Model = require('web.Model');
var session = require('web.session');
var UserMenu = require('web.UserMenu');
UserMenu.include({
on_menu_lang: function (ev) {
var self = this;
var lang = ($(ev).data("lang-id"));
new Model('res.users').call('write', [[session.uid], {'lang': lang}]).then(function () {
self.do_action({
type: 'ir.actions.client',
res_model: 'res.users',
tag: 'reload_context',
target: 'current'
});
});
return false;
},
});
//
$(document).ready(function () {
var self = this;
var lang_list = '';
setTimeout(function () {
new Model('ir.config_parameter').call('search_read', [[['key', '=', 'app_show_lang']], ['value']]).then(function (show) {
if (show.length >= 1 && (show[0]['value'] == "False"))
$('switch-lang').hide();
else {
new Model('res.lang').call('search_read', [[], ['name', 'code']]).then(function (res) {
_.each(res, function (lang) {
var a = '';
if (lang['code'] === session.user_context.lang) {
a = '<i class="fa fa-check"></i>';
} else {
a = '';
}
lang_list += '<li><a href="#" data-menu="lang" data-lang-id="' + lang['code'] + '"><img class="flag" src="app_odoo_customize/static/src/img/flags/' + lang['code'] + '.png"/>' + lang['name'] + a + '</a></li>';
});
lang_list += '<li class="divider"></li>';
$('switch-lang').replaceWith(lang_list);
});
}
});
}, 2500);
});
});

View File

@@ -3,13 +3,13 @@
<t t-extend="UserMenu">
<t t-jquery=".dropdown-menu" t-operation="prepend">
<switch-lang/>
<li t-if="widget.session.debug != true">
<li>
<a href="#" data-menu="debug">Activate the developer mode</a>
</li>
<li t-if="widget.session.debug != 'assets'">
<li>
<a href="#" data-menu="debugassets">Activate the developer mode (with assets)</a>
</li>
<li t-if="widget.session.debug != false">
<li>
<a href="#" data-menu="quitdebug">Deactivate the developer mode</a>
</li>
<li>

View File

@@ -4,16 +4,15 @@
<template id="switch_language" name="switch_language assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/app_odoo_customize/static/src/css/app.css"/>
<script type="text/javascript" src="/app_odoo_customize/static/src/js/switch_language.js"></script>
<script type="text/javascript" src="/app_odoo_customize/static/src/js/customize_user_menu.js"></script>
<script type="text/javascript" src="/app_odoo_customize/static/src/js/app_window_title.js"/>
<script type="text/javascript" src="/app_odoo_customize/static/src/js/customize_user_menu.js"></script>
</xpath>
</template>
<!-- some odoo version not support, please remove this if you are using odoo9 -->
<template id="replace_login" name="replace_login" inherit_id="web.login_layout">
<xpath expr="//a[@href='https://www.odoo.com']" position="replace">
<a href="https://www.sunpop.cn" target="_blank">Powered by <span>odooApp</span></a>
</xpath>
</template>
<!--<template id="replace_login" name="Login Layout" inherit_id="web.login_layout">-->
<!--<xpath expr="//a[@target='_blank']" position="replace">-->
<!--<a href="https://www.sunpop.cn" target="_blank">Powered by <span>odooApp</span></a>-->
<!--</xpath>-->
<!--</template>-->
</data>
</odoo>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<odoo>
<data>
<record id="view_app_theme_config_settings" model="ir.ui.view">
<field name="name">App Odoo Customize Settings</field>
@@ -60,10 +60,14 @@
<field name="app_show_poweredby"/>
<label for="app_show_poweredby"/>
</div>
<div>
<div invisible="1">
<field name="app_stop_subscribe"/>
<label for="app_stop_subscribe"/>
</div>
<div>
<field name="group_show_author_in_apps"/>
<label for="group_show_author_in_apps"/>
</div>
</div>
</group>
<group string="User Menu Content">
@@ -90,21 +94,21 @@
</group>
<group name="data-clean" string="Data Cleaning (Be careful to do that!)">
<label string="Sales"/>
<div>
<div class="mb4">
<button string="Delete All Sales Order" type="object" name="remove_sales"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="POS"/>
<div>
<div class="mb4">
<button string="Delete All POS Order" type="object" name="remove_pos" confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="Purchase"/>
<div>
<div class="mb4">
<button string="Delete All Purchase Order and Requisition" type="object" name="remove_purchase"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="MRP"/>
<div>
<div class="mb4">
<button string="Delete All Manufacturing Order" type="object" name="remove_mrp"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
|
@@ -112,17 +116,22 @@
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="Inventory"/>
<div>
<div class="mb4">
<button string="Delete All Move/Picking/Package/Lot" type="object" name="remove_inventory"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="Accounting"/>
<div>
<div class="mb4">
<button string="Delete All Voucher/Invoice/Bill" type="object" name="remove_account"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="Project"/>
<div class="mb4">
<button string="Delete All Project/Task/Forecast" type="object" name="remove_project"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="Base Models"/>
<div>
<div class="mb4">
<button string="Delete All Product" type="object" name="remove_product"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
|
@@ -135,6 +144,11 @@
<button string="Delete All Workflow" type="object" name="remove_workflow"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<label string="All Business"/>
<div class="mb4">
<button string="Delete All MRP/Sale/Purchase/Account/MRP/Inventory/Project/Message/Workflow" type="object" name="remove_all_biz"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
</group>
</form>
</field>
@@ -149,16 +163,16 @@
</record>
<menuitem
id="menu_app_group"
id="base.menu_app_group"
name="odooApp"
parent="base.menu_administration"
sequence="1"
groups="base.group_system"/>
<menuitem
id="menu_app_theme_config"
parent="menu_app_group"
parent="base.menu_app_group"
sequence="1"
action="action_app_theme_config"
groups="base.group_system"/>
</data>
</openerp>
</odoo>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Modules -->
<record id="app_module_form" model="ir.ui.view">
<field name="name">app.ir.module.module.form</field>
<field name="model">ir.module.module</field>
<field name="inherit_id" ref="base.module_form" />
<field name="arch" type="xml">
<h3 class="oe_fade" position="attributes">
<attribute name="groups">app_odoo_customize.group_show_author_in_apps</attribute>
</h3>
<field name="website" position="attributes">
<attribute name="groups">app_odoo_customize.group_show_author_in_apps</attribute>
</field>
</field>
</record>
</odoo>