707 lines
33 KiB
PHP
707 lines
33 KiB
PHP
<?php
|
|
|
|
namespace Modules\M3\Http\Controllers\API;
|
|
|
|
use Config;
|
|
use DateTime;
|
|
use DB;
|
|
use Http;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Log;
|
|
use Modules\M3\Helpers\Helper;
|
|
use Modules\M3\Http\Controllers\Controller;
|
|
use Str;
|
|
|
|
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));
|
|
} 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
|
|
|
|
}
|