Clearance Technical Debts
There are many causes that the technical debts have accumulated especially in clearance module.
- Required to implement the module as soon as possible (due to pandemic).
- Some specific AMTI departments have specific way of dealing with clearance routed to them.
- Some specific AMTI Approvers have specific timeline to process the clearance.
- Routes are dynamic and varies to employee application.
- Unforeseen specification that was eventually needed and was not advised early on regarding such scenario.
- I'm partly to blame as I haven't expected such features to be requested.
However, this is not a wiki to discuss the reasons why I have technical debts.
Tech Debt 1: Approver and Route Management
Managing route and approvers is identical as it relies heavily on the AIS Hierarchy Module. This can be solved in a single module page only by filtering the clearance Form Types only - AFC and - ONSITE.
But I have planned to separate this inside a single web page but have two (2) tab page to separate the data tables per form allowing us also to have separate Add, Edit and Archive.
Changing the forms
Ongoing Solution for solving this: Route Management
Tech Debt 2: Sales Logistics Special conditions
This is a requirement that was only brought up after the day the clearance has been implemented. The approvers of the Sales Logistics Department (Part of the standard route) should be dynamic according to employee department.
Sales Logistic Department has many BU/Teams under its wing, and those BU or Business Units are managed by two (2) AMTI Employees.
"In my current tenure, the Sales Logistics Approver is Ma'am Donna Perez have two AMTI employee's under her. Ma'am Lorry and Ma'am Jaymee. This is an unhandled on the initial implementation of the clearance module. However a work around was made to comply their requirements. - matt"
# The following code is at:
# FILE: clearance.php
# CLASS: Clearance
# FUNCTION: addClearance()
case 'AFC':
$clearanceId = $this->clearance_model->insertClearance($clearance); // insert clearance
// ======= SPECIAL SCENARIO FOR SALES LOGISTICS UNDER MA'AM DONNA. =======
$msJaymee = ['D0066', 'D0053', 'D0040', 'D0004', 'D0005', 'D0072', 'D0007', 'D0008', 'D0009', 'D0044'];
$msLorry = ['D0010', 'D0022', 'D0027', 'D0028', 'D0029', 'D0030', 'D0012', 'D0023', 'D0024', 'D0025', 'D0026', 'D0032'];
$salesSubApprover = null;
// if employee is under ms.Jaymee. Remove (51 = Miss Lorry)
if (in_array($clearance['dept_ID'], $msJaymee)) $salesSubApprover = '51';
// if employee is under ms.Lorry. Remove (21 = miss jaymee)
else if (in_array($clearance['dept_ID'], $msLorry)) $salesSubApprover = '21';
$clearanceRoutes = $this->clearance_model->routesAFC($clearance['supervisor_id'], $salesSubApprover);
echo json_encode(['code' => '0', 'msg' => 'success']);
$isClearanceInserted = true;
// ===================== SPECIAL SCENARIO ENDS HERE =======================
break;
| Approver/User ID | Approver | Dept ID | Department |
|---|---|---|---|
| 21 | Ma'am Jaymee | D0004 | AMTI - CEBU |
| 21 | Ma'am Jaymee | D0005 | AMTI - DAVAO |
| 21 | Ma'am Jaymee | D0007 | ASCEND MANAGEMENT |
| 21 | Ma'am Jaymee | D0008 | ASCEND-BPO FACILITIES & SOLUTIONS |
| 21 | Ma'am Jaymee | D0009 | ASCEND-CYBERSECURITY |
| 21 | Ma'am Jaymee | D0040 | GOVERNMENT TEAM |
| 21 | Ma'am Jaymee | D0044 | IMS - SALES GROUP |
| 21 | Ma'am Jaymee | D0053 | PROFESSIONAL SERVICES GROUP(PSG) |
| 21 | Ma'am Jaymee | D0066 | UNCS NETWORK/SECURITY |
| 21 | Ma'am Jaymee | D0072 | AMARANTOS |
| 51 | Ma'am Lorry | D0010 | AVIT |
| 51 | Ma'am Lorry | D0012 | BFSI |
| 51 | Ma'am Lorry | D0022 | EBU 1 |
| 51 | Ma'am Lorry | D0023 | EBU 11(ESG2) |
| 51 | Ma'am Lorry | D0024 | EBU 12(ESG2) |
| 51 | Ma'am Lorry | D0025 | EBU 14(ESG2) |
| 51 | Ma'am Lorry | D0026 | EBU 15(ESG2) |
| 51 | Ma'am Lorry | D0027 | EBU 2 |
| 51 | Ma'am Lorry | D0028 | EBU 3 |
| 51 | Ma'am Lorry | D0029 | EBU 5 |
| 51 | Ma'am Lorry | D0030 | EBU 6 |
| 51 | Ma'am Lorry | D0032 | EBU 9 / CONSUMABLES & PERIPHER |
Prospect solution: This could be solved in a single table inside the clearance database to be a managed data. But this must be in synced with the current sub-approvers of Sales logistics. Else this could pose an error to the function.
Tech Debt 3: Clearance Routes is inserted on clearance submit application.
This is an old tech debt that I am fully aware of since the day of implementation but unable to publish the updates due to the requirements being requested occasionally outdating the pending updates further more.
Routes are automatically inserted once the employee have field their clearance application form. This have both advantage and disadvantages.
The advantage of doing this implementation are the following:
- The HR/Superuser would be able to identify the routes immediately using the
sql scriptused to retrieve the clearance applications. See Image: Dashboard Route Summary. - Doing so will hasten the clearance status updating of the HR/Superuser as the route insertion is done on the clearance application filing instead of routing phase.
The disadvantages of doing this implementation are the following:
- The HR/Superuser won't be able to change the Route currently inserted to the clearance. This will require a SuperAdmin/MIS intervention to manipulate the route.
- A related Tech debt will be needing this feature to be implemented. See Improved HR/SuperUser management.
Tech Debt 4: Improved HR/SuperUser management
This Tech Debt is pending feature that has been abruptly requested a long time ago has not been not taken notice as it is only considered a "nice to have feature".
This feature composes of a fine grained control over the clearance application form drastically reducing the interference of MIS support to the module. See image below for layout draft:
The prospect feature composes of the following:
- This will be able to add, edit and delete a Route that is currently assigned to the clearance.
- Separate tab to update the Employee clearance application form details allowing the HR/SuperUsers to focus only to the important detail.
- Separate tab for the routing process. This will fine grain the clearance logging to be saved in the clearance row in the database such as "Timestamp Routed", "Timestamp completely Routed", "Timestamp processed" and Timestamp modified.