如何在Openenerp
中使序列号增加10例如: 在POLine中添加了新的colum Line NO,在添加项目时,Line的值不应设置为10的增量。
我的代码:
'line_no':fields.integer('Line No'),
_defaults = {
'line_no':lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'purchase.order.line'),
}
sequence.xml
<record id="seq_type_purchase_order_line" model="ir.sequence.type">
<field name="name">Purchase Order Line</field>
<field name="code">purchase.order.line</field>
</record>
<record id="seq_purchase_order_line" model="ir.sequence">
<field name="name">Purchase Order Line</field>
<field name="code">purchase.order.line</field>
<field name="padding">4</field>
<field name="number_increment">10</field>
</record>
我收到以下错误:
Error: [_.sprintf] expecting number but found string
任何建议都将受到赞赏。
答案 0 :(得分:2)
你做了什么,这是对的,你犯了一个错误,
你必须将'line_no'定义为char类型字段而不是整数
定义如下:'line_no':fields.char('Line No'),
ir.sequence返回字符串,你的line_no是整数
get方法返回的下一个数字的增量是前缀字段的组合,
interpolated_prefix + '%%0%sd' % seq['padding'] % seq['number_next'] + interpolated_suffix
所以它是来自get方法的字符串类型序列返回
希望这个帮助
答案 1 :(得分:0)
在xml中,您需要替换
<field name="number_increment">10</field>
通过
<field eval="10" name="number_increment"/>
答案 2 :(得分:-1)
检查此代码,您需要为序列号创建一个字段
<field name="order_line" on_change="onchange_line(order_line)">
def onchange_line(self, cr, uid, ids, lines,context=None):
result = {}
result['value'] = {}
#do the proper checking
count_dict = {}
count = 10
had_seq = 0
for index,line in enumerate(lines):
if line[0] == 0:
count_dict[index] = count
count +=10
else:
had_seq +=1
#seqnece_no is the new sequence field defined
for k in count_dict:
if had_seq:
lines[k][2]['sequence_no'] = had_seq*10 + count_dict[k]
else:
lines[k][2]['sequence_no'] = count_dict[k]
result['value'].update({'order_line':lines})
return result
希望这会对你有所帮助
感谢@Odedra