getUserIdentificationColumns(), Misc::arrayIntersectByKey( [ 'accrual_policy_account', 'type', 'amount', 'date_stamp', 'note' ], Misc::trimSortPrefix( $apf->getOptions( 'columns' ) ) ) ); break; case 'column_aliases': //Used for converting column names after they have been parsed. $retval = [ 'type' => 'type_id', 'accrual_policy_account' => 'accrual_policy_account_id', ]; break; case 'import_options': $retval = [ '-1010-fuzzy_match' => TTi18n::getText( 'Enable smart matching.' ), ]; break; case 'parse_hint': $upf = TTnew( 'UserPreferenceFactory' ); /** @var UserPreferenceFactory $upf */ $retval = [ 'date_stamp' => $upf->getOptions( 'date_format' ), 'amount' => $upf->getOptions( 'time_unit_format' ), ]; break; } return $retval; } /** * @param $row_number * @param $raw_row * @return mixed */ function _preParseRow( $row_number, $raw_row ) { $retval = $this->getObject()->stripReturnHandler( $this->getObject()->getAccrualDefaultData() ); return $retval; } /** * @param $row_number * @param $raw_row * @return mixed */ function _postParseRow( $row_number, $raw_row ) { $raw_row['user_id'] = $this->getUserIdByRowData( $raw_row ); if ( $raw_row['user_id'] == false ) { unset( $raw_row['user_id'] ); } if ( isset( $raw_row['date_stamp'] ) ) { $raw_row['time_stamp'] = $raw_row['date_stamp']; //AcrualFactory wants time_stamp column not date_stamp, so convert that here. } return $raw_row; } /** * @param int $validate_only EPOCH * @return mixed */ function _import( $validate_only ) { return $this->getObject()->setAccrual( $this->getParsedData(), $validate_only ); } // // Generic parser functions. // /** * @return bool */ function getAccrualPolicyAccountOptions() { //Get accrual policies $aplf = TTNew( 'AccrualPolicyAccountListFactory' ); /** @var AccrualPolicyAccountListFactory $aplf */ $aplf->getByCompanyId( $this->company_id ); $this->accrual_policy_account_options = (array)$aplf->getArrayByListFactory( $aplf, false ); unset( $aplf ); return true; } /** * @param $input * @param null $default_value * @param null $parse_hint * @return array|bool|int|mixed */ function parse_accrual_policy_account( $input, $default_value = null, $parse_hint = null ) { if ( trim( $input ) == '' ) { return TTUUID::getZeroID(); //Default Wage Group } if ( !is_array( $this->accrual_policy_account_options ) ) { $this->getAccrualPolicyAccountOptions(); } $retval = $this->findClosestMatch( $input, $this->accrual_policy_account_options ); if ( $retval === false ) { $retval = -1; //Make sure this fails. } return $retval; } /** * @param $input * @param null $default_value * @param null $parse_hint * @return false|int */ function parse_date_stamp( $input, $default_value = null, $parse_hint = null ) { return $this->parse_date( $input, $default_value, $parse_hint ); } /** * @param $input * @param null $default_value * @param null $parse_hint * @return array|bool|mixed */ function parse_type( $input, $default_value = null, $parse_hint = null ) { $af = TTnew( 'AccrualFactory' ); /** @var AccrualFactory $af */ $options = $af->getOptions( 'user_type' ); if ( isset( $options[$input] ) ) { return $input; } else { if ( $this->getImportOptions( 'fuzzy_match' ) == true ) { return $this->findClosestMatch( $input, $options, 50 ); } else { return array_search( strtolower( $input ), array_map( 'strtolower', $options ) ); } } } /** * @param $input * @param null $default_value * @param null $parse_hint * @return bool|float|int|number|string */ function parse_amount( $input, $default_value = null, $parse_hint = null ) { $val = new Validator(); TTDate::setTimeUnitFormat( $parse_hint ); $retval = TTDate::parseTimeUnit( $val->stripNonTimeUnit( $input ) ); return $retval; } } ?>