Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
7329 Lượt xem

I create this sequence:

sequence.py

    def create(self, cr, uid, vals, context={}):
        vals['code'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner')
        res = super(client_sequence, self).create(cr, uid, vals, context)
        return res

    _columns = {
        'code': fields.char('Code client', size=64, readonly=True),
}
    _defaults = {
        'code': lambda obj, cr, uid, context: '/',
    }

sequence.xml

<record model="ir.sequence.type" id="seqe_type_res_partner">
    <field name="name">Client code</field>
    <field name="code">res.partner</field>
</record>
<record model="ir.sequence" id="seqe_res_partner">
    <field name="name">client code</field>
    <field name="code">res.partner</field>
    <field name="prefix">CLT</field>
    <field name="padding">5</field>
    <field name="number_increment">1</field>
</record>

But the code is incremented by 3 instead of 1?? any help?

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

The sequence is loaded with 001 by using _defaults and then when you use ORM create method, the sequence goes to 002 and then for your super client sequence the sequence is incremented once again so 003.

If you remove the 'code' in _defaults, the n number of times the window refreshes the value is not incremented by sequence.

In my case, I was trying to auto-generate account number using sequence and i tried using create and _defaults, so whenever the page is loaded it provides 70000001 and when the save button is clicked it goes to 70000002. so my records of account number generated were only even numbers.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Your

<field name="number_increment">1</field>

Must be

<field name="number_increment">3</field>

Or try this code:

def create(self, cr, uid, vals, context={}):
        vals['code'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'seqe_res_partner', context=None)
        res = super(client_sequence, self).create(cr, uid, vals, context)
        return res
Ảnh đại diện
Huỷ bỏ
Tác giả

No Francesco, I want to increment the code by 1 but I have this result : CLT/00001, CLT00003, CLT/00006...I don't no why??

Are you sure you are calling the right sequence?

Tác giả

Here the code in front of you.. did I call the right sequence?

I've updated my answer...try the new code.

Tác giả

have this erreur :

    AttributeError: 'ir.sequence' object has no attribute 'next_by_code'
Tác giả

I dont understand your modification, I think if I'm missing calling the right sequence I would not have the correct prefix and padding...

If you go in the settings menu and select the sequence can you see the increment value setted with 1?

Tác giả

yes the increment value = 1

Tác giả

I modify this value to 2 but still have the increment by 3 ?!!!!!

Bài viết liên quan Trả lời Lượt xem Hoạt động
3
thg 7 23
67969
0
thg 2 23
5078
0
thg 1 23
94
1
thg 10 22
4341
0
thg 4 22
2882