我有一个疑问:
我创建了一个名为niu
的字段,以增加每种可存储产品类型的值。
niu = fields.Char(string="NIU", compute="_niu_validation", defalut=" ", readonly=True)
使用属性compute=_ niu_validation
,我调用相同名称的方法。在此,我想验证产品类型是可库存的类型。
@api.depends('product_id.product_tmpl_id.type')
def _niu_validation(self):
if 'product_id.product_tmpl_id.type' == 'product':
niu = lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'sale.order.line')
return super(SaleOrderLine,self)
另一方面,我为'创建了渲染序列。 niu' sale.order.line模型中的字段。
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Sequence for sale.order.line -->
<record id="seq_sale_order_line" model="ir.sequence">
<field name="name">NIU Sequence</field>
<field name="code">sale.order.line</field>
<field name="prefix">00</field>
<field name="padding">3</field>
</record>
</data>
</openerp>
并且在视图中,我希望每种产品类型都有库存,这个领域是&#39; niu&#39;增加它的价值。
图片:http://en.zimagez.com/zimage/viewsequenceniu.php
我需要帮助,因为我已经很长时间了,而且我不能自己做。我希望你的帮助,建议,建议。非常感谢大家。
答案 0 :(得分:1)
您可以通过两种方式在odoo中创建自动递增字段。第一个是创建记录,另一个是单击按钮。
# on button click event
@api.one
def submit_application(self):
if self.application_no == '/':
sequence_id = self.env['ir.sequence'].search([('code', '=', 'your.sequence.code')])
sequence_pool = self.env['ir.sequence']
application_no = sequence_pool.sudo().get_id(sequence_id.id)
self.write({'application_no': application_no})
答案 1 :(得分:0)
在您的代码中,您将一个函数(lambda
)分配给niu
:
niu = lambda ...
如果您返回super()
,则不需要return
。
要为niu
字段使用分配新值:
niu = value
要增加其值,您可以使用:
sequence = self.env['ir.sequence'].next_by_code('sale.order.line')
for rec in self:
rec.niu = sequence
使用odoo官方文档(非常有用),转到此LINK并搜索Computed fields
。
修改强>
检查是否已设置niu
(在条件中添加and not rec.niu
):
@api.depends('product_id.product_tmpl_id.type')
def _niu_validation(self):
for rec in self:
if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:
rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')
答案 2 :(得分:0)
谢谢你,你太棒了,你可以解决我的问题。但我还有其他问题。会发生什么是我实际上为stockables类型的产品生成序列。但是当我从标题中按下按钮(保存)时,序列就会改变。我不明白为什么会发生这种情况 这是我的方法: niu = fields.Char(string =&#34; NIU&#34;,compute =&#34; _niu_validation&#34;,default =&#34;&#34;,readonly = True)
@api.depends('product_id.product_tmpl_id.type')
def _niu_validation(self):
for rec in self:
if rec.product_id.product_tmpl_id.type == 'product':
rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')
看看这些图片请。 按(保存)按钮之前对产品进行排序。 http://en.zimagez.com/zimage/4s4s4s.php
按(保存)按钮后对产品进行排序。 http://en.zimagez.com/zimage/8658946.php
如果看到图像,则可以看到序列已更改。我希望维持序列。
我希望你能帮助我,我真的很感激。谢谢。