'required|is_natural_no_zero', 'invoice_id' => 'required|is_natural_no_zero', 'user_id' => 'permit_empty|is_natural_no_zero', 'used_at' => 'valid_date' ]; protected $validationMessages = [ 'voucher_id' => [ 'required' => 'Voucher ID is required.' ], 'invoice_id' => [ 'required' => 'Invoice ID is required.' ] ]; public function getTotalDiscountByParentIdAndSchoolYear(int $parentId, string $schoolYear): float { $db = \Config\Database::connect(); $result = $db->table('discount_usages du') ->selectSum('du.discount_amount', 'total_discount') ->join('invoices i', 'du.invoice_id = i.id') ->where('i.parent_id', $parentId) ->where('i.school_year', $schoolYear) ->get() ->getRowArray(); return $result && isset($result['total_discount']) ? (float) $result['total_discount'] : 0.00; } }