odoo14删除编号后还能自动补充删除的编号实现
时间: 2024-02-16 18:04:12 浏览: 67
要实现在Odoo14中删除编号后还能自动补充删除的编号,可以通过自定义模块来实现。下面是一个示例代码,它可以在删除销售订单编号后,自动将删除的编号填充回销售订单中未使用的编号中:
```
from odoo import models, fields, api
class SaleOrder(models.Model):
_inherit = 'sale.order'
sequence_code = fields.Char(string="Sequence Code", readonly=True)
@api.model
def create(self, vals):
sequence = self.env['ir.sequence'].next_by_code('sale.order') or '/'
vals['name'] = sequence
vals['sequence_code'] = sequence
return super(SaleOrder, self).create(vals)
def unlink(self):
for order in self:
if order.sequence_code:
self.env['ir.sequence'].unlink_sequence(order.name)
return super(SaleOrder, self).unlink()
@api.model
def search_unused_sequence(self):
sequence = self.env['ir.sequence'].search([('code', '=', 'sale.order')], limit=1)
if sequence:
return sequence.with_context(ir_sequence_date=self.date_order).next_by_id()
else:
return '/'
```
在上述代码中,我们添加了一个新的字段`sequence_code`来存储销售订单的编号。在`create`方法中,我们使用`ir.sequence`模型来生成订单编号,并将生成的编号存储到`sequence_code`字段中。在`unlink`方法中,当删除订单时,我们使用`ir.sequence`模型的`unlink_sequence`方法将删除的订单编号存储到未使用的编号中。最后,在`search_unused_sequence`方法中,我们搜索未使用的订单编号并返回。
需要注意的是,上述代码只是一个示例,要实现更复杂的自动补号功能,您可能需要编写更加复杂的代码逻辑。同时,您还需要确保您的代码适用于您的业务场景,并且不会影响Odoo14的核心功能。
阅读全文