diff --git a/README.md b/README.md index 60b2be4..eda2de1 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,35 @@ # ApprovalBundle -A plugin for Kimai 2 to approve timesheets of users on a weekly basis including API provision. +A plugin for [Kimai](https://www.kimai.org/) - a timetracking open source tool - to approve timesheets of users on a weekly basis including APIs. -## Requirement +Checkout the [Documentation](./documentation.md) for content information. + +Here is a short live demo: + +![Example process for Teamleads](./_documentation/ApprovalTeamlead.gif) + +## Requirements - Requires Kamai 2, V1.16.10 or higher - MetaFields plugin -- LockdownPerUser plugin ([GitHub](https://github.com/kevinpapst/LockdownPerUserBundle)) +- LockdownPerUser plugin ([GitHub](https://github.com/kevinpapst/LockdownPerUserBundle)) + +## Features + +- Users can send a week for approval (in sequential order) +- User lockdown -> a submitted/approved week can no longer be edited (apart from admins) - there is one lockdown date per user (LockdownPerUserBundle) +- Teamlead/Admin can approve or deny the week +- Overview of approvals, missing approvals and the status +- Mailing options to recall approval tasks if outstanding ## Status The approval bundle is already working pretty well. Some updates will be done soon, as some functionality and checks are not final yet. Unless these things are implemented the version is below 1. +## Issues + +It is highly recommended to use the **same timezone** setting for all users. Furthermore all users should use the **same "Start day of the week"** setting - ideally everybody should use "Monday". Otherwise issues could appear as, e.g. Monday times can be located on a Sunday when the teamlead and the user using different timezones. Furthermore the "Start day" is used to store the approval week. When the "Start day" is Sunday for a user and Monday for the teamlead, the approval will not work appropriately. + ## Installation First unzip the plugin into to your Kimai `plugins` directory: diff --git a/_documentation/ApprovalAdmin.gif b/_documentation/ApprovalAdmin.gif new file mode 100644 index 0000000..a22e235 Binary files /dev/null and b/_documentation/ApprovalAdmin.gif differ diff --git a/_documentation/ApprovalTeamlead.gif b/_documentation/ApprovalTeamlead.gif new file mode 100644 index 0000000..fa8cbe6 Binary files /dev/null and b/_documentation/ApprovalTeamlead.gif differ diff --git a/_documentation/ApprovalUser.gif b/_documentation/ApprovalUser.gif new file mode 100644 index 0000000..118e75d Binary files /dev/null and b/_documentation/ApprovalUser.gif differ diff --git a/_documentation/Screenshot_AdminRollbackOption.png b/_documentation/Screenshot_AdminRollbackOption.png new file mode 100644 index 0000000..ad36896 Binary files /dev/null and b/_documentation/Screenshot_AdminRollbackOption.png differ diff --git a/_documentation/Screenshot_TeamleadApproveDeny.png b/_documentation/Screenshot_TeamleadApproveDeny.png new file mode 100644 index 0000000..f53014f Binary files /dev/null and b/_documentation/Screenshot_TeamleadApproveDeny.png differ diff --git a/_documentation/Screenshot_TeamleadOverviewOfTeam.png b/_documentation/Screenshot_TeamleadOverviewOfTeam.png new file mode 100644 index 0000000..d29f38d Binary files /dev/null and b/_documentation/Screenshot_TeamleadOverviewOfTeam.png differ diff --git a/_documentation/Screenshot_TeamleadSeeHistory.png b/_documentation/Screenshot_TeamleadSeeHistory.png new file mode 100644 index 0000000..9fe233c Binary files /dev/null and b/_documentation/Screenshot_TeamleadSeeHistory.png differ diff --git a/_documentation/Screenshot_UserApprovalForWeek.png b/_documentation/Screenshot_UserApprovalForWeek.png new file mode 100644 index 0000000..17887b9 Binary files /dev/null and b/_documentation/Screenshot_UserApprovalForWeek.png differ diff --git a/documentation.md b/documentation.md new file mode 100644 index 0000000..c5e3c71 --- /dev/null +++ b/documentation.md @@ -0,0 +1,35 @@ +# Approval Bundle + +The approval bundle can be used to setup an approval workflow for timesheets in Kimai. + +## Users - Submit for Approval + +The user can check their weeks and submit the timesheets week-by-week for approval. The user can see additionally the comments entered for the projects, can see the connected single time entries and can also see the history. + +The red information areas show possible issues with German law as it is for example forbidden to work 8h without a break. + +The overview also displays the weekly hours a user should work together with the actual hours worked. + +![Example process for Users](./_documentation/ApprovalUser.gif) + +## Teamleads - Submit their timesheets and approve team members weeks + +The Teamleads can see an overview of their own open weeks additionally to those of their team members open weeks and from the last week a complete overview. The teamlead can approve or deny the timesheets of their teamleads. Once an approval is accepted, the teamlead is not able to "undo" that acceptance. + +A teamlead can also be a team member of a different team, then the teamleads week can be approved by that teamlead. + +![Example process for Teamleads](./_documentation/ApprovalTeamlead.gif) + +## Admins - Overview & Overrule + +The admins can see and update any approval the same way the teamlead could do for their team. Additionally the admin is able to reset an already approved week. + +![Example process for Admins](./_documentation/ApprovalAdmin.gif) + +## Lockdown Process + +The "LockdownPeriodPerUser" is used. As an admin you can see the lockdown settings per user. This period should only be updated by the approval bundle and not manually. + +When a user sets a week to approval, then the end time of that week is used as lockdown date for this user. For this there cannot be any time entries added for this or any previous week. + +When a week which was send to approval is denied (by teamlead or admin) or "undone" (by admin), then this week is opened, the lockdown date is set to the end of the previous week. As this would allow any following week to be updated as well, all weeks that follow that denied/re-opened week are also reset and need a new approval. \ No newline at end of file