/** * Get the direct deposit account related value based on * passed parameters * * @param array $row Array of data from database * @param array $ddList Array of direct deposit objects of this employee * * @return string Value for this field from database */ private function _getDDValue($row, $ddList) { $value = ''; $parts = explode('_', $this->name); if (count($parts) == 2) { $ddNum = str_replace('DD', '', $parts[0]); $ddField = $parts[1]; if (intval($ddNum) > 0) { if (count($ddList) >= $ddNum) { $directDeposit = $ddList[$ddNum - 1]; switch ($ddField) { case CustomizableCSVExport::DD_ROUTING: $value = $directDeposit->getRoutingNumber(); break; case CustomizableCSVExport::DD_ACCOUNT: $value = $directDeposit->getAccount(); break; case CustomizableCSVExport::DD_AMOUNT: $value = $directDeposit->getAmount(); break; case CustomizableCSVExport::DD_AMOUNTCODE: $transactionTypes = array(EmpDirectDebit::TRANSACTION_TYPE_BLANK => 'Blank', EmpDirectDebit::TRANSACTION_TYPE_PERCENTAGE => '%', EmpDirectDebit::TRANSACTION_TYPE_FLAT => 'Flat', EmpDirectDebit::TRANSACTION_TYPE_FLAT_MINUS => 'Flat-'); $value = CSVField::getValueFromMap($transactionTypes, $directDeposit->getTransactionType()); break; case CustomizableCSVExport::DD_CHECKING: $accountTypes = array(EmpDirectDebit::ACCOUNT_TYPE_CHECKING => "Y", EmpDirectDebit::ACCOUNT_TYPE_SAVINGS => ""); $value = CSVField::getValueFromMap($accountTypes, $directDeposit->getAccountType()); break; default: throw new Exception("Invalid direct deposit field"); } } } else { throw new Exception("Invalid Direct deposit field number"); } } else { throw Exception("Invalid Direct Deposit field definition"); } return $value; }
/** * @todo Implement testGetValue(). */ public function testGetValue() { // Direct $field = new CSVField('name', CSVField::FIELD_TYPE_DIRECT); $row = array('id' => '1', 'name' => 'Ranasinghe', 'age' => 39); $ddList = array(); $this->assertEquals('Ranasinghe', $field->getValue($row, $ddList)); // invalid (unavailable) name $field = new CSVField('middle_name', CSVField::FIELD_TYPE_DIRECT); $this->assertEquals('', $field->getValue($row, $ddList)); // Date $field = new CSVField('joined_date', CSVField::FIELD_TYPE_DATE); $row = array('id' => '1', 'name' => 'Ranasinghe', 'joined_date' => '2003-01-20'); $ddList = array(); $expected = LocaleUtil::getInstance()->formatDate($row['joined_date']); $this->assertEquals($expected, $field->getValue($row, $ddList)); // invalid (unavailable) name $field = new CSVField('birth_date', CSVField::FIELD_TYPE_DATE); $this->assertEquals('', $field->getValue($row, $ddList)); // From Map $genderMap = array(1 => "M", 2 => "F"); $field = new CSVField('sex', CSVField::FIELD_TYPE_FROMMAP, $genderMap); $row = array('id' => '1', 'name' => 'Ranasinghe', 'sex' => 1, 'joined_date' => '2003-01-20'); $ddList = array(); $this->assertEquals('M', $field->getValue($row, $ddList)); // invalid (unavailable) name $field = new CSVField('gender', CSVField::FIELD_TYPE_FROMMAP, $genderMap); $this->assertEquals('', $field->getValue($row, $ddList)); // direct debit $dd1 = new EmpDirectDebit(); $dd1->setEmpNumber(1); $dd1->setDDSeqNo(1); $dd1->setRoutingNumber(121212); $dd1->setAccount('An account'); $dd1->setAmount(100); $dd1->setAccountType('CHECKING'); $dd1->setTransactionType('BLANK'); $dd2 = new EmpDirectDebit(); $dd2->setEmpNumber(222); $dd2->setDDSeqNo(2); $dd2->setRoutingNumber(444444); $dd2->setAccount('My Account'); $dd2->setAmount(200); $dd2->setAccountType('SAVINGS'); $dd2->setTransactionType('PERC'); $ddList = array($dd1); $field = new CSVField('DD1_Amount', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals(100, $field->getValue($row, $ddList)); $field = new CSVField('DD1_Routing', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals(121212, $field->getValue($row, $ddList)); $field = new CSVField('DD1_Account', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals('An account', $field->getValue($row, $ddList)); $field = new CSVField('DD1_AmountCode', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals('Blank', $field->getValue($row, $ddList)); $field = new CSVField('DD1_Checking', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals('Y', $field->getValue($row, $ddList)); // Second direct debit settings $ddList = array($dd1, $dd2); $field = new CSVField('DD2_Checking', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals('', $field->getValue($row, $ddList)); $field = new CSVField('DD2_AmountCode', CSVField::FIELD_TYPE_DIRECT_DEBIT); $this->assertEquals('%', $field->getValue($row, $ddList)); // invalid (unavailable) name $field = new CSVField('DD1_AAAmount', CSVField::FIELD_TYPE_DIRECT_DEBIT); try { $field->getValue($row, $ddList); $this->fail("Exception expected"); } catch (Exception $e) { } }