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

@@ -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