Hi,
I need to know that how to calculate age from birthday in odoo10.
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
Hi,
I need to know that how to calculate age from birthday in odoo10.
Hi,
A lot of solutions in already available for this. Also some apps is available for this. I will just copy paste one of the solution from it,
from datetime import date
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
More solutions :-
https://www.odoo.com/forum/help-1/question/how-to-calculate-age-from-date-of-birth-22946
https://stackoverflow.com/questions/2217488/age-from-birthdate-in-pythonApps available :-
https://apps.odoo.com/apps/modules/9.0/birth_date_age/
https://apps.odoo.com/apps/modules/10.0/birthday_age_calculator/Thanks
#use relativedelta to calculate age in years , months and days
from odoo import api, fields, modelsfrom datetime import date, datetime@api.depends('dob')
from dateutil.relativedelta import relativedelta
@api.multi
def _cal_age(self):
if self.dob:
years = relativedelta(date.today(), self.dob).years
months = relativedelta(date.today(), self.dob).months
day = relativedelta(date.today(), self.dob).days
self.age = str(int(years)) + ' Year/s ' + str(int(months)) + ' Month/s ' + str(day) + ' Day/s'
This is also possible
@api.multi
@api.depends('birthday')
def _compute_age(self):
for record in self:
if record.birthday and record.birthday <= fields.Date.today():
record.age = relativedelta(
fields.Date.from_string(fields.Date.today()),
fields.Date.from_string(record.birthday)).years
else:
record.age = 0
Thanks.
Hi
@api.depends('birthday')
def _get_age(self):
for r in self:
if r.birthday:
bdate = datetime.strptime(r.birthday, "%Y-%m-%d").date()
today = date.today()
diffdate = today - bdate
years = diffdate.days/365
formonth = diffdate.days - (years * 365.25)
months = (formonth/31)
bday = bdate.day
tody = date.today().day
if tody >= bday:
day = tody-bday
else:
day = 31 - (bday-tody)
r.age = str(years) + ' Year/s ' + str(int(months)) + ' Month/s ' + str(day) + ' Day/s'
age = fields.Char(compute='get_age', string = 'Age')
hope this helps
class StudentStudent(models.Model):
_name = 'student.student'
calc_age = fields.Char(string="Calculated Age", compute="age_calc", store=True)
# Calculated age
@api.depends('student_dob')
def age_calc(self):
if self.student_dob is not False:
self.calc_age = (datetime.today().date() - datetime.strptime(str(self.student_dob), '%Y-%m-%d').date()) // timedelta(days=365)
Thank You Niyas,
I'm already done like this way ,it's worked.
class BirthDateAge(models.Model):
_inherit = "hr.employee"
birthday = fields.Date(string="DOB")
age = fields.Integer(string="Age")
@api.onchange('birthday')
def _onchange_birth_date(self):
"""Updates age field when birth_date is changed"""
if self.birthday:
d1 = datetime.strptime(self.birthday, "%Y-%m-%d").date()
d2 = date.today()
self.age = relativedelta(d2, d1).years
hi , i tried this but iam getting this below error
Error:
Odoo Server Error
Traceback (most recent call last):
File "/odoo/odoo-server/odoo/http.py", line 619, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/odoo/odoo-server/odoo/http.py", line 309, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/odoo/odoo-server/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/odoo/odoo-server/odoo/http.py", line 664, in dispatch
result = self._call_function(**self.params)
File "/odoo/odoo-server/odoo/http.py", line 345, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/odoo/odoo-server/odoo/service/model.py", line 93, in wrapper
return f(dbname, *args, **kwargs)
File "/odoo/odoo-server/odoo/http.py", line 338, in checked_call
result = self.endpoint(*a, **kw)
File "/odoo/odoo-server/odoo/http.py", line 910, in __call__
return self.method(*args, **kw)
File "/odoo/odoo-server/odoo/http.py", line 510, in response_wrap
response = f(*args, **kw)
File "/odoo/odoo-server/addons/web/controllers/main.py", line 1320, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/odoo/odoo-server/addons/web/controllers/main.py", line 1312, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/odoo/odoo-server/odoo/api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/odoo/odoo-server/odoo/api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/odoo/odoo-server/odoo/models.py", line 6070, in onchange
record._onchange_eval(name, field_onchange[name], result)
File "/odoo/odoo-server/odoo/models.py", line 5871, in _onchange_eval
method_res = method(self)
File "/odoo/odoo-server/addons/hr/models/hr_employee.py", line 87, in _onchange_birth_date
('married', 'Married'),
TypeError: strptime() argument 1 must be str, not datetime.date
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
|
2
Apr 21
|
3407 | ||
|
0
Nov 20
|
1398 | ||
|
1
Aug 18
|
11532 | ||
|
1
Aug 18
|
8737 | ||
Call a function through Url
Solved
|
|
1
Jan 18
|
5670 |