fix missing school year pages
Tests / PHPUnit (push) Failing after 42s

This commit is contained in:
root
2026-07-12 19:09:38 -04:00
parent e06ccc9cc0
commit 55f8027550
14 changed files with 471 additions and 113 deletions
@@ -605,8 +605,6 @@ class ClassPreparationController extends BaseController
{
$inventoryMap = array_fill_keys($allowed, 0);
$hasSchoolYear = $this->tableHasColumn('inventory_items', 'school_year');
$hasSemester = $this->tableHasColumn('inventory_items', 'semester');
$hasName = $this->tableHasColumn('inventory_items', 'name');
$joinRows = $this->db->table('inventory_items ii')
@@ -615,12 +613,19 @@ class ClassPreparationController extends BaseController
->where('ii.type', 'classroom')
->whereIn('ic.name', $allowed);
if ($hasSchoolYear && $schoolYear !== '') {
$joinRows->where('ii.school_year', $schoolYear);
$periodClauses = ['im.item_id = ii.id'];
if ($schoolYear !== '') {
$periodClauses[] = 'im.school_year = ' . $this->db->escape($schoolYear);
}
if ($hasSemester && $semester !== '') {
$joinRows->where('ii.semester', $semester);
if ($semester !== '') {
$periodClauses[] = 'im.semester = ' . $this->db->escape($semester);
}
if (count($periodClauses) > 1) {
$joinRows->where(
'EXISTS (SELECT 1 FROM inventory_movements im WHERE ' . implode(' AND ', $periodClauses) . ')',
null,
false
);
}
$joinRows = $joinRows
@@ -644,21 +649,28 @@ class ClassPreparationController extends BaseController
* Only run this fallback when that column actually exists.
*/
if ($hasName) {
$nameRows = $this->db->table('inventory_items')
->select('name AS item_name, COALESCE(SUM(CASE WHEN good_qty IS NOT NULL THEN good_qty WHEN `condition` = "good" THEN quantity ELSE 0 END), 0) AS available', false)
->where('type', 'classroom')
->whereIn('name', $allowed);
$nameRows = $this->db->table('inventory_items ii_name')
->select('ii_name.name AS item_name, COALESCE(SUM(CASE WHEN ii_name.good_qty IS NOT NULL THEN ii_name.good_qty WHEN ii_name.`condition` = "good" THEN ii_name.quantity ELSE 0 END), 0) AS available', false)
->where('ii_name.type', 'classroom')
->whereIn('ii_name.name', $allowed);
if ($hasSchoolYear && $schoolYear !== '') {
$nameRows->where('school_year', $schoolYear);
$fallbackPeriodClauses = ['im.item_id = ii_name.id'];
if ($schoolYear !== '') {
$fallbackPeriodClauses[] = 'im.school_year = ' . $this->db->escape($schoolYear);
}
if ($hasSemester && $semester !== '') {
$nameRows->where('semester', $semester);
if ($semester !== '') {
$fallbackPeriodClauses[] = 'im.semester = ' . $this->db->escape($semester);
}
if (count($fallbackPeriodClauses) > 1) {
$nameRows->where(
'EXISTS (SELECT 1 FROM inventory_movements im WHERE ' . implode(' AND ', $fallbackPeriodClauses) . ')',
null,
false
);
}
$nameRows = $nameRows
->groupBy('name')
->groupBy('ii_name.name')
->get()
->getResultArray();
@@ -676,4 +688,4 @@ class ClassPreparationController extends BaseController
return $inventoryMap;
}
}
}