Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
7308 Vistas

Hi everyone,

I have a situation here.If i give month name(August) and year(2016) and  5.5 (5.5 means including saturday(1/2) ) or 5 (5 means monday-friday) or 6 (6 means monday-Saturday) days/per week as input then i need to calculate total business days for that month.

Please share me if any options or functions to achieve it.Thanks in advance.

Avatar
Descartar
Mejor respuesta

Hi

 

try this function

import calendar

def onchange_type(self,cr,uid,ids,type,month,year,context=None):

res = {}

cal = calendar.Calendar()

count = 0.0

if type and month and year:

if type == '5':

for week in cal.monthdayscalendar(int(year), int(month)):

for i, day in enumerate(week):

if i not in [5,6] and day > 0:

count += 1

elif type == '5.5':

for week in cal.monthdayscalendar(int(year), int(month)):

for i, day in enumerate(week):

if i not in [5,6] and day > 0:

count += 1

elif i == 5 and day > 0:

count += .5

elif type == '6':

for week in cal.monthdayscalendar(int(year), int(month)):

for i, day in enumerate(week):

if i not in [6] and day > 0:

count += 1

res = {'value':{

'no_of_days' : count

}}

return res

i hope this will help you.

Avatar
Descartar
Mejor respuesta


Instead of using 5, 5.5 ad 6, i would add two boolean fields on the company: is_working_saturday and is_working_sunday.


Then i would iterate over the dates and test.

if date.isoweekday() < 6:

    total+=1

if date.isoweekday() == 6 and company.is_working_saturday:

    total +=1

if date.isoweekday == 7 and company.is_working_sunday:

    total +=1


This is not completely clean (i leave you the enhancement to do :D), but with a code like this you would even be able to compute number of business day for a company that work on sunday, but not on saturday

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
4
sept 18
8272
0
dic 22
2647
3
oct 23
2401
2
ago 17
6419
1
abr 25
734