1
我重寫了res.company的副本和創建功能,如下所示。odoo重複的公司獲取錯誤
def copy(self, cr, uid, id, default=None, context=None):
self.duplicate = True
old_rc = self.browse(cr, uid, [id], context=context)[0]
company_name = self.read(cr, uid, [id], ['name'])[0]['name']
default.update({'name': _('%s (copy)')% company_name})
if old_rc.custom_company_code:
default.update({'custom_company_code': old_rc.custom_company_code + "-Copy"})
else:
default.update({'custom_company_code': old_rc.name + "-Copy"})
return super(ResCompany, self).copy(cr, uid, id, default, context=context)
def create(self, cr, uid, vals, context=None):
if vals.get('name', False):
temp_name = vals.get('name', False)
temp_name = temp_name.replace('\'', '"')
cr.execute("SELECT id FROM res_company WHERE lower(name)=lower(E'" + temp_name + "')")
uniq_comps = set(id[0] for id in cr.fetchall())
if len(uniq_comps) > 0:
raise UserError(_("Name must be unique for company '%s'.") % (vals.get('name', False),))
if not vals.get('custom_company_code', False):
vals['custom_company_code'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'res_company_code_sequence') or '/'
if vals.get('custom_company_code', False):
vals['custom_company_code'] = vals.get('custom_company_code', '').upper()
if not vals.get('name', False) or vals.get('partner_id', False):
self.cache_restart(cr)
return super(ResCompany, self).create(cr, uid, vals, context=context)
custom_company_code是user_requirement。但是,當我點擊「複製」,在「更多」,我得到了
Odoo警告 - 驗證錯誤
的公司名稱必須是唯一的!
當我檢查日誌,我彈出上面的錯誤之前得到了以下行
openerp.sql_db:壞查詢:UPDATE 「res_company」 SET 「名」= '我 公司' WHERE id = 4
我該如何解決問題!