getOptions( 'columns' ) ); unset( $retval['display_amount'] ); //For display purposes only. $retval = Misc::addSortPrefix( Misc::prependArray( $this->getUserIdentificationColumns(), Misc::trimSortPrefix( $retval ) ) ); ksort( $retval ); break; case 'column_aliases': //Used for converting column names after they have been parsed. $retval = [ //'wage_group' => 'wage_group_id', 'amount_type' => 'amount_type_id', 'type' => 'type_id', ]; break; case 'import_options': $retval = [ '-1010-fuzzy_match' => TTi18n::getText( 'Enable smart matching.' ), ]; break; case 'parse_hint': //$upf = TTnew('UserPreferenceFactory'); $retval = [ //'effective_date' => $upf->getOptions('date_format'), //'weekly_time' => $upf->getOptions('time_unit_format'), ]; break; } return $retval; } /** * @param $row_number * @param $raw_row * @return mixed */ function _preParseRow( $row_number, $raw_row ) { //Try to determine if its a checking or savings account, so we at least have a chance at specifying a default name for the account. $ach_transaction_type = 22; if ( isset( $raw_row['ach_transaction_type'] ) ) { $ach_transaction_type = $this->parse_ach_transaction_type( $raw_row['ach_transaction_type'] ); } $retval = $this->getObject()->stripReturnHandler( $this->getObject()->getRemittanceDestinationAccountDefaultData( $ach_transaction_type ) ); foreach ( $raw_row as $key => $value ) { $retval[$key] = $value; } 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 ) { $raw_row['user_id'] = TTUUID::getNotExistID(); //unset($raw_row['user_id']); } if ( ( !isset( $raw_row['type'] ) || $raw_row['type'] == '' ) ) { if ( isset( $raw_row['value3'] ) && $raw_row['value3'] != '' ) { //Value3=Bank Account. $raw_row['type'] = 3000; //EFT } else { $raw_row['type'] = 2000; //Check } } //If not specified, try to default to some remittance source account. if ( isset( $raw_row['user_id'] ) && !isset( $raw_row['remittance_source_account_id'] ) ) { $u_obj = $this->getUserObject( TTUUID::castUUID( $raw_row['user_id'] ) ); if ( is_object( $u_obj ) ) { $rsalf = TTnew( 'RemittanceSourceAccountListFactory' ); /** @var RemittanceSourceAccountListFactory $rsalf */ $rsalf->getByLegalEntityIdAndStatusIdAndTypeIdAndCompanyId( $u_obj->getLegalEntity(), 10, $raw_row['type'], $this->getCompanyObject()->getId() ); if ( $rsalf->getRecordCount() > 0 ) { $raw_row['remittance_source_account_id'] = $rsalf->getCurrent()->getId(); unset( $rsalf ); } } } return $raw_row; } /** * @param int $validate_only EPOCH * @return mixed */ function _import( $validate_only ) { return $this->getObject()->setRemittanceDestinationAccount( $this->getParsedData(), $validate_only ); } /** * @param $input * @param null $default_value * @param null $parse_hint * @return int */ function parse_status( $input, $default_value = null, $parse_hint = null ) { if ( strtolower( $input ) == 'e' || strtolower( $input ) == 'enabled' ) { $retval = 10; } else if ( strtolower( $input ) == 'd' || strtolower( $input ) == 'disabled' ) { $retval = 20; } else { $retval = (int)$input; } return $retval; } /** * @param $input * @param null $default_value * @param null $parse_hint * @return array|bool|mixed */ function parse_type( $input, $default_value = null, $parse_hint = null ) { $rsaf = TTnew( 'RemittanceSourceAccountFactory' ); /** @var RemittanceSourceAccountFactory $rsaf */ $options = $rsaf->getOptions( '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 string $default_value * @param null $parse_hint * @return array|bool|mixed */ function parse_amount_type( $input, $default_value = 'Percent', $parse_hint = null ) { $rsaf = TTnew( 'RemittanceDestinationAccountFactory' ); /** @var RemittanceDestinationAccountFactory $rsaf */ $options = $rsaf->getOptions( 'amount_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 array|bool|int|mixed */ function parse_remittance_source_account( $input, $default_value = null, $parse_hint = null, $map_data = null, $raw_row = null ) { $u_obj = $this->getUserObject( TTUUID::castUUID( $this->getUserIdByRowData( $raw_row ) ) ); //Need find user_id based on the raw_row again here, as that is done in postParse otherwise. if ( is_object( $u_obj ) ) { $rdalf = TTnew( 'RemittanceSourceAccountListFactory' ); /** @var RemittanceSourceAccountListFactory $rdalf */ $rdalf->getAPISearchByCompanyIdAndArrayCriteria( $this->getCompanyObject()->getId(), [ 'legal_entity_id' => $u_obj->getLegalEntity() ] ); $result = (array)$rdalf->getArrayByListFactory( $rdalf, false ); $retval = $this->findClosestMatch( $input, $result ); if ( $retval === false ) { $retval = -1; //Make sure this fails. } return $retval; } return -1; //Make sure this fails. } /** * @param $input * @param null $default_value * @param null $parse_hint * @return array|bool|mixed */ function parse_ach_transaction_type( $input, $default_value = null, $parse_hint = null ) { $rdaf = TTnew( 'RemittanceDestinationAccountFactory' ); /** @var RemittanceDestinationAccountFactory $rdaf */ $options = $rdaf->getOptions( 'ach_transaction_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', (array)$options ) ); } } } } ?>