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'] : self::ZERO_PAD; $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 : self::ZERO_PAD; $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(); // 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); $jSONTR = $sHDATAJSON != '' ? json_decode($sHDATAJSON) : ''; 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 : self::ZERO_PAD; $pICKLISTSUFFIX = isset($jSONTR->PICKLISTSUFFIX) ? $jSONTR->PICKLISTSUFFIX : ''; $eNDFLAG = isset($jSONTR->ENDFLAG) ? $jSONTR->ENDFLAG : ''; $tYPE = isset($jSONTR->TYPE) ? $jSONTR->TYPE : ''; $cOLINESUFFIX = isset($jSONTR->COLINESUFFIX) ? $jSONTR->COLINESUFFIX : ''; } // Set SHERROR to Z in ICM699M 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(); $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); // 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' => self::JSON_CONTENT_TYPE, 'Content-Type' => self::JSON_CONTENT_TYPE, ]) ->withToken($token) ->withBody($jSON, self::JSON_CONTENT_TYPE) ->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; $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 . self::ORDER_CATEGORY_LABEL . $oRDERCATEGORY . '-' . $m3JSONResponse . $m3SessionId . $m3ResponseTime . $m3transferTime, 'SHUSER' => $sHUSER, 'SHSOURCE' => $sHSOURCE, 'SHCO' => $dIVI, 'SHWHS' => $wHS, ]; Helper::logToICM699M($data); // Log to ICM799M 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 . self::ORDER_CATEGORY_LABEL . $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 . self::ORDER_CATEGORY_LABEL . $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 : self::ZERO_PAD; $data = ['SHMACPKR' => $dELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => self::NO_URL_PARAMETERS, 'SHUSER' => $sHUSER, 'SHSOURCE' => $sHSOURCE, 'SHCO' => $dIVI, 'SHWHS' => $wHS, ]; Helper::logToICM699M($data); // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => self::NO_URL_PARAMETERS, ]); } } catch (\Throwable $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 : self::ZERO_PAD; $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')); // Get the Calling User $sHUSER = m3User() !== '' ? Str::upper(m3User()) : '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'] : ''; try { if ($urlParams != '') { $a4SPR15A01 = isset($urlParams['A4SPR15A01']) ? $urlParams['A4SPR15A01'] : ''; $dELIVERYNO = isset($urlParams['DELIVERYNO']) ? $urlParams['DELIVERYNO'] : ''; $tYPE = 'UpdateShipmentNumber'; $allMacpkrs = []; 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 $ICM688M1) { $allMacpkrs[] = $ICM688M1->A4MACPKR; } } // A4SPR15A01 Exists : proceed if ($a4SPR15A01 != '' && ! empty($allMacpkrs)) { $jSON = json_encode([ 'DIVI' => $dIVI, 'WHS' => $wHS, 'ShipmentNumber' => [ 'Number' => $a4SPR15A01, 'DeliveryNumbers' => $allMacpkrs, ], 'TYPE' => $tYPE, 'ENDFLAG' => '', ], JSON_UNESCAPED_SLASHES); // 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' => self::JSON_CONTENT_TYPE, 'Content-Type' => self::JSON_CONTENT_TYPE, ]) ->withToken($token) ->withBody($jSON, self::JSON_CONTENT_TYPE) ->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; $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 : self::ZERO_PAD; $data = ['SHMACPKR' => $dELIVERYNO, 'SHDT' => date('Y-m-d'), 'SHTIME' => date('H:i:s'), 'SHERROR' => 'X', 'SHINTBOX' => '', 'SHTYPE' => 'M3-Res-out', 'SHDATA' => self::NO_URL_PARAMETERS, 'SHUSER' => $sHUSER, 'SHSOURCE' => $sHSOURCE, 'SHCO' => $dIVI, 'SHWHS' => $wHS, ]; Helper::logToICM699M($data); // Return Error return response()->json([ 'code' => '405', 'status' => 'Error', 'message' => self::NO_URL_PARAMETERS, ]); } } catch (\Throwable $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 : self::ZERO_PAD; $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 }