info('>>> Run GS1 Label creation Command...'); Log::channel('LabelCron')->info('>>> Run GS1 Label creation Command...'); // Get the Calling User $userId = $this->argument('user'); $sHUSER = $userId ?? (m3User() !== '' ? Str::upper(trim(m3User())) : 'TWOSHIP'); $this->info('User: ' . $sHUSER); // Get Manifest Array $gSArray1 = $this->option('gsarray'); $gSArray = json_decode($gSArray1, true); // 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 !== '') { $this->generateLabels($sHUSER, $gSArray); } Log::channel('LabelCron')->info('<<< GS1-128...End of Label Creation'); $this->info('<<< GS1-128...End of Label Creation'); } catch (\Throwable $th) { Log::channel('LabelCron')->error($th); } } private function generateLabels(string $sHUSER, array $gSArray): void { // 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(); $cOMPANY = isset($iCM428M->R428CO) ? $iCM428M->R428CO : ''; // Company $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 = $this->buildLabelHtml($gSArray, $packageType, $manufactID, $total_length); 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(); $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(); } private function buildLabelHtml(array $gSArray, string $packageType, string $manufactID, int $totalLength): string { $html = '
'; // Get number of Pallets $packageCount = count($gSArray['PackagesArray']); $packageNum = 1; while ($packageNum <= $packageCount) { $table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : ''; if (Cache::has('GS1SEQUENCE')) { $gS1SEQUENCE = Cache::get('GS1SEQUENCE'); $gS1SEQUENCE++; $gS1SEQUENCEID = str_pad($gS1SEQUENCE, $totalLength, '0', STR_PAD_LEFT); } // Box Number Not Found Get it from DB else { $gS1SEQUENCE = 1; $gS1SEQUENCEID = str_pad($gS1SEQUENCE, $totalLength, '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_desc = '(00)' . $packageType . $manufactID . $gS1SEQUENCEID . $checkDigit; $data = [ 'ship_to' => $gSArray['Recipient_CompanyName'] . '|
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'] . ' |
|||