Для автоматической установки кода клиента, автоматически увеличиваемого для учетной записи клиента, вы можете создать «ir.sequence», который является базовой функцией odoo.
Шаги для создания «ir.sequence» для автоматической генерации кода клиента:
Шаг 1: Создайте файл данных для последовательности, подобной следующей:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Sequences for customer codes -->
<record id="seq_res_partner" model="ir.sequence">
<field name="name">Customer code</field>
<field name="code">res.partner.customer.code</field>
<field name="padding">8</field>
<field name="number_next">CL2001</field>
<field name="number_increment">1</field>
</record>
</data>
</odoo>
Шаг 2: Унаследуйте метод создания res.partnerмодель для автоматической генерации кода клиента.
@api.model
def create(self, vals):
if isinstance(vals, dict):
if not vals.get('ref', False):
while 1:
ref = self.env['ir.sequence'].next_by_code('res.partner.customer.code') or ''
partner = self.env['res.partner'].search([('ref', '=', ref)])
if not partner:
break
vals.update({'ref': ref})
elif vals.get('ref',False):
ref_by_user = vals.get('ref',False)
partner = self.env['res.partner'].search([('ref', '=ilike', ref_by_user)])
if partner:
raise ValidationError('Internal Reference duplicate Error. \n This Internal reference already exist for Partner %s'%(partner[0].name))
res = super(ResPartner, self).create(vals)
return res
В соответствии с описанными выше шагами вы можете сгенерировать код клиента автоматически.
Надеюсь, это поможет вам.Спасибо.