Intro

 * Tasks may have one parent task and many sub tasks.
 * Tasks may have a recurring schedule.
 * Tasks with an enabled recurring schedule automatically generate subTasks.
 * Tasks may have many "work done" or "fault" entries.

Task terms and definitions.

Task:
    description
                - Default = required so nothing.
                - Standard length used most places.

    comment
                - Default = "".     
                - Longer for additional info only shown in detail views.

    targetStartDate
                - Default = now.
                - The date we would like task to start.
                - Set by Schedule action.
                - Set to now for Unscheduled Breakin.

    targetCompletionDate
                - Default = now.
                - The date we would like task to be completed by.
                - Set by Schedule action.
                - Set to now for Unscheduled Breakin.

    isScheduled 
                - Default = false.
                - Set true by Schedule action.

    isApproved  
                - Default=false, true when approved.
                - Set true by Approve action
                - Set false by Renege action.

    isActive    
                - Default=true, false if "Deleted".
                - Set false by Delete action.
                - Set true by Undelete action. 
                - Require true when creating new entries/lists for dropdowns etc.
                - Ignore when viewing old associations or creating lists for searching etc.

    taskGroup
                - Default = required so nothing.
                - The taskGroup this task belongs to.
                - Of Class TaskGroup.

    taskStatus
                - Default = "Not Started".
                - The current status of this task.
                - Of Class TaskStatus.
                - One of "Not Started", "In Progress" or "Completed".
                - Automagically set to "In Progress" on first "Work Done" entry.
                - Automagically set to "Completed" by action button.

    taskPriority
                - Default = Normal.
                - Of Class TaskPriority.
                - One of Normal, Low, High, Immediate.
                - Automagically set to High if Unscheduled Breakin?
                - Automagically set to ?

    taskType
                - Default = required so nothing.
                - Of Class TaskType.
                - Automagically set to ?

    parentTask
                - Default = not always used so nothing.
                - Indicates that this is a subTask and links back to the parentTask.
                - Of Class Task.

    leadPerson  
                - Default = current person.
                - The primay contact person.
                - Of Class Person.

    primaryAsset  
                - The primay asset that costs will be assigned to.
                - Of Class Asset

    entries       
                - A task may have many entries of Class Entry.
                - Persons other than the leadPerson or assingedPersons may create entries.
    
    modifications
                - A task may have many modifications of Class Modification.

    assignedPersons
                - A task may have many assingedPersons of Class Person.
                - estimatedHour and estimatedMinute.

    subTasks    
                - A task may have many subTasks of Class Task.
                - The parentTask value must be set in the subTask.

    associatedAssets    
                - A task may have many associatedAssets of Class Asset.
                - No costs are assigned to these assets this is for reference purposes.

    inventoryMovements
                - A task may have many inventoryMovements of Class InventoryMovement.


#Calculated dates
actualStartDate
actualCompletionDate

TaskType
    Unscheduled Breakin - all work that was not scheduled, breakdowns/callouts.
    Planned Maintenance - Planned work that is scheduled.
    Project             - Capital expenditure upgrades or additions.
    Turnaround          - Shutdowns, rebuilds, non Cap-Ex upgrades or additions.
    Production Run      - Planned production that is scheduled?

TaskGroup
    ....                - custom used to groups tasks?
    Engineering Activites
    Production Activites
    New Projects
    ....                - specific shut group or turnaround etc.

#Calculate missed state? 
Missed() {
    actualCompletionDate > targetCompletionDate
}

#External required actions.
Show all modifications for a task.
Show all assignedPersons for a task.
Show all entries for a task.


