콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
6668 화면

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.

아바타
취소
베스트 답변

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.

아바타
취소
베스트 답변


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

아바타
취소
관련 게시물 답글 화면 활동
4
9월 18
7719
0
12월 22
2163
3
10월 23
1798
2
8월 17
5997
1
4월 25
166