mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
update common
This commit is contained in:
@@ -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()
|
||||
# 更新序号
|
||||
seqs = self.env['ir.sequence'].search([('code', 'like', 'sale%')])
|
||||
for seq in seqs:
|
||||
seq.write({
|
||||
self._cr.execute(sql)
|
||||
self._cr.commit()
|
||||
# 更新序号
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user