Files
WMS/Modules/M3/Http/Controllers/API/TransferAPI.php
T
2026-09-16 17:14:26 +01:00

713 lines
33 KiB
PHP

<?php
namespace Modules\M3\Http\Controllers\API;
use Modules\M3\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use DB;
use Config;
use Str;
use Log;
use Http;
use Cache;
use DateTime;
use Smalot\PdfParser\Parser;
use File;
use Modules\M3\Helpers\Helper;
class TransferAPI extends Controller
{
# TransferAPIURL : with URL PARAMS
public function TransferAPIURL(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 = '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));
} else if ($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
}