713 lines
33 KiB
PHP
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 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
|
|
|
|
}
|