diff --git a/app_odoo_customize/models/res_config_settings.py b/app_odoo_customize/models/res_config_settings.py index 492452b7..30183061 100644 --- a/app_odoo_customize/models/res_config_settings.py +++ b/app_odoo_customize/models/res_config_settings.py @@ -128,6 +128,12 @@ class ResConfigSettings(models.TransientModel): t_name = obj._table sql = "delete from %s" % t_name + # 增加多公司处理 + if hasattr(self.env[obj_name], 'company_id'): + field = self.env[obj_name]._fields['company_id'] + if not field.related or field.store: + sql = "%s where company_id=%d" % (sql, self.env.company.id) + _logger.warning('remove_app_data where add company_id: %s' % obj_name) try: self._cr.execute(sql) # self._cr.commit() @@ -310,6 +316,7 @@ class ResConfigSettings(models.TransientModel): # extra 更新序号 domain = [ + ('company_id', '=', self.env.company.id), '|', ('code', '=ilike', 'account.%'), '|', ('prefix', '=ilike', 'BNK1/%'), '|', ('prefix', '=ilike', 'CSH1/%'), @@ -330,10 +337,11 @@ class ResConfigSettings(models.TransientModel): return res def remove_account_chart(self): + company_id = self.env.company.id + self = self.with_context(force_company=company_id, company_id=company_id) to_removes = [ # 清除财务科目,用于重设 'res.partner.bank', - 'res.bank', 'account.move.line', 'account.invoice', 'account.payment', @@ -348,17 +356,17 @@ class ResConfigSettings(models.TransientModel): # todo: 要做 remove_hr,因为工资表会用到 account # 更新account关联,很多是多公司字段,故只存在 ir_property,故在原模型,只能用update try: - # reset default tax,不管多公司 field1 = self.env['ir.model.fields']._get('product.template', "taxes_id").id field2 = self.env['ir.model.fields']._get('product.template', "supplier_taxes_id").id - sql = ("delete from ir_default where field_id = %s or field_id = %s") % (field1, field2) - sql2 = ("update account_journal set bank_account_id=NULL;") + sql = "delete from ir_default where (field_id = %s or field_id = %s) and company_id=%d" \ + % (field1, field2, company_id) + sql2 = "update account_journal set bank_account_id=NULL where company_id=%d;" % company_id self._cr.execute(sql) self._cr.execute(sql2) self._cr.commit() except Exception as e: - pass # raise Warning(e) + _logger.error('remove data error: %s,%s', 'account_chart: set tax and account_journal', e) try: rec = self.env['res.partner'].search([]) for r in rec: @@ -392,7 +400,9 @@ class ResConfigSettings(models.TransientModel): pass # raise Warning(e) seqs = [] - return self.remove_app_data(to_removes, seqs) + res = self.remove_app_data(to_removes, seqs) + self.env.company.write({'chart_template_id': False}) + return res def remove_project(self): to_removes = [ diff --git a/app_odoo_customize/views/app_theme_config_settings_views.xml b/app_odoo_customize/views/app_theme_config_settings_views.xml index 7d3ff36e..89a5cb7d 100644 --- a/app_odoo_customize/views/app_theme_config_settings_views.xml +++ b/app_odoo_customize/views/app_theme_config_settings_views.xml @@ -144,8 +144,12 @@
Accounting +
Project @@ -179,9 +183,6 @@