_init('jr_netsuite_location', 'location_id'); } /** * Insert or update based on UNIQUE combo 'key-processing' * * @param $key * @param $value * @param $type_id */ public function insertOrUpdate($item) { $connection = $this->getConnection(); // get the existing item with same netsuite_id $location = $connection->fetchRow( $connection->select() ->from($this->getMainTable()) ->where('netsuite_id = ?', $item['netsuite_id']) ); if (!$location) { $location = []; } // $this->getConnection()->delete($this->getMainTable(), ['`netsuite_id` = ?' => $item['netsuite_id']]); if (isset($location['location_id'])) { $item['location_id'] = $location['location_id']; } if (strpos($item['address'], "\r\n") !== false) { $address = explode("\r\n", $item['address']); // if (trim($address[0]) == 'LTS Associate Inc.') { // array_shift($address); // } // if (trim($address[count($address) - 1]) == 'United States') { // array_pop($address); // } $item['address'] = implode(" ", $address); } $connection->insertOnDuplicate($this->getMainTable(), $item, ['netsuite_id', 'name', 'address']); } /** * save Locations * @param $locations */ public function saveLocations($locations) { foreach ($locations as $location) { $this->insertOrUpdate($location); } } }