@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user