vacanza / python-holidays

Generate and work with holidays in Python
https://pypi.org/project/holidays
MIT License
1.43k stars 457 forks source link

Day in Lieu / observed day for National Day for Truth and Reconciliation in BC? #1492

Open bverkron opened 11 months ago

bverkron commented 11 months ago

Title edited to reflect change in direction in the conversation.

New description: Should there be a day in lieu for National Day for Truth and Reconciliation when it falls on a weekend?

Original description:

Basically an updated version of this. National Day for Truth and Reconciliation is not recognized as an official statutory holiday in BC as of March 9, 2023.

Source:

When it falls on a weekend it is taken as a day I leu. So this year (2023) we have Monday Oct 2nd off work and school.

I guess we can finally add it as an official stat? 😊

bverkron commented 11 months ago

Never mind, it looks like it was added in https://github.com/vacanza/python-holidays/pull/951/commits/0ba670cddef43061fae973fe0b4c5eb56d230169. Perhaps Home Assistant just hasn't updated to that version of python-holidays yet?

arkid15r commented 11 months ago

Yes, HA may not be using the most recent version. I believe this issue can be closed @bverkron ?

bverkron commented 11 months ago

Yes, can indeed be closed. Sorry for wasting your time!

bverkron commented 11 months ago

@arkid15r I am curious about something though. It seems this change was made in v0.20 and HA is using v0.28 so it should have this change. However, when I setup a test sensor for today (Oct 2nd 2023, which is our actual day off) it says it is a workday.

I'm not sure if this is an issue on the HA side or perhaps holidays isn't indicating that today is a day in leu since the actual stat fell on a weekend (Saturday)?

Screenshot 2023-10-02 at 11 53 03 AM

Screenshot 2023-10-02 at 11 55 43 AM

Screenshot 2023-10-02 at 11 55 23 AM

Thoughts?

arkid15r commented 11 months ago

So, it's on Sep 30th and is observed Oct 2nd this year? If so we'll need to add an observance rule for that as it's currently doesn't have one.

KJhellico commented 11 months ago

@bverkron Do all employees in BC have in lieu holiday on Monday when NDTR falls on weekend? Then we need to add observance rule for it.

By the way, is Remembrance Day have the same rule in BC?

bverkron commented 11 months ago

So, it's on Sep 30th and is observed Oct 2nd this year?

If by "observed" you mean the way we get off work and school, etc then yes. My employer (crown corporation so pseudo government) and the school system have the day in lieu and thus we get a paid day off (or day off school) on Oct 2nd this year.

@bverkron Do all employees in BC have in lieu holiday on Monday when NDTR falls on weekend?

I'm having a hard time telling if that universally applies to all industries. The general rules according to this link says:

"Substitute a different day: Employers and employees may agree (in writing) to substitute another day for a statutory holiday. The substitute day must be treated the same as a statutory holiday."

These pages do not really add any extra clarity, as least I don't think so.

This article says vaguely:

Saturday, Sept. 30, is Truth and Reconciliation Day in B.C., although many businesses and schools will take the statutory holiday on Monday.

