diff --git a/Modules/M3/Http/Controllers/FillBOL2Controller.php b/Modules/M3/Http/Controllers/FillBOL2Controller.php index 00d7433a..a7fddcec 100755 --- a/Modules/M3/Http/Controllers/FillBOL2Controller.php +++ b/Modules/M3/Http/Controllers/FillBOL2Controller.php @@ -39,6 +39,14 @@ class FillBOL2Controller extends Controller } private function bolData(Request $request, Request $bOL): array + { + return array_merge( + $this->bolPrimaryData($request, $bOL), + $this->bolRemainingData() + ); + } + + private function bolPrimaryData(Request $request, Request $bOL): array { return [ 'bol_number' => $request->input('BOL_number') ?? '1234567890', @@ -138,7 +146,13 @@ Line 5', 'LNITEMCLAS17' => '', 'TYPEANDESCPTN.17' => '', 'PKGTYPECOUNT17' => '', - 'LNITEMWT16' => '', + ]; + } + + private function bolRemainingData(): array + { + return [ +'LNITEMWT16' => '', 'CLASSORATE16' => '', 'LNITEMCLAS16' => '', 'TYPEANDESCPTN.16' => '', @@ -225,7 +239,7 @@ Line 5', 'BILLTOADDR' => '', 'NUMDROPS' => '', + ]; } - } diff --git a/Modules/M3/Http/Controllers/FillBOLController.php b/Modules/M3/Http/Controllers/FillBOLController.php index c6d29ce8..7b9c467c 100755 --- a/Modules/M3/Http/Controllers/FillBOLController.php +++ b/Modules/M3/Http/Controllers/FillBOLController.php @@ -55,6 +55,14 @@ class FillBOLController extends Controller } private static function bolFormData(Request $bOL): array + { + return array_merge( + self::bolPrimaryFields($bOL), + self::bolRemainingFields() + ); + } + + private static function bolPrimaryFields(Request $bOL): array { return [ 'DTESHIPED.1' => date('d/m/Y'), @@ -125,7 +133,13 @@ class FillBOLController extends Controller 'LNITEMCLAS17' => '', 'TYPEANDESCPTN.17' => '', 'PKGTYPECOUNT17' => '', - 'LNITEMWT16' => '', + ]; + } + + private static function bolRemainingFields(): array + { + return [ +'LNITEMWT16' => '', 'CLASSORATE16' => '', 'LNITEMCLAS16' => '', 'TYPEANDESCPTN.16' => '', @@ -212,7 +226,7 @@ class FillBOLController extends Controller 'BILLTOADDR' => '', 'NUMDROPS' => '', + ]; } - } diff --git a/Modules/M3/Http/Controllers/UtilitiesController.php b/Modules/M3/Http/Controllers/UtilitiesController.php index 02f9d08c..ce8d385c 100755 --- a/Modules/M3/Http/Controllers/UtilitiesController.php +++ b/Modules/M3/Http/Controllers/UtilitiesController.php @@ -155,211 +155,218 @@ class UtilitiesController extends Controller try { Log::channel('LabelCron')->info('>>> Run GS1 Label creation Command...'); - - // Get the Calling User - // $userId = 'TWOSHIP'; - // $sHUSER = isset($userId) ? $userId : (m3_user() !== '' ? Str::upper(trim(m3_user())) : ''); - - // Get Manifest Array $gSArray = $request->query(); + $sHUSER = trim((string) ($gSArray['User'] ?? '')); + $gS1FileNameNoRoot = ''; - $sHUSER = isset($gSArray['User']) ? trim($gSArray['User']) : ''; - - 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(); - - $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 = trim($gSArray['packageType']); // 1 => Pallet , 0 => Carton - $packageTypeDesc = $packageType == 1 ? 'Pallet' : 'Carton'; - $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; - - // Get GS1 Label MAX ID from ICM695M3 : - $gS1SEQUENCESel = DB::connection(config('m3.connection', 'pgsql'))->table('icm695m3')->max('ID'); - $gS1SEQUENCE = isset($gS1SEQUENCESel) ? $gS1SEQUENCESel : 0; - - // Loop PackagesArray : Build Table for PDF and Insert to ICM695m3 - foreach ($gSArray['PackagesArray'] as $value) { - $table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : ''; - - $a2INTBOX = trim($value); - - $gS1SEQUENCE++; - $gS1SEQUENCEID = str_pad($gS1SEQUENCE, $total_length, '0', STR_PAD_LEFT); - // Build GS1 18 Digits Code - $gs1_128_bc_1 = '00' . $packageType . $manufactID . $gS1SEQUENCEID; - - $checkDigit = self::gs1CheckDigit($gs1_128_bc_1); - - // SSCC 18 Digits Code - $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', // MAK : Check missing info with Brad - '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['trackingno'] . '
- B/L #: ' . $gSArray['BOLnumber'] . '
- Ref : ' . $a2INTBOX . ' -
- PURCHASE ORDER: ' . $gSArray['ShipmentPONumber'] . '
- Vendor: ' . $manufactID . ' -
- ' . $packageTypeDesc . ' # : ' . $packageNum . ' of ' . $packageCount . ' -
-
- ' . $data['serial_shipping_container'] . ' -
'; - - $packageNum++; - - // Insert new Record to ICM695M3 $gs1_128_bc - DB::connection(config('m3.connection', 'pgsql'))->table('icm695m3') - ->insert(['A2CO' => $cOMPANY, 'A2WHS' => $wHS, 'A2PLANT' => $pLANT, 'A2MACPKR' => $macpkr, 'A2GS1LABEL' => $gs1_128_bc, 'A2INTBOX' => $a2INTBOX]); - - Log::channel('LabelCron')->info('<<< GS1-128...End of Label Creation for Mackpkr: ' . $macpkr); - } - - $html .= ' '; - - 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'); // '/www/sentm3live/htdocs/labels/'; - // Put the PDF in labels/CarrierLabel - $gSFolder = 'GSLabel'; - - $carrierFileName = $gSFolder . '_' . $macpkr . '_' . $cOMPANY . '_' . $wHS . '_' . $a2INTBOX; - // LTL - // if ($packageType=='1') { - // $carrierFileName = $gSFolder.'_'.$macpkr.'_'.$cOMPANY.'_'.$wHS; - // } - // # small Packs - // else{ - // $carrierFileName = $gSFolder.'_'.$macpkr.'_'.$cOMPANY.'_'.$wHS.'_'.$a2INTBOX; - // } - - $gS1FileName = $labelsPath . $gSFolder . '/' . $carrierFileName . '.pdf'; - $gS1FileNameNoRoot = $gSFolder . '/' . $carrierFileName; - file_put_contents($gS1FileName, $pdfContent); - ob_end_clean(); + if ($sHUSER !== '') { + $gS1FileNameNoRoot = self::generateGS128ForUser($gSArray, $sHUSER); } - // # Insert new Record to ICM695M3 $gs1_128_bc - // DB::connection(config('m3.connection', 'pgsql'))->table('icm695m3') - // ->insert(['A2CO'=> $cOMPANY,'A2WHS'=> $wHS,'A2MACPKR'=> $macpkr,'A2GS1LABEL'=> $gs1_128_bc]); - return json_encode(['result' => 'success', 'GS1File' => $gS1FileNameNoRoot]); - } catch (\Throwable $th) { Log::channel('LabelCron')->error($th); return json_encode(['result' => 'error', 'GS1File' => $th]); - } } + private static function generateGS128ForUser(array $gSArray, string $sHUSER): string + { + // 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 + $pLANT = isset($iCM428M->R428PL) ? $iCM428M->R428PL : ''; // Plant + $wHS = isset($iCM428M->R428WH) ? $iCM428M->R428WH : ''; // WareHouse + + $macpkr = $gSArray['Macpkr']; + $packageType = trim($gSArray['packageType']); // 1 => Pallet , 0 => Carton + $packageTypeDesc = $packageType == 1 ? 'Pallet' : 'Carton'; + $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; + + // Get GS1 Label MAX ID from ICM695M3 : + $gS1SEQUENCESel = DB::connection(config('m3.connection', 'pgsql'))->table('icm695m3')->max('ID'); + $gS1SEQUENCE = isset($gS1SEQUENCESel) ? $gS1SEQUENCESel : 0; + + // Loop PackagesArray : Build Table for PDF and Insert to ICM695m3 + foreach ($gSArray['PackagesArray'] as $value) { + $table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : ''; + + $a2INTBOX = trim($value); + + $gS1SEQUENCE++; + $gS1SEQUENCEID = str_pad($gS1SEQUENCE, $total_length, '0', STR_PAD_LEFT); + // Build GS1 18 Digits Code + $gs1_128_bc_1 = '00' . $packageType . $manufactID . $gS1SEQUENCEID; + + $checkDigit = self::gs1CheckDigit($gs1_128_bc_1); + + // SSCC 18 Digits Code + $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', // MAK : Check missing info with Brad + '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 .= self::gs128LabelHtml( + $data, $gSArray, $a2INTBOX, $manufactID, $packageTypeDesc, + $packageNum, $packageCount, $table_style, + $shipToPostalCodeBarcode, $serialShippingContainerBarcode + ); + + $packageNum++; + + // Insert new Record to ICM695M3 $gs1_128_bc + DB::connection(config('m3.connection', 'pgsql'))->table('icm695m3') + ->insert(['A2CO' => $cOMPANY, 'A2WHS' => $wHS, 'A2PLANT' => $pLANT, 'A2MACPKR' => $macpkr, 'A2GS1LABEL' => $gs1_128_bc, 'A2INTBOX' => $a2INTBOX]); + + Log::channel('LabelCron')->info('<<< GS1-128...End of Label Creation for Mackpkr: ' . $macpkr); + } + + $html .= ' '; + + 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'); // '/www/sentm3live/htdocs/labels/'; + // Put the PDF in labels/CarrierLabel + $gSFolder = 'GSLabel'; + + $carrierFileName = $gSFolder . '_' . $macpkr . '_' . $cOMPANY . '_' . $wHS . '_' . $a2INTBOX; + // LTL + // if ($packageType=='1') { + // $carrierFileName = $gSFolder.'_'.$macpkr.'_'.$cOMPANY.'_'.$wHS; + // } + // # small Packs + // else{ + // $carrierFileName = $gSFolder.'_'.$macpkr.'_'.$cOMPANY.'_'.$wHS.'_'.$a2INTBOX; + // } + + $gS1FileName = $labelsPath . $gSFolder . '/' . $carrierFileName . '.pdf'; + $gS1FileNameNoRoot = $gSFolder . '/' . $carrierFileName; + file_put_contents($gS1FileName, $pdfContent); + ob_end_clean(); + + return $gS1FileNameNoRoot; + } + + private static function gs128LabelHtml( + array $data, array $gSArray, string $a2INTBOX, string $manufactID, + string $packageTypeDesc, int $packageNum, int $packageCount, string $table_style, + string $shipToPostalCodeBarcode, string $serialShippingContainerBarcode + ): string { + return ' + + + + + + + + + + + + + + + + + + +
+ FROM:
' . $data['from'] . ' +
+ SHIP TO:
' . $data['ship_to'] . ' +
+
+ ' . $data['ship_to_desc'] . ' +
+ Carrier: ' . $gSArray['CarrierName'] . '
+ PRO #: ' . $gSArray['trackingno'] . '
+ B/L #: ' . $gSArray['BOLnumber'] . '
+ Ref : ' . $a2INTBOX . ' +
+ PURCHASE ORDER: ' . $gSArray['ShipmentPONumber'] . '
+ Vendor: ' . $manufactID . ' +
+ ' . $packageTypeDesc . ' # : ' . $packageNum . ' of ' . $packageCount . ' +
+
+ ' . $data['serial_shipping_container'] . ' +
'; + } + private static function gs1CheckDigit(string $value): int { $digits = str_split($value); diff --git a/resources/css/wms-dashboard.css b/resources/css/wms-dashboard.css index 7891a69f..61bf5079 100644 --- a/resources/css/wms-dashboard.css +++ b/resources/css/wms-dashboard.css @@ -102,7 +102,7 @@ align-items: center; background: linear-gradient(135deg, rgba(15, 118, 110, 0.14), rgba(37, 99, 235, 0.12)); border-radius: 18px; - color: #00100f; + color: #000000; display: flex; font-size: 1.35rem; height: 56px; diff --git a/resources/views/layouts/partials/topbar.blade.php b/resources/views/layouts/partials/topbar.blade.php index c5fc0ea6..eb16c120 100755 --- a/resources/views/layouts/partials/topbar.blade.php +++ b/resources/views/layouts/partials/topbar.blade.php @@ -4,10 +4,12 @@ $isPlatformAdmin = $user !== null && method_exists($user, 'isMpbaPlatformAdmin') && $user->isMpbaPlatformAdmin(); + $dashboardRoute = Route::has('platform.dashboard') && $isPlatformAdmin ? 'platform.dashboard' : (Route::has('dashboard') ? 'dashboard' : null); @endphp +