How to create an auto increment ID Number field in HR Employee? So that everytime I create an employee, the id number of an employee will automatically increment + 1 in a custom field (readonly). anyone can help? thank you in advance.
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project management
- MRP
This question has been flagged
Hi create a custom module like below code .any issue
hr_custom.py file
==========================================================================================
class hr_employee(osv.osv):
_inherit='hr.employee'
_columns={
'emp_id':fields.char('Employee ID',readonly=True)
}
def create(self, cr, uid, vals, context=None):
vals['emp_id'] = self.pool.get('ir.sequence').get(cr, uid, 'hr.employee')
return super(hr_employee, self).create(cr, uid, vals, context=context)
_defaults={
'emp_id': lambda obj, cr, uid, context: '/',
}
====================================================================================
create xml view file
<record id="hr_form_inherited" model="ir.ui.view">
<field name="name">hr new1</field>
<field name="model">hr.employee</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/div/field[@name='category_ids']" position="after">
<field name="emp_id" string="Employee ID" />
</xpath>
</record>
===========================================================================================
==========================================================================================
create a xml file like below and add this file name in openerp.py
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Sequences for employee code -->
<record id="seq__hr_code_inh1" model="ir.sequence.type">
<field name="name">Employee ID</field>
<field name="code">hr.employee</field>
</record>
<record id="seq_hr_code_inh2" model="ir.sequence">
<field name="name">Employee ID </field>
<field name="code">hr.employee</field>
<field name="prefix">CU</field>
<field name="padding">2</field>
</record>
</data>
</openerp>
=================================================================================================
We are working parallel :-) Nice job!
Hi We can override the super class method once create a new record in hr.employee using super() .Same way we can access all the super class method when we use inherit or...
I looked all over and the only tutorial or explanation that was in any way helpful is this excellent YouTube video from Odoo Mates, which completely solved the problem of adding auto-incrementing behaviour to a field
https://www.youtube.com/watch?v=Cz5eM5FDmTE
Hi LIBU Plz tell me what is the use of the super keyword, i am new to odoo....thanks in advance
Just other flavor with out messing up with the code.
I used pgSQL Trigger For that..
I created 1 table(<table name> with only one column<column name> as of integer type and inserted 0 (count down start) to it as first row
on the sql window
i typed and executed
CREATE OR REPLACE FUNCTION process_emp_generate() RETURNS TRIGGER AS $emp_key$
DECLARE
ind_key integer;
BEGIN
SELECT <column name>
into ind_key
FROM <table name>;
IF (TG_OP = 'INSERT') THEN
UPDATE hr_employee SET <column name by which odoo stores employee id> = ind_key , identification_id = ind_key WHERE id = new.id;
update <table name> set <column name> = (select <column name>+1 from <table name>);
END IF;
RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$emp_key$ LANGUAGE plpgsql;
then
created a trigger event
CREATE TRIGGER emp_insert
AFTER INSERT ON hr_employee
FOR EACH ROW EXECUTE PROCEDURE process_emp_generate();
hope you solved the problem if other things are not working
You have to inherit the hr.employee object. create the new modul put the folder a new file>> hr_employee.py
class hr_employee(osv.osv):
_name = 'hr.employee'
_inherit = 'hr.employee'_columns = {
'name_id':fields.char('HR code',size=8,required=True),}
_defaults = {
'name_id': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'hr_id.code'),
}hr_employee()
You have to create an xml file what is define the sequence:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1"><record id="seq_type_hr_code" model="ir.sequence.type">
<field name="name">HR Seq</field>
<field name="code">hr_id.code</field>
</record><record id="seq_hr_code" model="ir.sequence">
<field name="name">HR Seq</field>
<field name="code">hr_id.code</field>
<field name="prefix">HRE_</field>
<field name="padding">4</field>
<field name="company_id" eval="False"/>
</record></data>
</openerp>
After that you have to inherit hr_employe.xml, in form. like:
<record id="view_employee_form" model="ir.ui.view">
<field name="name">hr.employee.form.csysc.inherit</field>
<field name="model">hr.employee</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<field name="birthday" position="after">
<field name="name_id" readonly='1'/></field>
</field>
</record>
put the py in the import section for ___init___.py file, and put the xml (inherit and sequence into the __openerp__.py according the rule of the inheriting
https://doc.odoo.com/v6.0/developer/2_5_Objects_Fields_Methods/object_inherit.html/
)
Hope this helps.
thank you!
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
|
11
Jan 19
|
8480 | ||
|
1
Jun 24
|
215 | ||
|
1
Dec 22
|
2442 | ||
|
14
Aug 20
|
30023 | ||
|
3
Feb 19
|
8637 |
hope this will helps: https://learnopenerp.blogspot.com/2020/08/generate-create-sequence-number-odoo.html