Fix semester context, attendance rosters, and billing workflows
- load global semester helpers consistently and use date-based semester defaults - fix grading and daily attendance duplicate student/section rows - keep attendance violations scoped to the current semester by default - update invoice, refund, discount, payment, and financial aid flows - add configuration cleanup migrations for duplicate calendar/semester keys - refresh parent registration/report-card and print request handling - update related models, services, views, cron notes, and test coverage
This commit is contained in:
@@ -67,7 +67,7 @@ class GradingController extends BaseController
|
||||
$this->configModel = new ConfigurationModel();
|
||||
$this->db = \Config\Database::connect();
|
||||
$this->schoolYear = $this->configModel->getConfig('school_year');
|
||||
$this->semester = $this->configModel->getConfig('semester');
|
||||
$this->semester = getSemester();
|
||||
$this->classSection = new ClassSectionModel();
|
||||
$this->attendanceCalculator = new AttendanceCalculator(
|
||||
new AttendanceRecordModel(),
|
||||
@@ -93,7 +93,7 @@ class GradingController extends BaseController
|
||||
$configModel = new ConfigurationModel();
|
||||
|
||||
$schoolYear = $configModel->getConfig('school_year');
|
||||
$semester = $configModel->getConfig('semester');
|
||||
$semester = getSemester();
|
||||
|
||||
$student = $studentModel->find($studentId);
|
||||
$scores = $scoreModel->where([
|
||||
@@ -140,7 +140,7 @@ class GradingController extends BaseController
|
||||
$studentModel = new StudentModel();
|
||||
|
||||
$schoolYear = $configModel->getConfig('school_year');
|
||||
$semester = $configModel->getConfig('semester');
|
||||
$semester = getSemester();
|
||||
|
||||
$model = $this->getModelByType($type);
|
||||
$classSectionIdInt = (int) ($classSectionId ?? 0);
|
||||
@@ -433,6 +433,7 @@ class GradingController extends BaseController
|
||||
// Build structures keyed by BUSINESS section id
|
||||
$grades = []; // class_id => [ ['class_section_id','class_section_name'], ... ]
|
||||
$studentsBySection = []; // section_id => [ students... ]
|
||||
$seenStudentsBySection = [];
|
||||
|
||||
foreach ($rows as $r) {
|
||||
$sectionId = (int) ($r['section_id'] ?? 0); // BUSINESS id
|
||||
@@ -457,6 +458,8 @@ class GradingController extends BaseController
|
||||
|
||||
$sid = (int) ($r['student_id'] ?? 0);
|
||||
if ($sid <= 0) continue;
|
||||
if (isset($seenStudentsBySection[$sectionId][$sid])) continue;
|
||||
$seenStudentsBySection[$sectionId][$sid] = true;
|
||||
|
||||
$ptapScore = $r['ss_ptap_score'] ?? null;
|
||||
$semesterScore = $r['ss_semester_score'] ?? null;
|
||||
|
||||
Reference in New Issue
Block a user