This question has been flagged
4 Replies
9142 Views

hello everybody

I am a new member on OpenERP. I have a question .I hope any someone tell me. I want to creat 2 sequence ( 1 sequence to 1 field) in a object. what do I have to do?

Thanks all

Avatar
Discard

Hi Fanha Giang! But why need 2 sequence for one object?

hi vasiliy Birukov, I think it is the sequence number of the "purchase order", "sale other", "invoice number". each sequence for 1 period year.

Best Answer

First field define as common sequence (how you can see for example in module sale).

For second field define functional filed that will calculate value based on first field.

Avatar
Discard
Best Answer

Hello Huongcute

For creating a sequence you have to create records for "ir.sequenc.type" and "ir.sequence"  in an xml file

See example:

<!-- this is sequence type -->

        <record id="seq_type_my_transaction" model="ir.sequence.type">
            <field name="name">My Sequence</field>
            <field name="code">my.transaction</field>

        </record>

Note: 'my.transction' is the code used for creating the sequence show below and must be unique

<!-- this is actual sequence  -->

        <record id="seq_my_transaction" model="ir.sequence">
            <field name="name">My Sequence</field>
            <field name="code">my.transaction</field>
            <field name="prefix"><prefix></field> i.e such as current year or any string
            <field name="padding">5</field>
            <field name="company_id" eval="False"/>
            <field name="implementation">no_gap</field> (possible values 'no_gap' and 'standard')
        </record>

 

Now lets say model name is 'test.transaction', and you want to set the sequence on 'name' (type character) field, so generally two ways are there

1./ either you provide it in "_defaults"

See example:

_defaults = { 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'my.transaction')}

2./ you override the "create" method 

See example:

        name=self.pool.get('ir.sequence').get(cr, uid, 'my.transaction')

        vals.update({
                     'name':name or '/' 
                     })
        new_id=super(test_transaction,self).create(cr,uid,vals,context=context)        

        return new_id

Note : You can generate the sequence value at any time as per you requirement, the above shown are the general trend of doing this, You can refer to account.invoice where the sequence is generated while validating the invoice.

You can create the sequence same way for the second field.

Regards

Avatar
Discard
Best Answer

hi Vasiliy Birukov, I don't know what she need for. but in my case, I use odoo to input the data for both 2014 (current year) and 2013 (past year). because I don't know how to import the from our data (which is save in excel) and I need to input the data for both 2 years at the same time. yes, I really want to know how to import the data. but still not found the solution. regards

Avatar
Discard
Author Best Answer

thanks Hiren Vora, Emipro Technologies . But I want to creat two sequence in one object. So I think when I use Sequence of Odoo ,

IHi . in Code in show : I want STT field shall sequence : 001 ,002.... and ma_nv field shall sequence : AC001, AC002. Note: 2field of one object. So I see Sequence in Openerp web has code to browse object which has field sequence.:So I think when I choose Code = objectname. The fields is installed to sequence , shall sequence according format which I choose in web. So I dont have 2 field sequence likewise. Code .py:

class danh_sach_nv(osv.Model):

_name='danh.sach.nv

' _columns={

               'ma_nv':fields.many2one('danh.sach.hd','Mã nhân viên'),

                'stt':fields.many2one('stt','STT',required = True),

                  'ten_nv':fields.many2one('danh.sach.hd','Họ và tên',size = 256,required =True),

                  'gender': fields.selection([('nam','Nam'),('nu','Nữ'),('khac','Khác')],'Giới tính'),

                   'ten_bp':fields.many2one('bo.phan','Bộ phận',size=64,required=True),

                      'ma_bp':fields.many2one('bo.phan','Tên bộ phận',[('ten_bp.bo.phan','=','ten_bp')],required=True),

                      'noi_lam_viec':fields.char('Nơi làm việc',size=200), '

                        'image_nv':fields.binary('Ảnh đại diện'),

}

defaults={

'ma_nv':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv'),

}

 

So I dont know how do with field name : 'stt' field

code .xml

<openerp>
    <data>
        <record id = 'seq_type_danh_sach_nv' model='ir.sequence.type'>
            <field name = 'name'>danh_sach_nv_sequence</filed>
            <field name = 'code'>danh.sach.nv</filed>
            
        </record>

<record id= 'seq_danh_sach_nv' model='ir.sequence'>
            <field name = 'name'>danh_sach_nv_sequence</filed>
            <field name ='code'>danh.sach.nv</field>
            <field name = 'padding'>3</field>
            <field eval='0' name='number_increment'/>
            
        </record>

Can you help me?

Avatar
Discard

@huongcute - sequence is not related to any of the fields in a model. You can create any no of sequence and then you have to manage it in you business logic how and when to apply the sequence on a field. You have got two fields.. so you can create two sequence and in your code you will have to call those two sequence and assign the values to your fields 'field 1' and 'field 2'. Let me know if misunderstood or you post the code that you have written.

Author

