���� ������������������������������������ setSearchPreferences(false, 20); $code=$_GET['code']; if (strpos($code, '^') !== false) { $code = str_replace('^', ' ', $code); } $emailSearchField = new SearchStringField(); $emailSearchField->operator = "contains"; $emailSearchField->searchValue = $code; $search = new ItemSearchBasic(); $search->itemId = $emailSearchField; $request = new SearchRequest(); $request->searchRecord = $search; $searchResponse = $service->search($request); if ($searchResponse->searchResult->totalRecords == 0) { $response = [ 'status' => 'error', 'message' => 'Sales order item not found!', 'data'=>[] ]; } else { // $internalId=$searchResponse->searchResult->recordList->record[0]->internalId; $internalId=''; foreach($searchResponse->searchResult->recordList->record as $record){ if($record->itemId==$code){ $internalId=$record->internalId; } } $response = [ 'status' => 'success', 'message' => 'Sales order item found!', 'data'=>[ 'id'=>$internalId ] ]; } } else { $response = [ 'status' => 'error', 'message' => 'Please provide item code!' ]; } header('Content-Type: application/json'); echo json_encode($response); exit; } if ($_SERVER['REQUEST_METHOD'] === 'GET' && $_GET['action'] === 'getSalesOrder') { if ($_GET['id']) { $service->setSearchPreferences(false, 20); $request = new GetRequest(); $request->baseRef = new RecordRef(); $request->baseRef->internalId = $_GET['id']; $request->baseRef->type = "salesOrder"; $getResponse = $service->get($request); if (!$getResponse->readResponse->status->isSuccess) { $response = [ 'status' => 'error', 'message' => 'Sales order not found!' ]; } else { $response = [ 'status' => 'success', 'message' => 'Sales order found!', 'data'=>array( 'OrderNo'=>$getResponse->readResponse->record->tranId ) ]; } } else { $response = [ 'status' => 'error', 'message' => 'Please provide sales order Id!' ]; } header('Content-Type: application/json'); echo json_encode($response); exit; } // Endpoint to update a sales order item if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_GET['action'] === 'updateSalesOrderItem') { $exchangeRate=$_GET['exchangeRate']? $_GET['exchangeRate'] :0.00; $documentLink=$_GET['documentLink']? $_GET['documentLink'] :"https://lifefitness.clientpoint.net/"; $requestData = json_decode(file_get_contents('php://input'), true); $postField = " ".$account." ".$consumerKey." ".$token." ".$nonce." ".$timestamp." ".$signature." true _pendingApproval "; foreach($requestData as $data) { $price = str_replace(',', '', $data['price']); $price = (float)$price; $price1 = number_format($price, 2); $rate = $price / $data['quantity']; $rate = number_format($rate, 2); $price1 = (float)str_replace(',', '', $price1); $rate = (float)str_replace(',', '', $rate); $trade_in = !empty($data['trade_in']) ? (int) $data['trade_in'] : 0; $postField .= " ".$data['quantity']." ".htmlspecialchars($data['description'])." ".$rate." ".$price1." 00.Vic-Product true ".$trade_in." "; } $postField .= " ".$exchangeRate." ".$documentLink." "; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://4661993.suitetalk.api.netsuite.com/services/NetSuitePort_2023_1', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $postField, CURLOPT_HTTPHEADER => array( 'Content-Type: text/xml', 'SOAPAction: update' ), )); $response = curl_exec($curl); if ($response === false) { $error = curl_error($curl); error_log("cURL Error: " . $error); } else { error_log("SOAP Response: " . $response); } curl_close($curl); if ($file = fopen($logFile, 'a')) { fwrite($file, "SOAP Request:\n" . $postField . "\n"); fwrite($file, "SOAP Response:\n" . $response . "\n"); fclose($file); } else { error_log("Error opening log file."); } $account1 = '4661993'; $consumerKey1 = '705b585c35ac6f6ce8ea92e10fe27ac3db54652a747ec382b7efe86f81ca40c0'; $consumer_secret1 = '49619d1595658db3074b8afba91fe30a76a0a43fcdbd6129e88eb00532ba1bc7'; $token1 = '20b7c9410b2d1ca083f2c6f5147ef7f49abec6696a57b6b8c7cb4ef43f1a238d'; $tokenSecret1 = 'fcb0960741bed2605f34181849c2893c04a335bdcdbdeab4e0c0fca2682e1cba'; $nonce1 = generateRandomString(); $timestamp1 = time(); $baseString1 = urlencode($account1) ."&". urlencode($consumerKey1) ."&". urlencode($token1) ."&". urlencode($nonce1) ."&". urlencode($timestamp1); $secret1 = urlencode($consumer_secret1) .'&'. urlencode($tokenSecret1); // Create the signature $signature1 = base64_encode(hash_hmac('sha256', $baseString1, $secret1, true)); $updateToFulfillmentField = " ".$account1." ".$consumerKey1." ".$token1." ".$nonce1." ".$timestamp1." ".$signature1." true _pendingFulfillment "; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://4661993.suitetalk.api.netsuite.com/services/NetSuitePort_2023_1', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $updateToFulfillmentField, CURLOPT_HTTPHEADER => array( 'Content-Type: text/xml', 'SOAPAction: update' ), )); $updateResponse = curl_exec($curl); if ($updateResponse === false) { $error = curl_error($curl); error_log("cURL Error: " . $error); } else { error_log("SOAP Response: " . $updateResponse); } curl_close($curl); if ($file = fopen($logFile, 'a')) { fwrite($file, "SOAP Update to Fulfillment Request:\n" . $updateToFulfillmentField . "\n"); fwrite($file, "SOAP Update to Fulfillment Response:\n" . $updateResponse . "\n"); fclose($file); } else { error_log("Error opening log file."); } echo $updateResponse; exit; } // If no matching endpoint is found, return a 404 response http_response_code(404); header('Content-Type: application/json'); echo json_encode([ 'status' => 'error', 'message' => 'API not found!', ]);