Index: src/include/lib/Garradin/Entities/Services/Fee.php ================================================================== --- src/include/lib/Garradin/Entities/Services/Fee.php +++ src/include/lib/Garradin/Entities/Services/Fee.php @@ -158,11 +158,11 @@ $tables = 'services_users su INNER JOIN membres m ON m.id = su.id_user INNER JOIN services_fees sf ON sf.id = su.id_fee LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction'; - $conditions = sprintf('su.id_fee = %d AND su.paid = 1 AND su.expiry_date >= date()', $this->id()); + $conditions = sprintf('su.id_fee = %d AND su.paid = 1 AND (su.expiry_date >= date() OR su.expiry_date IS NULL)', $this->id()); $list = new DynamicList($columns, $tables, $conditions); $list->groupBy('su.id_user'); $list->orderBy('date', true); $list->setCount('COUNT(DISTINCT su.id_user)'); Index: src/include/lib/Garradin/Entities/Services/Service.php ================================================================== --- src/include/lib/Garradin/Entities/Services/Service.php +++ src/include/lib/Garradin/Entities/Services/Service.php @@ -105,11 +105,11 @@ $tables = 'services_users su INNER JOIN membres m ON m.id = su.id_user INNER JOIN services s ON s.id = su.id_service INNER JOIN services_fees sf ON sf.id = su.id_fee'; - $conditions = sprintf('su.id_service = %d AND su.paid = 1 AND su.expiry_date >= date()', $this->id()); + $conditions = sprintf('su.id_service = %d AND su.paid = 1 AND (su.expiry_date >= date() OR su.expiry_date IS NULL)', $this->id()); $list = new DynamicList($columns, $tables, $conditions); $list->groupBy('su.id_user'); $list->orderBy('date', true); $list->setCount('COUNT(DISTINCT su.id_user)'); Index: src/include/lib/Garradin/Services/Fees.php ================================================================== --- src/include/lib/Garradin/Services/Fees.php +++ src/include/lib/Garradin/Services/Fees.php @@ -56,13 +56,13 @@ public function listWithStats() { $db = DB::getInstance(); return $db->get('SELECT f.*, - (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_fee = f.id AND expiry_date >= date() AND paid = 1) AS nb_users_ok, + (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_fee = f.id AND (expiry_date >= date() OR expiry_date IS NULL) AND paid = 1) AS nb_users_ok, (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_fee = f.id AND expiry_date < date()) AS nb_users_expired, (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_fee = f.id AND paid = 0) AS nb_users_unpaid FROM services_fees f WHERE id_service = ? ORDER BY amount, transliterate_to_ascii(label) COLLATE NOCASE;', $this->service_id); } } Index: src/include/lib/Garradin/Services/Services.php ================================================================== --- src/include/lib/Garradin/Services/Services.php +++ src/include/lib/Garradin/Services/Services.php @@ -42,12 +42,12 @@ static public function listWithStats() { $db = DB::getInstance(); return $db->get('SELECT s.*, - (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_service = s.id AND expiry_date >= date() AND paid = 1) AS nb_users_ok, + (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_service = s.id AND (expiry_date IS NULL OR expiry_date >= date()) AND paid = 1) AS nb_users_ok, (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_service = s.id AND expiry_date < date()) AS nb_users_expired, (SELECT COUNT(DISTINCT id_user) FROM services_users WHERE id_service = s.id AND paid = 0) AS nb_users_unpaid FROM services s ORDER BY transliterate_to_ascii(s.label) COLLATE NOCASE;'); } }