Hi . in Code in show : I want STT field shall sequence : 001 ,002.... and ma_nv field shall sequence : AC001, AC002. Note: 2field of one object. So I see Sequence in Openerp web has code to browse object which has field sequence.:So I think when I choose Code = objectname. The fields is installed to sequence , shall sequence according format which I choose in web. So I dont have 2 field sequence likewise. Code .py: class danh_sach_nv(osv.Model): _name='danh.sach.nv' _columns={ 'ma_nv':fields.many2one('danh.sach.hd','Mã nhân viên'), 'stt':fields.many2one('stt','STT',required = True), 'ten_nv':fields.many2one('danh.sach.hd','Họ và tên',size = 256,required =True), 'gender': fields.selection([('nam','Nam'),('nu','Nữ'),('khac','Khác')],'Giới tính'), 'ten_bp':fields.many2one('bo.phan','Bộ phận',size=64,required=True), 'ma_bp':fields.many2one('bo.phan','Tên bộ phận',[('ten_bp.bo.phan','=','ten_bp')],required=True), 'noi_lam_viec':fields.char('Nơi làm việc',size=200), 'image_nv':fields.binary('Ảnh đại diện'), } defaults={ 'ma_nv':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv'), } So I dont know how do with field name : 'stt' code .xml danh_sach_nv_sequence danh.sach.nv danh_sach_nv_sequence danh.sach.nv3 Can you help me?

hi

IHi . in Code in show : I want STT field shall sequence : 001 ,002.... and ma_nv field shall sequence : AC001, AC002. Note: 2field of one object. So I see Sequence in Openerp web has code to browse object which has field sequence.:So I think when I choose Code = objectname. The fields is installed to sequence , shall sequence according format which I choose in web. So I dont have 2 field sequence likewise. Code .py:

class danh_sach_nv(osv.Model):

_name='danh.sach.nv

' _columns={

               'ma_nv':fields.many2one('danh.sach.hd','Mã nhân viên'),

                'stt':fields.many2one('stt','STT',required = True),

                 'ten_nv':fields.many2one('danh.sach.hd','Họ và tên',size = 256,required =True),

                'gender': fields.selection([('nam','Nam'),('nu','Nữ'),('khac','Khác')],'Giới tính'),

                 'ten_bp':fields.many2one('bo.phan','Bộ phận',size=64,required=True),

                 'ma_bp':fields.many2one('bo.phan','Tên bộ phận',[('ten_bp.bo.phan','=','ten_bp')],required=True),

                 'noi_lam_viec':fields.char('Nơi làm việc',size=200), '

                  'image_nv':fields.binary('Ảnh đại diện'),

}

defaults={

'ma_nv':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv'),

}

 

So I dont know how do with field name : 'stt' field

code .xml

<openerp>
    <data>
        <record id = 'seq_type_danh_sach_nv' model='ir.sequence.type'>
            <field name = 'name'>danh_sach_nv_sequence</filed>
            <field name = 'code'>danh.sach.nv</filed>
            
        </record>

<record id= 'seq_danh_sach_nv' model='ir.sequence'>
            <field name = 'name'>danh_sach_nv_sequence</filed>
            <field name ='code'>danh.sach.nv</field>
            <field name = 'padding'>3</field>
            <field eval='0' name='number_increment'/>
            
        </record>

Can you help me?



2014-07-11 14:41 GMT+07:00 <Hiren@mail1.openerp.com>:

@huongcute - sequence is not related to any of the fields in a model. You can create any no of sequence and then you have to manage it in you business logic how and when to apply the sequence on a field. You have got two fields.. so you can create two sequence and in your code you will have to call those two sequence and assign the values to your fields 'field 1' and 'field 2'. Let me know if misunderstood or you post the code that you have written.

Hiren Vora,
Sr. OpenERP Technical Engineer,
Emipro Technologies, India.
www.emiprotechnologies.com
info@emiprotechnologies.com

Sent by OpenERP S.A. using OpenERP. Access your messages and documents in Odoo

@huongcute - looking at your code what I can see is that you are trying to set sequence for "many2one" type field, which is not making sense for me because sequence fields are generally of type "char". Making a field as 'many2one' and using it for 'sequence' doesn't make sense be 'many2one' is a master table having values already filled into it and referenced elsewhere. I think you should have field types for your fields 'ma_nv' and 'stt' as "char" and not as "many2one".

Hi Hiren !

I created a module : when I install it to Openerp-sever. I have an error : Recursion error in modules dependencies !
I dont know I have a error in my moduls. Can you check it to help me?

it is openerp-sever.  

and this is my module 


Thaks for you help


2014-07-11 18:38 GMT+07:00 <Hiren@mail1.openerp.com>:

@huongcute - looking at your code what I can see is that you are trying to set sequence for "many2one" type field, which is not making sense for me because sequence fields are generally of type "char". Making a field as 'many2one' and using it for 'sequence' doesn't make sense be 'many2one' is a master table having values already filled into it and referenced elsewhere. I think you should have field types for your fields 'ma_nv' and 'stt' as "char" and not as "many2one".

Hiren Vora,
Sr. OpenERP Technical Engineer,
Emipro Technologies, India.
www.emiprotechnologies.com
info@emiprotechnologies.com

Sent by OpenERP S.A. using OpenERP. Access your messages and documents in Odoo