如何自动为客户帐户设置自动递增的客户代码?

时间:2019-06-04 12:11:55

标签: python odoo odoo-9

我必须为Odoo工作。这是我的第一次,所以有些事情我不明白。

我的特定任务是确保在确认报价后:如果客户还没有客户代码,他将获得下一个。

例如,如果最大的客户代码是“ CL2000”,我希望下一个代码是“ CL2001”。

我尝试使用Odoo中的已实现工具创建自动操作。确认报价后,我设法将客户代码关联了起来,但始终保持不变。

我没有看到很多有关Odoo的教程。如果有人可以帮助我解决我的问题或链接到好的教程,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

要为客户帐户自动设置自动递增的客户代码,您可以创建“ 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

按照上述步骤,您可以自动生成客户代码。

我希望这会对您有所帮助。谢谢。