(Fix): Fixed the excel reporting system, fixed alot of hardcoded dropdown values in activities, auto selection of departments is also implemented

This commit is contained in:
2025-12-18 10:11:22 +00:00
parent 2a38cf372a
commit 01400ad4e1
10 changed files with 568 additions and 117 deletions

View File

@@ -17,11 +17,13 @@ router.get("/", authenticateToken, async (ctx) => {
SELECT cr.*,
u.name as contractor_name, u.username as contractor_username,
sd.name as sub_department_name,
d.name as department_name
d.name as department_name,
a.unit_of_measurement
FROM contractor_rates cr
JOIN users u ON cr.contractor_id = u.id
LEFT JOIN sub_departments sd ON cr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN activities a ON a.sub_department_id = cr.sub_department_id AND a.name = cr.activity
WHERE 1=1
`;
const queryParams: unknown[] = [];
@@ -57,10 +59,12 @@ router.get("/contractor/:contractorId/current", authenticateToken, async (ctx) =
let query = `
SELECT cr.*,
u.name as contractor_name, u.username as contractor_username,
sd.name as sub_department_name
sd.name as sub_department_name,
a.unit_of_measurement
FROM contractor_rates cr
JOIN users u ON cr.contractor_id = u.id
LEFT JOIN sub_departments sd ON cr.sub_department_id = sd.id
LEFT JOIN activities a ON a.sub_department_id = cr.sub_department_id AND a.name = cr.activity
WHERE cr.contractor_id = ?
`;
const queryParams: unknown[] = [contractorId];
@@ -130,10 +134,12 @@ router.post("/", authenticateToken, authorize("Supervisor", "SuperAdmin"), async
const newRate = await db.query<ContractorRate[]>(
`SELECT cr.*,
u.name as contractor_name, u.username as contractor_username,
sd.name as sub_department_name
sd.name as sub_department_name,
a.unit_of_measurement
FROM contractor_rates cr
JOIN users u ON cr.contractor_id = u.id
LEFT JOIN sub_departments sd ON cr.sub_department_id = sd.id
LEFT JOIN activities a ON a.sub_department_id = cr.sub_department_id AND a.name = cr.activity
WHERE cr.id = ?`,
[result.insertId]
);
@@ -197,10 +203,12 @@ router.put("/:id", authenticateToken, authorize("Supervisor", "SuperAdmin"), asy
const updatedRate = await db.query<ContractorRate[]>(
`SELECT cr.*,
u.name as contractor_name, u.username as contractor_username,
sd.name as sub_department_name
sd.name as sub_department_name,
a.unit_of_measurement
FROM contractor_rates cr
JOIN users u ON cr.contractor_id = u.id
LEFT JOIN sub_departments sd ON cr.sub_department_id = sd.id
LEFT JOIN activities a ON a.sub_department_id = cr.sub_department_id AND a.name = cr.activity
WHERE cr.id = ?`,
[rateId]
);

View File

@@ -34,11 +34,13 @@ router.get("/", authenticateToken, async (ctx) => {
sd.name as sub_department_name,
d.name as department_name,
d.id as department_id,
u.name as created_by_name
u.name as created_by_name,
a.unit_of_measurement
FROM standard_rates sr
LEFT JOIN sub_departments sd ON sr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN users u ON sr.created_by = u.id
LEFT JOIN activities a ON a.sub_department_id = sr.sub_department_id AND a.name = sr.activity
WHERE 1=1
`;
const queryParams: unknown[] = [];
@@ -209,10 +211,12 @@ router.get("/compare", authenticateToken, authorize("Supervisor", "SuperAdmin"),
SELECT sr.*,
sd.name as sub_department_name,
d.name as department_name,
d.id as department_id
d.id as department_id,
a.unit_of_measurement
FROM standard_rates sr
LEFT JOIN sub_departments sd ON sr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN activities a ON a.sub_department_id = sr.sub_department_id AND a.name = sr.activity
WHERE 1=1 ${departmentFilter}
`;
@@ -231,11 +235,13 @@ router.get("/compare", authenticateToken, authorize("Supervisor", "SuperAdmin"),
u.name as contractor_name,
sd.name as sub_department_name,
d.name as department_name,
d.id as department_id
d.id as department_id,
a.unit_of_measurement
FROM contractor_rates cr
JOIN users u ON cr.contractor_id = u.id
LEFT JOIN sub_departments sd ON cr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN activities a ON a.sub_department_id = cr.sub_department_id AND a.name = cr.activity
WHERE 1=1
`;
const contractorParams: unknown[] = [];
@@ -337,11 +343,13 @@ router.post("/", authenticateToken, authorize("Supervisor", "SuperAdmin"), async
`SELECT sr.*,
sd.name as sub_department_name,
d.name as department_name,
u.name as created_by_name
u.name as created_by_name,
a.unit_of_measurement
FROM standard_rates sr
LEFT JOIN sub_departments sd ON sr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN users u ON sr.created_by = u.id
LEFT JOIN activities a ON a.sub_department_id = sr.sub_department_id AND a.name = sr.activity
WHERE sr.id = ?`,
[result.insertId]
);
@@ -421,11 +429,13 @@ router.put("/:id", authenticateToken, authorize("Supervisor", "SuperAdmin"), asy
`SELECT sr.*,
sd.name as sub_department_name,
d.name as department_name,
u.name as created_by_name
u.name as created_by_name,
a.unit_of_measurement
FROM standard_rates sr
LEFT JOIN sub_departments sd ON sr.sub_department_id = sd.id
LEFT JOIN departments d ON sd.department_id = d.id
LEFT JOIN users u ON sr.created_by = u.id
LEFT JOIN activities a ON a.sub_department_id = sr.sub_department_id AND a.name = sr.activity
WHERE sr.id = ?`,
[rateId]
);