I had to develop an app 3 years ago to track maintenances on computer and I had to implement the same kind of tracking as you are looking for with some twists.
- You will have to have a status table to keep tracks of them ( Draft, Finalized, For initial, Signed, Filed, Archived?) and each of this status must have a non modifiable date automatically recorded with no action from user. (like a trigger)
- Each date must be read only once they have been set whatever the level of admin if you want to keep consistency, otherwise, people will trick the system.
- Once a status has been set, it should become read only so there is no cheating possible either. Some status should also become available only when pre-requisite have been met such as not possible to sign before draft, then finalized, then for initial have been done.
- You might set a document status to "Draft" automatically when submitted for the 1st time.
- I do not get the point for other employees to see what the other are doing, you should disable some buttons depending on the user. Only supervisors should see others tasks.
- The receiving button should be separate from the group of users, it is confusing. I had to look at the flowchart to get how to use the app and add a task.
User interface tweaks:
- Office/ Division section should be in a separate table and use a dropdown for ease of use/administration.
- From should also use a dropdown
- Date received should get automatically the "today" value and not being editable.
Now to calculate date countdown, I used scripts and sql queries with a variable table named parameters like so:
select
column1, column2,
round(julianday('now')) -round(julianday(return_date)) as 'Days Count'
from table5 a
where a.id_Status=xyz
and Return_date in
(SELECT return_date FROM table5
WHERE (julianday('now') - julianday(return_date))
between 0 and (select quarantine_days_variable from parameters) )
This query was searching physical information about computers, count the number of days since it was returned to IT for restaging and check if the computer is still in quarantine or not according to the parameter set. If the computers where returned long enough to IT, they where displayed in another grid, ready to be restaged.
It is very easy to implement but you will have to first take care of the dates management.
Depending on your skills, you could use triggers to manage the dates automatically, I had to do it for GAMP 5 compliance. Triggers are managed directly within Sqlite using SqliteStudio.