首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenERP v7:序列号

OpenERP v7:序列号
EN

Stack Overflow用户
提问于 2014-01-27 07:43:56
回答 3查看 3.2K关注 0票数 1

在Openenerp中如何使序列号增量为10

例如:在POLine中添加了新的colum行NO,当添加项目行时,任何值都应该设置为10的增量。

我的守则:

代码语言:javascript
复制
'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

代码语言:javascript
复制
<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>  

我得到了以下错误:

代码语言:javascript
复制
Error: [_.sprintf] expecting number but found string

如有任何建议,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-27 09:47:43

你所做的,是对的,你犯了一个错误,

您必须将'line_no‘定义为char类型字段,而不是整数

定义如下:'line_no':fields.char('Line No'),

ir.sequence返回字符串,您的line_no是整数

下一个增量是由get方法返回的前缀字段的组合,

代码语言:javascript
复制
interpolated_prefix + '%%0%sd' % seq['padding'] % seq['number_next'] + interpolated_suffix

因此,它是从get方法返回的字符串类型序列。

希望能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2014-01-27 15:21:20

在xml中,您需要替换

代码语言:javascript
复制
<field name="number_increment">10</field>

通过

代码语言:javascript
复制
<field eval="10" name="number_increment"/>
票数 0
EN

Stack Overflow用户

发布于 2014-06-11 13:12:44

检查此代码,您需要为序列No创建一个字段。

代码语言:javascript
复制
<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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21375392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档