# Hourly rates per client
HOURLY_RATES = {
'Amanda': 20,
'Heidi': 24
}
# Valid working days per client
WORK_SCHEDULE = {
'Amanda': ['Monday', 'Tuesday', 'Wednesday', 'Friday'],
'Heidi': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
}
def log_hours(file_path, date, hours, client):
date_obj = datetime.strptime(date, '%Y-%m-%d')
day_of_week = date_obj.strftime('%A')
# Validate: reject non-working days
if day_of_week not in WORK_SCHEDULE[client]:
raise ValueError(f"{client} doesn't work on {day_of_week}")
earnings = hours * HOURLY_RATES[client]
new_entry = pd.DataFrame({
"Date": [date], "Day": [day_of_week],
"Hours Worked": [hours], "Client": [client],
"Earnings": [earnings]
})
df = pd.concat([df, new_entry], ignore_index=True)
df.to_excel(file_path, index=False)
# Weekly summary — groupby + agg using Pandas
work_hours['Date'] = pd.to_datetime(work_hours['Date'])
start_of_week = today - timedelta(days=today.weekday())
weekly_data = work_hours[work_hours['Date'] >= start_of_week]
summary = weekly_data.groupby('Client').agg({
'Hours Worked': 'sum',
'Earnings': 'sum'
}).reset_index()