This site (which I'm not familiar with but is a law site) says few things of note:

  • National Day for Truth and Reconciliation (federally regulated workplaces only) (also applies to Easter Monday but not Remembrance Day

  • "If a holiday is designated for federally regulated workplaces only, such as banks and post offices, non-federal employees will not necessarily have a paid day off work. Non-federal employees may take the day off of work if their non-federal employer chooses to recognize the holiday and pay their employees."

  • "If a holiday falls on a non-work day, another day will be observed as the holiday, typically the preceding Friday or the following Monday.

I am not sure how this all this aligns with the stances of python-holidays. The above may add more confusion than clarity 😕

Edit: Here is one more resource: https://www.peninsulagrouplimited.com/ca/resource-hub/stat-holidays-and-pay/statutory-holidays-british-columbia/

National Day for Truth and Reconciliation now officially a statutory holiday in BC

The new stat holiday became official after the National Day for Truth and Reconciliation Act, 2023, received royal assent in B.C.’s legislature on March 9th, 2023. Employers in BC will now be required to provide eligible employees under the Employment Standards Act, a day off with pay on September 30.

This year, the holiday falls on a Saturday. This means all eligible employees are entitled to stat holiday pay irrespective of whether they work on Saturdays or not.

For those who work on Saturdays, employers can agree in writing to substitute another day off for the statutory holiday, but they are not required to do so.

bverkron commented 11 months ago

One more note. I just noticed the Apple provided Canadian Holidays calendar shows today as "National Day for Truth and Reconciliation (observed)" so at least that answers the "observed" question and might help with the decision?

image

BEGIN:VEVENT
DTSTAMP;VALUE=DATE:19760401
UID:d7b0957c-4379-3d35-acb9-13ff4fdc97c9
DTSTART;VALUE=DATE:20231002
CLASS:PUBLIC
SUMMARY;LANGUAGE=en:National Day for Truth and Reconciliation (observed)
TRANSP:TRANSPARENT
CATEGORIES:Holidays
X-APPLE-UNIVERSAL-ID:b7206b3d-0fe9-016e-3a16-75b21eb9d029
END:VEVENT

Though there is this on the actual date as well...

image

BEGIN:VEVENT
DTSTAMP;VALUE=DATE:19760401
UID:f08ff108-8e0e-3086-93ee-2d4fd6529390
DTSTART;VALUE=DATE:20220930
CLASS:PUBLIC
SUMMARY;LANGUAGE=en:National Day for Truth and Reconciliation
TRANSP:TRANSPARENT
RRULE:FREQ=YEARLY;COUNT=6
CATEGORIES:Holidays
X-APPLE-UNIVERSAL-ID:b7206b3d-0fe9-016e-3a16-75b21eb9d029
END:VEVENT
arkid15r commented 11 months ago

I appreciate the context you've provided, @bverkron!

Yeah, it's not that simple when it comes to subdivision+category holidays. I didn't look into all those links yet. ATM I see this holiday as a subdivision based (BC) not-for-everyone (fed. regulated workplaces) day-off. This leads us to the categories. I guess in this case it would be the GOVERNMENT? If my vision of this situation is correct then we could work on changing the code to reflect these rules.

I am not sure how this all this aligns with the stances of python-holidays.

The main goal of PH is providing the end users with a list of an entity holidays as close to the reality as possible. In our case it's a part of CA/BC population. I'd prefer making a decision on the users feedback rather than on ambiguous sources when it comes to this kind of discrepancy. So your input here is quite valuable -- we need to identify this group of "federally regulated workplaces". What's that?

I hope we'll be able to figure out the right solution soon!

// I guess other Canada provinces/territories may follow similar logic. It'd be great to identify those too.

bverkron commented 11 months ago

I'm not familiar with Categories in the context of PH but it sounds like it's for filtering to only holidays that are applicable to different sectors like public vs government?

Regarding which category to use it looks like there is already some code around this for Canada and NDTR is already included? https://github.com/vacanza/python-holidays/blob/fbefb9248e4392da4b9ec362b061b3fbe51b7a3f/holidays/countries/canada.py#L106

Seems like this was added just recently by @KJhellico here: https://github.com/vacanza/python-holidays/pull/1448

I'm not familiar with how categories are utilized in PH and have not see options for that in HA so I may need to submit an enhancement request on the HA side to leverage it. Searching the doc for 'category' this is all I could find. https://python-holidays.readthedocs.io/en/latest/changelog.html#version-0-32

As for defining what a federally regulated workplace is there is a list here: https://www.canada.ca/en/services/jobs/workplace/federally-regulated-industries.html

Interestingly the 'observed' example I showed here for NDTR in 2023 only seems to be done by Apple for that holiday, not Remembrance Day or any other day for the entire year as far as I can tell. Though not all of the 11 Canadian stat holidays have fallen on a weekend in either 2022 or 2023 so I have limited data to check.

Not sure how much any of this helps with the decision.

bverkron commented 5 months ago

@arkid15r, @KJhellico I'm wondering if there has been any further thought / discussion on this. Being it's Easter Monday for me (which is a holiday for me as a government employee) I started revisiting this again.

What is the significance of this (below) and how might HA be able to leverage this in it's Workday sensor to allow users to consider federally regulated holidays as non-work days. https://github.com/vacanza/python-holidays/blob/fbefb9248e4392da4b9ec362b061b3fbe51b7a3f/holidays/countries/canada.py#L106

I should probably split this out into separate issue or discussion as it's unrelated to the original issue described (NDTR observation rule).

Edit: I had made a mistake in some of my testing so removed some unrelated stuff in this comment. My appologies.

bverkron commented 5 months ago

So, it's on Sep 30th and is observed Oct 2nd this year? If so we'll need to add an observance rule for that as it's currently doesn't have one.

I did some further digging on this as well and found that NDTR should probably have an observation rule.

https://canada-holidays.ca/provinces/BC/2023

Screenshot 2024-04-01 at 12 37 43 PM

That site is not an official government site but rather a github project for Canadian holidays. It cites the official government resources used under Citations but I am struggling to find any official language that states which days should be observed on the following weekday if they fall on a weekend. I get the sense this is just the default rule for any statutory holiday.

This site explicitly says the following though about NDTR last year (2023).

National Day for Truth and Reconciliation now officially a statutory holiday in BC

The new stat became official after the National Day for Truth and Reconciliation Act, 2023, received royal assent in B.C.’s legislature on March 9th, 2023. Employers in BC will now be required to provide eligible employees under the Employment Standards Act, a day off with pay on September 30. This year, the holiday falls on a Saturday, meaning employees will get Monday, October 2 off.

This site also says in general that...

If a holiday falls on a non-work day, another day will be observed as the holiday, typically the preceding Friday or the following Monday. The Employment Standards Act allows the employer to decide which day will be observed as a holiday.

(but note that site has incorrect info about NDTR specifically since it was posted before 2023 when it became a stat for BC)

So... the TLDR seems to be that for any day officially recognized as a stat holiday in BC it will be observed on the network working day (ex: Monday) if it falls on a non-working day (ex: Saturday or Sunday). This should include NDTR in BC since 2023 when it was added as a stat holiday... as best I can tell.