From b908881f8698d982989786a507ec2d97be9d5b12 Mon Sep 17 00:00:00 2001 From: Whisker Jones Date: Fri, 8 Mar 2024 15:35:07 -0700 Subject: [PATCH] more pto updates --- projects/dev/pto_countdown/main.py | 34 +++++++++++------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/projects/dev/pto_countdown/main.py b/projects/dev/pto_countdown/main.py index 87dbbaa..18970c1 100644 --- a/projects/dev/pto_countdown/main.py +++ b/projects/dev/pto_countdown/main.py @@ -1,7 +1,11 @@ #!/usr/bin/env python3 - +# PTO Countdown +import os from datetime import datetime, timedelta +# Clear the terminal screen +os.system('cls' if os.name == 'nt' else 'clear') + def calculate_reach_date(current_hours, max_hours, hours_added_bi_weekly): """ Calculates the estimated date when the maximum Paid Time Off (PTO) hours will be reached. @@ -14,49 +18,35 @@ def calculate_reach_date(current_hours, max_hours, hours_added_bi_weekly): Returns: - datetime.date: The estimated date when the maximum PTO balance is reached. """ - # Calculate the additional hours needed to reach the maximum hours_needed = max_hours - current_hours - - # Determine the number of bi-weekly periods needed to accumulate the necessary hours bi_weekly_periods_needed = hours_needed / hours_added_bi_weekly - - # Convert the period into days - days_needed = bi_weekly_periods_needed * 14 # Two weeks per bi-weekly period - - # Calculate the future date when the maximum will be reached + days_needed = bi_weekly_periods_needed * 14 reach_date = datetime.now() + timedelta(days=days_needed) return reach_date # Constants for the program -MAX_HOURS = 240 # The maximum PTO balance allowed -# The standard rate of PTO accrual every two weeks -HOURS_ADDED_BI_WEEKLY = 6.15384615 -# An alternative accrual rate for different scenarios (commented out by default) -# HOURS_ADDED_BI_WEEKLY = 7.69230769 -LAST_KNOWN_PTO_BALANCE = 220.08 # An example of a last known PTO balance +MAX_HOURS = 240 +HOURS_ADDED_BI_WEEKLY = 6.15384615 # 160 hours per year +# HOURS_ADDED_BI_WEEKLY = 7.69230769 # 200 hours per year +# HOURS_ADDED_BI_WEEKLY = 9.61538462 # 250 hours per year +LAST_KNOWN_PTO_BALANCE = 220.08 # Introduction and instructions for the user print("PTO Balance Calculator") print("----------------------") print("Determine when you will reach your maximum PTO balance based on your current accrual.") - -# Display the last known PTO balance to assist with user input print(f"\nLast known PTO balance: {LAST_KNOWN_PTO_BALANCE}\n") # Handling user input try: - # Prompting the user to enter their current PTO balance current_hours_input = input("Enter your current PTO hours: ") - current_hours = float(current_hours_input.strip()) # Convert input to a floating-point number + current_hours = float(current_hours_input.strip()) - # Calculation based on user input reach_date = calculate_reach_date(current_hours, MAX_HOURS, HOURS_ADDED_BI_WEEKLY) - # Displaying the calculation results print("\nCalculation Results") print("-------------------") print(f"Today's Date: {datetime.now().strftime('%A, %B %d, %Y')}") print(f"Maximum PTO balance of {MAX_HOURS} hours will be reached on: {reach_date.strftime('%A, %B %d, %Y')}.") except ValueError: - # Error handling for non-numeric inputs print("Error: Please enter a valid number for your current PTO hours.")