İçereği Atla
Menü
Bu soru işaretlendi
2 Cevaplar
7322 Görünümler

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
Vazgeç
En İyi Yanıt

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
Vazgeç
En İyi Yanıt


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
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
4
Eyl 18
8287
0
Ara 22
2662
3
Eki 23
2422
2
Ağu 17
6429
1
Nis 25
736