/** * For a give year, this function updates 'total_used' for all employees * based on current HSP Scheme and 'hsp_used_last_updated' */ public static function updateUsed($year) { if (Config::getHspUsedLastUpdated() < date('Y-m-d')) { $selectTable = "`" . self::DB_TABLE_HSP_SUMMARY . "`"; $selectFields[0] = "`" . self::DB_FIELD_SUMMARY_ID . "`"; $selectFields[1] = "`" . self::DB_FIELD_EMPLOYEE_ID . "`"; $selectFields[2] = "`" . self::DB_FIELD_HSP_PLAN_ID . "`"; $selectFields[3] = "`" . self::DB_FIELD_TOTAL_USED . "`"; $selectConditions[0] = "`" . self::DB_FIELD_HSP_PLAN_YEAR . "` = '" . $year . "'"; $selectConditions[1] = self::_twoHspPlansCondition(Config::getHspCurrentPlan()); $sqlBuilder = new SQLQBuilder(); $query = $sqlBuilder->simpleSelect($selectTable, $selectFields, $selectConditions); $dbConnection = new DMLFunctions(); $result = $dbConnection->executeQuery($query); $rowCount = $dbConnection->dbObject->numberOfRows($result); $hspUsedLastUpdated = Config::getHspUsedLastUpdated(); for ($i = 0; $i < $rowCount; $i++) { $row = $dbConnection->dbObject->getArray($result); $updatedArray[$i][0] = $row[0]; $updatedArray[$i][1] = $row[3] + HspPaymentRequest::calculateNewHspUsed($row[1], $row[2], $hspUsedLastUpdated); } for ($i = 0; $i < count($updatedArray); $i++) { $updateTable = "`" . self::DB_TABLE_HSP_SUMMARY . "`"; $updateFields[0] = "`" . self::DB_FIELD_TOTAL_USED . "`"; $updateValues[0] = "'" . $updatedArray[$i][1] . "'"; $updateConditions[0] = "`" . self::DB_FIELD_SUMMARY_ID . "` = '" . $updatedArray[$i][0] . "'"; $query = $sqlBuilder->simpleUpdate($updateTable, $updateFields, $updateValues, $updateConditions); $dbConnection->executeQuery($query); } Config::setHspUsedLastUpdated(date('Y-m-d')); } }
public function testGetHspUsedLastUpdated() { // Testing normal usage. $this->assertTrue(mysql_query("UPDATE `hs_hr_config` SET `value` = '2008-03-25' WHERE `key` = 'hsp_used_last_updated'")); $this->assertNotNull(Config::getHspUsedLastUpdated()); $this->assertEquals(Config::getHspUsedLastUpdated(), "2008-03-25"); }