les fonctions odoo v8 : Calcule de l’age des employées – on_change()

15:57



Première Méthode : on_change() Pour calculer l'age des employées a l'aide de la fonction on_change() et champ fonctionnel on hérite de l'objet employée et on ajoute un champ age de type entier/function puis on définie une fonction blablabla(). Les étapes à suivre : - Créer un fichier python on héritant de l'objet hr.employee puis ajouter un nouveau champ age,
from openerp.osv import osv,fields
import time
from datetime import date
from datetime import datetime

class hr_employee(osv.osv):    
    _name='hr.employee'
    _inherit = 'hr.employee' 
    
    
    _columns = {
           'age' : fields.integer(u'Age'),
        }
    
hr_employee()
- Créer une vue on héritant de la vue form de fiche employée puis ajouter le nouveau champ age
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>

    <!-- hr inherit -->
  <record model="ir.ui.view" id="view_hr_employee_form3">
    <field name="name">hr.employee.inherit</field>
   <field name="model">hr.employee</field>
   <field name="inherit_id" ref="hr.view_employee_form" />
   <field name="type">form</field>
   <field name="arch" type="xml">
              <xpath expr="//group[@string='Birth']" position="replace">       
                         <group string="Birth">
                             <field name="birthday"/>
                             <field name="age"/>  
                         </group>  
             </xpath>
                    </field>
           </record>
    </data>
</openerp>
- Crée une fonction pour calculer l'age (date aujourd’hui - date de naissance = age) comme suite :
def onchange_birthday(self,cr,uid,ids,birthday,context={}):
        data={} 
        if birthday:
            data['age'] =(datetime.now()-datetime.strptime(birthday,"%Y-%m-%d")).days/356 
        else:birthday = False
        return {'value' : data }
- Dans la vue ajouter la fonction on_change() pour le champ birthday comme suite :
<field name="birthday" on_change="onchange_birthday(birthday)"/>
Deuxième Méthode: Avec le champ fonctionnel function :
from openerp.osv import osv,fields
import time
from datetime import date
from datetime import datetime

class hr_employee(osv.osv): 
    _name='hr.employee'
    _inherit = 'hr.employee' 
    
    def _get_age(self, cr, uid, ids, name, arg, context={}):
        data={}
        for object_parent in self.browse(cr,uid,ids):
            data[object_parent.id] = 0
            if object_parent.birthday:
     data[object_parent.id]=(datetime.now()-datetime.strptime(object_parent.birthday,"%Y-%m-%d")).days/356
        return data
    
    _columns = {
           'age' : fields.function(_get_age,type='integer',string=u'Age'),
        }
    
hr_employee()
La vue :
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>

    <!-- hr inherit -->
  <record model="ir.ui.view" id="view_hr_employee_form3">
    <field name="name">hr.employee.inherit</field>
   <field name="model">hr.employee</field>
   <field name="inherit_id" ref="hr.view_employee_form" />
   <field name="type">form</field>
   <field name="arch" type="xml">
     <xpath expr="//group[@string='Birth']" position="replace">       
                         <group string="Birth">
                             <field name="birthday"/>
                             <field name="age"/>  
                         </group>  
           </xpath>
                      </field>
         </record>
    </data>
</openerp>
Télécharger le module sur Github:
odoo_training_1

You Might Also Like

1 commentaires

  1. Enpersol Technologies is the best Odoo Partners Company in Indore and Pune, proficient in business process reenginerring and optimization. provide top Odoo services, Odoo Consultants Services.

    RépondreSupprimer

Popular Posts

Formulaire de contact

Nom

E-mail *

Message *