all()); // Get the Calling User $SHUSER = m3_user() !== '' ? Str::upper(m3_user()) : 'WebUser'; // Set SHSOURCE $SHSOURCE = 'TransferAPIURL'; $M3Errors = ''; // Get URL PARAMS $urlParams = count($request->all()) > 0 ? $request->all() : ''; $DIVI = isset($urlParams['COMPANY']) ? $urlParams['COMPANY'] : ''; $WHS = isset($urlParams['WHS']) ? $urlParams['WHS'] : ''; try { if ($urlParams != '') { $PART = isset($urlParams['PART']) ? $urlParams['PART'] : ''; $LOCATIONFROM = isset($urlParams['LOCATIONFROM']) ? $urlParams['LOCATIONFROM'] : ''; $LOCATIONTO = isset($urlParams['LOCATIONTO']) ? $urlParams['LOCATIONTO'] : ''; $QUANTITY = isset($urlParams['QUANTITY']) ? $urlParams['QUANTITY'] : ''; $ORDERCATEGORY = isset($urlParams['ORDERCATEGORY']) ? $urlParams['ORDERCATEGORY'] : ''; $LOTNUMBER = isset($urlParams['LOTNUMBER']) ? $urlParams['LOTNUMBER'] : ''; $CONUMBER = isset($urlParams['CONUMBER']) ? $urlParams['CONUMBER'] : ''; $COLINENO = isset($urlParams['COLINENO']) ? $urlParams['COLINENO'] : ''; $DELIVERYNO = isset($urlParams['DELIVERYNO']) ? $urlParams['DELIVERYNO'] : '000000'; $PICKLISTSUFFIX = isset($urlParams['PICKLISTSUFFIX']) ? $urlParams['PICKLISTSUFFIX'] : ''; $ENDFLAG = isset($urlParams['ENDFLAG']) ? $urlParams['ENDFLAG'] : ''; $TYPE = isset($urlParams['TYPE']) ? $urlParams['TYPE'] : ''; $COLINESUFFIX = isset($urlParams['COLINESUFFIX']) ? $urlParams['COLINESUFFIX'] : ''; // TYPE : // DeliveryNote // S15 // CloseShipment // COCharge // Replenishment // Move // ORDERCATEGORY : Order Category // 1 = Material to manufacturing order // 3 = Customer Order // 4 = Requisition Order // 5 = Distribution Order // 9 = Move order $DELIVERYNO = isset($DELIVERYNO) ? $DELIVERYNO : '000000'; $TRANSTYPE = isset($urlParams['TRANSTYPE']) ? $urlParams['TRANSTYPE'] : ''; // R for Retry $SHDT = isset($urlParams['SHDT']) ? $urlParams['SHDT'] : ''; $SHTIME = isset($urlParams['SHTIME']) ? $urlParams['SHTIME'] : ''; $SHTYPE = isset($urlParams['SHTYPE']) ? $urlParams['SHTYPE'] : ''; // Retry Transfer if ($TRANSTYPE == 'R') { // $t = strtotime($SHTIME); // $SHTIMEHM = date('H:i',$t); // dd($SHTIMEHM); // Get the record that contain the payload $ICM699MS = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m') ->select('SHDATA') ->where('SHMACPKR', $DELIVERYNO) ->where('SHDT', $SHDT) ->where('SHTIME', $SHTIME) // ->whereRaw("VARCHAR_FORMAT (TIMESTAMP (CURRENT DATE) + MIDNIGHT_SECONDS (SHTIME) SECONDS, 'HH24:MI') = ?", [$SHTIMEHM]) ->where('SHCO', $DIVI) ->where('SHWHS', $WHS) ->where('SHSOURCE', $SHSOURCE) ->where('SHERROR', 'X') ->where('SHTYPE', $SHTYPE) ->first(); // dump($ICM699MS->SHDATA); // Read The substring from SHDATA after M3-JSN-out $word = 'M3-JSN-out'; $SHDATA = isset($ICM699MS->SHDATA) ? $ICM699MS->SHDATA : ''; $SHDATAJSON = ''; $position = strpos($SHDATA, $word); // Also Read CommTCP_read $word2 = 'url:http://127.0.0.1:10005/api/TransferAPIURL?'; $SHDATA2 = isset($ICM699MS->SHDATA) ? $ICM699MS->SHDATA : ''; $position2 = strpos($SHDATA2, $word2); if ($position !== false) { $SHDATAJSON = substr($SHDATA, $position + strlen($word)); } elseif ($position2 !== false) { $SHDATAJSONS = substr($SHDATA2, $position2 + strlen($word2)); $SHDATAJSONA = []; parse_str($SHDATAJSONS, $SHDATAJSONA); $SHDATAJSON = json_encode($SHDATAJSONA); } // Find the position of the opening and closing curly braces $startPos = strpos($SHDATAJSON, '{'); $endPos = strrpos($SHDATAJSON, '}'); // Extract the substring within the curly braces $SHDATAJSON = substr($SHDATAJSON, $startPos, $endPos - $startPos + 1); // dd($SHDATAJSON); $JSONTR = $SHDATAJSON != '' ? json_decode($SHDATAJSON) : ''; // dd($JSONTR); if ($JSONTR != '') { $PART = isset($JSONTR->PART) ? $JSONTR->PART : ''; $LOCATIONFROM = isset($JSONTR->LOCATIONFROM) ? $JSONTR->LOCATIONFROM : ''; $LOCATIONTO = isset($JSONTR->LOCATIONTO) ? $JSONTR->LOCATIONTO : ''; $QUANTITY = isset($JSONTR->QUANTITY) ? $JSONTR->QUANTITY : ''; $ORDERCATEGORY = isset($JSONTR->ORDERCATEGORY) ? $JSONTR->ORDERCATEGORY : ''; $LOTNUMBER = isset($JSONTR->LOTNUMBER) ? $JSONTR->LOTNUMBER : ''; $CONUMBER = isset($JSONTR->CONUMBER) ? $JSONTR->CONUMBER : ''; $COLINENO = isset($JSONTR->COLINENO) ? $JSONTR->COLINENO : ''; $DELIVERYNO = isset($JSONTR->DELIVERYNO) ? $JSONTR->DELIVERYNO : '000000'; $PICKLISTSUFFIX = isset($JSONTR->PICKLISTSUFFIX) ? $JSONTR->PICKLISTSUFFIX : ''; $ENDFLAG = isset($JSONTR->ENDFLAG) ? $JSONTR->ENDFLAG : ''; $TYPE = isset($JSONTR->TYPE) ? $JSONTR->TYPE : ''; $COLINESUFFIX = isset($JSONTR->COLINESUFFIX) ? $JSONTR->COLINESUFFIX : ''; } // dd($JSONTR); // Set SHERROR to Z in ICM699M $ICM699MU = DB::connection(config('m3.connection', 'pgsql'))->table('icm699m') ->where('SHMACPKR', $DELIVERYNO) ->where('SHDT', $SHDT) ->where('SHTIME', $SHTIME) ->where('SHCO', $DIVI) ->where('SHWHS', $WHS) ->where('SHSOURCE', $SHSOURCE) ->where('SHERROR', 'X') ->where('SHTYPE', $SHTYPE) ->update(['SHERROR' => 'Z', 'SHACKUSER' => $SHUSER, 'SHACKDATE' => date('Y-m-d'), 'SHACKTIME' => date('H:i:s')]); } // Part Exists : proceed if ($PART != '') { // Read from ICM688M2 // Get Parts And Lots from ICM688M2 $ICM688M2SLTMP = DB::connection(config('m3.connection', 'pgsql'))->table('icm688m2') ->select('A5BRADLN', 'A5PKSFX', 'A5PLANT', 'A5SENTPKR') ->distinct() ->where('A5CO', $DIVI) ->where('A5WHS', $WHS) ->where('A5MACPKR', $DELIVERYNO); // Get Pack Lines if ($COLINENO != '') { $ICM688M2SLTMP->where('A5PKLN', $COLINENO); } $ICM688M2SL = $ICM688M2SLTMP->first(); // dd($ICM688M2SL->A5BRADLN); $A5BRADLINE = isset($ICM688M2SL->A5BRADLN) ? $ICM688M2SL->A5BRADLN : ''; $COLINESUFFIX = isset($ICM688M2SL->A5PKSFX) ? $ICM688M2SL->A5PKSFX : ''; // Case 551 : $COLINESUFFIX $A5PLANT = isset($ICM688M2SL->A5PLANT) ? $ICM688M2SL->A5PLANT : ''; $A5SENTPKR = isset($ICM688M2SL->A5SENTPKR) ? $ICM688M2SL->A5SENTPKR : ''; $JSONIN = json_encode([ 'DIVI' => $DIVI, 'WHS' => $WHS, 'PART' => $PART, 'LOCATIONFROM' => $LOCATIONFROM, 'LOCATIONTO' => $LOCATIONTO, 'QUANTITY' => $QUANTITY, 'ORDERCATEGORY' => $ORDERCATEGORY, 'LOTNUMBER' => $LOTNUMBER, 'CONUMBER' => $CONUMBER, 'COLINENO' => $COLINENO, 'DELIVERYNO' => $DELIVERYNO, 'PICKLISTSUFFIX' => $PICKLISTSUFFIX, 'ENDFLAG' => $ENDFLAG, 'TYPE' => $TYPE, 'COLINESUFFIX' => $COLINESUFFIX, ], JSON_UNESCAPED_SLASHES); $JSON = json_encode([ 'DIVI' => $DIVI, 'WHS' => $WHS, 'PART' => $PART, 'LOCATIONFROM' => $LOCATIONFROM, 'LOCATIONTO' => $LOCATIONTO, 'QUANTITY' => $QUANTITY, 'ORDERCATEGORY' => $ORDERCATEGORY, 'LOTNUMBER' => $LOTNUMBER, 'CONUMBER' => $CONUMBER, 'COLINENO' => $A5BRADLINE, 'DELIVERYNO' => $DELIVERYNO, 'PICKLISTSUFFIX' => $PICKLISTSUFFIX, 'ENDFLAG' => $ENDFLAG, 'TYPE' => $TYPE, 'COLINESUFFIX' => $COLINESUFFIX, ], JSON_UNESCAPED_SLASHES); // dd($JSON); // Write JSON Params to Logs Out $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Req-out', 'SHDATA' => $JSON, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); // Get Token $tokenResponse = Helper::checkReceiveTokenV2(); $tokenData = $tokenResponse->getData(); if ($tokenData->code == '200') { $IonToken = isset($tokenData->token) ? $tokenData->token : ''; } else { $SHDATA = isset($tokenData->message) ? $tokenData->message : ''; // Write to Logs : Error $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $SHDATA, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return $tokenResponse; } // Call ionapi with Params $endPointURL = env('ENDPOINTURL') . 'APIFLOWS/Sentinel/TransferAPI?ionapiRespStyle=sync'; $token = $IonToken; $response = Http::withHeaders([ 'accept' => 'application/json', 'Content-Type' => 'application/json', ]) ->withToken($token) ->withBody($JSON, 'application/json') ->timeout(Config::get('arrays.curlTimeOut')) ->post($endPointURL); $responseStatusCode = $response->getStatusCode(); $M3SessionId = $response->hasHeader('x-transaction-id') ? '-sessionID:' . $response->header('x-transaction-id') : '-sessionID'; $M3ResponseTimeTmp = $response->hasHeader('x-response-time') ? ltrim($response->header('x-response-time'), '-') : '0'; $M3ResponseTimeTmp2 = floatval($M3ResponseTimeTmp) / 1000; // $M3ResponseTimeTmp / 1000; $dateTime = new DateTime; $dateTime->setTimestamp($M3ResponseTimeTmp2); // dump( $dateTime->format('d/m/Y H:i:s.v') ); $M3ResponseTime = $M3ResponseTimeTmp != '' ? '-M3ResponseTime:' . $dateTime->format('d/m/Y H:i:s.v') : '-M3ResponseTime'; // dump($M3ResponseTime); $transferStats = $response->transferStats; $M3transferTime = $transferStats->getTransferTime() != null ? '-M3transferTime:' . $transferStats->getTransferTime() : '-M3transferTime'; // dd($M3transferTime); if ($responseStatusCode == '200') { $responseContents = json_decode($response->getBody()->getContents()); $responseResult = $responseContents->result; $M3JSONResponse = json_encode($responseContents); // Check M3 Response for Errors $M3Errors = Helper::checkM3Errors($responseResult); } else { $M3JSONResponse = ''; $M3Errors = 'Error: No Response from M3'; } if ($M3Errors == '') { // Write to Logs Out : Success $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $responseStatusCode . 'TYPE :' . $TYPE . ' Order Category: ' . $ORDERCATEGORY . '-' . $M3JSONResponse . $M3SessionId . $M3ResponseTime . $M3transferTime, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); // Log to ICM799M $ICM799MINS = DB::connection(config('m3.connection', 'pgsql'))->table('icm799m') ->insert(['IMDIV' => $DIVI, 'IMPLANT' => $A5PLANT, 'IMWHS' => $WHS, 'IMSENTPKR' => $A5SENTPKR, 'IMDELNO' => $DELIVERYNO, 'IMORDER' => $CONUMBER, 'IMLINE' => $COLINENO, 'IMBRADLN' => $A5BRADLINE, 'IMSUFFIX' => $PICKLISTSUFFIX, 'IMPART' => $PART, 'IMLOT' => $LOTNUMBER, 'IMQTY' => $QUANTITY, 'IMFRLOC' => $LOCATIONFROM, 'IMTOLOC' => $LOCATIONTO, 'IMDATE' => date('Ymd'), 'IMTIME' => date('His'), ]); return response()->json([ 'code' => $responseStatusCode, 'status' => 'Success', ]); } else { // Write to Logs Out : Failed $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $responseStatusCode . '-' . $M3Errors . '-TYPE:' . $TYPE . ' Order Category: ' . $ORDERCATEGORY . '-' . $M3JSONResponse . 'M3-JSN-out' . $JSONIN . $M3SessionId . $M3ResponseTime . $M3transferTime, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return response()->json([ 'code' => '206', 'status' => 'Error', 'message' => $responseStatusCode . '-' . $M3Errors . '- TYPE :' . $TYPE . ' Order Category: ' . $ORDERCATEGORY . '-' . $M3JSONResponse, ]); } } // Part Does not Exist : Failure else { // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => 'Json Payload Not Valid, possible cause: Retry butto was clicked by another user.', ]); } } else { // Write to Logs Out : Error $DELIVERYNO = isset($DELIVERYNO) ? $DELIVERYNO : '000000'; $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => 'No URL Parameters Sent', 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => 'No URL Parameters Sent', ]); } } catch (\Throwable $th) { // Log::error($th); $getCurlErrors = str_contains($th->getMessage(), 'cURL error'); if ($getCurlErrors) { // Write to Logs Out : Failed $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => 'Curl Error: Communication with M3 Timed Out' . ' M3-JSN-out' . $JSONIN, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return response()->json([ 'code' => '405', 'status' => 'error', 'message' => 'Curl Error: Communication with M3 Timed Out.', ]); } else { // Write to Logs Out : Error $DELIVERYNO = isset($DELIVERYNO) ? $DELIVERYNO : '000000'; $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Err-out', 'SHDATA' => 'An Error Occured - ' . substr($th, 0, 300), 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); Log::error($th); return response()->json([ 'code' => '405', 'status' => 'error', 'message' => 'Uncaught Error', ]); } } } // End TransferAPIURL // UpdateShipmentNumber : with URL PARAMS public function UpdateShipmentNumber(Request $request) { ini_set('max_execution_time', Config::get('arrays.PHPTimeOut')); ini_set('max_input_time', Config::get('arrays.PHPTimeOut')); ini_set('default_socket_timeout', Config::get('arrays.PHPTimeOut')); // dd($request->all()); // Get the Calling User $SHUSER = m3_user() !== '' ? Str::upper(m3_user()) : 'WebUser'; // Set SHSOURCE $SHSOURCE = 'UpdateShipmentNumber'; $M3Errors = ''; // Get URL PARAMS $urlParams = count($request->all()) > 0 ? $request->all() : ''; $DIVI = isset($urlParams['COMPANY']) ? $urlParams['COMPANY'] : ''; $WHS = isset($urlParams['WHS']) ? $urlParams['WHS'] : ''; $PLANT = isset($urlParams['PLANT']) ? $urlParams['PLANT'] : ''; // dump($urlParams); try { if ($urlParams != '') { $A4SPR15A01 = isset($urlParams['A4SPR15A01']) ? $urlParams['A4SPR15A01'] : ''; $DELIVERYNO = isset($urlParams['DELIVERYNO']) ? $urlParams['DELIVERYNO'] : ''; $TYPE = 'UpdateShipmentNumber'; $allMacpkrs = []; // dd($A4SPR15A01); if ($A4SPR15A01 != '') { // Read from ICM688M1 $ICM688M1SLTMP = DB::connection(config('m3.connection', 'pgsql'))->table('icm688m1') ->select('A4MACPKR') ->where('A4CO', $DIVI) ->where('A4WHS', $WHS) ->where('A4PLANT', $PLANT) ->where('A4SPR15A01', $A4SPR15A01); // Get Macpikers also if sent as Parameter if ($DELIVERYNO != '') { $ICM688M1SLTMP->where('A4MACPKR', $DELIVERYNO); } $ICM688M1SL = $ICM688M1SLTMP->get(); // Loop ICM688M1 to get all A4MACPKR foreach ($ICM688M1SL as $key => $ICM688M1) { $allMacpkrs[] = $ICM688M1->A4MACPKR; } } // A4SPR15A01 Exists : proceed if ($A4SPR15A01 != '' && count($allMacpkrs) > 0) { $JSON = json_encode([ 'DIVI' => $DIVI, 'WHS' => $WHS, 'ShipmentNumber' => [ 'Number' => $A4SPR15A01, 'DeliveryNumbers' => $allMacpkrs, ], 'TYPE' => $TYPE, 'ENDFLAG' => '', ], JSON_UNESCAPED_SLASHES); // dd($JSON); // Write JSON Params to Logs Out $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Req-out', 'SHDATA' => $JSON, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); // Get Token $tokenResponse = Helper::checkReceiveTokenV2(); $tokenData = $tokenResponse->getData(); if ($tokenData->code == '200') { $IonToken = isset($tokenData->token) ? $tokenData->token : ''; } else { $SHDATA = isset($tokenData->message) ? $tokenData->message : ''; // Write to Logs : Error $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $SHDATA, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return $tokenResponse; } // Call ionapi with Params $endPointURL = env('ENDPOINTURL') . 'APIFLOWS/Sentinel/TransferAPI?ionapiRespStyle=sync'; $token = $IonToken; $response = Http::withHeaders([ 'accept' => 'application/json', 'Content-Type' => 'application/json', ]) ->withToken($token) ->withBody($JSON, 'application/json') ->timeout(Config::get('arrays.curlTimeOut')) ->post($endPointURL); $responseStatusCode = $response->getStatusCode(); $M3SessionId = $response->hasHeader('x-transaction-id') ? '-sessionID:' . $response->header('x-transaction-id') : '-sessionID'; $M3ResponseTimeTmp = $response->hasHeader('x-response-time') ? ltrim($response->header('x-response-time'), '-') : '0'; $M3ResponseTimeTmp2 = floatval($M3ResponseTimeTmp) / 1000; // $M3ResponseTimeTmp / 1000; $dateTime = new DateTime; $dateTime->setTimestamp($M3ResponseTimeTmp2); $M3ResponseTime = $M3ResponseTimeTmp != '' ? '-M3ResponseTime:' . $dateTime->format('d/m/Y H:i:s.v') : '-M3ResponseTime'; $transferStats = $response->transferStats; $M3transferTime = $transferStats->getTransferTime() != null ? '-M3transferTime:' . $transferStats->getTransferTime() : '-M3transferTime'; if ($responseStatusCode == '200') { $responseContents = json_decode($response->getBody()->getContents()); $responseResult = $responseContents->result; $M3JSONResponse = json_encode($responseContents); // Check M3 Response for Errors $M3Errors = Helper::checkM3Errors($responseResult); } else { $M3JSONResponse = ''; $M3Errors = 'Error: No Response from M3'; } if ($M3Errors == '') { // Write to Logs Out : Success $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => '', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $responseStatusCode . 'TYPE :' . $TYPE . '-' . $M3JSONResponse . $M3SessionId . $M3ResponseTime . $M3transferTime, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return response()->json([ 'code' => $responseStatusCode, 'status' => 'Success', ]); } else { // Write to Logs Out : Failed $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => $responseStatusCode . '-' . $M3Errors . '-TYPE:' . $TYPE . '-' . $M3JSONResponse . 'M3-JSN-out' . $JSON . $M3SessionId . $M3ResponseTime . $M3transferTime, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return response()->json([ 'code' => '206', 'status' => 'Error', 'message' => $responseStatusCode . '-' . $M3Errors . '- TYPE :' . $TYPE . '-' . $M3JSONResponse, ]); } } // A4SPR15A01 Does not Exist : Failure else { // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => 'Json Payload Not Valid, missing Parameter or no Macpicker # found.', ]); } } else { // Write to Logs Out : Error $DELIVERYNO = isset($DELIVERYNO) ? $DELIVERYNO : '000000'; $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => 'No URL Parameters Sent', 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => 'No URL Parameters Sent', ]); } } catch (\Throwable $th) { // Log::error($th); $getCurlErrors = str_contains($th->getMessage(), 'cURL error'); if ($getCurlErrors) { // Write to Logs Out : Failed $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => 'Curl Error: Communication with M3 Timed Out' . ' M3-JSN-out' . $JSON, 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); return response()->json([ 'code' => '405', 'status' => 'error', 'message' => 'Curl Error: Communication with M3 Timed Out.', ]); } else { // Write to Logs Out : Error $DELIVERYNO = isset($DELIVERYNO) ? $DELIVERYNO : '000000'; $data = ['SHMACPKR' => $DELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Err-out', 'SHDATA' => 'An Error Occured - ' . substr($th, 0, 300), 'SHUSER' => $SHUSER, 'SHSOURCE' => $SHSOURCE, 'SHCO' => $DIVI, 'SHWHS' => $WHS, ]; Helper::logToICM699M($data); Log::error($th); return response()->json([ 'code' => '405', 'status' => 'error', 'message' => 'Uncaught Error', ]); } } } // End UpdateShipmentNumber }