I have two textbox.
In first textbox i'll manually enter islamic date, at the same time on the second textbox it changes to geogorian date.
I wrote code for it, but its shows error.
from openerp.osv import fields, osv
import math
def intPart(floatNum):
if floatNum < -0.0000001: return math.ceil(floatNum - 0.0000001)
return math.floor(floatNum + 0.0000001)
def Hijri2Gregorian(yr,mth,day):
jd1 = intPart((11 * yr + 3) / 30.0)
jd2 = intPart((mth - 1) / 2.0)
jd = jd1 + 354 * yr + 30 * mth - jd2 + day + 1948440 - 385
if jd > 2299160:
l = jd + 68569
n = intPart((4 * l) / 146097.0)
l = l - intPart((146097 * n + 3) / 4.0)
i = intPart((4000 * (l + 1)) / 1461001.0)
l = l - intPart((1461 * i) / 4.0) + 31
j = intPart((80 * l) / 2447.0)
d = l - intPart((2447 * j) / 80.0)
l = intPart(j / 11.0)
m = j + 2 - 12 * l
y = 100 * (n - 49) + i + l
else:
j = jd + 1402
k = intPart((j - 1) / 1461.0)
l = j - 1461 * k
n = intPart((l - 1) / 365.0) - intPart(l / 1461.0)
i = l - 365 * n + 30
j = intPart((80 * i) / 2447.0)
d = i - intPart((2447 * j) / 80.0)
i = intPart(j / 11.0)
m = j + 2 - 12 * i
y = 4 * k + n + i - 4716
return y, m, d
class hr_extra(osv.osv):
_inherit = "hr.employee"
def _get_hijr_date(self, cr, uid, ids, name, arg,context=None):
res = {}
for self_data in self.browse(cr, uid, ids, context=context):
islamic_date = self_data.islamic_date
# get Pass yesr, month and day in this function
Hijri2Gregorian(yr,mth,day)
return res
_columns = {
'islamic_date' : fields.char('Islamic Date'),
'english_date' : fields.function(Hijri2Gregorian,'English Date'), }
hr_extra()
Error: TypeError: Hijri2Gregorian() takes exactly 3 arguments (7 given)
Updated Code
class hr_extra(osv.osv):
_inherit = "hr.employee"
def _get_hijri_date(self, cr, uid, ids, name, args, context=None):
res = {}
for self_data in self.browse(cr, uid, ids, context=context):
islamic_date = self_data.islamic_date
islamic_date = '%.2f' % islamic_date
list = str(islamic_date).split('.')
yr = islamic_date(int(list[0]))
mth = islamic_date(int(list[1]))
day = islamic_date(int(list[2]))
# get Pass yesr, month and day in this function
#yr = 1428
#mth = 1
#day = 2
Hijri2Gregorian(yr,mth,day)
return res _
columns = {
'islamic_date' : fields.char('Islamic Date'),
'english_date' : fields.function(_get_hijri_date,type='date', select=True,string='English Date'), }
hr_extra()
Is this code correct?? Please help me...
update the log or error message for ur updated code ?
Module installed: When i click on the existing employee. It shows error: File "/opt/openerp/server/openerp/addons/date22/hr_date.py", line 52, in _get_hijri_date list = islamic_date.split('.') AttributeError: 'bool' object has no attribute 'split'
When i created new employee and give islamic date as 1428.1.2, then save. i got error: File "/opt/openerp/server/openerp/addons/date22/hr_date.py", line 53, in _get_hijri_date yr = islamic_date(str(list[0])) TypeError: 'unicode' object is not callable
Any idea, senthilnathan?
if it says bool then there is no data so it can't split
unicode error means u need to convert it before passing print type of the value passed and check
Did you know the code?
Did you know solve the issue?
How i convert these values?
Did you mean to Hijri to Gregorian?