update common

This commit is contained in:
ivan deng
2020-08-21 15:26:54 +08:00
parent 6f749af1be
commit 2e06ecaf8a
4 changed files with 240 additions and 350 deletions

View File

@@ -23,7 +23,7 @@
{
'name': 'Customize odoo OEM (Boost, My Odoo)',
'version': '13.20.07.25',
'version': '13.20.08.21',
'author': 'Sunpop.cn',
'category': 'Productivity',
'website': 'https://www.sunpop.cn',
@@ -74,6 +74,7 @@
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.
This module can help to white label the Odoo.
Also helpful for training and support for your odoo end-user.
@@ -114,6 +115,7 @@
31. 显示或去除 odoo 推荐
32. 增加修复品类及区位名的操作
33. 增加 Demo 的显示设置
34. 增加清除质检数据
""",
'images': ['static/description/banner.gif'],
'depends': [

View File

@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0+e-20200628\n"
"Project-Id-Version: Odoo Server 13.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-13 08:56+0000\n"
"PO-Revision-Date: 2020-07-13 08:56+0000\n"
"POT-Creation-Date: 2020-08-21 06:23+0000\n"
"PO-Revision-Date: 2020-08-21 06:23+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -17,6 +17,7 @@ msgstr ""
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_common13/app_odoo_customize/static/src/xml/res_config_edition.xml:0
#: code:addons/app_odoo_customize/static/src/xml/res_config_edition.xml:0
#, python-format
msgid "(Sunpop.cn Professional Edition)"
@@ -67,6 +68,11 @@ msgstr "<span class=\"col-3 col-lg-2 text-left\">项目</span>"
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>"
@@ -77,8 +83,14 @@ msgstr "<span class=\"col-3 col-lg-2 text-left\">销售</span>"
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_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Activate the developer mode"
@@ -86,6 +98,7 @@ msgstr "激活开发者模式"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Activate the developer mode (with assets)"
@@ -134,6 +147,7 @@ msgstr "数据清理(请谨慎操作!)"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Deactivate the developer mode"
@@ -196,6 +210,11 @@ msgstr "删除所有项目/任务/预测"
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 Sales Order"
@@ -223,6 +242,7 @@ msgstr "开发者手册链接"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_common13/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#: code:addons/app_odoo_customize/static/src/xml/customize_user_menu.xml:0
#, python-format
msgid "Developer Manual"
@@ -293,7 +313,7 @@ msgstr "您确认要删除指定数据?"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.replace_login
msgid "Powered by <span>odooApp</span>"
msgstr "Powered by <span>Sunpop.cn</span>"
msgstr "技术支持 <span>Sunpop.cn</span>"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
@@ -440,7 +460,7 @@ msgstr "菜单项具体操作设置"
#. module: app_odoo_customize
#: model:ir.model,name:app_odoo_customize.model_ir_ui_view
msgid "View"
msgstr "查看"
msgstr "视图"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
@@ -489,11 +509,12 @@ msgstr "个性化odoo设置"
#. module: app_odoo_customize
#. openerp-web
#: code:addons/app_common13/app_odoo_customize/static/src/xml/res_config_edition.xml:0
#: 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 "odooApp"
msgstr ""
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings

View File

@@ -113,323 +113,219 @@ class ResConfigSettings(models.TransientModel):
except Exception as e:
pass
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', ],
]
# 清数据o=对象, s=序列
def remove_app_data(self, o, s=[]):
try:
for line in to_removes:
obj_name = line[0]
for line in o:
obj_name = line
obj = self.pool.get(obj_name)
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
self._cr.commit()
self._cr.execute(sql)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([('code', 'like', 'sale%')])
for seq in seqs:
seq.write({
for line in s:
domain = [('code', '=ilike', '%s' % line)]
seqs = self.env['ir.sequence'].search(domain)
seqs.write({
'number_next': 1,
})
except Exception as e:
_logger.error('remove data error: %s,%s', 'sale', e)
_logger.error('remove data error: %s,%s', o, 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', ],
'product.product',
'product.template',
]
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)
self._cr.commit()
# 更新序号,针对自动产品编号
seqs = self.env['ir.sequence'].search([('code', '=', 'product.product')])
for seq in seqs:
seq.write({
'number_next': 1,
})
except Exception as e:
_logger.error('remove data error: %s,%s', 'product', e)
return True
seqs = [
'product.product',
]
return self.remove_app_data(to_removes, seqs)
def remove_product_attribute(self):
to_removes = [
# 清除产品属性
['product.attribute.value', ],
['product.attribute', ],
'product.attribute.value',
'product.attribute',
]
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)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'product_attr', e)
return True
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', ],
'pos.payment',
'pos.order.line',
'pos.order',
'pos.session',
]
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)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([('code', 'like', 'pos.%')])
for seq in seqs:
seq.write({
'number_next': 1,
})
# 更新要关帐的值,因为 store=true 的计算字段要重置
statement = self.env['account.bank.statement'].search([])
for s in statement:
s._end_balance()
seqs = [
'pos.%',
]
res = self.remove_app_data(to_removes, seqs)
# 更新要关帐的值,因为 store=true 的计算字段要重置
statement = self.env['account.bank.statement'].search([])
for s in statement:
s._end_balance()
return res
except Exception as e:
_logger.error('remove data error: %s,%s', 'pos', e)
return True
def remove_purchase(self):
to_removes = [
# 清除采购单据
['purchase.order.line', ],
['purchase.order', ],
['purchase.requisition.line', ],
['purchase.requisition', ],
'purchase.order.line',
'purchase.order',
'purchase.requisition.line',
'purchase.requisition',
]
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)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([('code', 'like', 'purchase.%')])
for seq in seqs:
seq.write({
'number_next': 1,
})
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'purchase', e)
return True
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', ],
'hr.expense.sheet',
'hr.expense',
'hr.payslip',
'hr.payslip.run',
]
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)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([
('code', 'like', 'hr.expense.%')])
for seq in seqs:
seq.write({
'number_next': 1,
})
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'expense', e)
return True
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', ],
'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:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([('code', 'like', 'mrp.%')])
for seq in seqs:
seq.write({
'number_next': 1,
})
except Exception as e:
_logger.error('remove data error: %s,%s', 'mrp', e)
return True
seqs = [
'mrp.%',
]
return self.remove_app_data(to_removes, seqs)
def remove_mrp_bom(self):
to_removes = [
# 清除生产BOM
['mrp.bom.line', ],
['mrp.bom', ],
'mrp.bom.line',
'mrp.bom',
]
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)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'mrp_bom', e)
return True
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', ],
'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',
]
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)
self._cr.commit()
# 更新序号
seqs = self.env['ir.sequence'].search([
'|', ('code', 'like', 'stock.%'),
'|', ('code', 'like', 'picking.%'),
'|', ('prefix', '=', 'WH/IN/'),
'|', ('prefix', '=', 'WH/INT/'),
'|', ('prefix', '=', 'WH/OUT/'),
'|', ('prefix', '=', 'WH/PACK/'),
('prefix', '=', 'WH/PICK/')
])
for seq in seqs:
seq.write({
'number_next': 1,
})
except Exception as e:
_logger.error('remove data error: %s,%s', 'inventory', e)
return True
seqs = [
'stock.%',
'picking.%',
'WH/%',
]
return self.remove_app_data(to_removes, seqs)
def remove_account(self):
to_removes = [
# 清除财务会计单据
['payment.transaction', ],
['account.voucher.line', ],
['account.voucher', ],
['account.bank.statement.line', ],
['account.payment', ],
['account.analytic.line', ],
['account.analytic.account', ],
['account.invoice.line', ],
['account.invoice.refund', ],
['account.invoice', ],
['account.partial.reconcile', ],
['account.move.line', ],
['hr.expense.sheet', ],
['account.move', ],
'payment.transaction',
'account.voucher.line',
'account.voucher',
'account.bank.statement.line',
'account.payment',
'account.analytic.line',
'account.analytic.account',
'account.invoice.line',
'account.invoice.refund',
'account.invoice',
'account.partial.reconcile',
'account.move.line',
'hr.expense.sheet',
'account.move',
]
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)
self._cr.commit()
seqs = []
res = self.remove_app_data(to_removes, seqs)
# 更新序号
seqs = self.env['ir.sequence'].search([
'|', ('code', 'like', 'account.%'),
'|', ('prefix', 'like', 'BNK1/'),
'|', ('prefix', 'like', 'CSH1/'),
'|', ('prefix', 'like', 'INV/'),
'|', ('prefix', 'like', 'EXCH/'),
'|', ('prefix', 'like', 'MISC/'),
'|', ('prefix', 'like', '账单/'),
('prefix', 'like', '杂项/')
])
for seq in seqs:
seq.write({
'number_next': 1,
})
except Exception as e:
_logger.error('remove data error: %s,%s', 'account', e)
return True
# extra 更新序号
seqs = self.env['ir.sequence'].search([
'|', ('code', '=ilike', 'account.%'),
'|', ('prefix', '=ilike', 'BNK1/%'),
'|', ('prefix', '=ilike', 'CSH1/%'),
'|', ('prefix', '=ilike', 'INV/%'),
'|', ('prefix', '=ilike', 'EXCH/%'),
'|', ('prefix', '=ilike', 'MISC/%'),
'|', ('prefix', '=ilike', '账单/%'),
('prefix', '=ilike', '杂项/%')
])
seqs.write({
'number_next': 1,
})
return res
def remove_account_chart(self):
to_removes = [
# 清除财务科目,用于重设
['res.partner.bank', ],
['res.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', ],
'res.partner.bank',
'res.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
@@ -477,113 +373,78 @@ class ResConfigSettings(models.TransientModel):
except Exception as e:
pass # raise Warning(e)
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)
self._cr.commit()
sql = "update res_company set chart_template_id=null;"
self._cr.execute(sql)
self._cr.commit()
# 更新序号
except Exception as e:
pass
return True
seqs = []
return self.remove_app_data(to_removes, seqs)
def remove_project(self):
to_removes = [
# 清除项目
['account.analytic.line', ],
['project.task', ],
['project.forecast', ],
['project.project', ],
'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)
self._cr.commit()
# 更新序号
except Exception as e:
_logger.error('remove data error: %s,%s', 'project', e)
return True
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_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', ],
'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',
]
try:
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'website', e)
return True
seqs = []
return self.remove_app_data(to_removes, seqs)
def remove_message(self):
to_removes = [
# 清除消息数据
['mail.message', ],
['mail.followers', ],
['mail.activity', ],
'mail.message',
'mail.followers',
'mail.activity',
]
try:
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'message', e)
return True
seqs = []
return self.remove_app_data(to_removes, seqs)
def remove_workflow(self):
to_removes = [
# 清除工作流
['wkf.workitem', ],
['wkf.instance', ],
'wkf.workitem',
'wkf.instance',
]
try:
for line in to_removes:
obj_name = line[0]
obj = self.pool.get(obj_name)
if obj and obj._table:
sql = "delete from %s" % obj._table
self._cr.execute(sql)
self._cr.commit()
except Exception as e:
_logger.error('remove data error: %s,%s', 'workflow', e)
return True
seqs = []
return self.remove_app_data(to_removes, seqs)
def remove_all_biz(self):
self.remove_account()
@@ -594,6 +455,7 @@ class ResConfigSettings(models.TransientModel):
self.remove_project()
self.remove_pos()
self.remove_expense()
self.remove_quality()
self.remove_message()
return True

View File

@@ -152,6 +152,11 @@
<button string="Delete All Project/Task/Forecast" type="object" name="remove_project"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<div class="col-12 col-lg-12 mb4">
<span class="col-3 col-lg-2 text-left">Quality</span>
<button string="Delete All Quality" type="object" name="remove_quality"
confirm="Please confirm to delete the select data?" class="oe_highlight"/>
</div>
<div class="col-12 col-lg-12 mb4">
<span class="col-3 col-lg-2 text-left">Website And Blog</span>
<button string="Delete All Website/Blog" type="object" name="remove_website"