table('icm666m2')->insert($fullData); $AXLINENO++; # AXCO ICM666M2 CHARACTER 3 # AXWHS ICM666M2 CHARACTER 3 # AXPLANT ICM666M2 CHARACTER 3 # AXDOCUMENT ICM666M2 CHARACTER 15 # AXCOMMENT ICM666M2 CHARACTER 60 # AXLINENO DECIMAL(3,0) } } public function index(){ dd("Index"); } public function create(){} public function store(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')); $REQKPKUS = m3_user() !== '' ? Str::upper(m3_user()) : 'WEBUSER'; $SHSOURCE = 'M3ReceiverAPI'; $ICM666MFields = [ 'Company' =>[ 'A1CO' ,3 , 'string' ], 'Warehouse' =>[ 'A1WHS', 3, 'string'], 'Plant' =>[ 'A1PLANT', 3, 'string'], 'PickerNumber' =>[ 'A1DELNO',11,'integer'], 'OrderNumber' =>[ 'A1ONO' ,10, 'string'], 'ReleaseNumber' =>[ 'A1RLNO' , 3,'string'], # Pick list suffix in ICM666M 'ShipmentNumber' =>[ 'A1SHNO' ,7,'string'], 'OrderLine' =>[ 'A1PKLN',6,'integer'], 'PartNumber' =>[ 'A1PART', 15,'string'], 'Description' =>[ 'A1PARTDES', 120,'string'], 'Quantity' =>[ 'A1RSVQTY', 22,'DEC'], 'BaseUnitPrice' =>[ 'A1SLUNPR', 22,'DEC'], 'Currency' =>[ 'A1SHCURR',3,'string'], 'Zone' =>[ 'A1LVZONE', 2,'string'], 'PromDate' =>[ 'A1PROMDTE',8,'integer'], 'RouteCode' =>[ 'A1SHSRT' ,6,'string'], 'BillToId' =>[ 'A1BILLTO' ,10,'string'], 'ShipToId' =>[ 'A1SHIPTO',10,'string'], 'CompanyName' =>[ 'A1SHSHNM',36,'string'], 'Address1' =>[ 'A1SHSHA1', 36,'string'], 'Address2' =>[ 'A1SHSHA2', 36,'string'], 'Address3' =>[ 'A1SHSHA3', 36,'string'], 'Address4' =>[ 'A1SHSHA4', 36,'string'], 'City' =>[ 'A1SHSHCI', 20,'string'], 'State' =>[ 'A1SHSHST', 2,'string'], 'PostalCode' =>[ 'A1SHSHZP', 10,'string'], 'Country' =>[ 'A1SHSHCT',3,'string'], 'CountryName' =>[ 'A1SHP2CNTY', 40,'string'], 'PartWeight' =>[ 'A1PRTWGT', 15,'integer'], 'SellUOM' =>[ 'A1SLUOM', 3,'string'], 'PartConv' =>[ 'A1PARTCONV', 25,'DEC'], 'CarrierCode' =>[ 'A1CARRIER', 6,'string'], 'ShipVia' =>[ 'A1SHPVIA', 3,'string'], 'PrimaryLocation' =>[ 'A1PRIMLOC', 10,'string'], 'Allocation' =>[ 'A1SPR10A01', 10,'string'], 'AllocatedTo' =>[ 'A1SPR15A01', 10,'string'], 'LocationSeq' =>[ 'A1LOCSEQ', 10,'string'], 'UOM' =>[ 'A1UOM' , 3,'string'], 'HazMat' =>[ 'A1MATWRN', 4,'string'], 'PartUPC' =>[ 'A1UPC', 30,'string'], 'PartEAN' =>[ 'A1EAN', 30,'string'], 'LotFlag' =>[ 'A1IZLCF', 1,'string'], 'ManOrd' =>[ 'A1MONUM', 30,'string'], 'LotNumber' =>[ 'A1LOTNUM', 30,'string'], 'ProductArea' =>[ 'A1LVUSD1', 15,'string'], 'FreightClass' =>[ 'A1WBFRCT' , 10,'string'], 'ShipmentPONumber' =>[ 'A1SOPONO', 20,'string'], 'ShipmentPOLine' =>[ 'A1SOPOLN' , 7,'integer'], 'ShipTerms' =>[ 'A1OFSTRM', 3,'string'], // 'ExchangeRate' =>[ 'A1EXGRATE', 18,'DEC'], 'OrderClass' =>[ 'A1SHORCL', 3,'string'], 'LocationType' =>[ 'A1LVUSD2', 2,'string'], 'PallSize' =>[ 'A1LVUSD3', 10,'string'], 'MasterCarton' =>[ 'A1USRLD1', 30,'string'], 'MasterQty' =>[ 'A1WBSHQY', 25,'DEC'], 'InnerQty' =>[ 'A1WBPKQY', 25,'DEC'], 'PalletQty' =>[ 'A1USRN01', 24,'DEC'], 'CartonQty' =>[ 'A1USRN31', 25,'DEC'], 'PersonName' =>[ 'A1PERNAME', 30,'string'], 'AccountNo' =>[ 'A1ACCNUM', 20,'string'], 'Email' =>[ 'A1EMAIL', 100,'string'], 'OrderCategory' =>[ 'A1REFORD', 1,'string'], 'A1DATEADD' =>[ 'A1DATEADD', 12,'string'], 'A1TIMEADD' =>[ 'A1TIMEADD', 12,'string'], 'KitPartNumber' =>[ 'A1KITPART', 15,'string'], 'OrderLineSuffix' =>[ 'A1PKSFX', 6,'DEC'], 'CustomerPartNumber'=>[ 'A1CUSTPART', 20,'string'], 'GS1Label' => ['A1SPR1A01', 1, 'string'], 'CurrencyExchangeRate' =>[ 'A1EXGRATE', 18,'DEC'], ]; try { $jsonFile = count($request->json()->all()) > 0 ? $request->json()->all() : ''; # Root $Company = isset($jsonFile["Company"]) ? $jsonFile["Company"] : ''; $Plant = isset($jsonFile["Plant"]) ? $jsonFile["Plant"] : ''; $Warehouse = isset($jsonFile["Warehouse"]) ? $jsonFile["Warehouse"] : ''; $OrderNumber = isset($jsonFile["OrderNumber"]) ? $jsonFile["OrderNumber"] : ''; $PickerNumber = isset($jsonFile["PickerNumber"]) ? $jsonFile["PickerNumber"] : ''; $PromDate = isset($jsonFile["PromDate"]) ? $jsonFile["PromDate"] : ''; $RouteCode = isset($jsonFile["RouteCode"]) ? $jsonFile["RouteCode"] : ''; $OrderCategory = isset($jsonFile["OrderCategory"]) ? $jsonFile["OrderCategory"] : ''; $ReleaseNumber = isset($jsonFile["ReleaseNumber"]) ? $jsonFile["ReleaseNumber"] : ''; $ShipmentNumber = isset($jsonFile["ShipmentNumber"]) ? $jsonFile["ShipmentNumber"] : ''; $Currency = isset($jsonFile["Currency"]) ? $jsonFile["Currency"] : ''; $CarrierCode = isset($jsonFile["CarrierCode"]) ? $jsonFile["CarrierCode"] : ''; $ShipmentPONumber = isset($jsonFile["ShipmentPONumber"]) ? $jsonFile["ShipmentPONumber"] : ''; // CustPo $ShipTerms = isset($jsonFile["ShipTerms"]) ? $jsonFile["ShipTerms"] : ''; // $ExchangeRate = isset($jsonFile["ExchangeRate"]) ? $jsonFile["ExchangeRate"] : ''; $OrderClass = isset($jsonFile["OrderClass"]) ? $jsonFile["OrderClass"] : ''; $GS1Label = isset($jsonFile["GS1-128Label"]) ? $jsonFile["GS1-128Label"] : '0'; $CurrencyExchangeRate = isset($jsonFile["CurrencyExchangeRate"]) ? $jsonFile["CurrencyExchangeRate"] : ''; # Set Carrier BWAY if it's empty for Tilburg only if (($CarrierCode=='' || $CarrierCode==null) && $Warehouse=='111' && $Company=='410' && $Plant=='410' ) { $CarrierCode = 'BWAY'; } $SHMACPKR = $PickerNumber!='' ? $PickerNumber : '000000'; if($jsonFile!=''){ # Order Category /* 1 = Material to manufacturing order 3 = Customer Order 4 = Requisition Order 5 = Distribution Order 9 = Move order / Replenishment */ # Recipient $recipient = $jsonFile["Recipient"]; $CompanyName = isset($recipient["CompanyName"]) ? $recipient["CompanyName"] : ''; $Address1 = isset($recipient["Address1"]) ? $recipient["Address1"]: ''; $Address2 = isset($recipient["Address2"]) ? $recipient["Address2"] : ''; $City = isset($recipient["City"]) ? $recipient["City"] : ''; $State = isset($recipient["State"]) ? $recipient["State"] : ''; $PostalCode = isset($recipient["PostalCode"]) ? $recipient["PostalCode"]: ''; $Country = isset($recipient["Country"]) ? $recipient["Country"]: ''; $PostalCode = isset($recipient["PostalCode"]) ? $recipient["PostalCode"]: ''; $BillToId = isset($recipient["BillToId"]) ? $recipient["BillToId"]: ''; $ShipToId = isset($recipient["ShipToId"]) ? $recipient["ShipToId"]: ''; $Address3 = isset($recipient["Address3"]) ? $recipient["Address3"] : ''; $Address4 = isset($recipient["Address4"]) ? $recipient["Address4"] : ''; $CountryName = isset($recipient["CountryName"]) ? $recipient["CountryName"] : ''; $PersonName = isset($recipient["PersonName"]) ? $recipient["PersonName"] : ''; $AccountNo = isset($recipient["AccountNo"]) ? $recipient["AccountNo"] : ''; $Email = isset($recipient["Email"]) ? $recipient["Email"] : ''; $A1DATEADD = date("Ymd"); $A1TIMEADD = date("His"); # MycarrierDetails $ShipVia = isset($jsonFile["ShipVia"]) ? $jsonFile["ShipVia"]: ''; # Comments $Picker = $Packer = $Carrier = $Other =''; $AXCO = $Company; $AXPLANT = $Plant; $AXWHS = $Warehouse; $AXDELNO = $PickerNumber; $AXONO = $OrderNumber; $AXRLNO = $ReleaseNumber; $AXSHNO = $ShipmentNumber; $comments = isset($jsonFile["Comments"]) ? $jsonFile["Comments"] : ''; if ($comments!='') { foreach($comments as $key => $comment) { $commentData = []; $AXDOCUMENT = Helper::sanityzeString($key); $commentData=["AXCO"=>$AXCO,"AXPLANT"=>$AXPLANT,"AXWHS"=>$AXWHS,"AXDELNO"=>$AXDELNO,"AXONO"=>$AXONO, "AXRLNO"=>$AXRLNO,"AXSHNO"=>$AXSHNO,"AXDOCUMENT"=>$AXDOCUMENT]; // dump($commentData); switch ($AXDOCUMENT) { case 'Picker': $Picker = isset($comment) ? Helper::sanityzeString($comment) : 'null'; // dump($Picker); if ($Picker!='null') { $this->insertToICM666M2($Picker,$commentData); } break; case 'Packer': $Packer = isset($comment) ? Helper::sanityzeString($comment) : 'null'; // dump($Packer); if ($Packer!='null') { $this->insertToICM666M2($Packer,$commentData); } break; case 'Carrier': $Carrier = isset($comment) ? Helper::sanityzeString($comment) : 'null'; // dump($Carrier); if ($Carrier!='null') { $this->insertToICM666M2($Carrier,$commentData); } break; case 'Other': $Other = isset($comment) ? Helper::sanityzeString($comment) : 'null'; // dump($Other); if ($Other!='null') { $this->insertToICM666M2($Other,$commentData); } break; } } } # Get Products : commodities And Write ICM666M $tmpProd = ""; $products = $jsonFile["Contents"]["Commodities"]; foreach($products as $key => $product) { $Quantity = isset($product['Quantity']) ? $product['Quantity'] : ''; $Description = isset($product['Description']) ? Str::limit($product['Description'],25,'') : ''; $PartNumber = isset($product['PartNumber']) ? $product['PartNumber']: ''; $OrderLine = isset($product['OrderLine']) ? $product['OrderLine']: ''; $PartWeight = isset($product['PartWeight']) ? $product['PartWeight']: ''; $PickerLine = isset($product['PickerLine']) ? $product['PickerLine']: ''; $PrimaryLocation = isset($product['PrimaryLocation']) ? $product['PrimaryLocation']: ''; $Allocation = isset($product['Allocation']) ? $product['Allocation']: ''; $AllocatedTo = isset($product['AllocatedTo']) ? $product['AllocatedTo']: ''; $LocationSeq = isset($product['LocationSeq']) ? $product['LocationSeq']: ''; $Zone = isset($product['Zone']) ? $product['Zone']: ''; $BaseUnitPrice = isset($product['BaseUnitPrice']) ? $product['BaseUnitPrice'] : ''; $FrgnUnitPrice = isset($product['FrgnUnitPrice']) ? $product['FrgnUnitPrice'] : ''; $SellUOM = isset($product['SellUOM']) ? $product['SellUOM'] : ''; $PartConv = isset($product['PartConv']) ? $product['PartConv'] : ''; $UOM = isset($product['UOM']) ? $product['UOM']: ''; $HazMat = isset($product['HazMat']) ? $product['HazMat']: ''; $PartUPC = isset($product['PartUPC']) ? $product['PartUPC']: ''; $PartEAN = isset($product['PartEAN']) ? $product['PartEAN']: ''; $LotFlag = isset($product['LotFlag']) ? $product['LotFlag']: ''; $ManOrd = isset($product['ManOrd']) ? $product['ManOrd']: ''; $LotNumber = isset($product['LotNumber']) ? $product['LotNumber']: ''; $ProductArea = isset($product['ProductArea']) ? $product['ProductArea']: ''; $FreightClass = isset($product['FreightClass']) ? $product['FreightClass']: ''; $ShipmentPOLine = isset($product['ShipmentPOLine']) ? $product['ShipmentPOLine']: ''; $LocationType = isset($product['LocationType']) ? $product['LocationType']: ''; $PallSize = isset($product['PallSize']) ? $product['PallSize']: ''; $MasterCarton = isset($product['MasterCarton']) ? $product['MasterCarton']: ''; $MasterQty = isset($product['MasterQty']) ? $product['MasterQty']: ''; $InnerQty = isset($product['InnerQty']) ? $product['InnerQty']: ''; $PalletQty = isset($product['PalletQty']) ? $product['PalletQty']: ''; $CartonQty = isset($product['CartonQty']) ? $product['CartonQty']: ''; $KitPartNumber = isset($product['KitPartNumber']) ? $product['KitPartNumber']: ''; $OrderLineSuffix = isset($product['OrderLineSuffix']) ? $product['OrderLineSuffix']: ''; $CustomerPartNumber = isset($product['CustomerPartNumber']) ? substr($product['CustomerPartNumber'], 0, 20): ''; # Limit to 20 Chars # Initialise Table Fields to be filled $InsertArray = []; # Check JSON fields if empty or > DB Fields foreach ($ICM666MFields as $key => $value) { $keyVar = $key; # Sanitize String $$keyVar = Helper::sanityzeString($$keyVar); # Check Var Types & Length $LengthTest = Helper::checkLength($$keyVar, $value[1], $value[2]); if (!$LengthTest[413] || !$LengthTest[411] || !$LengthTest[417]) { // Log::error($key .' :: '. $value[0].' :: '. $value[1] .' JSONF: '.$$keyVar .' Type: '.$value[2] ); if(!$LengthTest[413]){ $message[] = [ 'code'=>'413', 'status'=>'error', 'message'=>'Field: '.$key.' is larger then expected']; } if(!$LengthTest[411]){ $message[] = [ 'code'=>'411', 'status'=>'error', 'message'=>'Field: '.$key.' is empty']; } if(!$LengthTest[417]){ $message[] = [ 'code'=>'417', 'status'=>'error', 'message'=>'Field: '.$key.'type is different then Expected type: '.$value[2]]; } # Write to Logs Out : Error & JSON $data = ['SHMACPKR'=>$SHMACPKR,'SHDT'=> date('Y-m-d'),'SHTIME'=> date('H:i:s') ,'SHERROR'=> 'X','SHINTBOX'=> '','SHTYPE'=> 'M3-Lis-spl' , 'SHDATA'=> json_encode($message).' M3-Lis-JSN'.json_encode($jsonFile) ,'SHUSER'=> $REQKPKUS,'SHSOURCE'=> $SHSOURCE,'SHCO'=>$Company,'SHWHS'=>$Warehouse ]; Helper::logToICM699M($data); return response()->json($message); } else if ($$keyVar != '') { $InsertArray[$value[0]] = $$keyVar; } } // Log::info($InsertArray); # Check ICM709M $ICM709MSEL = DB::connection(config('m3.connection', 'pgsql'))->table('icm709m') ->select() ->where('AT9CO',$AXCO) ->where('AT9PLT',$AXPLANT) ->where('AT9WHS',$AXWHS) ->where('AT9PART',$PartNumber) ->first(); $palletQty = isset($ICM709MSEL->AT9QTY) ? $ICM709MSEL->AT9QTY : 0; // dd($palletQty); # Get Pallet Qty $InsertArray['A1USRN01'] = $palletQty; # Hazard Material $HazMat = isset($ICM709MSEL->AT9WRN) ? $ICM709MSEL->AT9WRN : ''; $InsertArray['A1MATWRN'] = $HazMat; // if ($PalletQty!='') { // $InsertArray['A1USRN01']=$palletQty; // } # SQL Insert to ICM666M $insertSQL = DB::connection(config('m3.connection', 'pgsql'))->table('icm666m')->insert($InsertArray); } # Call PGM ICM700CSBM if ($Warehouse!='' && $PickerNumber!='' && $Company!='') { $PGMERRORS = ''; $AWREQN = ''; # connect to toolkit using DB2 credentials (can also leave blank for default authority) try { $conn = app(\Modules\M3\Services\PostgresProgramBridge::class); } catch (Exception $e) { # Determine reason for failure. # Probably database authentication error or invalid or unreachable database. $code = $e->getCode(); $msg = $e->getMessage(); switch ($code) { case 8001: # "Authorization failure on distributed database connection attempt" # Usually means a wrong DB2 user or password $PGMERRORS = 'Could not connect due to wrong user or password.'; break; case 42705: $PGMERRORS = 'Database not found. Try WRKRDBDIRE to check.'; break; default: $PGMERRORS = 'Could not connect. Error: ' . $code . ' ' . $msg; break; } } $conn->setOptions(array('persistent' => false, 'stateless' => true, 'debug' => true,'debugLogFile' => env('TOOLKIT_DEBUG_LOG'))); # Add LIB # $result = $conn->CLCommand('ADDLIBLE LIB(MPDAT10)'); # define several input/output params $params = []; # $params[] = $conn->AddParameterChar('out',7,'eqNumber'); # AddParameterChar($io, $size, $comment, $varName, $value, $varying, $dimension) # Add Warehouse Param $params[] = $conn->AddParameterChar('in',3,'Company','',$Company); $params[] = $conn->AddParameterChar('in',3,'Warehouse','',$Warehouse); # AddParameterPackDec($io, $length, $scale, $comment, $varName, $value,$dimension) # Add Delivery Note Param $PickerNumberNoZero = ltrim(strval($PickerNumber), '0'); $params[] = $conn->AddParameterChar('in', 11, 'PickerNumber','',$PickerNumberNoZero); // $params[] = $conn->AddParameterZoned('in', 11, 0, 'ParamIn'); # Start Time Tracking $start = microtime(true); # ICM700C EWOBJTST ICM700C ICM700CSBM $result = $conn->PgmCall('ICM700CSBM', env('OBJLIB'), $params, array(), array()); if (!$result) { $PGMERRORS = 'Error calling program. Code: ' . $conn->getErrorCode() . ' - Msg: ' . $conn->getErrorMsg(); } if ($PGMERRORS != '') { # Write to Logs Out : Error & JSON $data = ['SHMACPKR'=>$SHMACPKR,'SHDT'=> date('Y-m-d'),'SHTIME'=> date('H:i:s') ,'SHERROR'=> 'X','SHINTBOX'=> '','SHTYPE'=> 'M3-Lis-spl' , 'SHDATA'=>$PGMERRORS .' M3-Lis-JSN'.json_encode($jsonFile) ,'SHUSER'=> $REQKPKUS,'SHSOURCE'=> $SHSOURCE,'SHCO'=>$Company,'SHWHS'=>$Warehouse ]; Helper::logToICM699M($data); } } # Write to Logs Out : Success $data = ['SHMACPKR'=>$SHMACPKR,'SHDT'=> date('Y-m-d'),'SHTIME'=> date('H:i:s') ,'SHERROR'=> '','SHINTBOX'=> '','SHTYPE'=> 'M3-Lis-in' , 'SHDATA'=>json_encode($jsonFile) ,'SHUSER'=> $REQKPKUS,'SHSOURCE'=> $SHSOURCE ,'SHCO'=>$Company,'SHWHS'=>$Warehouse]; Helper::logToICM699M($data); return response()->json([ 'code'=>'200', 'status'=>'success', 'message'=>'File Received, DB Updated' ]); } else{ # Write to Logs Out : Error & JSON $SHACKNOTE = 'Sentinel automatically closed the error related to this empty data set sent by M3'; $data = ['SHMACPKR'=>$SHMACPKR,'SHDT'=> date('Y-m-d'),'SHTIME'=> date('H:i:s') ,'SHERROR'=> 'Z','SHINTBOX'=> '','SHTYPE'=> 'M3-Lis-in' , 'SHDATA'=>'No Json File Found...' ,'SHUSER'=> $REQKPKUS,'SHSOURCE'=> $SHSOURCE,'SHCO'=>$Company,'SHWHS'=>$Warehouse,"SHACKNOTE"=> $SHACKNOTE ]; Helper::logToICM699M($data); return response()->json([ 'code'=>'415', 'status'=>'error', 'message'=>'No Json File Found' ]); } } catch (\Throwable $th) { # Write to Logs Out : Error & JSON $data = ['SHMACPKR'=>$SHMACPKR,'SHDT'=> date('Y-m-d'),'SHTIME'=> date('H:i:s') ,'SHERROR'=> 'X','SHINTBOX'=> '','SHTYPE'=> 'M3-Lis-in' , 'SHDATA'=>'General Catchable Error - '.substr($th,0,300).' M3-Lis-JSN'.json_encode($jsonFile) ,'SHUSER'=> $REQKPKUS,'SHSOURCE'=> $SHSOURCE,'SHCO'=>$Company,'SHWHS'=>$Warehouse ]; Helper::logToICM699M($data); // Log::error($th); return response()->json([ 'code'=>'405', 'status'=>'error', 'message'=>'An Error Occured...' ]); } } public function show($id){} public function edit($id){} public function update(Request $request, $id){} public function destroy($id){} }