Jetfire Code: Timesheet
The Jetfire Code Class for Timesheet is shown below in the box. This class is used for the Timesheet application.
// T I M E S H E E T S ==============================================================
// Timesheets.txt
//===================================================================================
// Copyright (C) 2007 TrackerRealm Corporation
//===================================================================================
// T I M E S H E E T S
// Use this Timesheet Workflow submit Timeslips, vacations, sick days, etc
// Each Timesheet workflow tracks multiple timeslips for ONE project (workflow) and ONE worker
// Multiple Timesheet workflows are used to track mutiple Projects/Worker each week.
// Multiple Timesheet workflows are used to track mutiple Projects/Multiple Workers each week.
//
namespace JetfireApps
{
private workflow Timeslip
{
public Timeslip()
{
Subject = "Timeslip ";
RegularOvertime = false;
PremiumOvertime = false;
}
// Commands
public void Set_Regular_OT()
{
RegularOvertime = true;
}
public void Set_Premium_OT()
{
PremiumOvertime = true;
}
// Properties
public Workflow Project
{
get;
set;
}
public TimeSpan Mon
{
get;
set;
}
public TimeSpan Tue
{
get;
set;
}
public TimeSpan Wed
{
get;
set;
}
public TimeSpan Thu
{
get;
set;
}
public TimeSpan Fri
{
get;
set;
}
public TimeSpan Sat
{
get;
set;
}
public TimeSpan Sun
{
get;
set;
}
public bool RegularOvertime
{
get;
set;
}
public bool PremiumOvertime
{
get;
set;
}
}
public workflow Timesheet
{
// Add workflow constructor
public Timesheet()
{
Subject = "Timesheet ";
Timeslips = new List();
OvertimeTimeslips = new List();
ToilTimeslips = new List();
WeekNumber = 0;
enterstate Submitted();
}
// The Timesheet goes thru a number of states.
// 1. The employee fills in and then Submits the timesheet.
// 2. The manager Approves the timesheet.
// 3. Accounting reviews and and then Locks the timesheet.
// From State To State Command
// new Submitted Save
// Submitted Approved Approve
// Approved Submitted Un-Approve
// Approved Locked Lock
// Locked Approved Un-Lock
// Add states to the workflow
public Submitted() { }
public Approved() { }
public Locked() { }
// Add Properties
public Person Worker
{
get;
set;
}
public OrganizationUnit Department
{
get;
set;
}
public uint WeekNumber
{
get;
set;
}
public Date WeekEnding
{
get;
set;
}
public List Timeslips
{
get;
private set;
}
public List OvertimeTimeslips
{
get;
private set;
}
public List ToilTimeslips
{
get;
private set;
}
// Add Command Methods
public void Save() : states(Submitted)
{
enterstate Submitted();
}
public void Approve() : states(Submitted)
{
enterstate Approved();
}
public void UnApprove() : states(Approved)
{
enterstate Submitted();
}
public void Lock() : states(Approved)
{
enterstate Locked();
}
public void UnLock() : states(Locked)
{
enterstate Approved();
}
public Timeslip Add_Timeslip() : states(Submitted)
{
Timeslip schedule = new Timeslip();
Timeslips.Add(schedule);
return schedule;
}
public Timeslip Add_Timeslip(Timeslip schedule) : states(Submitted)
{
Timeslips.Add(schedule);
return schedule;
}
public Timeslip Add_Overtime_Timeslip() : states(Submitted)
{
Timeslip schedule = new Timeslip();
OvertimeTimeslips.Add(schedule);
return schedule;
}
public Timeslip Add_Overtime_Timeslip(Timeslip schedule) : states(Submitted)
{
OvertimeTimeslips.Add(schedule);
return schedule;
}
public Timeslip Add_TOIL_Timeslip() : states(Submitted)
{
Timeslip schedule = new Timeslip();
ToilTimeslips.Add(schedule);
return schedule;
}
public Timeslip Add_TOIL_Timeslip(Timeslip schedule) : states(Submitted)
{
ToilTimeslips.Add(schedule);
return schedule;
}
}
}
See Also
Jetfire Code Library
Jetfire Code Application Library