info('Start CallCloseAPI...'); ini_set('max_execution_time', Config::get('arrays.PHPTimeOutCL')); ini_set('max_input_time', Config::get('arrays.PHPTimeOutCL')); ini_set('default_socket_timeout', Config::get('arrays.PHPTimeOutCL')); ini_set('memory_limit', '1024M'); try { $this->info('>>> Run GS1 Label creation Command...'); Log::channel('LabelCron')->info(">>> Run GS1 Label creation Command..."); # Get the Calling User $userId = $this->argument('user'); $SHUSER = isset($userId) ? $userId : (m3_user() !== '' ? Str::upper(trim(m3_user())) : 'TWOSHIP'); $this->info('User: '.$SHUSER); # Get Manifest Array $GSArray1 = $this->option('gsarray'); $GSArray = json_decode($GSArray1, true); // dump($GSArray); # MAK : Used for debug only $GSArray = ["Macpkr"=> "55555","Recipient_Address1"=>"9571 Pan American DR", "Recipient_Address2"=>"C/O AEE Solar","Recipient_City"=>"El Paso", "Recipient_CompanyName"=>"SNAPRACK EL PASO PRODUCTION","Recipient_CountryCode"=>"US","Recipient_PostalCode"=>"79927","Recipient_State"=>"TX", "Sender_Address1"=>"6800 Arnold Miller Pkwy","Sender_Address2"=>"","Sender_City"=>"Solon", "Sender_CompanyName"=>"Erico International","Sender_Country"=>"US","Sender_PostalCode"=>"44139","Sender_State"=>"OH", "CarrierName"=>"R&L Carriers","trackingno"=>"306539838","BOLnumber"=>"693103848064454","ShipmentPONumber"=>"4523039092", "PackagesArray"=> ["package 1" , "package 2"] ]; if ($SHUSER!='') { # Get User CO & WH from Table ICM428M $ICM428M = DB::connection(config('m3.connection', 'pgsql'))->table('icm428m') ->select('R428US','R428CO', 'R428WH','R428PL') ->where('R428US','=',$SHUSER) ->first(); $R428US = isset($ICM428M->R428US) ? $ICM428M->R428US : ''; # User $COMPANY = isset($ICM428M->R428CO) ? $ICM428M->R428CO : ''; # Company $PLANT = isset($ICM428M->R428PL) ? $ICM428M->R428PL : ''; # Plant $WHS = isset($ICM428M->R428WH) ? $ICM428M->R428WH : ''; # WareHouse $Macpkr = $GSArray['Macpkr']; $packageType = '0'; $manufactID = '0826528'; # MAK : get ID from Nvent and save to Config File $total_length = 9; $html = ' '; # Get number of Pallets $packageCount = count($GSArray['PackagesArray']); $packageNum = 1; foreach ($GSArray['PackagesArray'] as $key => $value) { $table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : ''; if (Cache::has('GS1SEQUENCE')) { $GS1SEQUENCE = Cache::get('GS1SEQUENCE'); $GS1SEQUENCE++; $GS1SEQUENCEID = str_pad($GS1SEQUENCE, $total_length, "0", STR_PAD_LEFT); } # Box Number Not Found Get it from DB else{ $GS1SEQUENCE = 1; $GS1SEQUENCEID = str_pad($GS1SEQUENCE, $total_length, "0", STR_PAD_LEFT); } Cache::forever('GS1SEQUENCE', $GS1SEQUENCEID); $this->info(">>> GS1 sequence Id: ".$GS1SEQUENCEID); $gs1_128_bc_1 = '00' .$packageType . $manufactID . $GS1SEQUENCEID; # Calculate Check Digit $digits = str_split($gs1_128_bc_1); $sum = 0; $length = count($digits); # Loop through each digit starting from the right for ($i = 0; $i < $length; $i++) { $digit = $digits[$length - $i - 1]; # Assign a weight of 3 or 1 alternately $weight = ($i % 2 == 0) ? 3 : 1; # Add the product of the digit and its weight to the sum $sum += $digit * $weight; } # Calculate the remainder when sum is divided by 10 $remainder = $sum % 10; # If remainder is 0, check digit is 0; otherwise, subtract remainder from 10 $checkDigit = ($remainder == 0) ? 0 : 10 - $remainder; $gs1_128_bc = $gs1_128_bc_1 . $checkDigit; $gs1_128_bc_desc = '(00)' .$packageType . $manufactID . $GS1SEQUENCEID .$checkDigit; $data = [ 'ship_to' => $GSArray["Recipient_CompanyName"].'
'.$GSArray["Recipient_Address1"].'
'. $GSArray["Recipient_City"].','. $GSArray["Recipient_State"] .'
'.$GSArray["Recipient_PostalCode"] , 'from' => $GSArray["Sender_CompanyName"].'
'.$GSArray["Sender_Address1"].'
'. $GSArray["Sender_City"].','. $GSArray["Sender_State"] .'
'.$GSArray["Sender_PostalCode"] , 'ship_to_lbl' => '420'.$GSArray["Recipient_PostalCode"], 'ship_to_desc' => '(420)'.$GSArray["Recipient_PostalCode"], 'pro' => '190071217845706', 'item_number' => '10000B', 'upc' => '098506095310', 'quantity' => '1', 'serial_shipping_container' => $gs1_128_bc_desc ]; # Initialize barcode generator $generator = new BarcodeGeneratorPNG(); # Generate barcodes $shipToPostalCodeBarcode = $generator->getBarcode($data['ship_to_lbl'], $generator::TYPE_CODE_128); $serialShippingContainerBarcode = $generator->getBarcode($data['serial_shipping_container'], $generator::TYPE_CODE_128, 2 ,50); # HTML content for the label $html .= '
FROM:
' . $data['from'] . '
SHIP TO:
' . $data['ship_to'] . '

' . $data['ship_to_desc'] . '
Carrier: '.$GSArray["CarrierName"].'
PRO #: '.$GSArray["ShipmentPONumber"].'
B/L #: '.$GSArray["BOLnumber"].'
PURCHASE ORDER: '.$GSArray["Macpkr"].'
Vendor: ' . $manufactID . '
Pallet # : '.$packageNum.' of '.$packageCount.'

' . $data['serial_shipping_container'] . '
'; $packageNum++; } $html .=' '; // dump($html); // App::call('App\Http\Controllers\utilitiesContoller@generateGS128'); ob_start(); # Initialize Dompdf $dompdf = new Dompdf(); $dompdf->loadHtml($html); $dompdf->setPaper('a6', 'portrait'); # Render the HTML as PDF $dompdf->render(); # Output the generated PDF to Browser // $dompdf->stream(); $pdfContent = $dompdf->output(); // dump($pdfContent); $labelsPath = Config::get('arrays.PdfPath'); # Put the PDF in labels/CarrierLabel $GSFolder = "GSLabel"; $carrierFileName = $GSFolder.'_'.$Macpkr.'_'.$COMPANY.'_'.$WHS; file_put_contents($labelsPath.$GSFolder.'/'.$carrierFileName.'.pdf',$pdfContent); # Check if the PDF was generated correctly // if (!file_exists($tempPdfPath) || filesize($tempPdfPath) === 0) { // throw new Exception('PDF generation failed.'); // } ob_end_clean(); } Log::channel('LabelCron')->info("<<< GS1-128...End of Label Creation"); $this->info("<<< GS1-128...End of Label Creation"); } catch (\Throwable $th) { // Log::error($th); Log::channel('LabelCron')->error($th); } } }