mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
456 lines
19 KiB
Python
456 lines
19 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
|
|
from openerp import api, fields, models, _
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class AppThemeConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
_name = 'app.theme.config.settings'
|
|
|
|
_description = u"App Odoo Customize settings"
|
|
app_system_name = fields.Char('System Name', help=u"Setup System Name,which replace Odoo")
|
|
app_show_lang = fields.Boolean('Show Quick Language Switcher',
|
|
help=u"When enable,User can quick switch language in user menu")
|
|
app_show_debug = fields.Boolean('Show Quick Debug', help=u"When enable,everyone login can see the debug menu")
|
|
app_show_documentation = fields.Boolean('Show Documentation', help=u"When enable,User can visit user manual")
|
|
app_show_documentation_dev = fields.Boolean('Show Developer Documentation',
|
|
help=u"When enable,User can visit development documentation")
|
|
app_show_support = fields.Boolean('Show Support', help=u"When enable,User can vist your support site")
|
|
app_show_account = fields.Boolean('Show My Account', help=u"When enable,User can login to your website")
|
|
app_show_enterprise = fields.Boolean('Show Enterprise Tag', help=u"Uncheck to hide the Enterprise tag")
|
|
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")
|
|
|
|
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')
|
|
|
|
company_id = fields.Many2one(
|
|
'res.company', 'Company',
|
|
default=lambda self: self.env.user.company_id, required=True)
|
|
app_favicon_backend = fields.Binary(related='company_id.favicon_backend', string="Favicon backend")
|
|
app_favicon_backend_mimetype = fields.Selection(
|
|
related='company_id.favicon_backend_mimetype',
|
|
string='Favicon mimetype',
|
|
help='Set the mimetype of your file.')
|
|
|
|
@api.model
|
|
def get_default_all(self, fields):
|
|
ir_config = self.env['ir.config_parameter']
|
|
app_system_name = ir_config.sudo().get_param('app_system_name', default='odooApp')
|
|
|
|
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.sudo().get_param('app_documentation_url',
|
|
default='http://www.sunpop.cn/documentation/user/10.0/en/index.html')
|
|
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.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,
|
|
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_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,
|
|
app_account_title=app_account_title,
|
|
app_account_url=app_account_url,
|
|
company_id=self.env.user.company_id.id,
|
|
app_favicon_backend=self.env.user.company_id.favicon_backend,
|
|
app_favicon_backend_mimetype=self.env.user.company_id.favicon_backend_mimetype,
|
|
)
|
|
|
|
@api.multi
|
|
def set_default_all(self):
|
|
self.ensure_one()
|
|
ir_config = self.env['ir.config_parameter']
|
|
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_stop_subscribe", self.app_stop_subscribe 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")
|
|
ir_config.set_param("app_documentation_dev_url",
|
|
self.app_documentation_dev_url or "http://www.sunpop.cn/documentation/10.0/index.html")
|
|
ir_config.set_param("app_support_url", self.app_support_url or "http://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 "http://www.sunpop.cn/my-account/")
|
|
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_sales(self):
|
|
to_removes = [
|
|
# 清除销售单据
|
|
['sale.order.line', ],
|
|
['sale.order', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search([('code', '=', 'sale.order')])
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
sql = "update ir_sequence set number_next=1 where code ='sale.order';"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
def remove_product(self):
|
|
to_removes = [
|
|
# 清除产品数据
|
|
['product.product', ],
|
|
['product.template', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号,针对自动产品编号
|
|
seqs = self.env['ir.sequence'].search([('code', '=', 'product.product')])
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
sql = "update ir_sequence set number_next=1 where code ='product.product';"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
def remove_product_attribute(self):
|
|
to_removes = [
|
|
# 清除产品属性
|
|
['product.attribute.value', ],
|
|
['product.attribute', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_pos(self):
|
|
to_removes = [
|
|
# 清除POS单据
|
|
['pos.order.line', ],
|
|
['pos.order', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search([('code', '=', 'pos.order')])
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
sql = "update ir_sequence set number_next=1 where code ='pos.order';"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_purchase(self):
|
|
to_removes = [
|
|
# 清除采购单据
|
|
['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 and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search([('code', '=', 'purchase.order')])
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
sql = "update ir_sequence set number_next=1 where code ='purchase.order';"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_mrp(self):
|
|
to_removes = [
|
|
# 清除生产单据
|
|
['mrp.workcenter.productivity', ],
|
|
['mrp.workorder', ],
|
|
['mrp.production.workcenter.line', ],
|
|
['mrp.production', ],
|
|
['mrp.production.product.line', ],
|
|
['mrp.unbuild', ],
|
|
['change.production.qty', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search(['|', ('code', '=', 'mrp.production'), ('code', '=', 'mrp.unbuild')])
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
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)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_mrp_bom(self):
|
|
to_removes = [
|
|
# 清除生产BOM
|
|
['mrp.bom.line', ],
|
|
['mrp.bom', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_inventory(self):
|
|
to_removes = [
|
|
# 清除库存单据
|
|
['stock.quant', ],
|
|
['stock.quant.package', ],
|
|
['stock.quant.move.rel', ],
|
|
['stock.move', ],
|
|
['stock.pack.operation', ],
|
|
['stock.picking', ],
|
|
['stock.scrap', ],
|
|
['stock.inventory.line', ],
|
|
['stock.inventory', ],
|
|
['stock.production.lot', ],
|
|
['stock.fixed.putaway.strat', ],
|
|
['make.procurement', ],
|
|
['procurement.order', ],
|
|
['procurement.group', ],
|
|
]
|
|
try:
|
|
# 为优化,增加处理
|
|
self._cr.execute("update stock_move set split_from=NULL;")
|
|
self._cr.execute("update stock_move set origin_returned_move_id=NULL;")
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search([
|
|
'|', ('code', '=', 'stock.lot.serial'),
|
|
'|', ('code', '=', 'stock.lot.tracking'),
|
|
'|', ('code', '=', 'stock.orderpoint'),
|
|
'|', ('code', '=', 'stock.picking'),
|
|
'|', ('code', '=', 'stock.quant.package'),
|
|
'|', ('code', '=', 'stock.scrap'),
|
|
'|', ('code', '=', 'stock.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,
|
|
})
|
|
sql = "update ir_sequence set number_next=1 where (" \
|
|
"code ='stock.lot.serial' " \
|
|
"or code ='stock.lot.tracking' " \
|
|
"or code ='stock.orderpoint'" \
|
|
"or code ='stock.picking'" \
|
|
"or code ='stock.quant.package'" \
|
|
"or code ='stock.scrap'" \
|
|
"or code ='stock.picking'" \
|
|
"or prefix ='WH/IN/'" \
|
|
"or prefix ='WH/INT/'" \
|
|
"or prefix ='WH/OUT/'" \
|
|
"or prefix ='WH/PACK/'" \
|
|
"or prefix ='WH/PICK/'" \
|
|
");"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_account(self):
|
|
to_removes = [
|
|
# 清除财务会计单据
|
|
['account.voucher.line', ],
|
|
['account.voucher', ],
|
|
['account.bank.statement', ],
|
|
['account.bank.statement.line', ],
|
|
['account.payment', ],
|
|
['account.analytic.line', ],
|
|
['account.invoice.line', ],
|
|
['account.invoice', ],
|
|
['account.partial.reconcile', ],
|
|
['account.move.line', ],
|
|
['account.move', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
|
|
# 更新序号
|
|
seqs = self.env['ir.sequence'].search([
|
|
'|', ('code', '=', 'account.reconcile'),
|
|
'|', ('code', '=', 'account.payment.customer.invoice'),
|
|
'|', ('code', '=', 'account.payment.customer.refund'),
|
|
'|', ('code', '=', 'account.payment.supplier.invoice'),
|
|
'|', ('code', '=', 'account.payment.supplier.refund'),
|
|
'|', ('code', '=', 'account.payment.transfer'),
|
|
'|', ('prefix', 'like', 'BNK1/'),
|
|
'|', ('prefix', 'like', 'CSH1/'),
|
|
'|', ('prefix', 'like', 'INV/'),
|
|
'|', ('prefix', 'like', 'EXCH/'),
|
|
'|', ('prefix', 'like', 'MISC/'),
|
|
'|', ('prefix', 'like', u'账单/'),
|
|
('prefix', 'like', u'杂项/')
|
|
])
|
|
|
|
for seq in seqs:
|
|
seq.write({
|
|
'number_next': 1,
|
|
})
|
|
# todo: 帐单 or BILL/%
|
|
sql = "update ir_sequence set number_next=1 where (" \
|
|
"code ='account.reconcile' " \
|
|
"or code ='account.payment.customer.invoice' " \
|
|
"or code ='account.payment.customer.refund' " \
|
|
"or code ='account.payment.supplier.invoice' " \
|
|
"or code ='account.payment.supplier.refund' " \
|
|
"or prefix like 'BNK1/%'" \
|
|
"or prefix like 'CSH1/%'" \
|
|
"or prefix like 'INV/%'" \
|
|
"or prefix like 'EXCH/%'" \
|
|
"or prefix like 'MISC/%'" \
|
|
"or prefix like '账单/%'" \
|
|
"or prefix like '杂项/%'" \
|
|
");"
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_message(self):
|
|
to_removes = [
|
|
# 清除消息数据
|
|
['mail.message', ],
|
|
['mail.followers', ],
|
|
]
|
|
try:
|
|
for line in to_removes :
|
|
obj_name = line[0]
|
|
obj = self.pool.get(obj_name)
|
|
if obj and obj._table_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|
|
|
|
@api.multi
|
|
def remove_workflow(self):
|
|
to_removes = [
|
|
# 清除工作流
|
|
['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_exist:
|
|
sql = "delete from %s" % obj._table
|
|
self._cr.execute(sql)
|
|
|
|
except Exception, e:
|
|
raise Warning(e)
|
|
return True
|